Fix events exception raising when ensuring server. Closes #3515.
authordrebs <drebs@leap.se>
Mon, 9 Sep 2013 14:13:54 +0000 (11:13 -0300)
committerdrebs <drebs@leap.se>
Mon, 9 Sep 2013 14:15:04 +0000 (11:15 -0300)
changes/bug_3515-events-server-test-fails [new file with mode: 0644]
src/leap/common/events/server.py

diff --git a/changes/bug_3515-events-server-test-fails b/changes/bug_3515-events-server-test-fails
new file mode 100644 (file)
index 0000000..3b2f99e
--- /dev/null
@@ -0,0 +1,2 @@
+  o Fix events server exception raising when port is occupied by some other
+    process. Closes #3515.
index dc55551..41aede3 100644 (file)
@@ -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
         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)
 
 
     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.
 def ping(port=SERVER_PORT, reqcbk=None, timeout=1000):
     """
     Ping the server.