diff options
author | San Mehat <san@google.com> | 2009-05-12 15:50:26 -0700 |
---|---|---|
committer | San Mehat <san@google.com> | 2009-05-12 15:50:26 -0700 |
commit | dbdb0db516fa4935ff7b5c05914932099237d808 (patch) | |
tree | 7ffb9cdcffc0ef0bf1ab597180402e9e8b4d27e1 /libsysutils | |
parent | 8d3fc3fde308fbda1b04759b26bb4fc29d41339f (diff) | |
download | core-dbdb0db516fa4935ff7b5c05914932099237d808.tar.gz core-dbdb0db516fa4935ff7b5c05914932099237d808.tar.bz2 core-dbdb0db516fa4935ff7b5c05914932099237d808.zip |
libsysutils: Fix bug where we'd leak our control pipes when closing down a listener
Signed-off-by: San Mehat <san@google.com>
Diffstat (limited to 'libsysutils')
-rw-r--r-- | libsysutils/src/SocketListener.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/libsysutils/src/SocketListener.cpp b/libsysutils/src/SocketListener.cpp index 57f31f1f4..7e385465d 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<SocketListener *>(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); |