aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2023-09-12 08:46:31 -0400
committerNick Mathewson <nickm@torproject.org>2023-09-12 08:46:31 -0400
commitd6c89b1ae1b18cc3cae42638d7bbe1edd7e35715 (patch)
tree5ad2445f37e5951b406630156ef56dcbcf6e8a48
parent89148fbffe9f7c6ff207bff4ee065df901e4405c (diff)
downloadtor-d6c89b1ae1b18cc3cae42638d7bbe1edd7e35715.tar.gz
tor-d6c89b1ae1b18cc3cae42638d7bbe1edd7e35715.zip
Make networkstatus_getinfo_by_purpose report published_on again.
When we implemented prop275 in 0.4.8.1-alpha, we changed the behavior of networkstatus_getinfo_helper_single to omit meaningful published_on times, replacing them with "2038-01-01". This is necessary when we're formatting a routerstatus with no additional info, since routerstatus objects no longer include a published_on. But in networkstatus_getinfo_by_purpose, we do have a routerinfo that does have a published_on. This patch uses that information to report published_on times in our output when we're making a "virtual" networkstatus for a big file of routerinfo_t objects. This is mostly important for bridge authorities, since when they dump a secret list of the bridges, they want to include published_on times. Closes #40855. Bugfix on 0.4.8.1-alpha.
-rw-r--r--changes/bug408556
-rw-r--r--src/feature/nodelist/networkstatus.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/changes/bug40855 b/changes/bug40855
new file mode 100644
index 0000000000..b455ac9a48
--- /dev/null
+++ b/changes/bug40855
@@ -0,0 +1,6 @@
+ o Minor bugfixes (bridge authority):
+ - When reporting a pseudo-networkstatus as a bridge authority,
+ or answering "ns/purpose/*" controller requests,
+ include accurate published-on dates from our
+ list of router descriptors. Fixes bug 40855;
+ bugfix on 0.4.8.1-alpha.
diff --git a/src/feature/nodelist/networkstatus.c b/src/feature/nodelist/networkstatus.c
index f14034c2b7..61eef5bfa5 100644
--- a/src/feature/nodelist/networkstatus.c
+++ b/src/feature/nodelist/networkstatus.c
@@ -2451,7 +2451,9 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now)
if (ri->purpose != purpose)
continue;
set_routerstatus_from_routerinfo(&rs, node, ri);
- smartlist_add(statuses, networkstatus_getinfo_helper_single(&rs));
+ char *text = routerstatus_format_entry(
+ &rs, NULL, NULL, NS_CONTROL_PORT, NULL, ri->cache_info.published_on);
+ smartlist_add(statuses, text);
} SMARTLIST_FOREACH_END(ri);
answer = smartlist_join_strings(statuses, "", 0, NULL);