diff options
author | Roger Dingledine <arma@torproject.org> | 2006-01-10 20:09:31 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2006-01-10 20:09:31 +0000 |
commit | d114ea71250b376022d747139bc5b0f24237ef43 (patch) | |
tree | a4578e318ff0c5c8883c0d686803fb0d6d721e2b /src/or/control.c | |
parent | b1ea87da3715448e0bbabea9a3803d350c66689d (diff) | |
download | tor-d114ea71250b376022d747139bc5b0f24237ef43.tar.gz tor-d114ea71250b376022d747139bc5b0f24237ef43.zip |
implement getinfo desc/all-recent
closes bug 237.
svn:r5770
Diffstat (limited to 'src/or/control.c')
-rw-r--r-- | src/or/control.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/or/control.c b/src/or/control.c index ac60287782..4c2bdb2dd3 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1247,6 +1247,7 @@ list_getinfo_options(void) "config/names List of configuration options, types, and documentation.\n" "desc/id/* Server descriptor by hex ID\n" "desc/name/* Server descriptor by nickname.\n" + "desc/all-recent Latest server descriptor for every router\n" "entry-nodes Which nodes will we use as entry nodes?\n" "info/names List of GETINFO options, types, and documentation.\n" "network-status List of hex IDs, nicknames, server statuses.\n" @@ -1284,6 +1285,19 @@ handle_getinfo_helper(const char *question, char **answer) routerinfo_t *ri = router_get_by_nickname(question+strlen("desc/name/"),1); if (ri && ri->cache_info.signed_descriptor) *answer = tor_strdup(ri->cache_info.signed_descriptor); + } else if (!strcmp(question, "desc/all-recent")) { + routerlist_t *routerlist = router_get_routerlist(); + smartlist_t *sl = smartlist_create(); + if (routerlist && routerlist->routers) { + SMARTLIST_FOREACH(routerlist->routers, routerinfo_t *, ri, + { + if (ri && ri->cache_info.signed_descriptor) + smartlist_add(sl, tor_strdup(ri->cache_info.signed_descriptor)); + }); + } + *answer = smartlist_join_strings(sl, "", 0, NULL); + SMARTLIST_FOREACH(sl, char *, c, tor_free(c)); + smartlist_free(sl); } else if (!strcmpstart(question, "unregistered-servers-")) { *answer = dirserver_getinfo_unregistered(question + strlen("unregistered-servers-")); |