diff sip-out/invite.c @ 163:bfa9f0c0f0ac

sip-out: handle incoming BYE as UAS
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 12 Oct 2022 14:45:31 -0800
parents 51cf5ea7f320
children
line wrap: on
line diff
--- a/sip-out/invite.c	Wed Oct 12 13:44:16 2022 -0800
+++ b/sip-out/invite.c	Wed Oct 12 14:45:31 2022 -0800
@@ -152,7 +152,7 @@
 			disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU,
 					GSM48_CC_CAUSE_DEST_OOO);
 			disconnect_tmgw(call);
-			call->sip_state = SIP_STATE_ENDED;
+			call->sip_state = SIP_STATE_MSG_SIZE_ERR;
 			sip_mark_end_time(call, sip_linger_response_err);
 			return;
 		}
@@ -212,7 +212,7 @@
 			syslog(LOG_CRIT,
 				"ACK to %03u response exceeds msg size!",
 				msg->status_code);
-			call->sip_state = SIP_STATE_ENDED;
+			call->sip_state = SIP_STATE_MSG_SIZE_ERR;
 			sip_mark_end_time(call, sip_linger_response_err);
 			return;
 		}
@@ -221,6 +221,7 @@
 		initiate_bye(call);
 		return;
 	case SIP_STATE_ENDED:
+	case SIP_STATE_MSG_SIZE_ERR:
 		return;
 	default:
 		syslog(LOG_CRIT,
@@ -315,6 +316,8 @@
 {
 	int rc;
 
+	if (call->sip_state == SIP_STATE_MSG_SIZE_ERR)
+		return;
 	rc = send_ack(call, tag, sin);
 	if (rc < 0)
 		syslog(LOG_CRIT, "ACK to %03u response exceeds msg size!",