From 24217248539688ecb166cb08ef9417b9630b310f Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 27 Mar 2006 06:49:25 +0000 Subject: Code to implement networkstatus fetch from controllers. Only works when dirport is set for now; should be good enough to make serifos html front-end not be as wrong. svn:r6251 --- src/or/control.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/or/control.c b/src/or/control.c index eab6b5351..f4f0f7174 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1481,6 +1481,26 @@ handle_getinfo_helper(const char *question, char **answer) *cp = '\0'; tor_free(url); smartlist_free(descs); + } else if (!strcmpstart(question, "dir/status/")) { + smartlist_t *status_list; + size_t len; + char *cp; + if (!get_options()->DirPort) + return 0; + status_list = smartlist_create(); + if (!dirserv_get_networkstatus_v2(status_list, + question+strlen("dir/status/"))) { + smartlist_free(status_list); + return 0; + } + len = 0; + SMARTLIST_FOREACH(status_list, cached_dir_t *, d, len += d->dir_len); + cp = *answer = tor_malloc(len+1); + SMARTLIST_FOREACH(status_list, cached_dir_t *, d, { + memcpy(cp, d->dir, d->dir_len); + cp += d->dir_len; + }); + *cp = '\0'; } return 0; } -- cgit v1.2.3