From: Matthew Nicholson Date: Wed, 29 Jun 2011 15:34:47 +0000 (+0000) Subject: don't do native/remote bridging if a framehook is active on the channel X-Git-Tag: 1.8.5-rc1~7^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b216f2dc940cfa3aac87a3222e0cd97e408e9d1;p=thirdparty%2Fasterisk.git don't do native/remote bridging if a framehook is active on the channel git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@325537 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_dial.c b/apps/app_dial.c index 25172c7433..d3b8009de6 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -65,6 +65,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/aoc.h" #include "asterisk/ccss.h" #include "asterisk/indications.h" +#include "asterisk/framehook.h" /*** DOCUMENTATION @@ -631,7 +632,8 @@ END_OPTIONS ); OPT_CALLER_HANGUP | OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER | \ OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR | OPT_CALLEE_PARK | \ OPT_CALLER_PARK | OPT_ANNOUNCE | OPT_CALLEE_MACRO | OPT_CALLEE_GOSUB) && \ - !chan->audiohooks && !peer->audiohooks) + !chan->audiohooks && !peer->audiohooks && \ + ast_framehook_list_is_empty(chan->framehooks) && ast_framehook_list_is_empty(peer->framehooks)) /* * The list of active channels diff --git a/main/rtp_engine.c b/main/rtp_engine.c index 00d288490c..0e905cfd81 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -39,6 +39,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/translate.h" #include "asterisk/netsock2.h" +#include "asterisk/framehook.h" struct ast_srtp_res *res_srtp = NULL; struct ast_srtp_policy_res *res_srtp_policy = NULL; @@ -853,7 +854,8 @@ static enum ast_bridge_result local_bridge_loop(struct ast_channel *c0, struct a if ((c0->tech_pvt != pvt0) || (c1->tech_pvt != pvt1) || (c0->masq || c0->masqr || c1->masq || c1->masqr) || - (c0->monitor || c0->audiohooks || c1->monitor || c1->audiohooks)) { + (c0->monitor || c0->audiohooks || c1->monitor || c1->audiohooks) || + (!ast_framehook_list_is_empty(c0->framehooks) || !ast_framehook_list_is_empty(c1->framehooks))) { ast_debug(1, "rtp-engine-local-bridge: Oooh, something is weird, backing out\n"); /* If a masquerade needs to happen we have to try to read in a frame so that it actually happens. Without this we risk being called again and going into a loop */ if ((c0->masq || c0->masqr) && (fr = ast_read(c0))) { @@ -1026,7 +1028,8 @@ static enum ast_bridge_result remote_bridge_loop(struct ast_channel *c0, struct if ((c0->tech_pvt != pvt0) || (c1->tech_pvt != pvt1) || (c0->masq || c0->masqr || c1->masq || c1->masqr) || - (c0->monitor || c0->audiohooks || c1->monitor || c1->audiohooks)) { + (c0->monitor || c0->audiohooks || c1->monitor || c1->audiohooks) || + (!ast_framehook_list_is_empty(c0->framehooks) || !ast_framehook_list_is_empty(c1->framehooks))) { ast_debug(1, "Oooh, something is weird, backing out\n"); res = AST_BRIDGE_RETRY; break;