commit 13325d09e1201398a745ac4a03e12e2b597a97c0 Author: David Fifield david@bamsoftware.com Date: Thu Oct 17 04:27:02 2013 -0700
Add defhost and defport to read_client_registrations.
Inspired by "http registration: set default remote address properly - put_reg FROM is never actually read by facilitator" https://github.com/infinity0/flashproxy/commit/4b8d3d65fbc78eca400e6c33e9987... --- facilitator/fac.py | 4 ++-- facilitator/facilitator-test | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/facilitator/fac.py b/facilitator/fac.py index 8daa73c..a1ac614 100644 --- a/facilitator/fac.py +++ b/facilitator/fac.py @@ -161,11 +161,11 @@ def get_single(qs, key, default=None): raise ValueError("more than one %r key" % key) return vals[0]
-def read_client_registrations(body): +def read_client_registrations(body, defhost=None, defport=None): """Parse the lines of body and yield an Endpoint for each.""" for line in body.splitlines(): qs = urlparse.parse_qs(line, keep_blank_values=True, strict_parsing=True) - addr = parse_addr_spec(get_single(qs, "client")) + addr = parse_addr_spec(get_single(qs, "client"), defhost, defport) transport = get_single(qs, "client-transport", DEFAULT_CLIENT_TRANSPORT) yield Endpoint(addr, transport)
diff --git a/facilitator/facilitator-test b/facilitator/facilitator-test index 35c2e2e..024972a 100755 --- a/facilitator/facilitator-test +++ b/facilitator/facilitator-test @@ -402,6 +402,12 @@ class ReadClientRegistrationsTest(unittest.TestCase): self.assertEqual(len(l), 1) self.assertEqual(l[0].addr, ("1::2", 3333))
+ def testDefaultAddress(self): + l = list(fac.read_client_registrations("client=:1111&transport=websocket", defhost="1.2.3.4")) + self.assertEqual(l[0].addr, ("1.2.3.4", 1111)) + l = list(fac.read_client_registrations("client=1.2.3.4:&transport=websocket", defport=1111)) + self.assertEqual(l[0].addr, ("1.2.3.4", 1111)) + def testDefaultTransport(self): l = list(fac.read_client_registrations("client=1.2.3.4:1111")) self.assertEqual(l[0].transport, "websocket")