On Fri, Mar 17, 2017 at 04:48:49PM +0100, Peter Krempa wrote:
In some cases a read error due to connection hangup is expected.
This
patch adds a flag that removes the logging of a virError in such case.
---
src/rpc/virnetsocket.c | 33 +++++++++++++++++++++++++++------
src/rpc/virnetsocket.h | 2 ++
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 325a7c7cf..4d1dc6446 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -82,6 +82,7 @@ struct _virNetSocket {
int errfd;
bool client;
bool ownsFd;
+ bool quietEOF;
/* Event callback fields */
virNetSocketIOFunc func;
@@ -1792,12 +1793,18 @@ static ssize_t virNetSocketReadWire(virNetSocketPtr sock, char
*buf, size_t len)
_("Cannot recv data"));
ret = -1;
} else if (ret == 0) {
- if (errout)
- virReportSystemError(EIO,
- _("End of file while reading data: %s"),
errout);
- else
- virReportSystemError(EIO, "%s",
- _("End of file while reading data"));
+ if (sock->quietEOF) {
+ VIR_DEBUG("socket='%p' EOF while reading:
errout='%s'",
+ socket, NULLSTR(errout));
+ } else {
+ if (errout)
+ virReportSystemError(EIO,
+ _("End of file while reading data: %s"),
+ errout);
+ else
+ virReportSystemError(EIO, "%s",
+ _("End of file while reading data"));
+ }
ret = -1;
I'm a little uncomfortable with the idea of returning '-1' without reporting
an error message. I would suggest returning 0, but we used that to indicate
EAGAIN condition. Can we at least make it return '-2' as a distinct code
when we don't report errors.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://entangle-photo.org -o-
http://search.cpan.org/~danberr/ :|