[asterisk-commits] russell: branch russell/issue_5841 r61279 -
/team/russell/issue_5841/res/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Apr 10 13:10:38 MST 2007
Author: russell
Date: Tue Apr 10 15:10:37 2007
New Revision: 61279
URL: http://svn.digium.com/view/asterisk?view=rev&rev=61279
Log:
Allow partial channel names to match and let the calling channel continue in
the PBX even if the callee hung up in the bridge
Modified:
team/russell/issue_5841/res/res_features.c
Modified: team/russell/issue_5841/res/res_features.c
URL: http://svn.digium.com/view/asterisk/team/russell/issue_5841/res/res_features.c?view=diff&rev=61279&r1=61278&r2=61279
==============================================================================
--- team/russell/issue_5841/res/res_features.c (original)
+++ team/russell/issue_5841/res/res_features.c Tue Apr 10 15:10:37 2007
@@ -2030,8 +2030,8 @@
/* make sure valid channels were specified */
if (!ast_strlen_zero(channela) && !ast_strlen_zero(channelb)) {
- chana = ast_get_channel_by_name_locked(channela);
- chanb = ast_get_channel_by_name_locked(channelb);
+ chana = ast_get_channel_by_name_prefix_locked(channela, strlen(channela));
+ chanb = ast_get_channel_by_name_prefix_locked(channelb, strlen(channelb));
if (chana)
ast_mutex_unlock(&chana->lock);
if (chanb)
@@ -2557,7 +2557,6 @@
{
struct ast_module_user *u;
struct ast_channel *current_dest_chan, *final_dest_chan;
- int bridge_res;
char *tmp_data = NULL;
struct ast_flags opts = { 0, };
struct ast_bridge_config bconfig = { { 0, }, };
@@ -2596,8 +2595,10 @@
}
/* make sure we have a valid end point */
- if (!(current_dest_chan = ast_get_channel_by_name_locked(args.dest_chan))) {
- ast_log(LOG_WARNING, "Bridge failed because channel %s does not exists or we cannot get its lock\n", args.dest_chan);
+ if (!(current_dest_chan = ast_get_channel_by_name_prefix_locked(args.dest_chan,
+ strlen(args.dest_chan)))) {
+ ast_log(LOG_WARNING, "Bridge failed because channel %s does not exists or we "
+ "cannot get its lock\n", args.dest_chan);
manager_event(EVENT_FLAG_CALL, "BridgeExec",
"Response: Failed\r\n"
"Reason: Cannot grab end point\r\n"
@@ -2655,7 +2656,7 @@
}
/* do the bridge */
- bridge_res = ast_bridge_call(chan, final_dest_chan, &bconfig);
+ ast_bridge_call(chan, final_dest_chan, &bconfig);
/* the bridge has ended, set BRIDGERESULT to SUCCESS. If the other channel has not been hung up, return it to the PBX */
pbx_builtin_setvar_helper(chan, "BRIDGERESULT", "SUCCESS");
@@ -2671,7 +2672,6 @@
ast_hangup(final_dest_chan);
} else if (option_debug)
ast_log(LOG_DEBUG, "SUCCESS continuing PBX on chan %s\n", final_dest_chan->name);
-
} else {
if (option_debug)
ast_log(LOG_DEBUG, "hangup chan %s since the other endpoint has hung up\n", final_dest_chan->name);
@@ -2680,7 +2680,7 @@
ast_module_user_remove(u);
- return bridge_res;
+ return 0;
}
static int reload(void)
More information about the asterisk-commits
mailing list