49 lines
1.7 KiB
Diff
49 lines
1.7 KiB
Diff
From: Cole Robinson <crobinso@redhat.com>
|
|
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;
|