aboutsummaryrefslogtreecommitdiff
path: root/src/feature/relay
diff options
context:
space:
mode:
authorteor <teor@torproject.org>2019-06-24 21:20:34 +1000
committerteor <teor@torproject.org>2019-06-25 12:30:59 +1000
commitc131b0763e994ea850f457319ec6d9c487760a85 (patch)
tree3bd46cb33306eef190fd09e56edeeb72e2a0294a /src/feature/relay
parent2663bca39246cdf54fe43593b2e632a7bbe9af97 (diff)
downloadtor-c131b0763e994ea850f457319ec6d9c487760a85.tar.gz
tor-c131b0763e994ea850f457319ec6d9c487760a85.zip
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.
Diffstat (limited to 'src/feature/relay')
-rw-r--r--src/feature/relay/router.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 782084caa3..51ced6289d 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);