summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2014-03-07 14:59:20 +0100
committerMarc-André Lureau <marcandre.lureau@redhat.com>2014-06-03 17:45:55 +0200
commitef04d6e88cd32f391aa620f723df3eddaa7d4751 (patch)
tree9c2e9b9d96cf304efaee2cd92305a3457b7f6a82
parent453f0deb5c42d06c61ef28c3578a700ce9e6d69d (diff)
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
-rw-r--r--SpiceXPI/src/plugin/controller-unix.cpp2
-rw-r--r--SpiceXPI/src/plugin/controller.cpp2
2 files changed, 4 insertions, 0 deletions
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) {