mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Fix several places where md-using relays would get wrong behavior.
This patch replaces a few calls to router_get_by_id_digest ("do we have a routerinfo?") with connection_or_digest_is_known_relay ("do we know this relay to be in the consensus, or have been there some time recently?"). Found while doing the 21585 audit; fixes bug 23533. Bugfix on 0.3.0.1-alpha.
This commit is contained in:
parent
b440560b8b
commit
e05414d241
4
changes/bug23533
Normal file
4
changes/bug23533
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor bugfixes (relay):
|
||||||
|
- Inform the geoip and rephist modules about all requests, even
|
||||||
|
on relays that are only fetching microdescriptors. Fixes a bug related
|
||||||
|
to 21585; bugfix on 0.3.0.1-alpha.
|
@ -2696,7 +2696,7 @@ channel_do_open_actions(channel_t *chan)
|
|||||||
router_set_status(chan->identity_digest, 1);
|
router_set_status(chan->identity_digest, 1);
|
||||||
} else {
|
} else {
|
||||||
/* only report it to the geoip module if it's not a known router */
|
/* only report it to the geoip module if it's not a known router */
|
||||||
if (!router_get_by_id_digest(chan->identity_digest)) {
|
if (!connection_or_digest_is_known_relay(chan->identity_digest)) {
|
||||||
if (channel_get_addr_if_possible(chan, &remote_addr)) {
|
if (channel_get_addr_if_possible(chan, &remote_addr)) {
|
||||||
char *transport_name = NULL;
|
char *transport_name = NULL;
|
||||||
if (chan->get_transport_name(chan, &transport_name) < 0)
|
if (chan->get_transport_name(chan, &transport_name) < 0)
|
||||||
|
@ -1823,7 +1823,7 @@ channel_tls_process_netinfo_cell(cell_t *cell, channel_tls_t *chan)
|
|||||||
/** Warn when we get a netinfo skew with at least this value. */
|
/** Warn when we get a netinfo skew with at least this value. */
|
||||||
#define NETINFO_NOTICE_SKEW 3600
|
#define NETINFO_NOTICE_SKEW 3600
|
||||||
if (labs(apparent_skew) > NETINFO_NOTICE_SKEW &&
|
if (labs(apparent_skew) > NETINFO_NOTICE_SKEW &&
|
||||||
router_get_by_id_digest(chan->conn->identity_digest)) {
|
connection_or_digest_is_known_relay(chan->conn->identity_digest)) {
|
||||||
int trusted = router_digest_is_trusted_dir(chan->conn->identity_digest);
|
int trusted = router_digest_is_trusted_dir(chan->conn->identity_digest);
|
||||||
clock_skew_warning(TO_CONN(chan->conn), apparent_skew, trusted, LD_GENERAL,
|
clock_skew_warning(TO_CONN(chan->conn), apparent_skew, trusted, LD_GENERAL,
|
||||||
"NETINFO cell", "OR");
|
"NETINFO cell", "OR");
|
||||||
|
@ -947,9 +947,9 @@ rep_hist_record_mtbf_data(time_t now, int missing_means_down)
|
|||||||
base16_encode(dbuf, sizeof(dbuf), digest, DIGEST_LEN);
|
base16_encode(dbuf, sizeof(dbuf), digest, DIGEST_LEN);
|
||||||
|
|
||||||
if (missing_means_down && hist->start_of_run &&
|
if (missing_means_down && hist->start_of_run &&
|
||||||
!router_get_by_id_digest(digest)) {
|
!connection_or_digest_is_known_relay(digest)) {
|
||||||
/* We think this relay is running, but it's not listed in our
|
/* We think this relay is running, but it's not listed in our
|
||||||
* routerlist. Somehow it fell out without telling us it went
|
* consensus. Somehow it fell out without telling us it went
|
||||||
* down. Complain and also correct it. */
|
* down. Complain and also correct it. */
|
||||||
log_info(LD_HIST,
|
log_info(LD_HIST,
|
||||||
"Relay '%s' is listed as up in rephist, but it's not in "
|
"Relay '%s' is listed as up in rephist, but it's not in "
|
||||||
|
Loading…
Reference in New Issue
Block a user