summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-09-24 17:02:51 -0400
committerKali Kaneko <kali@leap.se>2013-09-24 17:02:51 -0400
commit87dfb470fceb7e140aa1e9d87e9e7b40be4cc7c0 (patch)
tree7c03a98c1e2e62afd44a85b18366edeaa01bae45
parent5ecf2a24e7273f8b44260a7c4957d161442d51d6 (diff)
parent241b6494e2bbc09bca23e14aea0271e9335fcb50 (diff)
Merge tag '0.3.3' into debian
Tag leap.common version 0.3.3
-rw-r--r--CHANGELOG4
-rw-r--r--src/leap/common/events/server.py30
2 files changed, 12 insertions, 22 deletions
diff --git a/CHANGELOG b/CHANGELOG
index d39426c..d999d08 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.3.3 Sep 20:
+ o Fix events server exception raising when port is occupied by some
+ other process. Closes #3515.
+
0.3.2 Sep 06:
o Use dirspec instead of plain xdg. Closes #3574.
o Correct use of CallbackAlreadyRegistered exception.
diff --git a/src/leap/common/events/server.py b/src/leap/common/events/server.py
index dc55551..41aede3 100644
--- a/src/leap/common/events/server.py
+++ b/src/leap/common/events/server.py
@@ -77,34 +77,20 @@ def ensure_server(port=SERVER_PORT):
s.connect(('localhost', port))
s.close()
# port is taken, check if there's a server running there
- ping(port,
- reqcbk=lambda req, res: process_ping(port, req, res),
- timeout=10)
+ response = ping(port=port, timeout=1000)
+ if response is not None and response.status == proto.EventResponse.OK:
+ logger.info('A server is already running on port %d.', port)
+ return
+ # port is taken, and not by an events server
+ logger.warning(
+ 'Port %d is taken by something not an events server.', port)
+ raise PortAlreadyTaken(port)
except socket.error:
# port is available, run a server
logger.info('Launching server on port %d.', port)
return EventsServerDaemon.ensure(port)
-def process_ping(port, request, response):
- """
- Response callback for the ping event.
-
- :param port: Port that is trying to be used
- :type port: int
- :param request: Ping request made
- :type request: proto.PingRequest
- :param response: Response from the event
- :type response: proto.EventResponse
- """
- if response is not None and response.status == proto.EventResponse.OK:
- logger.info('A server is already running on port %d.', port)
- return
- # port is taken, and not by an events server
- logger.warning('Port %d is taken by something not an events server.', port)
- raise PortAlreadyTaken(port)
-
-
def ping(port=SERVER_PORT, reqcbk=None, timeout=1000):
"""
Ping the server.