When libvirtd fails to serialize a message to XDR the client
connection is terminated immediately. To enable this to be
diagnosed, log the message which caused the problem on the
server
* daemon/dispatch.c: Log XDR serialization failures
---
daemon/dispatch.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/daemon/dispatch.c b/daemon/dispatch.c
index 8f55eaa..9d1abc0 100644
--- a/daemon/dispatch.c
+++ b/daemon/dispatch.c
@@ -194,6 +194,8 @@ remoteSerializeError(struct qemud_client *client,
return 0;
xdr_error:
+ VIR_WARN("Failed to serialize remote error '%s' as XDR",
+ rerr->message ? *rerr->message : "<unknown>");
xdr_destroy(&xdr);
VIR_FREE(msg);
fatal_error:
@@ -581,6 +583,8 @@ xdr_error:
xdr_free (data->ret_filter, (char*)&ret);
xdr_destroy (&xdr);
fatal_error:
+ VIR_WARN("Failed to serialize reply for program '%d' proc '%d'
as XDR",
+ msg->hdr.prog, msg->hdr.proc);
return -1;
}
@@ -664,5 +668,7 @@ xdr_error:
xdr_destroy (&xdr);
fatal_error:
VIR_FREE(msg);
+ VIR_WARN("Failed to serialize stream data for proc %d as XDR",
+ stream->procedure);
return -1;
}
--
1.7.2.1