From 0e9fec979dc38f2a5268d17be9e3aefc4d5398e1 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Wed, 9 Nov 2016 15:28:32 +0100 Subject: [PATCH] virNetSocket: allow to not close FD Add an internal variable to mark the FD as "not owned" by the virNetSocket, in case the internal implementation takes the actual ownership of the descriptor; this avoids a warning when closing the socket, as the FD would be invalid. --- src/rpc/virnetsocket.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index 405f5ba30e..05f20a5953 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -77,6 +77,7 @@ struct _virNetSocket { pid_t pid; int errfd; bool client; + bool ownsFd; /* Event callback fields */ virNetSocketIOFunc func; @@ -248,6 +249,7 @@ static virNetSocketPtr virNetSocketNew(virSocketAddrPtr localAddr, sock->errfd = errfd; sock->pid = pid; sock->watch = -1; + sock->ownsFd = true; /* Disable nagle for TCP sockets */ if (sock->localAddr.data.sa.sa_family == AF_INET || @@ -1202,7 +1204,8 @@ void virNetSocketDispose(void *obj) virObjectUnref(sock->sshSession); #endif - VIR_FORCE_CLOSE(sock->fd); + if (sock->ownsFd) + VIR_FORCE_CLOSE(sock->fd); VIR_FORCE_CLOSE(sock->errfd); virProcessAbort(sock->pid);