[tor-bugs] #2841 [Tor Bridge]: Implementing the pluggable-transport spec
Tor Bug Tracker & Wiki
torproject-admin at torproject.org
Tue Jun 21 17:38:53 UTC 2011
#2841: Implementing the pluggable-transport spec
------------------------+---------------------------------------------------
Reporter: asn | Owner: asn
Type: task | Status: needs_review
Priority: normal | Milestone: Tor: 0.2.3.x-final
Component: Tor Bridge | Version:
Keywords: | Parent:
Points: | Actualpoints:
------------------------+---------------------------------------------------
Comment(by rransom):
Replying to [comment:10 asn]:
> Replying to [comment:9 nickm]:
> > First thoughts:
> > * I don't think it should be an error to have a bridge listed with a
corresponding transport configured: it makes the bridge unusable, sure,
but we can still use the other bridges.
> >
> > * Why give a warning and reject the configuration if we have
transports configured without corresponding bridges? That seems
acceptable to me: just because I know about a transport doesn't mean I
should have to use it.
> >
> > * Having bridge_info_t keep a pointer to the transport_(info_)t seems
potentially risky if there's a chance we'll free the transport before we
free the bridge. Even if that can't happen now, it seems needlessly
fragile.
> Alright I'll handle these three comments together.
>
> I removed the transport_t pointer from the bridge_info_t. I'm now using
transport_get_by_name() to get the bridge's transport instead of using
bridge->transport.
>
> This change though, essentially makes match_bridges_with_transports()
semi-useless. Do you think we should still keep
match_bridges_with_transports() around so that it warns the user of
configuration anomalies (like the ones you mentioned in those two comments
above)?
`ClientTransportPlugin` lines that are not used by any `Bridge` will be
quite normal -- bundles will ship with multiple protocol obfuscators pre-
configured in their torrcs, but with no pre-configured bridges.
`Bridge` lines that specify an unavailable `ClientTransportPlugin` are
bad, and the user should be warned about them.
> I'm not sure what the correct course of action is, when the user gives
Bridge lines with methods without corresponding ClientTransportPlugin
lines (or the opposite.).
> I was thinking that it would probably be user misconfiguration (typo or
forgetting to add a line) and that's why I was erroring out.
>
> I don't have too strong feelings about this, but there are some small
things we should take care off if we don't error out.
> For example with the current code, if the user gives a Bridge line with
a method without a ClientTransportPlugin line, tor attempts to connect to
the Bridge addrport directly thinking that there is no pluggable transport
for this bridge.
> This happens because find_transport_by_bridge_addrport() returns either
the transport or NULL, and would return NULL on the above case. Do you
think this is a case we should be handling with something more than a
warning?
This is bad. Fix it.
> Your right! Done!
s/Your/You're/
> > In config.c:
> >
> > * In options_act(), it looks like we only call clear_transport_list()
if ClientTransportPlugin is set. Consider what this will do if we have
some transports configured, and then we remove all the configured
transports. It seems that all the old transports will remain configured.
> Oh you are right! Shouldn't we do the same thing for Bridges?
(mark_bridge_list() and sweep_bridge_list() are only called if Bridges is
set)
We should. But this doesn't matter for bridges, because we require that
at least one `Bridge` line be set whenever `UseBridges` is on, and we
ignore `bridge_list` when `UseBridges` is off. It does matter for
transport plugins.
> > * Do we want to actually have ClientTransportPlugin exclusive with all
other proxy settings?
> I'm not sure. The current code won't work if ClientTransportPlugin is
not exclusive with all other proxy settings, and I was considering that a
feature.
> If you think that it shouldn't be exclusive, we should change that.
`ClientTransportPlugin` shouldn't be exclusive with all other proxy
settings, because a user may need to use pluggable transports ''because''
his/her/its only Internet access is through a fascist censoring HTTP
proxy. But Tor can't tell the transport plugin to use a proxy. Hmm...
Best to make `ClientTransportPlugin` explicitly exclusive with all other
proxy settings for now, but this is a bug that we ''will'' need to fix
ASAP.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/2841#comment:11>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list