summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2006-01-10 20:09:31 +0000
committerRoger Dingledine <arma@torproject.org>2006-01-10 20:09:31 +0000
commitd114ea71250b376022d747139bc5b0f24237ef43 (patch)
treea4578e318ff0c5c8883c0d686803fb0d6d721e2b
parentb1ea87da3715448e0bbabea9a3803d350c66689d (diff)
downloadtor-d114ea71250b376022d747139bc5b0f24237ef43.tar.gz
tor-d114ea71250b376022d747139bc5b0f24237ef43.zip
implement getinfo desc/all-recent
closes bug 237. svn:r5770
-rw-r--r--src/or/control.c14
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-"));