aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/router.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 7c42ff77a0..5b7b01c130 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -804,6 +804,7 @@ router_rebuild_descriptor(int force)
if (authdir_mode(options))
ri->is_valid = ri->is_named = 1; /* believe in yourself */
if (options->MyFamily) {
+ int i;
smartlist_t *family;
if (!warned_nonexistent_family)
warned_nonexistent_family = smartlist_create();
@@ -840,6 +841,18 @@ router_rebuild_descriptor(int force)
}
tor_free(name);
});
+
+ smartlist_sort_strings(ri->declared_family);
+ for (i = 1; i < smartlist_len(ri->declared_family); ++i) {
+ const char *a, *b;
+ a = smartlist_get(ri->declared_family, i-1);
+ b = smartlist_get(ri->declared_family, i);
+ if (!strcmp(a,b)) {
+ tor_free(smartlist_get(ri->declared_family, i));
+ smartlist_del_keeporder(ri->declared_family, i--);
+ }
+ }
+
smartlist_free(family);
}
ri->cache_info.signed_descriptor_body = tor_malloc(8192);