]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
clean up r18287
authorRoger Dingledine <arma@torproject.org>
Wed, 28 Jan 2009 07:16:22 +0000 (07:16 +0000)
committerRoger Dingledine <arma@torproject.org>
Wed, 28 Jan 2009 07:16:22 +0000 (07:16 +0000)
svn:r18288

ChangeLog
src/or/control.c
src/or/router.c

index db9921beafb98aae43d825d698fdb9acda4bd8e0..bd0c4dde627114d7f9891a0a72940f0199778c3a 100644 (file)
--- 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
index 9f80d38cf6fe6b7951d8d1cc698cf87f96cf99f2..f4352517515ee4e981f9774d507c25dbe46b52b4 100644 (file)
@@ -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;
     }
index 68e775c8067361373e59a72a869c804393050a41..f3e09e6db252412a02ec2149a213e5c74b0ef070 100644 (file)
@@ -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)
 {