|
@@ -886,6 +886,11 @@ router_load_single_router(const char *s)
|
|
|
if (router_add_to_routerlist(ri)<0) {
|
|
|
log_fn(LOG_WARN, "Couldn't add router to list; dropping.");
|
|
|
return -1;
|
|
|
+ } else {
|
|
|
+ smartlist_t *changed = smartlist_create();
|
|
|
+ smartlist_add(changed, ri);
|
|
|
+ control_event_descriptors_changed(changed);
|
|
|
+ smartlist_free(changed);
|
|
|
}
|
|
|
log_fn(LOG_DEBUG, "Added router to list");
|
|
|
return 0;
|
|
@@ -914,16 +919,23 @@ int router_load_routerlist_from_directory(const char *s,
|
|
|
return -1;
|
|
|
}
|
|
|
if (routerlist) {
|
|
|
+ smartlist_t *changed = smartlist_create();
|
|
|
SMARTLIST_FOREACH(new_list->routers, routerinfo_t *, r,
|
|
|
- router_add_to_routerlist(r));
|
|
|
+ {
|
|
|
+ if (router_add_to_routerlist(r)==0)
|
|
|
+ smartlist_add(changed, r);
|
|
|
+ });
|
|
|
smartlist_clear(new_list->routers);
|
|
|
routerlist->published_on = new_list->published_on;
|
|
|
tor_free(routerlist->software_versions);
|
|
|
routerlist->software_versions = new_list->software_versions;
|
|
|
new_list->software_versions = NULL;
|
|
|
routerlist_free(new_list);
|
|
|
+ control_event_descriptors_changed(changed);
|
|
|
+ smartlist_free(changed);
|
|
|
} else {
|
|
|
routerlist = new_list;
|
|
|
+ control_event_descriptors_changed(routerlist->routers);
|
|
|
}
|
|
|
if (router_resolve_routerlist(routerlist)) {
|
|
|
log_fn(LOG_WARN, "Error resolving routerlist");
|