diff sip-in/retrans.c @ 78:72b7d85d6354

sip-in: retransmission error handling
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 20 Sep 2022 18:00:56 -0800
parents 709b78a4ebf0
children 915f0f397fb6
line wrap: on
line diff
--- a/sip-in/retrans.c	Tue Sep 20 16:49:24 2022 -0800
+++ b/sip-in/retrans.c	Tue Sep 20 18:00:56 2022 -0800
@@ -12,6 +12,7 @@
 #include <string.h>
 #include <strings.h>
 #include <syslog.h>
+#include "../include/gsm48_const.h"
 #include "../libsip/out_msg.h"
 #include "call.h"
 
@@ -31,8 +32,14 @@
 				fill_invite_200_resp(&msg, call);
 				sip_tx_packet(&msg, &call->udp_sin);
 				call->sip_tx_count++;
-			} else
-				/* error handling to be implemented */;
+			} else {
+				/* TODO: send BYE */
+				call->sip_state = SIP_STATE_ENDED;
+				call->overall_state = OVERALL_STATE_TEARDOWN;
+				disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU,
+						GSM48_CC_CAUSE_INTERWORKING);
+				disconnect_tmgw(call);
+			}
 			break;
 		case SIP_STATE_INVITE_ERR:
 			if (call->sip_tx_count < cfg_retrans_count) {
@@ -42,7 +49,7 @@
 				sip_tx_packet(&msg, &call->udp_sin);
 				call->sip_tx_count++;
 			} else
-				/* error handling to be implemented */;
+				call->sip_state = SIP_STATE_ENDED;
 			break;
 		}
 	}