we restart.
- Correctly enforce that elements of directory objects do not appear
more often than they are allowed to appear.
+ - Fix a bug in dirserv_remove_invalid() that would cause authorities to
+ corrupt memory under some really unlikely scenarios.
+ - Add even more asserts to hunt down bug 417.
o Minor bugfixes (controller), reported by daejees:
- Make 'getinfo fingerprint' return a 551 error if we're not a
int changed = 0;
routerlist_t *rl = router_get_routerlist();
+ routerlist_assert_ok(rl);
+
for (i = 0; i < smartlist_len(rl->routers); ++i) {
const char *msg;
routerinfo_t *ent = smartlist_get(rl->routers, i);
ent->nickname, msg?msg:"");
routerlist_remove(rl, ent, i--, 0);
changed = 1;
+ continue;
}
if (bool_neq((r & FP_NAMED), ent->is_named)) {
log_info(LD_DIRSERV,
}
if (changed)
directory_set_dirty();
+
+ routerlist_assert_ok(rl);
}
/** Write a list of unregistered descriptors into a newly allocated
digestmap_iter_t *iter;
routerinfo_t *r2;
signed_descriptor_t *sd2;
- if (!routerlist)
+ if (!rl);
return;
SMARTLIST_FOREACH(rl->routers, routerinfo_t *, r,
{