The circuit display is not shown when the bridge line doesn't contain the node fingerprint
As a sort of known bug, we cannot do much to associate fingerprints to bridges.
As a workaround, we use the bridge line to associate the address to the fingerprint. But if the user don't supply it, we cannot recognize they're using a bridge and query the control port for the IP address as it was a normal relay. The control port answers with an error that as ultimate consequence makes the circuit display disappear for that page.
This is easily checkable by requesting a vanilla bridge on https://bridges.torproject.org/, and then copying only the IP address and port without the fingerprint.
I discovered that we can at least get bridge fingerprints with GETINFO downloads/bridge/bridges
. E.g.:
GETINFO downloads/bridge/bridges
250+downloads/bridge/bridges=
8838024498816A039FCBBAB14E6F40A0843051FA
2B280B23E1107BB62ABFC40DDCC8824814F80A72
.
250 OK
GETINFO downloads/bridge/bridges
551 We don't seem to be using bridges
That would be helpful, because at least we'd have a way to be sure we are dealing with a bridge. I'd say creating a set of bridges would be quite cheap to do every time in the query for the information about a node.
In some cases we can also get IP addresses with GETINFO ns/purpose/bridge
, in a format similar to the one for normal relays, e.g.:
r Unnamed fingerprint-in-base64 something-else some-date ipv4 port 0
a ipv6:port
s Running
w Bandwidth=...
p reject 1-65535
However, this includes many bridges, there isn't a way to filter only on the fingerprint we want to know , but what's worse is that it might not contain all (e.g., Snowflake wasn't included in my tests) (Snowflake isn't working in my dev build for some reason
Anyway, I wonder if we should add an "Unknown" item in the circuit display when we cannot get the information in any way, and display the other nodes.
The problem was spotted by NoOp21 in the 13.0 release thread.