Merge commit 'karsten/geoipstats-newoverthereistan-master'

This commit is contained in:
Nick Mathewson 2009-07-14 12:14:19 -04:00
commit 49136bb18f
2 changed files with 12 additions and 2 deletions

View File

@ -16,7 +16,8 @@ Changes in version 0.2.2.1-alpha - 2009-??-??
to make sure nothing writes beyond the end of an area. This might
help debug some conceivable causes of bug 930.
- Directories that are configured with the --enable-geoip-stats flag
now write their GeoIP stats to disk exactly every 24 hours.
now write their GeoIP stats to disk exactly every 24 hours. Also,
unresolved requests are listed with country code '??'.
- Exit nodes can write statistics on the number of exit streams and
transferred bytes per port to disk every 24 hours. To enable this,
run configure with the --enable-exit-stats option, and set

View File

@ -188,7 +188,14 @@ geoip_load_file(const char *filename, or_options_t *options)
return -1;
}
if (!geoip_countries) {
geoip_country_t *geoip_unresolved;
geoip_countries = smartlist_create();
/* Add a geoip_country_t for requests that could not be resolved to a
* country as first element (index 0) to geoip_countries. */
geoip_unresolved = tor_malloc_zero(sizeof(geoip_country_t));
strlcpy(geoip_unresolved->countrycode, "??",
sizeof(geoip_unresolved->countrycode));
smartlist_add(geoip_countries, geoip_unresolved);
country_idxplus1_by_lc_code = strmap_new();
}
if (geoip_entries) {
@ -375,6 +382,8 @@ geoip_note_client_seen(geoip_client_action_t action,
if (action == GEOIP_CLIENT_NETWORKSTATUS ||
action == GEOIP_CLIENT_NETWORKSTATUS_V2) {
int country_idx = geoip_get_country_by_ip(addr);
if (country_idx < 0)
country_idx = 0; /** unresolved requests are stored at index 0. */
if (country_idx >= 0 && country_idx < smartlist_len(geoip_countries)) {
geoip_country_t *country = smartlist_get(geoip_countries, country_idx);
if (action == GEOIP_CLIENT_NETWORKSTATUS)
@ -495,7 +504,7 @@ geoip_get_client_history(time_t now, geoip_client_action_t action)
continue;
country = geoip_get_country_by_ip((*ent)->ipaddr);
if (country < 0)
continue;
country = 0; /** unresolved requests are stored at index 0. */
tor_assert(0 <= country && country < n_countries);
++counts[country];
++total;