Browse Source

Spec compliance: sort id fingerprints in consensus get requests

svn:r14450
Peter Palfrader 17 years ago
parent
commit
eaad3ab395
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/or/directory.c

+ 12 - 0
src/or/directory.c

@@ -773,6 +773,17 @@ connection_dir_is_encrypted(dir_connection_t *conn)
   return TO_CONN(conn)->linked;
   return TO_CONN(conn)->linked;
 }
 }
 
 
+/** Helper for sorting
+ *
+ * sort strings alphabetically
+ */
+static int
+_compare_strs(const void **a, const void **b)
+{
+  const char *s1 = *a, *s2 = *b;
+  return strcmp(s1, s2);
+}
+
 /** Return the URL we should use for a consensus download.
 /** Return the URL we should use for a consensus download.
  *
  *
  * This url depends on whether or not the server we go to
  * This url depends on whether or not the server we go to
@@ -801,6 +812,7 @@ directory_get_consensus_url(int supports_conditional_consensus)
                       ds->digest, CONDITIONAL_CONSENSUS_FPR_LEN);
                       ds->digest, CONDITIONAL_CONSENSUS_FPR_LEN);
         smartlist_add(authority_digets, hex);
         smartlist_add(authority_digets, hex);
       });
       });
+    smartlist_sort(authority_digets, _compare_strs);
     authority_id_list = smartlist_join_strings(authority_digets,
     authority_id_list = smartlist_join_strings(authority_digets,
                                                "+", 0, NULL);
                                                "+", 0, NULL);