From 6c22731964f383ea0947037e65cdb4cd36b76eac Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 30 Jul 2003 07:50:29 +0000 Subject: [PATCH] Don't allow active_clients counter to go negative. --- src/sbbs3/mailsrvr.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index ade99a883b..74291a6245 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -1186,7 +1186,8 @@ static void pop3_thread(void* arg) smb_freemsgmem(&msg); smb_close(&smb); - active_clients--,update_clients(); + if(active_clients) + active_clients--, update_clients(); client_off(socket); thread_down(); @@ -1620,7 +1621,7 @@ static void smtp_thread(void* arg) return; } - active_clients++,update_clients(); + active_clients++, update_clients(); /* SPAM Filters (mail-abuse.org) */ dnsbl_result.s_addr = dns_blacklisted(socket,smtp.client_addr.sin_addr,host_name,dnsbl); @@ -1637,7 +1638,8 @@ static void smtp_thread(void* arg) lprintf("%04d !SMTP REFUSED SESSION from blacklisted server" ,socket); thread_down(); - active_clients--,update_clients(); + if(active_clients) + active_clients--, update_clients(); return; } } @@ -1654,7 +1656,8 @@ static void smtp_thread(void* arg) sockprintf(socket,sys_error); mail_close_socket(socket); thread_down(); - active_clients--,update_clients(); + if(active_clients) + active_clients--, update_clients(); return; } @@ -2767,7 +2770,8 @@ static void smtp_thread(void* arg) status(STATUS_WFC); - active_clients--,update_clients(); + if(active_clients) + active_clients--, update_clients(); client_off(socket); thread_down(); @@ -2948,7 +2952,7 @@ static void sendmail_thread(void* arg) } if(active_sendmail!=0) - active_sendmail=0,update_clients(); + active_sendmail=0, update_clients(); smb_close(&smb); @@ -2990,7 +2994,7 @@ static void sendmail_thread(void* arg) for(offset=0;offset<total_msgs;offset++) { if(active_sendmail!=0) - active_sendmail=0,update_clients(); + active_sendmail=0, update_clients(); if(server_socket==INVALID_SOCKET) /* server stopped */ break; @@ -3032,7 +3036,7 @@ static void sendmail_thread(void* arg) if(msg.to_net.type!=NET_INTERNET || msg.to_net.addr==NULL) continue; - active_sendmail=1,update_clients(); + active_sendmail=1, update_clients(); lprintf("0000 SEND Message #%lu from %s to %s" ,msg.hdr.number, msg.from, msg.to_net.addr); @@ -3239,7 +3243,7 @@ static void sendmail_thread(void* arg) smb_close(&smb); if(active_sendmail!=0) - active_sendmail=0,update_clients(); + active_sendmail=0, update_clients(); thread_down(); lprintf("0000 SendMail thread terminated (%u threads remain)", thread_count); @@ -3436,8 +3440,7 @@ void DLLCALL mail_server(void* arg) lprintf("Maximum inactivity: %u seconds",startup->max_inactivity); - active_clients=0; - update_clients(); + active_clients=0,update_clients(); /* open a socket and wait for a client */ @@ -3719,7 +3722,7 @@ void DLLCALL mail_server(void* arg) start=time(NULL); while(active_clients) { if(time(NULL)-start>TIMEOUT_THREAD_WAIT) { - lprintf("!TIMEOUT waiting for %u active clients ",active_clients); + lprintf("!TIMEOUT waiting for %d active clients ",active_clients); break; } mswait(100); -- GitLab