diff options
-rw-r--r-- | src/or/routerparse.c | 21 |
1 files 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; } |