From 092f88abdf304862cb4995c26401a1d96a95656b Mon Sep 17 00:00:00 2001 From: Boram Bae Date: Tue, 7 Apr 2020 18:17:20 +0900 Subject: [PATCH] Disconnect channel when peer performs shutdown Change-Id: Iaccbd1d23b9000f20f9cef3a536948847a174985 Signed-off-by: Boram Bae --- src/shared/channel.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/shared/channel.cpp b/src/shared/channel.cpp index f39cd8d..020d5fb 100644 --- a/src/shared/channel.cpp +++ b/src/shared/channel.cpp @@ -284,8 +284,12 @@ bool channel::read_sync(message &msg, bool select) /* header */ size = m_socket->recv(&header, sizeof(message_header), select); - retv_if(size <= 0, false); - + if (size <= 0) { + if (size == -1) { + disconnect(); + } + return false; + } /* check error from header */ if (m_handler && header.err != 0) { m_handler->error_caught(this, header.err); @@ -301,7 +305,12 @@ bool channel::read_sync(message &msg, bool select) if (header.length > 0) { size = m_socket->recv(&buf, header.length, select); - retv_if(size <= 0, false); + if (size <= 0) { + if (size == -1) { + disconnect(); + } + return false; + } } buf[header.length] = '\0'; -- 2.7.4