]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
a couple more geoip bugfixes
authorNick Mathewson <nickm@torproject.org>
Tue, 10 Jun 2008 19:51:48 +0000 (19:51 +0000)
committerNick Mathewson <nickm@torproject.org>
Tue, 10 Jun 2008 19:51:48 +0000 (19:51 +0000)
svn:r15105

src/or/geoip.c

index fb9ae25939d697fd0e1dd9f62ca80483b7a5ae10..3d4aac974fdafafa947c92572f2c3e950e1a25c7 100644 (file)
@@ -291,6 +291,10 @@ geoip_note_client_seen(geoip_client_action_t action,
   while (current_request_period_starts + REQUEST_HIST_PERIOD < now) {
     if (!geoip_countries)
       geoip_countries = smartlist_create();
+    if (!current_request_period_starts) {
+      current_request_period_starts = now;
+      break;
+    }
     SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
         memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
                 sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
@@ -300,9 +304,9 @@ geoip_note_client_seen(geoip_client_action_t action,
         c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
       });
     current_request_period_starts += REQUEST_HIST_PERIOD;
-    if (n_old_request_periods < REQUEST_HIST_PERIOD-1)
+    if (n_old_request_periods < REQUEST_HIST_LEN-1)
       ++n_old_request_periods;
-  }
+   }
 
   /* We use the low 3 bits of the time to encode the action. Since we're
    * potentially remembering tons of clients, we don't want to make