aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-17 09:21:45 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-17 09:21:45 +0000
commitfa9dd02a2d6f1bbf0622f637d102743b3a4be22f (patch)
tree47e0420db0edee184452abc853fe1560bff5d5b5 /channels
parent0d80131e6109d8911dcc32c3865e2056eed78e3f (diff)
chan_sip did not use the TRANSFER_CONTEXT for transfers, like res_features. Now fixed.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@27723 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index aa651015d..7fbbd7d93 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -6665,6 +6665,7 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
struct sip_request *req = NULL;
struct sip_pvt *sip_pvt_ptr = NULL;
struct ast_channel *chan = NULL, *peer = NULL;
+ const char *transfercontext;
req = outgoing_req;
@@ -6741,8 +6742,12 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
*ptr = '\0';
}
+ transfercontext = pbx_builtin_getvar_helper(sip_pvt->owner, "TRANSFER_CONTEXT");
+ if (ast_strlen_zero(transfercontext))
+ transfercontext = sip_pvt->context;
+
if (sip_debug_test_pvt(sip_pvt)) {
- ast_verbose("Transfer to %s in %s\n", refer_to, sip_pvt->context);
+ ast_verbose("Transfer to %s in %s\n", refer_to, transfercontext);
if (referred_by)
ast_verbose("Transfer from %s in %s\n", referred_by, sip_pvt->context);
}
@@ -6767,7 +6772,7 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
INVITE with a replaces header -anthm XXX */
/* The only way to find out is to use the dialplan - oej */
}
- } else if (ast_exists_extension(NULL, sip_pvt->context, refer_to, 1, NULL) || !strcmp(refer_to, ast_parking_ext())) {
+ } else if (ast_exists_extension(NULL, transfercontext, refer_to, 1, NULL) || !strcmp(refer_to, ast_parking_ext())) {
/* This is an unsupervised transfer (blind transfer) */
ast_log(LOG_DEBUG,"Unsupervised transfer to (Refer-To): %s\n", refer_to);
@@ -6786,7 +6791,7 @@ static int get_refer_info(struct sip_pvt *sip_pvt, struct sip_request *outgoing_
pbx_builtin_setvar_helper(peer, "BLINDTRANSFER", chan->name);
}
return 0;
- } else if (ast_canmatch_extension(NULL, sip_pvt->context, refer_to, 1, NULL)) {
+ } else if (ast_canmatch_extension(NULL, transfercontext, refer_to, 1, NULL)) {
return 1;
}