From ec0302e195a56079593f1c47acf40b4f08d41f15 Mon Sep 17 00:00:00 2001 From: Garth Kidd Date: Wed, 25 Dec 2013 17:52:53 +1100 Subject: [PATCH 1/2] Probe ports before trying to listen on them. Fixes "moorescloud/holideck#4". --- holideck.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/holideck.py b/holideck.py index 813036b..879ae3a 100755 --- a/holideck.py +++ b/holideck.py @@ -25,6 +25,17 @@ from multiprocessing import Process, Queue import iotas.iotas import simpype.simpype +import socket + +def probe(port): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + res = sock.connect_ex(('127.0.0.1', port)) + if res != 0: + return port + else: + sock.close() + print >> sys.stderr, "Dodging conflict on TCP port %d." % port + return probe(port + 1) if __name__ == '__main__': @@ -38,6 +49,9 @@ spp_port = 8888 # If any error use default values iop_port = 8080 + spp_port = probe(spp_port) + iop_port = probe(iop_port) + # Create a Queue instance so the processes can share the datas q = Queue() From b883ce5e78f2952b59a8218e186ed95359f85e8b Mon Sep 17 00:00:00 2001 From: Garth Kidd Date: Wed, 25 Dec 2013 18:01:41 +1100 Subject: [PATCH 2/2] Finish backing out the attempted upgrade. Sorry about that. --- holideck.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/holideck.py b/holideck.py index 879ae3a..d4005e1 100755 --- a/holideck.py +++ b/holideck.py @@ -28,7 +28,7 @@ import socket def probe(port): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) res = sock.connect_ex(('127.0.0.1', port)) if res != 0: return port