[asterisk-commits] alecdavis: trunk r310288 - in /trunk: ./ main/rtp_engine.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Mar 11 00:56:12 CST 2011
Author: alecdavis
Date: Fri Mar 11 00:56:06 2011
New Revision: 310288
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=310288
Log:
Merged revisions 310287 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r310287 | alecdavis | 2011-03-11 19:47:44 +1300 (Fri, 11 Mar 2011) | 17 lines
remote_bridge_loop: prevent segfault when after transfer of IAX2 of DAHDI call
If the channel condition is one of the following after breaking out of the loop, don't try to update_peer
(where x = 0/1)
1). ZOMBIE
2). cx->tech_pvt != pvtx
3). gluex != ast_rtp_instance_get_glue(cx->tech->type))
(closes issue #18781)
Reported by: alecdavis
Patches:
bug18781.diff3.txt uploaded by alecdavis (license 585)
Tested by: alecdavis, ZX81
Review: https://reviewboard.asterisk.org/r/1128/
........
Modified:
trunk/ (props changed)
trunk/main/rtp_engine.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: trunk/main/rtp_engine.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/rtp_engine.c?view=diff&rev=310288&r1=310287&r2=310288
==============================================================================
--- trunk/main/rtp_engine.c (original)
+++ trunk/main/rtp_engine.c Fri Mar 11 00:56:06 2011
@@ -1234,10 +1234,22 @@
cs[1] = cs[2];
}
- if (glue0->update_peer(c0, NULL, NULL, NULL, 0, 0)) {
+ if (ast_test_flag(c0, AST_FLAG_ZOMBIE)) {
+ ast_debug(1, "Channel '%s' Zombie cleardown from bridge\n", c0->name);
+ } else if (c0->tech_pvt != pvt0) {
+ ast_debug(1, "Channel c0->'%s' pvt changed, in bridge with c1->'%s'\n", c0->name, c1->name);
+ } else if (glue0 != ast_rtp_instance_get_glue(c0->tech->type)) {
+ ast_debug(1, "Channel c0->'%s' technology changed, in bridge with c1->'%s'\n", c0->name, c1->name);
+ } else if (glue0->update_peer(c0, NULL, NULL, NULL, 0, 0)) {
ast_log(LOG_WARNING, "Channel '%s' failed to break RTP bridge\n", c0->name);
}
- if (glue1->update_peer(c1, NULL, NULL, NULL, 0, 0)) {
+ if (ast_test_flag(c1, AST_FLAG_ZOMBIE)) {
+ ast_debug(1, "Channel '%s' Zombie cleardown from bridge\n", c1->name);
+ } else if (c1->tech_pvt != pvt1) {
+ ast_debug(1, "Channel c1->'%s' pvt changed, in bridge with c0->'%s'\n", c1->name, c0->name);
+ } else if (glue1 != ast_rtp_instance_get_glue(c1->tech->type)) {
+ ast_debug(1, "Channel c1->'%s' technology changed, in bridge with c0->'%s'\n", c1->name, c0->name);
+ } else if (glue1->update_peer(c1, NULL, NULL, NULL, 0, 0)) {
ast_log(LOG_WARNING, "Channel '%s' failed to break RTP bridge\n", c1->name);
}
More information about the asterisk-commits
mailing list