diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 563ca53f9a4133fa074597360a044ace0de9f263..1b208698a970cc8d79a26a7433c0ca93b189d0cc 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1419,15 +1419,10 @@ void DLLCALL services_terminate(void) { DWORD i; + lprintf(LOG_INFO,"0000 Services terminate"); terminated=TRUE; - for(i=0;i<services;i++) { - if(service[i].socket==INVALID_SOCKET) - continue; - if(service[i].options&SERVICE_OPT_STATIC) - continue; - close_socket(service[i].socket); - service[i].socket=INVALID_SOCKET; - } + for(i=0;i<services;i++) + service[i].terminated=TRUE; } #define NEXT_FIELD(p) FIND_WHITESPACE(p); SKIP_WHITESPACE(p) @@ -1577,7 +1572,8 @@ static void cleanup(int code) #endif thread_down(); - lprintf(LOG_DEBUG,"#### Services thread terminated (%lu clients served)",served); + if(terminated || code) + lprintf(LOG_DEBUG,"#### Services thread terminated (%lu clients served)",served); status("Down"); if(startup!=NULL && startup->terminated!=NULL) startup->terminated(startup->cbdata,code); @@ -1656,7 +1652,7 @@ void DLLCALL services_thread(void* arg) #endif /* Setup intelligent defaults */ - if(startup->sem_chk_freq==0) startup->sem_chk_freq=5; + if(startup->sem_chk_freq==0) startup->sem_chk_freq=2; if(startup->js_max_bytes==0) startup->js_max_bytes=JAVASCRIPT_MAX_BYTES; if(startup->js_cx_stack==0) startup->js_cx_stack=JAVASCRIPT_CONTEXT_STACK;