ast_log(LOG_WARNING, "Received response: \"Forbidden\" from '%s'\n", sip_get_header(&p->initreq, "From"));
if (!req->ignore && p->owner) {
ast_set_hangupsource(p->owner, p->owner->name, 0);
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
break;
xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
if (p->owner && !req->ignore) {
ast_set_hangupsource(p->owner, p->owner->name, 0);
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
break;
ast_log(LOG_WARNING, "Re-invite to non-existing call leg on other UA. SIP dialog '%s'. Giving up.\n", p->callid);
xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
if (p->owner) {
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
break;
append_history(p, "Identity", "SIP identity is required. Not supported by Asterisk.");
ast_log(LOG_WARNING, "SIP identity required by proxy. SIP dialog '%s'. Giving up.\n", p->callid);
if (p->owner && !req->ignore) {
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
break;
} else {
/* We can't set up this call, so give up */
if (p->owner && !req->ignore) {
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
}
break;
xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
if (p->owner && !req->ignore) {
if (p->owner->_state != AST_STATE_UP) {
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
} else {
/* This is a re-invite that failed. */
/* Reset the flag after a while
case 501: /* Not implemented */
xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
if (p->owner) {
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_CONGESTION);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
}
break;
}
default:
/* Send hangup */
if (owner && sipmethod != SIP_BYE)
- ast_queue_hangup_with_cause(p->owner, AST_CAUSE_PROTOCOL_ERROR);
+ ast_queue_hangup_with_cause(p->owner, hangup_sip2cause(resp));
break;
}
/* ACK on invite */