diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-12 15:05:37 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-12 15:05:37 +0000 |
commit | 698443e481baa97a7b19e1448ee731aa6011ff2a (patch) | |
tree | 2f751e9d95b23ddf040409f94ba2c52c3c7781c3 | |
parent | c4eb960537f8e7da0a5a86a3aa7059051d5899f7 (diff) |
Automatically send proper signal on iax switch following dial (bug #2420)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3766 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | channels/chan_iax2.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index d218c88ad..860920732 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -7063,7 +7063,7 @@ static int iax2_exists(struct ast_channel *chan, char *context, char *exten, int #if 0 ast_log(LOG_NOTICE, "iax2_exists: con: %s, exten: %s, pri: %d, cid: %s, data: %s\n", context, exten, priority, callerid ? callerid : "<unknown>", data); #endif - if (priority != 1) + if ((priority != 1) && (priority != 2)) return 0; ast_mutex_lock(&dpcache_lock); dp = find_cache(chan, data, context, exten, priority); @@ -7085,7 +7085,7 @@ static int iax2_canmatch(struct ast_channel *chan, char *context, char *exten, i #if 0 ast_log(LOG_NOTICE, "iax2_canmatch: con: %s, exten: %s, pri: %d, cid: %s, data: %s\n", context, exten, priority, callerid ? callerid : "<unknown>", data); #endif - if (priority != 1) + if ((priority != 1) && (priority != 2)) return 0; ast_mutex_lock(&dpcache_lock); dp = find_cache(chan, data, context, exten, priority); @@ -7107,7 +7107,7 @@ static int iax2_matchmore(struct ast_channel *chan, char *context, char *exten, #if 0 ast_log(LOG_NOTICE, "iax2_matchmore: con: %s, exten: %s, pri: %d, cid: %s, data: %s\n", context, exten, priority, callerid ? callerid : "<unknown>", data); #endif - if (priority != 1) + if ((priority != 1) && (priority != 2)) return 0; ast_mutex_lock(&dpcache_lock); dp = find_cache(chan, data, context, exten, priority); @@ -7127,12 +7127,22 @@ static int iax2_exec(struct ast_channel *chan, char *context, char *exten, int p char odata[256]; char req[256]; char *ncontext; + char *dialstatus; struct iax2_dpcache *dp; struct ast_app *dial; #if 0 ast_log(LOG_NOTICE, "iax2_exec: con: %s, exten: %s, pri: %d, cid: %s, data: %s, newstack: %d\n", context, exten, priority, callerid ? callerid : "<unknown>", data, newstack); #endif - if (priority != 1) + if (priority == 2) { + /* Indicate status, can be overridden in dialplan */ + dialstatus = pbx_builtin_getvar_helper(chan, "DIALSTATUS"); + if (dialstatus) { + dial = pbx_findapp(dialstatus); + if (dial) + pbx_exec(chan, dial, "", newstack); + } + return -1; + } else if (priority != 1) return -1; ast_mutex_lock(&dpcache_lock); dp = find_cache(chan, data, context, exten, priority); |