Newer
Older
mail_close_socket(client_socket);
continue;
}
pop3->socket=client_socket;
pop3->client_addr=client_addr;
_beginthread (pop3_thread, 0, pop3);
served++;
if(active_clients) {
lprintf(LOG_DEBUG,"0000 Waiting for %d active clients to disconnect...", active_clients);
start=time(NULL);
while(active_clients) {
if(time(NULL)-start>TIMEOUT_THREAD_WAIT) {
lprintf(LOG_WARNING,"!TIMEOUT waiting for %d active clients ",active_clients);
break;
}
mswait(100);
if(sendmail_running) {
mail_close_socket(server_socket);
server_socket=INVALID_SOCKET; /* necessary to terminate sendmail_thread */
sem_post(&sendmail_wakeup_sem);
mswait(100);
}
if(sendmail_running) {
lprintf(LOG_DEBUG,"0000 Waiting for SendMail thread to terminate...");
start=time(NULL);
while(sendmail_running) {
if(time(NULL)-start>TIMEOUT_THREAD_WAIT) {
lprintf(LOG_WARNING,"!TIMEOUT waiting for sendmail thread to "
"terminate");
break;
}
mswait(500);
if(!sendmail_running)
sem_destroy(&sendmail_wakeup_sem);
cleanup(0);
lprintf(LOG_INFO,"Recycling server...");
} while(recycle_server);