summaryrefslogtreecommitdiff
path: root/main/features.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-08-21 15:51:19 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-08-21 15:51:19 +0000
commitd213dfa30ffbc834dcc643beb46a8ba0b0f49f01 (patch)
tree2e9641ff56b0a301ecb4e312654392142800abbe /main/features.c
parent25e38dfc9b8a0dd96851f5de970e6a293e37dda6 (diff)
Fix several interrelated issues dealing with the holding bridge technology.
* Added an option flags parameter to interval hooks. Interval hooks now can specify if the callback will affect the media path or not. * Added an option flags parameter to the bridge action custom callback. The action callback now can specify if the callback will affect the media path or not. * Made the holding bridge technology reexamine the participant idle mode option whenever the entertainment is restarted. * Fixed app_agent_pool waiting agents needlessly starting and stopping MOH every second by specifying the heartbeat interval hook as not affecting the media path. * Fixed app_agent_pool agent alert from restarting the MOH after the alert beep. The agent entertainment is now changed from MOH to silence after the alert beep. * Fixed holding bridge technology to defer starting the entertainment. It was previously a mixture of immediate and deferred. * Fixed holding bridge technology to immediately stop the entertainment. It was previously a mixture of immediate and deferred. If the channel left the bridging system, any deferred stopping was discarded before taking effect. * Miscellaneous holding bridge technology rework coding improvements. Review: https://reviewboard.asterisk.org/r/2761/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397294 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/features.c')
-rw-r--r--main/features.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/main/features.c b/main/features.c
index 55b8dc2be..4d19fa6d7 100644
--- a/main/features.c
+++ b/main/features.c
@@ -558,13 +558,6 @@ static void dynamic_dtmf_hook_callback(struct ast_bridge_channel *bridge_channel
run_data->moh_offset ? &run_data->app_name[run_data->moh_offset] : NULL);
}
-static int dynamic_dtmf_hook_run_callback(struct ast_bridge_channel *bridge_channel,
- ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size)
-{
- callback(bridge_channel, payload, payload_size);
- return 0;
-}
-
struct dynamic_dtmf_hook_data {
/*! Which side of bridge to run app (AST_FEATURE_FLAG_ONSELF/AST_FEATURE_FLAG_ONPEER) */
unsigned int flags;
@@ -592,7 +585,6 @@ struct dynamic_dtmf_hook_data {
static int dynamic_dtmf_hook_trip(struct ast_bridge_channel *bridge_channel, void *hook_pvt)
{
struct dynamic_dtmf_hook_data *pvt = hook_pvt;
- int (*run_it)(struct ast_bridge_channel *bridge_channel, ast_bridge_custom_callback_fn callback, const void *payload, size_t payload_size);
struct dynamic_dtmf_hook_run *run_data;
const char *activated_name;
size_t len_name;
@@ -633,11 +625,12 @@ static int dynamic_dtmf_hook_trip(struct ast_bridge_channel *bridge_channel, voi
strcpy(&run_data->app_name[run_data->activated_offset], activated_name);/* Safe */
if (ast_test_flag(pvt, AST_FEATURE_FLAG_ONPEER)) {
- run_it = ast_bridge_channel_write_callback;
+ ast_bridge_channel_write_callback(bridge_channel,
+ AST_BRIDGE_CHANNEL_CB_OPTION_MEDIA,
+ dynamic_dtmf_hook_callback, run_data, len_data);
} else {
- run_it = dynamic_dtmf_hook_run_callback;
+ dynamic_dtmf_hook_callback(bridge_channel, run_data, len_data);
}
- run_it(bridge_channel, dynamic_dtmf_hook_callback, run_data, len_data);
return 0;
}