get_configured_bridge_by_addr_port_digest() returns NULL if digest is NULL (the caller doesn't care about the digest) and bridge->identity set.
Normally, the function should return any bridge with addr/port that matches even if it has an identity digest set.
This bug becomes visible when Tor does a second SOCKS request to the pluggable transport proxy after it has learned the identity digest of a bridge. In that second request, the SOCKS arguments are not passed, since digest == NULL but bridge->identity is set.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items 0
Link issues together to show that they're related.
Learn more.
This bug becomes visible when Tor does a second SOCKS request to the pluggable transport proxy after it has learned the identity digest of a bridge. In that second request, the SOCKS arguments are not passed, since digest == NULL but bridge->identity is set.
Can you describe this bug from the perspective of the user? (The changelog should be what changed from the perspective of the user, not what function got changed to pass its arguments differently.) Thanks!
nickm is correct. Maybe a more verbose description would be "Pluggable transports that use client parameters stop working on subsequent connections to a bridge, if the first connection was terminated".
(Also, we don't have any PTs with client-side parameters atm. scramblesuit will soon become the first one.)
o Minor bugfixes: - Fix a bug where the first connection works to a bridge that uses a pluggable transport with client-side parameters, but we don't send the client-side parameters on subsequent connections. (We don't use any pluggable transports with client-side parameters yet, but ScrambleSuit will soon become the first one.) Fixes bug 9162; bugfix on 0.2.0.3-alpha. Based on a patch from "rl1987".
This bug becomes visible when Tor does a second SOCKS request to the pluggable transport proxy after it has learned the identity digest of a bridge. In that second request, the SOCKS arguments are not passed, since digest == NULL but bridge->identity is set.
In answer to why there's a second SOCKS connection, it sounds like #7733 (moved).