FreeCalypso > hg > themwi-system-sw
comparison sip-in/invite.c @ 110:c1c94b7fc2e2
sip-in call clearing: DEAD_SIP transition implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 28 Sep 2022 18:37:19 -0800 |
parents | 9b87894704eb |
children | bfc97065bf51 |
comparison
equal
deleted
inserted
replaced
109:9b87894704eb | 110:c1c94b7fc2e2 |
---|---|
409 call->overall_state = OVERALL_STATE_TEARDOWN; | 409 call->overall_state = OVERALL_STATE_TEARDOWN; |
410 disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU, | 410 disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU, |
411 GSM48_CC_CAUSE_INTERWORKING); | 411 GSM48_CC_CAUSE_INTERWORKING); |
412 disconnect_tmgw(call); | 412 disconnect_tmgw(call); |
413 sip_mark_end_time(call, sip_linger_error); | 413 sip_mark_end_time(call, sip_linger_error); |
414 /* TODO: transition from TEARDOWN to DEAD_SIP */ | |
415 return; | 414 return; |
416 } | 415 } |
417 if (call->use_100rel) { | 416 if (call->use_100rel) { |
418 rc = out_msg_add_header(&resp, "Require", "100rel"); | 417 rc = out_msg_add_header(&resp, "Require", "100rel"); |
419 if (rc < 0) | 418 if (rc < 0) |
445 call->overall_state = OVERALL_STATE_TEARDOWN; | 444 call->overall_state = OVERALL_STATE_TEARDOWN; |
446 disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU, | 445 disconnect_mncc(call, GSM48_CAUSE_LOC_PRN_S_LU, |
447 GSM48_CC_CAUSE_INTERWORKING); | 446 GSM48_CC_CAUSE_INTERWORKING); |
448 disconnect_tmgw(call); | 447 disconnect_tmgw(call); |
449 sip_mark_end_time(call, sip_linger_error); | 448 sip_mark_end_time(call, sip_linger_error); |
450 /* TODO: transition from TEARDOWN to DEAD_SIP */ | |
451 return; | 449 return; |
452 } | 450 } |
453 sip_tx_packet(&resp, &call->udp_sin); | 451 sip_tx_packet(&resp, &call->udp_sin); |
454 call->sip_state = SIP_STATE_INVITE_200; | 452 call->sip_state = SIP_STATE_INVITE_200; |
455 call->sip_tx_count = 1; | 453 call->sip_tx_count = 1; |
466 rc = fill_invite_resp_from_call(&resp, call); | 464 rc = fill_invite_resp_from_call(&resp, call); |
467 if (rc < 0) { | 465 if (rc < 0) { |
468 syslog(LOG_ERR, "INVITE late error response length exceeded"); | 466 syslog(LOG_ERR, "INVITE late error response length exceeded"); |
469 call->sip_state = SIP_STATE_MSG_SIZE_ERR; | 467 call->sip_state = SIP_STATE_MSG_SIZE_ERR; |
470 sip_mark_end_time(call, sip_linger_error); | 468 sip_mark_end_time(call, sip_linger_error); |
471 /* TODO: transition from TEARDOWN to DEAD_SIP */ | 469 transition_dead_sip(call); |
472 return; | 470 return; |
473 } | 471 } |
474 out_msg_finish(&resp); | 472 out_msg_finish(&resp); |
475 sip_tx_packet(&resp, &call->udp_sin); | 473 sip_tx_packet(&resp, &call->udp_sin); |
476 call->sip_state = SIP_STATE_INVITE_ERR; | 474 call->sip_state = SIP_STATE_INVITE_ERR; |