[tor-commits] [flashproxy/master] Update TCPReg to support transports.
infinity0 at torproject.org
infinity0 at torproject.org
Mon Oct 28 14:47:40 UTC 2013
commit e69f0ca9090920a7af72b5ac6fdd26e97f426393
Author: George Kadianakis <desnacked at riseup.net>
Date: Fri Sep 6 17:24:02 2013 +0300
Update TCPReg to support transports.
---
facilitator/facilitator | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/facilitator/facilitator b/facilitator/facilitator
index 8d3f835..7b1c51a 100755
--- a/facilitator/facilitator
+++ b/facilitator/facilitator
@@ -107,9 +107,30 @@ def log(msg):
log_lock.release()
class TCPReg(object):
- def __init__(self, host, port):
+ def __init__(self, host, port, transport_chain):
self.host = host
self.port = port
+ self.transport_chain = transport_chain
+ # Get a relay for this registration. Throw UnknownTransport if
+ # could not be found.
+ self.relay = self._get_matching_relay()
+
+ def _get_matching_relay(self):
+ """
+ Return a matching relay addrspec for this registration
+
+ Raise UnknownTransport if a relay with a matching transport
+ chain could not be found.
+ """
+ if self.transport_chain not in options.relays:
+ raise UnknownTransport("Can't find relay with transport chain: %s" % self.transport_chain)
+
+ # Maybe this should be a random pick from the set of all the
+ # eligible relays. But let's keep it deterministic for now,
+ # and return the first one.
+
+ # return random.choice(options.relays[self.transport_chain])
+ return options.relays[self.transport_chain][0]
def __unicode__(self):
return fac.format_addr((self.host, self.port))
@@ -119,15 +140,16 @@ class TCPReg(object):
def __cmp__(self, other):
if isinstance(other, TCPReg):
- return cmp((self.host, self.port), (other.host, other.port))
+ # XXX is this correct comparison?
+ return cmp((self.host, self.port, self.transport_chain), (other.host, other.port, other.transport_chain))
else:
return False
class Reg(object):
@staticmethod
- def parse(spec, defhost = None, defport = None):
+ def parse(spec, transport_chain, defhost = None, defport = None):
host, port = fac.parse_addr_spec(spec, defhost, defport)
- return TCPReg(host, port)
+ return TCPReg(host, port, transport_chain)
class RegSet(object):
def __init__(self):
More information about the tor-commits
mailing list