Browse Source

forward-port r14934

svn:r14936
Roger Dingledine 16 years ago
parent
commit
b8bde32c3a
4 changed files with 15 additions and 5 deletions
  1. 1 1
      src/or/config.c
  2. 11 2
      src/or/geoip.c
  3. 2 1
      src/or/or.h
  4. 1 1
      src/or/router.c

+ 1 - 1
src/or/config.c

@@ -1282,7 +1282,7 @@ options_act(or_options_t *old_options)
       tor_snprintf(actual_fname, len, "%s\\geoip", conf_root);
     }
 #endif
-    geoip_load_file(actual_fname);
+    geoip_load_file(actual_fname, options);
     tor_free(actual_fname);
   }
   /* Check if we need to parse and add the EntryNodes config option. */

+ 11 - 2
src/or/geoip.c

@@ -122,6 +122,14 @@ _geoip_compare_key_to_entry(const void *_key, const void **_member)
     return 0;
 }
 
+/** Return 1 if we should collect geoip stats on bridge users, and
+ * include them in our extrainfo descriptor. Else return 0. */
+int
+should_record_bridge_info(or_options_t *options)
+{
+  return options->BridgeRelay && options->BridgeRecordUsageByCountry;
+}
+
 /** Clear the GeoIP database and reload it from the file
  * <b>filename</b>. Return 0 on success, -1 on failure.
  *
@@ -136,12 +144,13 @@ _geoip_compare_key_to_entry(const void *_key, const void **_member)
  * with '#' (comments).
  */
 int
-geoip_load_file(const char *filename)
+geoip_load_file(const char *filename, or_options_t *options)
 {
   FILE *f;
+  int severity = should_record_bridge_info(options) ? LOG_WARN : LOG_INFO;
   clear_geoip_db();
   if (!(f = fopen(filename, "r"))) {
-    log_warn(LD_GENERAL, "Failed to open GEOIP file %s.", filename);
+    log_fn(severity, LD_GENERAL, "Failed to open GEOIP file %s.", filename);
     return -1;
   }
   geoip_countries = smartlist_create();

+ 2 - 1
src/or/or.h

@@ -3294,7 +3294,8 @@ int dnsserv_launch_request(const char *name, int is_reverse);
 #ifdef GEOIP_PRIVATE
 int geoip_parse_entry(const char *line);
 #endif
-int geoip_load_file(const char *filename);
+int should_record_bridge_info(or_options_t *options);
+int geoip_load_file(const char *filename, or_options_t *options);
 int geoip_get_country_by_ip(uint32_t ipaddr);
 int geoip_get_n_countries(void);
 const char *geoip_get_country_name(int num);

+ 1 - 1
src/or/router.c

@@ -1822,7 +1822,7 @@ extrainfo_dump_to_string(char *s, size_t maxlen, extrainfo_t *extrainfo,
   if (result<0)
     return -1;
 
-  if (options->BridgeRelay && options->BridgeRecordUsageByCountry) {
+  if (should_record_bridge_info(options)) {
     static time_t last_purged_at = 0;
     char *geoip_summary;
     time_t now = time(NULL);