Skip to content
Snippets Groups Projects
Commit 0aa31424 authored by rswindell's avatar rswindell
Browse files

Added support for hangup sound (on Win32).

Client sockets are closed before waiting for services to terminate.
parent b7f64cc0
No related branches found
No related tags found
No related merge requests found
...@@ -704,6 +704,12 @@ static void js_service_thread(void* arg) ...@@ -704,6 +704,12 @@ static void js_service_thread(void* arg)
if(service->clients) if(service->clients)
service->clients--; service->clients--;
#ifdef _WIN32
if(startup->hangup_sound[0] && !(startup->options&BBS_OPT_MUTE)
&& !(service->options&BBS_OPT_MUTE))
PlaySound(startup->hangup_sound, NULL, SND_ASYNC|SND_FILENAME);
#endif
lprintf("%04d %s JavaScript service thread terminated (%u clients remain)" lprintf("%04d %s JavaScript service thread terminated (%u clients remain)"
, socket, service->protocol, service->clients); , socket, service->protocol, service->clients);
...@@ -821,6 +827,12 @@ static void native_service_thread(void* arg) ...@@ -821,6 +827,12 @@ static void native_service_thread(void* arg)
if(service->clients) if(service->clients)
service->clients--; service->clients--;
#ifdef _WIN32
if(startup->hangup_sound[0] && !(startup->options&BBS_OPT_MUTE)
&& !(service->options&BBS_OPT_MUTE))
PlaySound(startup->hangup_sound, NULL, SND_ASYNC|SND_FILENAME);
#endif
lprintf("%04d %s service thread terminated (%u clients remain)" lprintf("%04d %s service thread terminated (%u clients remain)"
,socket, service->protocol, service->clients); ,socket, service->protocol, service->clients);
...@@ -1135,9 +1147,11 @@ void DLLCALL services_thread(void* arg) ...@@ -1135,9 +1147,11 @@ void DLLCALL services_thread(void* arg)
continue; continue;
} }
#ifdef _WIN32
if(startup->answer_sound[0] && !(startup->options&BBS_OPT_MUTE) if(startup->answer_sound[0] && !(startup->options&BBS_OPT_MUTE)
&& !(service[i].options&BBS_OPT_MUTE)) && !(service[i].options&BBS_OPT_MUTE))
PlaySound(startup->answer_sound, NULL, SND_ASYNC|SND_FILENAME); PlaySound(startup->answer_sound, NULL, SND_ASYNC|SND_FILENAME);
#endif
if(trashcan(&scfg,host_ip,"ip")) { if(trashcan(&scfg,host_ip,"ip")) {
lprintf("%04d !%s CLIENT BLOCKED in ip.can: %s" lprintf("%04d !%s CLIENT BLOCKED in ip.can: %s"
...@@ -1173,12 +1187,19 @@ void DLLCALL services_thread(void* arg) ...@@ -1173,12 +1187,19 @@ void DLLCALL services_thread(void* arg)
} }
} }
/* Close Service Sockets */
for(i=0;i<(int)services;i++) {
if(service[i].socket!=INVALID_SOCKET)
close_socket(service[i].socket);
service[i].socket=INVALID_SOCKET;
}
/* Wait for Service Threads to terminate */ /* Wait for Service Threads to terminate */
total_clients=0; total_clients=0;
for(i=0;i<(int)services;i++) for(i=0;i<(int)services;i++)
total_clients+=service[i].clients; total_clients+=service[i].clients;
if(total_clients) { if(total_clients) {
lprintf("000 Waiting for %d clients to disconnect",total_clients); lprintf("0000 Waiting for %d clients to disconnect",total_clients);
while(1) { while(1) {
for(i=0;i<(int)services;i++) for(i=0;i<(int)services;i++)
total_clients+=service[i].clients; total_clients+=service[i].clients;
...@@ -1186,13 +1207,7 @@ void DLLCALL services_thread(void* arg) ...@@ -1186,13 +1207,7 @@ void DLLCALL services_thread(void* arg)
break; break;
mswait(500); mswait(500);
} }
} lprintf("0000 Finished waiting");
/* Close Service Sockets */
for(i=0;i<(int)services;i++) {
if(service[i].socket!=INVALID_SOCKET)
close_socket(service[i].socket);
service[i].socket=INVALID_SOCKET;
} }
/* Free Service Data */ /* Free Service Data */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment