diff options
-rw-r--r-- | changes/ticket40891 | 5 | ||||
-rw-r--r-- | src/feature/dirauth/bwauth.c | 10 | ||||
-rw-r--r-- | src/test/test_dir.c | 3 |
3 files changed, 14 insertions, 4 deletions
diff --git a/changes/ticket40891 b/changes/ticket40891 new file mode 100644 index 0000000000..c0e2080587 --- /dev/null +++ b/changes/ticket40891 @@ -0,0 +1,5 @@ + o Minor feature (directory authority): + - Allow BandwidthFiles "node_id" KeyValue without the dollar sign at the + start of the hexdigit, in order to easier database queries combining + Tor documents in which the relays fingerprint does not include it. + Fixes bug 40891; bugfix on 0.4.7 (all supported versions of Tor). diff --git a/src/feature/dirauth/bwauth.c b/src/feature/dirauth/bwauth.c index 90b425842a..b5b1081e47 100644 --- a/src/feature/dirauth/bwauth.c +++ b/src/feature/dirauth/bwauth.c @@ -434,15 +434,19 @@ measured_bw_line_parse(measured_bw_line_t *out, const char *orig_line, return -1; } got_bw=1; - } else if (strcmpstart(cp, "node_id=$") == 0) { + // Allow node_id to start with or without the dollar sign. + } else if (strcmpstart(cp, "node_id=") == 0) { if (got_node_id) { log_warn(LD_DIRSERV, "Double node_id= in bandwidth file line: %s", escaped(orig_line)); tor_free(line); return -1; } - cp+=strlen("node_id=$"); - + if (strcmpstart(cp, "node_id=$") == 0) { + cp+=strlen("node_id=$"); + } else if (strcmpstart(cp, "node_id=") == 0) { + cp+=strlen("node_id="); + } if (strlen(cp) != HEX_DIGEST_LEN || base16_decode(out->node_id, DIGEST_LEN, cp, HEX_DIGEST_LEN) != DIGEST_LEN) { diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 248fd8ab5d..4ecf31038e 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -2072,6 +2072,8 @@ test_dir_measured_bw_kb(void *arg) int i; const char *lines_pass[] = { "node_id=$557365204145532d32353620696e73746561642e bw=1024\n", + /* check whether node_id does not need the dollar sign at the start */ + "node_id=557365204145532d32353620696e73746561642e bw=1024\n", "node_id=$557365204145532d32353620696e73746561642e\t bw=1024 \n", " node_id=$557365204145532d32353620696e73746561642e bw=1024\n", "\tnoise\tnode_id=$557365204145532d32353620696e73746561642e " @@ -2129,7 +2131,6 @@ test_dir_measured_bw_kb(void *arg) " node_id= ", "node_id==$557365204145532d32353620696e73746561642e bw==1024\n", "node_id=$55736520414552d32353620696e73746561642e bw=1024\n", - "node_id=557365204145532d32353620696e73746561642e bw=1024\n", "node_id= $557365204145532d32353620696e73746561642e bw=0.23\n", /* Test that a line with vote=0 will fail too, so that it is ignored. */ |