diff sip-in/main.c @ 107:372209628038

sip-in: handle themwi-mgw shutdown without terminating
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 27 Sep 2022 23:45:40 -0800
parents 709b78a4ebf0
children 7a4d4b8d5f04
line wrap: on
line diff
--- a/sip-in/main.c	Tue Sep 27 23:44:07 2022 -0800
+++ b/sip-in/main.c	Tue Sep 27 23:45:40 2022 -0800
@@ -15,8 +15,9 @@
 
 extern unsigned cfg_retrans_timeout;
 
-extern int mgw_socket, sip_socket;
 extern int gsm_socket, gsm_is_connected;
+extern int mgw_socket, mgw_is_connected;
+extern int sip_socket;
 
 static int max_fd;
 
@@ -41,10 +42,6 @@
 		fprintf(stderr, "error reading number database\n");
 		exit(1);
 	}
-	if (open_tmgw_socket() < 0) {
-		fprintf(stderr, "error connecting to themwi-mgw socket\n");
-		exit(1);
-	}
 	if (open_sip_udp_socket() < 0) {
 		fprintf(stderr, "error opening SIP UDP socket\n");
 		exit(1);
@@ -58,10 +55,11 @@
 	/* main select loop */
 	for (;;) {
 		FD_ZERO(&fds);
-		FD_SET(mgw_socket, &fds);
 		FD_SET(sip_socket, &fds);
 		if (gsm_is_connected)
 			FD_SET(gsm_socket, &fds);
+		if (mgw_is_connected)
+			FD_SET(mgw_socket, &fds);
 		need_retrans = 0;
 		scan_call_list_for_timeouts(&need_retrans);
 		if (need_retrans) {
@@ -83,9 +81,9 @@
 		}
 		if (gsm_is_connected && FD_ISSET(gsm_socket, &fds))
 			gsm_socket_select();
+		if (mgw_is_connected && FD_ISSET(mgw_socket, &fds))
+			mgw_socket_select();
 		if (FD_ISSET(sip_socket, &fds))
 			sip_socket_select();
-		if (FD_ISSET(mgw_socket, &fds))
-			mgw_socket_select();
 	}
 }