From a92c472a0f24ec78f647a598435c9df249d73826 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Tue, 31 Jan 2017 15:29:46 +0900 Subject: [PATCH] Change filter_event to return true even read_from_socket fails If the filter_event returns false, the ISE will terminate itself. So modified filter_event to return false only when the connection is lost, and keep alive in other abnormal cases such as timeout. Change-Id: I96f15fede012789cb74d2a72aef6f78c145e8230 --- ism/src/scim_helper.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/ism/src/scim_helper.cpp b/ism/src/scim_helper.cpp index f797532..bb489a7 100644 --- a/ism/src/scim_helper.cpp +++ b/ism/src/scim_helper.cpp @@ -823,15 +823,21 @@ HelperAgent::has_pending_event () const bool HelperAgent::filter_event () { - if (!m_impl->socket.is_connected () || !m_impl->recv.read_from_socket (m_impl->socket, m_impl->timeout)) + if (!m_impl->socket.is_connected ()) { + LOGW("Connection lost, returning false"); return false; + } - message_queue.read_from_transaction(m_impl->recv); + if (m_impl->recv.read_from_socket (m_impl->socket, m_impl->timeout)) { + message_queue.read_from_transaction(m_impl->recv); - while (message_queue.has_pending_message()) { - MessageItem *message = message_queue.get_pending_message(); - handle_message(message); - message_queue.remove_message(message); + while (message_queue.has_pending_message()) { + MessageItem *message = message_queue.get_pending_message(); + handle_message(message); + message_queue.remove_message(message); + } + } else { + LOGD("read_from_socket() failed but continuing"); } return true; -- 2.7.4