|
|
|
|
@ -671,8 +671,7 @@ static const struct sip_reasons {
|
|
|
|
|
{ AST_REDIRECTING_REASON_FOLLOW_ME, "follow-me" },
|
|
|
|
|
{ AST_REDIRECTING_REASON_OUT_OF_ORDER, "out-of-service" },
|
|
|
|
|
{ AST_REDIRECTING_REASON_AWAY, "away" },
|
|
|
|
|
{ AST_REDIRECTING_REASON_CALL_FWD_DTE, "unknown"},
|
|
|
|
|
{ AST_REDIRECTING_REASON_SEND_TO_VM, "send_to_vm"},
|
|
|
|
|
{ AST_REDIRECTING_REASON_CALL_FWD_DTE, "unknown"}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -24258,8 +24257,6 @@ static int handle_request_refer(struct sip_pvt *p, struct sip_request *req, int
|
|
|
|
|
int localtransfer = 0;
|
|
|
|
|
int attendedtransfer = 0;
|
|
|
|
|
int res = 0;
|
|
|
|
|
struct ast_party_redirecting redirecting;
|
|
|
|
|
struct ast_set_party_redirecting update_redirecting;
|
|
|
|
|
|
|
|
|
|
if (req->debug) {
|
|
|
|
|
ast_verbose("Call %s got a SIP call transfer from %s: (REFER)!\n",
|
|
|
|
|
@ -24564,16 +24561,6 @@ static int handle_request_refer(struct sip_pvt *p, struct sip_request *req, int
|
|
|
|
|
}
|
|
|
|
|
ast_set_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Delay hangup */
|
|
|
|
|
|
|
|
|
|
/* When a call is transferred to voicemail from a Digium phone, there may be
|
|
|
|
|
* a Diversion header present in the REFER with an appropriate reason parameter
|
|
|
|
|
* set. We need to update the redirecting information appropriately.
|
|
|
|
|
*/
|
|
|
|
|
ast_party_redirecting_init(&redirecting);
|
|
|
|
|
memset(&update_redirecting, 0, sizeof(update_redirecting));
|
|
|
|
|
change_redirecting_information(p, req, &redirecting, &update_redirecting, FALSE);
|
|
|
|
|
ast_channel_update_redirecting(current.chan2, &redirecting, &update_redirecting);
|
|
|
|
|
ast_party_redirecting_free(&redirecting);
|
|
|
|
|
|
|
|
|
|
/* Do not hold the pvt lock during the indicate and async_goto. Those functions
|
|
|
|
|
* lock channels which will invalidate locking order if the pvt lock is held.*/
|
|
|
|
|
/* For blind transfers, move the call to the new extensions. For attended transfers on multiple
|
|
|
|
|
|