Bugzilla Bug 331413: assert that the worker threads empty the jobQ before

they terminate.  Fix a socket leak when the SSL_ImportFD call in
handle_connection fails. r=nelson.bolyard.
This commit is contained in:
wtchang%redhat.com 2006-04-11 21:12:28 +00:00
Родитель f0d5f9ffff
Коммит 90d708c409
1 изменённых файлов: 6 добавлений и 5 удалений

Просмотреть файл

@ -600,6 +600,8 @@ terminateWorkerThreads(void)
while (threadCount > 0) { while (threadCount > 0) {
PZ_WaitCondVar(threadCountChangeCv, PR_INTERVAL_NO_TIMEOUT); PZ_WaitCondVar(threadCountChangeCv, PR_INTERVAL_NO_TIMEOUT);
} }
/* The worker threads empty the jobQ before they terminate. */
PORT_Assert(PR_CLIST_IS_EMPTY(&jobQ));
PZ_Unlock(qLock); PZ_Unlock(qLock);
DESTROY_CONDVAR(jobQNotEmptyCv); DESTROY_CONDVAR(jobQNotEmptyCv);
@ -824,12 +826,9 @@ handle_fdx_connection(
cleanup: cleanup:
if (ssl_sock) { if (ssl_sock) {
PR_Close(ssl_sock); PR_Close(ssl_sock);
} else } else if (tcp_sock) {
{
if (tcp_sock) {
PR_Close(tcp_sock); PR_Close(tcp_sock);
} }
}
VLOG(("selfserv: handle_fdx_connection: exiting")); VLOG(("selfserv: handle_fdx_connection: exiting"));
return SECSuccess; return SECSuccess;
@ -1178,6 +1177,8 @@ handle_connection(
cleanup: cleanup:
if (ssl_sock) { if (ssl_sock) {
PR_Close(ssl_sock); PR_Close(ssl_sock);
} else if (tcp_sock) {
PR_Close(tcp_sock);
} }
if (local_file_fd) if (local_file_fd)
PR_Close(local_file_fd); PR_Close(local_file_fd);