Browse Source

Having a reject-all policy summarized with a lack of summary is stupid. Explicitly mention them as reject 1-65535.

svn:r16543
Peter Palfrader 16 years ago
parent
commit
ff32708d0e
4 changed files with 24 additions and 27 deletions
  1. 13 10
      doc/spec/proposals/141-jit-sd-downloads.txt
  2. 6 8
      src/or/dirserv.c
  3. 1 1
      src/or/policies.c
  4. 4 8
      src/or/test.c

+ 13 - 10
doc/spec/proposals/141-jit-sd-downloads.txt

@@ -233,18 +233,21 @@ Status: Draft
      at most two /8 networks).
 
   An exit policy summary will be included in votes and consensus as a
-  new line attached to each exit node.  A lack of policy should indicate
-  a non-exit policy.  The line will have the format
+  new line attached to each exit node.  The line will have the format
    "p" <space> "accept"|"reject" <portlist>
   where portlist is a comma seperated list of single port numbers or
-  portranges (e.g.  "22,80-88,1024-6000,6667").  Whether the summary
-  shows the list of accepted ports or the list of rejected ports depends
-  on which list is shorter (has a shorter string representation).  In
-  case of ties we choose the list of accepted ports.  As an exception to
-  this rule an allow-all policy is represented as "accept 1-65535"
-  instead of "reject ".  Summary items are compressed, that is instead
-  of "80-88,89-100" there only is a single item of "80-100", similarly
-  instead of "20,21" a summary will say "20-21".
+  portranges (e.g.  "22,80-88,1024-6000,6667").
+
+  Whether the summary shows the list of accepted ports or the list of
+  rejected ports depends on which list is shorter (has a shorter string
+  representation).  In case of ties we choose the list of accepted
+  ports.  As an exception to this rule an allow-all policy is
+  represented as "accept 1-65535" instead of "reject " and a reject-all
+  policy is similarly given as "reject 1-65535".
+
+  Summary items are compressed, that is instead of "80-88,89-100" there
+  only is a single item of "80-100", similarly instead of "20,21" a
+  summary will say "20-21".
 
   Port lists are sorted in ascending order.
 

+ 6 - 8
src/or/dirserv.c

@@ -1974,15 +1974,13 @@ routerstatus_format_entry(char *buf, size_t buf_len,
     cp += strlen(cp);
 
     summary = policy_summarize(desc->exit_policy);
-    if (summary) {
-      r = tor_snprintf(cp, buf_len - (cp-buf), "p %s\n", summary);
-      if (r<0) {
-        log_warn(LD_BUG, "Not enough space in buffer.");
-        return -1;
-      }
-      cp += strlen(cp);
-      tor_free(summary);
+    r = tor_snprintf(cp, buf_len - (cp-buf), "p %s\n", summary);
+    if (r<0) {
+      log_warn(LD_BUG, "Not enough space in buffer.");
+      return -1;
     }
+    cp += strlen(cp);
+    tor_free(summary);
   }
 
   return 0;

+ 1 - 1
src/or/policies.c

@@ -1139,7 +1139,7 @@ policy_summarize(smartlist_t *policy)
    * that to build the result
    */
   if (smartlist_len(accepts) == 0) { /* no exits at all */
-    result = NULL;
+    result = tor_strdup("reject 1-65535");
     goto cleanup;
   }
   if (smartlist_len(rejects) == 0) { /* no rejects at all */

+ 4 - 8
src/or/test.c

@@ -3369,13 +3369,9 @@ test_policy_summary_helper(const char *policy_str,
   test_assert(0 == policies_parse_exit_policy(&line, &policy, 0, NULL));
   summary = policy_summarize(policy);
 
-  if (expected_summary == NULL)
-    test_assert(summary == NULL);
-  else {
-    test_assert(summary != NULL);
-    test_streq(summary, expected_summary);
-    tor_free(summary);
-  };
+  test_assert(summary != NULL);
+  test_streq(summary, expected_summary);
+  tor_free(summary);
   addr_policy_list_free(policy);
 }
 
@@ -3474,7 +3470,7 @@ test_policies(void)
   /* no exits */
   test_policy_summary_helper("accept 11.0.0.0/9:80,"
                              "reject *:*",
-                             NULL);
+                             "reject 1-65535");
   /* port merging */
   test_policy_summary_helper("accept *:80,"
                              "accept *:81,"