commit a570a707ec898cf59bdd12d3a8b20d25ce9459fd Author: juga0 juga@riseup.net Date: Mon Feb 8 16:21:53 2021 +0000
fix: scanner: log exit policy when stream fails --- sbws/core/scanner.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/sbws/core/scanner.py b/sbws/core/scanner.py index 903f09f..c7ee1ee 100644 --- a/sbws/core/scanner.py +++ b/sbws/core/scanner.py @@ -267,7 +267,7 @@ def create_path_relay_as_entry(relay, dest, rl, cb): return error_no_helper(relay, dest) circ_fps = [relay.fingerprint, helper.fingerprint] nicknames = [relay.nickname, helper.nickname] - return helper, circ_fps, nicknames + return circ_fps, nicknames, helper.exit_policy
def create_path_relay_as_exit(relay, dest, rl, cb): @@ -278,7 +278,7 @@ def create_path_relay_as_exit(relay, dest, rl, cb): circ_fps = [helper.fingerprint, relay.fingerprint] # stored for debugging nicknames = [helper.nickname, relay.nickname] - return circ_fps, nicknames + return circ_fps, nicknames, relay.exit_policy
def error_no_circuit(circ_fps, nicknames, reason, relay, dest, our_nick): @@ -341,9 +341,11 @@ def measure_relay(args, conf, destinations, cb, rl, relay): # Instead of ensuring that the relay can exit to all IPs, try first with # the relay as an exit, if it can exit to some IPs. if relay.is_exit_not_bad_allowing_port(dest.port): - circ_fps, nicknames = create_path_relay_as_exit(relay, dest, rl, cb) + circ_fps, nicknames, exit_policy = \ + create_path_relay_as_exit(relay, dest, rl, cb) else: - circ_fps, nicknames = create_path_relay_as_entry(relay, dest, rl, cb) + circ_fps, nicknames, exit_policy = \ + create_path_relay_as_entry(relay, dest, rl, cb)
# Build the circuit circ_id, reason = cb.build_circuit(circ_fps) @@ -367,10 +369,12 @@ def measure_relay(args, conf, destinations, cb, rl, relay): if not is_usable and \ relay.is_exit_not_bad_allowing_port(dest.port): log.info( - "Exit %s (%s) that can't exit all ips failed to connect to " - " %s via circuit %s (%s). Trying again with it as entry.", - relay.fingerprint, relay.nickname, dest, circ_fps, nicknames) - circ_fps, nicknames = create_path_relay_as_entry(relay, dest, rl, cb) + "Exit %s (%s) that can't exit all ips, with exit policy %s, failed" + " to connect to %s via circuit %s (%s). Reason: %s. Trying again " + "with it as entry.", relay.fingerprint, relay.nickname, + exit_policy, dest.url, circ_fps, nicknames, usable_data) + circ_fps, nicknames, exit_policy = \ + create_path_relay_as_entry(relay, dest, rl, cb) circ_id, reason = cb.build_circuit(circ_fps) if not circ_id: log.warning( @@ -385,8 +389,10 @@ def measure_relay(args, conf, destinations, cb, rl, relay): is_usable, usable_data = connect_to_destination_over_circuit( dest, circ_id, s, cb.controller, dest._max_dl) if not is_usable: - log.debug('Destination %s unusable via circuit %s (%s), %s', - dest.url, circ_fps, nicknames, usable_data) + log.debug('Failed to connect to %s to measure %s (%s) via circuit ' + '%s (%s). Exit policy: %s. Reason: %s.', dest.url, + relay.fingerprint, relay.nickname, circ_fps, nicknames, + exit_policy, usable_data) cb.close_circuit(circ_id) return [ ResultErrorStream(relay, circ_fps, dest.url, our_nick, @@ -410,9 +416,10 @@ def measure_relay(args, conf, destinations, cb, rl, relay): bw_results, reason = measure_bandwidth_to_server( s, conf, dest, usable_data['content_length']) if bw_results is None: - log.debug('Unable to measure bandwidth for %s (%s) to %s via circuit ' - '%s (%s): %s', relay.fingerprint, relay.nickname, - dest.url, circ_fps, nicknames, reason) + log.debug('Failed to measure %s (%s) via circuit %s (%s) to %s. Exit' + ' policy: %s. Reason: %s.', relay.fingerprint, + relay.nickname, circ_fps, nicknames, dest.url, exit_policy, + reason) cb.close_circuit(circ_id) return [ ResultErrorStream(relay, circ_fps, dest.url, our_nick,
tor-commits@lists.torproject.org