From dbdb0db516fa4935ff7b5c05914932099237d808 Mon Sep 17 00:00:00 2001 From: San Mehat Date: Tue, 12 May 2009 15:50:26 -0700 Subject: libsysutils: Fix bug where we'd leak our control pipes when closing down a listener Signed-off-by: San Mehat --- libsysutils/src/SocketListener.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'libsysutils') diff --git a/libsysutils/src/SocketListener.cpp b/libsysutils/src/SocketListener.cpp index 57f31f1..7e38546 100644 --- a/libsysutils/src/SocketListener.cpp +++ b/libsysutils/src/SocketListener.cpp @@ -83,13 +83,13 @@ int SocketListener::stopListener() { return -1; } - LOGD("Signaled listener thread - waiting for it to die"); void *ret; if (pthread_join(mThread, &ret)) { LOGE("Error joining to listener thread (%s)", strerror(errno)); return -1; } - LOGD("Listener stopped"); + close(mCtrlPipe[0]); + close(mCtrlPipe[1]); return 0; } @@ -97,7 +97,6 @@ void *SocketListener::threadStart(void *obj) { SocketListener *me = reinterpret_cast(obj); me->runListener(); - LOGD("Listener thread shutting down"); pthread_exit(NULL); return NULL; } @@ -143,10 +142,8 @@ void SocketListener::runListener() { continue; } - if (FD_ISSET(mCtrlPipe[0], &read_fds)) { - LOGD("Control message received"); + if (FD_ISSET(mCtrlPipe[0], &read_fds)) break; - } if (mListen && FD_ISSET(mSock, &read_fds)) { struct sockaddr addr; socklen_t alen = sizeof(addr); @@ -157,7 +154,6 @@ void SocketListener::runListener() { sleep(1); continue; } - LOGD("SocketListener client connection accepted"); pthread_mutex_lock(&mClientsLock); mClients->push_back(new SocketClient(c)); pthread_mutex_unlock(&mClientsLock); -- cgit v1.1