[tor-commits] [flashproxy/master] GET command: Do "TRANSPORT=obfs2 TRANPSORT=obfs3" instead of "TRASPORTS=obfs2, obfs3".

infinity0 at torproject.org infinity0 at torproject.org
Mon Oct 28 14:47:40 UTC 2013


commit 33e513526cc8541afb9345e14c2c9a0abf9ffcfb
Author: George Kadianakis <desnacked at riseup.net>
Date:   Thu Sep 19 13:27:08 2013 +0300

    GET command: Do "TRANSPORT=obfs2 TRANPSORT=obfs3" instead of "TRASPORTS=obfs2,obfs3".
---
 facilitator/fac.py      |   23 +++++++++++++++++++++--
 facilitator/facilitator |    9 ++++-----
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/facilitator/fac.py b/facilitator/fac.py
index f6fb43c..5e1737a 100644
--- a/facilitator/fac.py
+++ b/facilitator/fac.py
@@ -206,11 +206,22 @@ def parse_transaction(line):
     return command, tuple(pairs)
 
 def param_first(key, params):
+    """Search 'params' for 'key' and return the first value that
+    occurs. If 'key' was not found, return None."""
     for k, v in params:
         if key == k:
             return v
     return None
 
+def param_getlist(key, params):
+    """Search 'params' for 'key' and return a list with its values. If
+    'key' did not appear in 'params', return the empty list."""
+    result = []
+    for k, v in params:
+        if key == k:
+            result.append(v)
+    return result
+
 def quote_string(s):
     chars = []
     for c in s:
@@ -265,9 +276,17 @@ def get_reg(facilitator_addr, proxy_addr, transport_list):
     mapped to the value "" if there are no registrations available for
     proxy_addr. Raises an exception otherwise."""
     f = fac_socket(facilitator_addr)
-    transports = ",".join(transport_list) # xxx wtf
+
+    # Form a list (in transact() format) with the transports that we
+    # should send to the facilitator.  Then pass that list to the
+    # transact() function.
+    # For example, TRANSPORT=obfs2 TRANSPORT=obfs3.
+    transports = []
+    for transport in transport_list:
+        transports += ("TRANSPORT", transport)
+
     try:
-        command, params = transact(f, "GET", ("FROM", format_addr(proxy_addr)), ("TRANSPORTS", transports))
+        command, params = transact(f, "GET", ("FROM", format_addr(proxy_addr)), transports)
     finally:
         f.close()
     response = {}
diff --git a/facilitator/facilitator b/facilitator/facilitator
index e7e0325..d674769 100755
--- a/facilitator/facilitator
+++ b/facilitator/facilitator
@@ -274,7 +274,7 @@ class Handler(SocketServer.StreamRequestHandler):
         print >> self.wfile, "ERROR"
 
     # Handle a GET request (got flashproxy poll; need to return a proper client registration)
-    # Example: GET FROM="3.3.3.3:3333" TRANSPORTS="websocket,webrtc"
+    # Example: GET FROM="3.3.3.3:3333" TRANSPORT="websocket" TRANSPORT="webrtc"
     def do_GET(self, params):
         proxy_spec = fac.param_first("FROM", params)
         if proxy_spec is None:
@@ -288,12 +288,11 @@ class Handler(SocketServer.StreamRequestHandler):
             self.send_error()
             return False
 
-        transports = fac.param_first("TRANSPORTS", params)
-        if transports is None:
-            log(u"TRANSPORTS missing FROM param")
+        transport_list = fac.param_getlist("TRANSPORT", params)
+        if not transport_list:
+            log(u"TRANSPORT missing FROM param")
             self.send_error()
             return False
-        transport_list = transports.split(",") # XXX messy
 
         try:
             reg = get_reg_for_proxy(proxy_addr, transport_list)





More information about the tor-commits mailing list