Include listener thread in the threads waited for on shutdown

This commit is contained in:
Ron Pedde 2003-11-26 06:12:25 +00:00
parent 74238741d1
commit 5bb7712b5b

View File

@ -265,12 +265,28 @@ void *ws_mainthread(void *arg) {
pthread_t tid; pthread_t tid;
char hostname[MAX_HOSTNAME]; char hostname[MAX_HOSTNAME];
if(pthread_mutex_lock(&pwsp->exit_mutex))
log_err(1,"Cannot lock condition mutex\n");
pwsp->dispatch_threads++;
pthread_mutex_unlock(&pwsp->exit_mutex);
while(1) { while(1) {
pwsc=(WS_CONNINFO*)malloc(sizeof(WS_CONNINFO)); pwsc=(WS_CONNINFO*)malloc(sizeof(WS_CONNINFO));
if(!pwsc) { if(!pwsc) {
/* can't very well service any more threads! */ /* can't very well service any more threads! */
DPRINTF(ERR_FATAL,"Error: %s\n",strerror(errno)); DPRINTF(ERR_FATAL,"Error: %s\n",strerror(errno));
pwsp->running=0; pwsp->running=0;
/* decrement the number of dispatch threads */
if(pthread_mutex_lock(&pwsp->exit_mutex))
log_err(1,"Cannot lock condition mutex\n");
pwsp->dispatch_threads--;
pthread_cond_signal(&pwsp->exit_cond);
pthread_mutex_unlock(&pwsp->exit_mutex);
return NULL; return NULL;
} }
@ -280,6 +296,14 @@ void *ws_mainthread(void *arg) {
r_close(pwsp->server_fd); r_close(pwsp->server_fd);
pwsp->running=0; pwsp->running=0;
free(pwsc); free(pwsc);
/* decrement dispatch threads */
if(pthread_mutex_lock(&pwsp->exit_mutex))
log_err(1,"Cannot lock condition mutex\n");
pwsp->dispatch_threads--;
pthread_cond_signal(&pwsp->exit_cond);
pthread_mutex_unlock(&pwsp->exit_mutex);
return NULL; return NULL;
} }