summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/routerparse.c21
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;
}