diff options
Diffstat (limited to 'src/or/router.c')
-rw-r--r-- | src/or/router.c | 13 |
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); |