[Spice-devel] [PATCH spice-xpi 2/2] controller: return immediately if already connected

Marc-André Lureau marcandre.lureau at gmail.com
Fri Mar 7 06:02:41 PST 2014


From: Marc-André Lureau <marcandre.lureau at gmail.com>

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 1e60e5c..952f95c 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 bdfcba8..be56a28 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) {
-- 
1.8.5.3



More information about the Spice-devel mailing list