|
@@ -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;
|
|
|
}
|