If a streams error is raised, virNetClientIOEventLoop
returns 0, but an error is set. Check for this and
propagate it if present
* src/rpc/virnetclient.c: Propagate streams error
---
src/rpc/virnetclient.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index ded1e12..dc0ce51 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -1090,10 +1090,15 @@ static int virNetClientIO(virNetClientPtr client,
*/
virNetSocketUpdateIOCallback(client->sock, 0);
+ virResetLastError();
rv = virNetClientIOEventLoop(client, thiscall);
virNetSocketUpdateIOCallback(client->sock, VIR_EVENT_HANDLE_READABLE);
+ if (rv == 0 &&
+ virGetLastError())
+ rv = -1;
+
cleanup:
VIR_DEBUG("All done with our call %p %p %d", client->waitDispatch,
thiscall, rv);
return rv;
--
1.7.4.4