[or-cvs] r16968: {tor} Widen the conditions under which we whine about not having a (tor/trunk/src/or)
nickm at seul.org
nickm at seul.org
Thu Sep 25 21:06:32 UTC 2008
Author: nickm
Date: 2008-09-25 17:06:32 -0400 (Thu, 25 Sep 2008)
New Revision: 16968
Modified:
tor/trunk/src/or/config.c
tor/trunk/src/or/geoip.c
tor/trunk/src/or/or.h
tor/trunk/src/or/routerlist.c
Log:
Widen the conditions under which we whine about not having a geoip file to include "a country code was configured in a node list."
Modified: tor/trunk/src/or/config.c
===================================================================
--- tor/trunk/src/or/config.c 2008-09-25 20:22:17 UTC (rev 16967)
+++ tor/trunk/src/or/config.c 2008-09-25 21:06:32 UTC (rev 16968)
@@ -1163,6 +1163,30 @@
return r;
}
+/** DOCDOC */
+int
+options_need_geoip_info(or_options_t *options, const char **reason_out)
+{
+ int bridge_usage =
+ options->BridgeRelay && options->BridgeRecordUsageByCountry;
+ int routerset_usage =
+ routerset_needs_geoip(options->EntryNodes) ||
+ routerset_needs_geoip(options->ExitNodes) ||
+ routerset_needs_geoip(options->ExcludeExitNodes) ||
+ routerset_needs_geoip(options->ExcludeNodes);
+
+ if (routerset_usage && reason_out) {
+ *reason_out = "We've been configured to use (or avoid) nodes in certain "
+ "contries, and we need GEOIP information to figure out which ones they "
+ "are.";
+ } else if (bridge_usage && reason_out) {
+ *reason_out = "We've been configured to see which countries can access "
+ "us as a bridge, and we need GEOIP information to tell which countries "
+ "clients are in.";
+ }
+ return bridge_usage || routerset_usage;
+}
+
/** Fetch the active option list, and take actions based on it. All of the
* things we do should survive being done repeatedly. If present,
* <b>old_options</b> contains the previous value of the options.
Modified: tor/trunk/src/or/geoip.c
===================================================================
--- tor/trunk/src/or/geoip.c 2008-09-25 20:22:17 UTC (rev 16967)
+++ tor/trunk/src/or/geoip.c 2008-09-25 21:06:32 UTC (rev 16968)
@@ -178,10 +178,12 @@
geoip_load_file(const char *filename, or_options_t *options)
{
FILE *f;
- int severity = should_record_bridge_info(options) ? LOG_WARN : LOG_INFO;
+ const char *msg = "";
+ int severity = options_need_geoip_info(options, &msg) ? LOG_WARN : LOG_INFO;
clear_geoip_db();
if (!(f = fopen(filename, "r"))) {
- log_fn(severity, LD_GENERAL, "Failed to open GEOIP file %s.", filename);
+ log_fn(severity, LD_GENERAL, "Failed to open GEOIP file %s. %s",
+ filename, msg);
return -1;
}
if (!geoip_countries) {
@@ -193,7 +195,7 @@
smartlist_free(geoip_entries);
}
geoip_entries = smartlist_create();
- log_info(LD_GENERAL, "Parsing GEOIP file.");
+ log_notice(LD_GENERAL, "Parsing GEOIP file.");
while (!feof(f)) {
char buf[512];
if (fgets(buf, (int)sizeof(buf), f) == NULL)
Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h 2008-09-25 20:22:17 UTC (rev 16967)
+++ tor/trunk/src/or/or.h 2008-09-25 21:06:32 UTC (rev 16968)
@@ -2837,6 +2837,7 @@
or_state_t *get_or_state(void);
int or_state_save(time_t now);
+int options_need_geoip_info(or_options_t *options, const char **reason_out);
int getinfo_helper_config(control_connection_t *conn,
const char *question, char **answer);
@@ -4294,6 +4295,7 @@
const char *description);
void routerset_union(routerset_t *target, const routerset_t *source);
int routerset_is_list(const routerset_t *set);
+int routerset_needs_geoip(const routerset_t *set);
int routerset_contains_router(const routerset_t *set, routerinfo_t *ri);
int routerset_contains_routerstatus(const routerset_t *set,
routerstatus_t *rs);
Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c 2008-09-25 20:22:17 UTC (rev 16967)
+++ tor/trunk/src/or/routerlist.c 2008-09-25 21:06:32 UTC (rev 16968)
@@ -4882,6 +4882,13 @@
}
/** DOCDOC */
+int
+routerset_needs_geoip(const routerset_t *set)
+{
+ return set && smartlist_len(set->country_names);
+}
+
+/** DOCDOC */
static int
routerset_is_empty(const routerset_t *set)
{
More information about the tor-commits
mailing list