[tor-commits] [tor/master] stats: add comments about the required chunk structure in extra info files

nickm at torproject.org nickm at torproject.org
Tue Jul 2 17:34:51 UTC 2019


commit c131b0763e994ea850f457319ec6d9c487760a85
Author: teor <teor at torproject.org>
Date:   Mon Jun 24 21:20:34 2019 +1000

    stats: add comments about the required chunk structure in extra info files
    
    These comments should prevent future instances of 30958.
    
    And allow a larger file in practracker.
    
    Follow up after 30958.
---
 scripts/maint/practracker/exceptions.txt |  2 +-
 src/feature/relay/router.c               | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/scripts/maint/practracker/exceptions.txt b/scripts/maint/practracker/exceptions.txt
index 4db452b89..ffe238a67 100644
--- a/scripts/maint/practracker/exceptions.txt
+++ b/scripts/maint/practracker/exceptions.txt
@@ -225,7 +225,7 @@ problem function-size /src/feature/nodelist/routerlist.c:update_extrainfo_downlo
 problem function-size /src/feature/relay/dns.c:dns_resolve_impl() 134
 problem function-size /src/feature/relay/dns.c:configure_nameservers() 161
 problem function-size /src/feature/relay/dns.c:evdns_callback() 109
-problem file-size /src/feature/relay/router.c 3510
+problem file-size /src/feature/relay/router.c 3522
 problem include-count /src/feature/relay/router.c 56
 problem function-size /src/feature/relay/router.c:init_keys() 252
 problem function-size /src/feature/relay/router.c:get_my_declared_family() 114
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 782084caa..51ced6289 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -3158,6 +3158,8 @@ extrainfo_dump_to_string_header_helper(
     ed_cert_line = tor_strdup("");
   }
 
+  /* This is the first chunk in the file. If the file is too big, other chunks
+   * are removed. So we must only add one chunk here. */
   tor_asprintf(&pre, "extra-info %s %s\n%spublished %s\n",
                extrainfo->nickname, identity,
                ed_cert_line,
@@ -3187,6 +3189,10 @@ extrainfo_dump_to_string_stats_helper(smartlist_t *chunks,
   char *contents = NULL;
   time_t now = time(NULL);
 
+  /* If the file is too big, these chunks are removed, starting with the last
+   * chunk. So each chunk must be a complete line, and the file must be valid
+   * after each chunk. */
+
   /* Add information about the pluggable transports we support, even if we
    * are not publishing statistics. This information is needed by BridgeDB
    * to distribute bridges. */
@@ -3269,6 +3275,8 @@ extrainfo_dump_to_string_ed_sig_helper(
   char buf[ED25519_SIG_BASE64_LEN+1];
   int rv = -1;
 
+  /* These are two of the three final chunks in the file. If the file is too
+   * big, other chunks are removed. So we must only add two chunks here. */
   smartlist_add_strdup(chunks, "router-sig-ed25519 ");
   crypto_digest_smartlist_prefix(sha256_digest, DIGEST256_LEN,
                                  ED_DESC_SIGNATURE_PREFIX,
@@ -3362,6 +3370,8 @@ extrainfo_dump_to_string(char **s_out, extrainfo_t *extrainfo,
       goto err;
   }
 
+  /* This is one of the three final chunks in the file. If the file is too big,
+   * other chunks are removed. So we must only add one chunk here. */
   smartlist_add_strdup(chunks, "router-signature\n");
   s = smartlist_join_strings(chunks, "", 0, NULL);
 





More information about the tor-commits mailing list