summaryrefslogtreecommitdiffstats
path: root/libsysutils
diff options
context:
space:
mode:
authorSan Mehat <san@google.com>2009-05-12 15:50:26 -0700
committerSan Mehat <san@google.com>2009-05-12 15:50:26 -0700
commitdbdb0db516fa4935ff7b5c05914932099237d808 (patch)
tree7ffb9cdcffc0ef0bf1ab597180402e9e8b4d27e1 /libsysutils
parent8d3fc3fde308fbda1b04759b26bb4fc29d41339f (diff)
downloadcore-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.cpp10
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);