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
This commit is contained in:
Nick Mathewson 2006-03-27 06:49:25 +00:00
parent 56df81199a
commit 2421724853

View File

@ -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;
}