Browse Source

r9753@danube: weasel | 2006-09-14 07:07:02 +0200
Remove duplicates from MyFamily


svn:r8390

Peter Palfrader 19 years ago
parent
commit
7fcec09560
1 changed files with 13 additions and 0 deletions
  1. 13 0
      src/or/router.c

+ 13 - 0
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);