aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-01-28 07:16:22 +0000
committerRoger Dingledine <arma@torproject.org>2009-01-28 07:16:22 +0000
commit9fdae765e30695fdb7018c4b30932e3e4e28d144 (patch)
tree7bec6cb42d326233d1c99dda2d935e84f169f1bf
parentedff6063172ad4fb6a835b2c218856aa93efe8da (diff)
downloadtor-9fdae765e30695fdb7018c4b30932e3e4e28d144.tar
tor-9fdae765e30695fdb7018c4b30932e3e4e28d144.tar.gz
clean up r18287
svn:r18288
-rw-r--r--ChangeLog6
-rw-r--r--src/or/control.c21
-rw-r--r--src/or/router.c11
3 files changed, 19 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index db9921bea..bd0c4dde6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Changes in version 0.2.1.12-alpha - 2009-01-??
+Changes in version 0.2.1.12-alpha - 2009-02-??
o Minor bugfixes:
- Let controllers actually ask for the "clients_seen" event. Bugfix
on 0.2.1.10-alpha; reported by Matt Edman.
@@ -14,7 +14,9 @@ Changes in version 0.2.1.12-alpha - 2009-01-??
o Minor features:
- Support platforms where time_t is 64 bits long. (Congratulations,
- NetBSD!) Patch from Matthias Drochner.
+ NetBSD!) Patch from Matthias Drochner.
+ - Add a 'getinfo status/clients-seen' controller command, in case
+ controllers want to hear clients_seen events but connect late.
Changes in version 0.2.1.11-alpha - 2009-01-20
diff --git a/src/or/control.c b/src/or/control.c
index 9f80d38cf..f43525175 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1839,23 +1839,20 @@ getinfo_helper_events(control_connection_t *control_conn,
}
} else if (!strcmp(question, "status/clients-seen")) {
char geoip_start[ISO_TIME_LEN+1];
- char *geoip_summary;
- smartlist_t *sl;
+ size_t answer_len;
+ char *geoip_summary = extrainfo_get_client_geoip_summary(time(NULL));
- geoip_summary = extrainfo_get_client_geoip_summary(time(NULL));
if (!geoip_summary)
return -1;
- format_iso_time(geoip_start, geoip_get_history_start());
-
- sl = smartlist_create();
- smartlist_add(sl, (char *)"TimeStarted=\"");
- smartlist_add(sl, geoip_start);
- smartlist_add(sl, (char *)"\" CountrySummary=");
- smartlist_add(sl, geoip_summary);
- *answer = smartlist_join_strings(sl, "", 0, 0);
+ answer_len = strlen("TimeStarted=\"\" CountrySummary=") +
+ ISO_TIME_LEN + strlen(geoip_summary) + 1;
+ *answer = tor_malloc(answer_len);
+ format_iso_time(geoip_start, geoip_get_history_start());
+ tor_snprintf(*answer, answer_len,
+ "TimeStarted=\"%s\" CountrySummary=%s",
+ geoip_start, geoip_summary);
tor_free(geoip_summary);
- smartlist_free(sl);
} else {
return 0;
}
diff --git a/src/or/router.c b/src/or/router.c
index 68e775c80..f3e09e6db 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1906,11 +1906,12 @@ extrainfo_dump_to_string(char *s, size_t maxlen, extrainfo_t *extrainfo,
return (int)strlen(s)+1;
}
-/** Return a newly allocated comma-separated string containing entries for all
- * the countries from which we've seen enough clients connect over the
- * previous 48 hours. The entry format is cc=num where num is the number of
- * IPs we've seen connecting from that country, and cc is a lowercased
- * country code. Returns NULL if we don't want to export geoip data yet. */
+/** Wrapper function for geoip_get_client_history(). It first discards
+ * any items in the client history that are too old -- it dumps anything
+ * more than 48 hours old, but it only considers whether to dump at most
+ * once per 48 hours, so we aren't too precise to an observer (see also
+ * r14780).
+ */
char *
extrainfo_get_client_geoip_summary(time_t now)
{