Fix events exception raising when ensuring server. Closes #3515.
[leap_pycommon.git] / src / leap / common / events / server.py
index 861cb4f..41aede3 100644 (file)
@@ -77,32 +77,19 @@ 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.info('Port %d is taken by something not an events server.', port)
-    raise PortAlreadyTaken(port)
-
 
 def ping(port=SERVER_PORT, reqcbk=None, timeout=1000):
     """
@@ -125,7 +112,7 @@ def ping(port=SERVER_PORT, reqcbk=None, timeout=1000):
         proto.EventsServerService_Stub,
         port,
         'localhost')
-    logger.info("Pinging server in port %d..." % port)
+    logger.debug("Pinging server in port %d..." % port)
     return service.ping(request, callback=reqcbk, timeout=timeout)
 
 
@@ -196,14 +183,14 @@ class EventsServerService(proto.EventsServerService):
         :param done: callback to be called when done
         :type done: protobuf.socketrpc.server.Callback
         """
-        logger.info('Received signal from client: %s...', str(request)[:40])
+        logger.debug('Received signal from client: %s...', str(request)[:40])
         # send signal to all registered clients
         # TODO: verify signal auth
         if request.event in registered_clients:
             for port in registered_clients[request.event]:
 
                 def callback(req, resp):
-                    logger.info("Signal received by " + str(port))
+                    logger.debug("Signal received by " + str(port))
 
                 service = RpcService(proto.EventsClientService_Stub,
                                      port, 'localhost')
@@ -224,7 +211,7 @@ class EventsServerService(proto.EventsServerService):
         :param done: callback to be called when done
         :type done: protobuf.socketrpc.server.Callback
         """
-        logger.info("Received ping request, sending response.")
+        logger.debug("Received ping request, sending response.")
         response = proto.EventResponse()
         response.status = proto.EventResponse.OK
         done.run(response)