diff options
author | Karsten Loesing <karsten.loesing@gmx.net> | 2008-08-04 23:35:12 +0000 |
---|---|---|
committer | Karsten Loesing <karsten.loesing@gmx.net> | 2008-08-04 23:35:12 +0000 |
commit | 1fe07f66f470e39fa9138402be4f2c32b1faca60 (patch) | |
tree | 6c17913f4d6f1a4d64d33ec6253886104e57fb9f | |
parent | ff9c3c006f717c7ae1135416e100078b793e664c (diff) | |
download | tor-1fe07f66f470e39fa9138402be4f2c32b1faca60.tar.gz tor-1fe07f66f470e39fa9138402be4f2c32b1faca60.zip |
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
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/or/rendservice.c | 13 |
2 files changed, 10 insertions, 9 deletions
@@ -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 |