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.
This commit is contained in:
Pino Toscano 2016-11-09 15:28:32 +01:00 committed by Peter Krempa
parent 03fa904c0c
commit 0e9fec979d

View File

@ -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);