From 1fe07f66f470e39fa9138402be4f2c32b1faca60 Mon Sep 17 00:00:00 2001 From: Karsten Loesing Date: Mon, 4 Aug 2008 23:35:12 +0000 Subject: [PATCH] In some edge cases it occurs that the router descriptor of a previously picked introduction point becomes obsolete. In that case, don't stick to using that introduction point, but simply give up on it. Reverts some part of r15825. svn:r16404 --- ChangeLog | 6 ++++++ src/or/rendservice.c | 13 ++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6edb098fe..d3f7fd0f1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,12 @@ Changes in version 0.2.1.4-alpha - 2008-08-?? been established before, a false assertion was triggered. Noticed by phobos, fixed by karsten. Bugfix on 0.2.1.3-alpha. + o Minor bugfixes: + - In some edge cases it occurs that the router descriptor of a + previously picked introduction point becomes obsolete. In that case, + don't stick to using this introduction point, but simply give up on + it. Observed by xiando. Bugfix on 0.2.1.3-alpha. + Changes in version 0.2.1.3-alpha - 2008-08-03 o Bootstrapping bugfixes (on 0.2.1.x-alpha): diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 61736f5e0a..6cf4d591a2 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -1228,14 +1228,8 @@ rend_services_introduce(void) for (j=0; j < smartlist_len(service->intro_nodes); ++j) { intro = smartlist_get(service->intro_nodes, j); router = router_get_by_digest(intro->extend_info->identity_digest); - if (!router) { - log_warn(LD_BUG, "We have picked router %s as introduction point, " - "but we don't have its router descriptor. Skipping.", - intro->extend_info->nickname); - continue; - } - if (!find_intro_circuit(intro, service->pk_digest, - service->descriptor_version)) { + if (!router || !find_intro_circuit(intro, service->pk_digest, + service->descriptor_version)) { log_info(LD_REND,"Giving up on %s as intro point for %s.", intro->extend_info->nickname, service->service_id); if (service->desc) { @@ -1254,7 +1248,8 @@ rend_services_introduce(void) smartlist_del(service->intro_nodes,j--); changed = 1; } - smartlist_add(intro_routers, router); + if (router) + smartlist_add(intro_routers, router); } /* We have enough intro points, and the intro points we thought we had were