tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit d6c89b1ae1b18cc3cae42638d7bbe1edd7e35715
parent 89148fbffe9f7c6ff207bff4ee065df901e4405c
Author: Nick Mathewson <nickm@torproject.org>
Date:   Tue, 12 Sep 2023 08:46:31 -0400

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.

Diffstat:
Achanges/bug40855 | 6++++++
Msrc/feature/nodelist/networkstatus.c | 4+++-
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/changes/bug40855 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 @@ -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);