[asterisk-commits] file: branch file/bridging r106996 - /team/file/bridging/main/bridging.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Mar 8 11:42:32 CST 2008
Author: file
Date: Sat Mar 8 11:42:31 2008
New Revision: 106996
URL: http://svn.digium.com/view/asterisk?view=rev&rev=106996
Log:
When executing a feature hook callback temporarily stop a generator if present and restore it once complete.
Modified:
team/file/bridging/main/bridging.c
Modified: team/file/bridging/main/bridging.c
URL: http://svn.digium.com/view/asterisk/team/file/bridging/main/bridging.c?view=diff&rev=106996&r1=106995&r2=106996
==============================================================================
--- team/file/bridging/main/bridging.c (original)
+++ team/file/bridging/main/bridging.c Sat Mar 8 11:42:31 2008
@@ -670,9 +670,17 @@
struct ast_bridge_features_hook *hook = NULL;
char dtmf[8] = "";
int look_for_dtmf = 1;
+ void *generatordata;
+ struct ast_generator *generator;
/* Don't bother with the bridge anymore, it's not going to go away */
ast_mutex_unlock(&bridge->lock);
+
+ /* Store any generator information before gathering DTMF and executing the hook */
+ generatordata = bridge_channel->chan->generatordata;
+ generator = bridge_channel->chan->generator;
+ bridge_channel->chan->generatordata = NULL;
+ bridge_channel->chan->generator = NULL;
/* The channel is now under our control and we don't really want any begin frames to do our DTMF matching so disable 'em at the core level */
ast_set_flag(bridge_channel->chan, AST_FLAG_END_DTMF_ONLY);
@@ -720,6 +728,10 @@
ast_bridge_dtmf_stream(bridge, dtmf, bridge_channel->chan);
bridge_channel->state = AST_BRIDGE_CHANNEL_STATE_WAIT;
}
+
+ /* Restore generator if present */
+ bridge_channel->chan->generatordata = generatordata;
+ bridge_channel->chan->generator = generator;
/* And back into the groove... */
ast_mutex_lock(&bridge->lock);
More information about the asterisk-commits
mailing list