[tor-bugs] #12087 [Pluggable transport]: goptlib could provide IsClient()/IsServer().

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu May 22 14:16:30 UTC 2014


#12087: goptlib could provide IsClient()/IsServer().
-------------------------------------+------------------------------
     Reporter:  yawning              |      Owner:  asn
         Type:  enhancement          |     Status:  needs_review
     Priority:  minor                |  Milestone:
    Component:  Pluggable transport  |    Version:
   Resolution:                       |   Keywords:  goptlib, library
Actual Points:                       |  Parent ID:
       Points:                       |
-------------------------------------+------------------------------

Comment (by asn):

 Replying to [comment:2 dcf]:
 > Replying to [comment:1 dcf]:
 > > Proposed patch:
 > >  * https://gitweb.torproject.org/pluggable-
 transports/goptlib.git/commitdiff/c1482145a738b9378ee6a5f7067544bea7414f34
 >
 > I'm fine with applications having to peek at environment variables if
 they need this functionality, at least in the short term.
 >
 > I'm thinking about the application's interface to these functions. I
 guess it would have to look like this?
 > {{{
 > if pt.IsClient() {
 >         // do client stuff
 > } else if pt.IsServer() {
 >         // do server stuff
 > } else {
 >         // handle error? pt.EnvError?
 > }
 > }}}
 > Since "client mode" and "server mode" are the only two possibilities,
 maybe it makes sense to have only one function to test the mode, rather
 than two, so that there can be no ambiguity or disagreement between the
 two functions? In other words,
 > {{{
 > if pt.IsClient() {
 >         // do client stuff
 > } else {
 >         // do server stuff
 > }
 > }}}

 Yes. I think having one function instead of two is a reasonable idea. It
 might be simpler for the people who use the library too, since they won't
 have to think of what to do in the `pt.IsClient() && pt.IsServer()` case.

 (API nitpicking:

 FWIW, I never really liked the `isClient()` method of pyptlib (called
 `checkClientMode()`). blanu added it in the first version of pyptlib and
 it has been around since then. However it always seemed to me a bit
 unecessary.

 If I were to write pyptlib today, I would perhaps make the pyptlib
 `init()` function return a boolean `is_client` and a pyptlib object of the
 proper type. Since the `init` function signature is the same for client
 and the server (it takes as input a list of the names of the transports)
 that seems possible.
 )

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/12087#comment:4>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list