From: "Daniel P. Berrange" <berrange(a)redhat.com>
When you try to connect to a socket in the abstract namespace,
the error will be ECONNREFUSED for a non-listening daemon. With
the non-abstract namespace though, you instead get ENOENT. Add
a check for this extra errno when auto-spawning the daemon
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/rpc/virnetsocket.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index fa16d31..0b32ffe 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -502,7 +502,11 @@ int virNetSocketNewConnectUNIX(const char *path,
retry:
if (connect(fd, &remoteAddr.data.sa, remoteAddr.len) < 0) {
- if (errno == ECONNREFUSED && spawnDaemon && retries < 20) {
+ if ((errno == ECONNREFUSED ||
+ errno == ENOENT) &&
+ spawnDaemon && retries < 20) {
+ VIR_DEBUG("Connection refused for %s, trying to spawn %s",
+ path, binary);
if (retries == 0 &&
virNetSocketForkDaemon(binary) < 0)
goto error;
--
1.7.10.1