[or-cvs] [tor/master] List unresolved requests in geoip stats as country '??'.
Nick Mathewson
nickm at seul.org
Tue Jul 14 16:21:38 UTC 2009
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Thu, 9 Jul 2009 15:34:53 +0200
Subject: List unresolved requests in geoip stats as country '??'.
Commit: fa2374a16360cb3d9bfb18827c574c8f44345925
---
ChangeLog | 3 ++-
src/or/geoip.c | 11 ++++++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c0a1a9e..3c778c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 13a6a28..13b9b7d 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -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)
@@ -505,7 +514,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;
--
1.5.6.5
More information about the tor-commits
mailing list