소스 검색

Merge branch 'master' of ssh://git.torproject.org/git/tor

Roger Dingledine 16 년 전
부모
커밋
891b3d8633
5개의 변경된 파일14개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 0
      ChangeLog
  2. 5 1
      src/or/geoip.c
  3. 1 1
      src/or/main.c
  4. 1 1
      src/or/or.h
  5. 4 3
      src/or/rephist.c

+ 3 - 0
ChangeLog

@@ -14,6 +14,9 @@ Changes in version 0.2.2.4-alpha - 2009-??-??
       code, and so on.  The unit test code has moved to its own
       code, and so on.  The unit test code has moved to its own
       subdirectory, and has been split into multiple modules.
       subdirectory, and has been split into multiple modules.
 
 
+  o Minor bugfixes:
+    - Fix a couple of smaller issues with gathering statistics. Bugfixes
+      on 0.2.2.1-alpha.
 
 
 Changes in version 0.2.2.3-alpha - 2009-09-23
 Changes in version 0.2.2.3-alpha - 2009-09-23
   o Major bugfixes:
   o Major bugfixes:

+ 5 - 1
src/or/geoip.c

@@ -370,10 +370,12 @@ static void
 rotate_request_period(void)
 rotate_request_period(void)
 {
 {
   SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
   SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
+#if REQUEST_HIST_LEN > 1
       memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
       memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
       memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
       memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
+#endif
       c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
     });
     });
@@ -393,7 +395,7 @@ geoip_note_client_seen(geoip_client_action_t action,
   clientmap_entry_t lookup, *ent;
   clientmap_entry_t lookup, *ent;
   if (action == GEOIP_CLIENT_CONNECT) {
   if (action == GEOIP_CLIENT_CONNECT) {
     /* Only remember statistics as entry guard or as bridge. */
     /* Only remember statistics as entry guard or as bridge. */
-    if (!options->EntryStatistics ||
+    if (!options->EntryStatistics &&
         (!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
         (!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
       return;
       return;
     /* Did we recently switch from bridge to relay or back? */
     /* Did we recently switch from bridge to relay or back? */
@@ -1009,6 +1011,8 @@ geoip_dirreq_stats_write(time_t now)
   if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
   if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
               data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
               data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
     goto done;
     goto done;
+  tor_free(data_v2);
+  tor_free(data_v3);
 #define RESPONSE_GRANULARITY 8
 #define RESPONSE_GRANULARITY 8
   for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
   for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
     ns_v2_responses[i] = round_uint32_to_next_multiple_of(
     ns_v2_responses[i] = round_uint32_to_next_multiple_of(

+ 1 - 1
src/or/main.c

@@ -981,7 +981,6 @@ run_scheduled_events(time_t now)
         time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
         time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
       } else {
       } else {
         /* Write stats to disk. */
         /* Write stats to disk. */
-        time_to_write_stats_files += WRITE_STATS_INTERVAL;
         if (options->CellStatistics)
         if (options->CellStatistics)
           rep_hist_buffer_stats_write(time_to_write_stats_files);
           rep_hist_buffer_stats_write(time_to_write_stats_files);
         if (options->DirReqStatistics)
         if (options->DirReqStatistics)
@@ -990,6 +989,7 @@ run_scheduled_events(time_t now)
           geoip_entry_stats_write(time_to_write_stats_files);
           geoip_entry_stats_write(time_to_write_stats_files);
         if (options->ExitPortStatistics)
         if (options->ExitPortStatistics)
           rep_hist_exit_stats_write(time_to_write_stats_files);
           rep_hist_exit_stats_write(time_to_write_stats_files);
+        time_to_write_stats_files += WRITE_STATS_INTERVAL;
       }
       }
     } else {
     } else {
       /* Never write stats to disk */
       /* Never write stats to disk */

+ 1 - 1
src/or/or.h

@@ -3867,7 +3867,7 @@ int dnsserv_launch_request(const char *name, int is_reverse);
 #define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
 #define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
 /** How long do we have to have observed per-country request history before
 /** How long do we have to have observed per-country request history before
  * we are willing to talk about it? */
  * we are willing to talk about it? */
-#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (24*60*60)
+#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60)
 
 
 #ifdef GEOIP_PRIVATE
 #ifdef GEOIP_PRIVATE
 int geoip_parse_entry(const char *line);
 int geoip_parse_entry(const char *line);

+ 4 - 3
src/or/rephist.c

@@ -1461,9 +1461,9 @@ rep_hist_exit_stats_write(time_t now)
               comma ? "," : "", other_streams)<0)
               comma ? "," : "", other_streams)<0)
     goto done;
     goto done;
   /* Reset counters */
   /* Reset counters */
-  memset(exit_bytes_read, 0, sizeof(exit_bytes_read));
-  memset(exit_bytes_written, 0, sizeof(exit_bytes_written));
-  memset(exit_streams, 0, sizeof(exit_streams));
+  memset(exit_bytes_read, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
+  memset(exit_bytes_written, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
+  memset(exit_streams, 0, EXIT_STATS_NUM_PORTS * sizeof(uint32_t));
   start_of_exit_stats_interval = now;
   start_of_exit_stats_interval = now;
 
 
   if (open_file)
   if (open_file)
@@ -2771,6 +2771,7 @@ rep_hist_buffer_stats_write(time_t now)
     goto done;
     goto done;
   finish_writing_to_file(open_file);
   finish_writing_to_file(open_file);
   open_file = NULL;
   open_file = NULL;
+  start_of_buffer_stats_interval = now;
  done:
  done:
   if (open_file)
   if (open_file)
     abort_writing_to_file(open_file);
     abort_writing_to_file(open_file);