diff options
-rw-r--r-- | src/or/config.c | 2 | ||||
-rw-r--r-- | src/or/geoip.c | 13 | ||||
-rw-r--r-- | src/or/or.h | 3 | ||||
-rw-r--r-- | src/or/router.c | 2 |
4 files changed, 15 insertions, 5 deletions
diff --git a/src/or/config.c b/src/or/config.c index 372af214e2..43d1ee8e37 100644 --- a/src/or/config.c +++ b/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. */ diff --git a/src/or/geoip.c b/src/or/geoip.c index 3f2076c292..241281317a 100644 --- a/src/or/geoip.c +++ b/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(); diff --git a/src/or/or.h b/src/or/or.h index 126ab874b8..bcb319ee35 100644 --- a/src/or/or.h +++ b/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); diff --git a/src/or/router.c b/src/or/router.c index 972bd8525b..399f3138ba 100644 --- a/src/or/router.c +++ b/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); |