break;
case AST_CONTROL_BUSY:
if (ast->_state != AST_STATE_UP) {
- transmit_response(p, "486 Busy Here", &p->initreq);
+ transmit_response_reliable(p, "486 Busy Here", &p->initreq);
p->invitestate = INV_COMPLETED;
sip_alreadygone(p);
ast_softhangup_nolock(ast, AST_SOFTHANGUP_DEV);
break;
case AST_CONTROL_CONGESTION:
if (ast->_state != AST_STATE_UP) {
- transmit_response(p, "503 Service Unavailable", &p->initreq);
+ transmit_response_reliable(p, "503 Service Unavailable", &p->initreq);
p->invitestate = INV_COMPLETED;
sip_alreadygone(p);
ast_softhangup_nolock(ast, AST_SOFTHANGUP_DEV);
being able to call yourself */
/* If pedantic is on, we need to check the tags. If they're different, this is
in fact a forked call through a SIP proxy somewhere. */
- transmit_response(p, "482 Loop Detected", req);
+ transmit_response_reliable(p, "482 Loop Detected", req);
p->invitestate = INV_COMPLETED;
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
return 0;
if (!ast_test_flag(req, SIP_PKT_IGNORE) && p->pendinginvite) {
/* We already have a pending invite. Sorry. You are on hold. */
- transmit_response(p, "491 Request Pending", req);
+ transmit_response_reliable(p, "491 Request Pending", req);
if (option_debug)
ast_log(LOG_DEBUG, "Got INVITE on call where we already have pending INVITE, deferring that - %s\n", p->callid);
/* Don't destroy dialog here */
if (p->owner) {
if (option_debug > 2)
ast_log(LOG_DEBUG, "INVITE w Replaces on existing call? Refusing action. [%s]\n", p->callid);
- transmit_response(p, "400 Bad request", req); /* The best way to not not accept the transfer */
+ transmit_response_reliable(p, "400 Bad request", req); /* The best way to not not accept the transfer */
/* Do not destroy existing call */
return -1;
}
ast_uri_decode(replace_id);
if (!p->refer && !sip_refer_allocate(p)) {
- transmit_response(p, "500 Server Internal Error", req);
+ transmit_response_reliable(p, "500 Server Internal Error", req);
append_history(p, "Xfer", "INVITE/Replace Failed. Out of memory.");
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
p->invitestate = INV_COMPLETED;
*/
if ((p->refer->refer_call = get_sip_pvt_byid_locked(replace_id, totag, fromtag)) == NULL) {
ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-existent call id (%s)!\n", replace_id);
- transmit_response(p, "481 Call Leg Does Not Exist (Replaces)", req);
+ transmit_response_reliable(p, "481 Call Leg Does Not Exist (Replaces)", req);
error = 1;
}
if (p->refer->refer_call == p) {
ast_log(LOG_NOTICE, "INVITE with replaces into it's own call id (%s == %s)!\n", replace_id, p->callid);
p->refer->refer_call = NULL;
- transmit_response(p, "400 Bad request", req); /* The best way to not not accept the transfer */
+ transmit_response_reliable(p, "400 Bad request", req); /* The best way to not not accept the transfer */
error = 1;
}
/* Oops, someting wrong anyway, no owner, no call */
ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-existing call id (%s)!\n", replace_id);
/* Check for better return code */
- transmit_response(p, "481 Call Leg Does Not Exist (Replace)", req);
+ transmit_response_reliable(p, "481 Call Leg Does Not Exist (Replace)", req);
error = 1;
}
if (!error && p->refer->refer_call->owner->_state != AST_STATE_RINGING && p->refer->refer_call->owner->_state != AST_STATE_RING && p->refer->refer_call->owner->_state != AST_STATE_UP ) {
ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-ringing or active call id (%s)!\n", replace_id);
- transmit_response(p, "603 Declined (Replaces)", req);
+ transmit_response_reliable(p, "603 Declined (Replaces)", req);
error = 1;
}
/* Handle SDP here if we already have an owner */
if (find_sdp(req)) {
if (process_sdp(p, req)) {
- transmit_response(p, "488 Not acceptable here", req);
+ transmit_response_reliable(p, "488 Not acceptable here", req);
if (!p->lastinvite)
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
return -1;