diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 13790786198f41f08b3e97600f81a8b21d461981..010c5c36d9cd2da42e0eccc3e2d8cfb7fa158cee 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -1825,7 +1825,6 @@ void virNetClientIncomingEvent(virNetSocketPtr sock, if (!client->sock) goto done; - /* This should be impossible, but it doesn't hurt to check */ if (client->haveTheBuck || client->wantClose) goto done; @@ -1858,8 +1857,12 @@ void virNetClientIncomingEvent(virNetSocketPtr sock, virNetClientIOUpdateCallback(client, true); done: - if (client->wantClose) + if (client->wantClose && !client->haveTheBuck) { virNetClientCloseLocked(client); + virNetClientCallRemovePredicate(&client->waitDispatch, + virNetClientIOEventLoopRemoveAll, + NULL); + } virObjectUnlock(client); }