From: Cole Robinson Date: Mon, 11 Jan 2016 20:01:24 -0500 Subject: [PATCH] rpc: socket: Minor cleanups - Add some debugging - Make the loop dependent only on retries - Make it explicit that connect(2) success exits the loop - Invert the error checking logic (cherry picked from commit f102c7146ed7f6e04af0ad3bce302476239f2502) --- src/rpc/virnetsocket.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index 6153e0e..dcff69e 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -548,6 +548,9 @@ int virNetSocketNewConnectUNIX(const char *path, char *rundir = NULL; int ret = -1; + VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon, + NULLSTR(binary)); + memset(&localAddr, 0, sizeof(localAddr)); memset(&remoteAddr, 0, sizeof(remoteAddr)); @@ -608,10 +611,15 @@ int virNetSocketNewConnectUNIX(const char *path, if (remoteAddr.data.un.sun_path[0] == '@') remoteAddr.data.un.sun_path[0] = '\0'; - while (retries && - connect(fd, &remoteAddr.data.sa, remoteAddr.len) < 0) { - if (!(spawnDaemon && (errno == ENOENT || - errno == ECONNREFUSED))) { + while (retries) { + if (connect(fd, &remoteAddr.data.sa, remoteAddr.len) == 0) { + VIR_DEBUG("connect() succeeded"); + break; + } + VIR_DEBUG("connect() failed: retries=%d errno=%d", retries, errno); + + if (!spawnDaemon || + (errno != ENOENT && errno != ECONNREFUSED)) { virReportSystemError(errno, _("Failed to connect socket to '%s'"), path); goto cleanup;