summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2007-12-22 06:11:49 +0000
committerRoger Dingledine <arma@torproject.org>2007-12-22 06:11:49 +0000
commit6097e46420e8125c1495d63a430c956ddbff6410 (patch)
tree953c6195a7442cec3aaa67cc4bc4d9772b3db834
parenta03aa2ef6ebd2c537bc69b05c71483cd09f72b1c (diff)
downloadtor-6097e46420e8125c1495d63a430c956ddbff6410.tar.gz
tor-6097e46420e8125c1495d63a430c956ddbff6410.zip
Fix a crash when we load a bridge descriptor from disk but we don't
currently have a Bridge line for it in our torrc. Bugfix on 0.2.0.12-alpha. svn:r12921
-rw-r--r--ChangeLog3
-rw-r--r--src/or/circuitbuild.c15
-rw-r--r--src/or/routerlist.c4
3 files changed, 14 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 4bc9c58adf..f25a535812 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,9 @@ Changes in version 0.2.0.14-alpha - 2007-12-??
time you use a given introduction point for your service, but
on subsequent requests we'd be using garbage memory. Fixed by
Karsten Loesing. Bugfix on 0.2.0.12-alpha.
+ - Fix a crash when we load a bridge descriptor from disk but we don't
+ currently have a Bridge line for it in our torrc. Bugfix on
+ 0.2.0.12-alpha.
o Minor bugfixes:
- Make the unit tests build again.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 424d2e1950..6ca23b9d51 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -2908,6 +2908,7 @@ bridge_fetch_status_increment(bridge_info_t *bridge, time_t now)
static void
bridge_fetch_status_arrived(bridge_info_t *bridge, time_t now)
{
+ tor_assert(bridge);
bridge->fetch_status.next_attempt_at = now+60*60;
bridge->fetch_status.n_download_failures = 0;
}
@@ -3038,13 +3039,15 @@ learned_bridge_descriptor(routerinfo_t *ri)
time_t now = time(NULL);
ri->is_running = 1;
- /* it's here; schedule its re-fetch for a long time from now. */
- bridge_fetch_status_arrived(bridge, now);
+ if (bridge) { /* if we actually want to use this one */
+ /* it's here; schedule its re-fetch for a long time from now. */
+ bridge_fetch_status_arrived(bridge, now);
- add_an_entry_guard(ri, 1);
- log_notice(LD_DIR, "new bridge descriptor '%s'", ri->nickname);
- if (first)
- routerlist_retry_directory_downloads(now);
+ add_an_entry_guard(ri, 1);
+ log_notice(LD_DIR, "new bridge descriptor '%s'", ri->nickname);
+ if (first)
+ routerlist_retry_directory_downloads(now);
+ }
}
}
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index de3e1e99c3..0c56d440e3 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -3050,8 +3050,8 @@ routerlist_remove_old_routers(void)
digestmap_free(retain, NULL);
}
-/** We just added a new descriptor that isn't of purpose
- * ROUTER_PURPOSE_GENERAL. Take whatever extra steps we need. */
+/** We just added a new set of descriptors. Take whatever extra steps
+ * we need. */
static void
routerlist_descriptors_added(smartlist_t *sl)
{