From 8795007a4aedb0860f6e7b838984ba8104f2febc Mon Sep 17 00:00:00 2001 From: Vernon Tang Date: Wed, 27 Apr 2011 14:01:27 +1000 Subject: [PATCH] libsysutils: SocketListener: handle recv errors more gracefully. Don't close the socket when onDataAvailable returns false if the socket is connectionless. Change-Id: Ie19497f5928144c463d92aa72ba517e675549ea6 --- libsysutils/src/SocketListener.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libsysutils/src/SocketListener.cpp b/libsysutils/src/SocketListener.cpp index 69ed79edf..fcad624b1 100644 --- a/libsysutils/src/SocketListener.cpp +++ b/libsysutils/src/SocketListener.cpp @@ -213,8 +213,9 @@ void SocketListener::runListener() { it = pendingList->begin(); SocketClient* c = *it; pendingList->erase(it); - /* Process it, if false is returned, remove and destroy it */ - if (!onDataAvailable(c)) { + /* Process it, if false is returned and our sockets are + * connection-based, remove and destroy it */ + if (!onDataAvailable(c) && mListen) { /* Remove the client from our array */ pthread_mutex_lock(&mClientsLock); for (it = mClients->begin(); it != mClients->end(); ++it) {