From ef04d6e88cd32f391aa620f723df3eddaa7d4751 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Fri, 7 Mar 2014 14:59:20 +0100 Subject: controller: return immediately if already connected Do not try again if the unix socket is already connected, but fail immediately. https://bugzilla.redhat.com/show_bug.cgi?id=1073461 --- SpiceXPI/src/plugin/controller-unix.cpp | 2 ++ SpiceXPI/src/plugin/controller.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/SpiceXPI/src/plugin/controller-unix.cpp b/SpiceXPI/src/plugin/controller-unix.cpp index d9bf9a5..83dc59a 100644 --- a/SpiceXPI/src/plugin/controller-unix.cpp +++ b/SpiceXPI/src/plugin/controller-unix.cpp @@ -103,6 +103,8 @@ int SpiceControllerUnix::Connect() int rc = connect(m_client_socket, (struct sockaddr *) &remote, strlen(remote.sun_path) + sizeof(remote.sun_family)); if (rc == -1) { + if (errno == EISCONN) + rc = 1; g_critical("controller connect: %s", g_strerror(errno)); } else diff --git a/SpiceXPI/src/plugin/controller.cpp b/SpiceXPI/src/plugin/controller.cpp index 988768b..bd8b9d7 100644 --- a/SpiceXPI/src/plugin/controller.cpp +++ b/SpiceXPI/src/plugin/controller.cpp @@ -94,6 +94,8 @@ int SpiceController::Connect(const int nRetries) for (int i = 0; rc != 0 && i < nRetries; ++i) { rc = Connect(); + if (rc == 1) + break; g_usleep(sleep_time * G_USEC_PER_SEC); } if (rc != 0) { -- cgit v1.2.3