diff --git a/ccserver/handlers.py b/ccserver/handlers.py index 1f2f6980c73d52e469fc2d08cc20c16350507ee4..d99dc6d78237e3e53a104be1d1b7e7c3e6e64315 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -891,9 +891,19 @@ class WelcomeHandler(CCHandler): role = 'host' create_object = True - try: - self._server.register(login, role, conn, create_object) - except AlreadyRegistered: + # Try to register the client: + for _ in xrange(5): + try: + self._server.register(login, role, conn, create_object) + except AlreadyRegistered: + if role == 'cli': + try: + self._server.kill(login) + except NotConnectedAccountError: + pass + else: + break + else: logging.warning(logmsg + 'already connected (%s)', conn.getpeername(), login) raise AuthenticationError('Already connected')