mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-20 03:25:18 +00:00
client rpc: Fix error checking after poll()
First 'poll' can't return EWOULDBLOCK, and second, we're checking errno so far away from the poll() call that we've probably already trashed the original errno value. (cherry picked from commit 5d490603a6d60298162cbd32ec45f736b58929fb)
This commit is contained in:
parent
e9c00cbc63
commit
086c3fbab1
@ -1335,6 +1335,12 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
|
||||
|
||||
virNetClientLock(client);
|
||||
|
||||
if (ret < 0) {
|
||||
virReportSystemError(errno,
|
||||
"%s", _("poll on socket failed"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (virKeepAliveTrigger(client->keepalive, &msg)) {
|
||||
client->wantClose = true;
|
||||
} else if (msg && virNetClientQueueNonBlocking(client, msg) < 0) {
|
||||
@ -1363,15 +1369,6 @@ static int virNetClientIOEventLoop(virNetClientPtr client,
|
||||
}
|
||||
}
|
||||
|
||||
if (ret < 0) {
|
||||
/* XXX what's this dubious errno check doing ? */
|
||||
if (errno == EWOULDBLOCK)
|
||||
continue;
|
||||
virReportSystemError(errno,
|
||||
"%s", _("poll on socket failed"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (fds[0].revents & POLLOUT) {
|
||||
if (virNetClientIOHandleOutput(client) < 0)
|
||||
goto error;
|
||||
|
Loading…
x
Reference in New Issue
Block a user