From: Pino Toscano Date: Wed, 9 Nov 2016 14:28:32 +0000 (+0100) Subject: virNetSocket: allow to not close FD X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0e9fec979dc38f2a5268d17be9e3aefc4d5398e1;p=libvirt.git 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. --- 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);