From 69c712f1899d3e42fd563136e78af4cb62472b56 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 29 May 2007 15:08:55 +0000 Subject: [PATCH] r13048@catbus: nickm | 2007-05-29 11:08:53 -0400 Oops; better version of previous patch that does not get caught in an infinite loop. svn:r10391 --- src/or/routerparse.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/or/routerparse.c b/src/or/routerparse.c index fc4438c952..a21952c2f0 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -900,23 +900,26 @@ router_parse_list_from_string(const char **s, const char *eos, if (!end) break; + elt = NULL; + if (have_extrainfo && want_extrainfo) { routerlist_t *rl = router_get_routerlist(); extrainfo = extrainfo_parse_entry_from_string(*s, end, saved_location != SAVED_IN_CACHE, rl->identity_map); - if (!extrainfo) - continue; - signed_desc = &extrainfo->cache_info; - elt = extrainfo; + if (extrainfo) { + signed_desc = &extrainfo->cache_info; + elt = extrainfo; + } } else if (!have_extrainfo && !want_extrainfo) { router = router_parse_entry_from_string(*s, end, saved_location != SAVED_IN_CACHE); - if (!router) - continue; - signed_desc = &router->cache_info; - elt = router; - } else { + if (router) { + signed_desc = &router->cache_info; + elt = router; + } + } + if (!elt) { *s = end; continue; }