[asterisk-commits] murf: branch 1.4 r150637 - /branches/1.4/res/res_features.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Oct 17 12:18:31 CDT 2008
Author: murf
Date: Fri Oct 17 12:18:31 2008
New Revision: 150637
URL: http://svn.digium.com/view/asterisk?view=rev&rev=150637
Log:
Interesting crash. In this case, you exit the
bridge with peer completely GONE.
I moved the channel find call up to cover the
whole peer CDR reset code segment. This appears
to solve the crash without changing the logic
at all.
Modified:
branches/1.4/res/res_features.c
Modified: branches/1.4/res/res_features.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/res/res_features.c?view=diff&rev=150637&r1=150636&r2=150637
==============================================================================
--- branches/1.4/res/res_features.c (original)
+++ branches/1.4/res/res_features.c Fri Oct 17 12:18:31 2008
@@ -1812,9 +1812,9 @@
} else {
ast_cdr_specialized_reset(chan_cdr,0); /* nothing changed, reset the chan_cdr */
}
- if (strcasecmp(orig_peername, peer->name) != 0) {
+ chan_ptr = ast_get_channel_by_name_locked(orig_peername);
+ if (chan_ptr && strcasecmp(orig_peername, peer->name) != 0) {
/* old channel */
- chan_ptr = ast_get_channel_by_name_locked(orig_peername);
if (chan_ptr) {
if (!ast_bridged_channel(chan_ptr)) {
struct ast_cdr *cur;
@@ -1826,13 +1826,15 @@
if (cur)
ast_cdr_specialized_reset(peer_cdr,0);
}
- ast_channel_unlock(chan_ptr);
}
/* new channel */
ast_cdr_specialized_reset(new_peer_cdr,0);
} else {
- ast_cdr_specialized_reset(peer_cdr,0); /* nothing changed, reset the peer_cdr */
- }
+ if (chan_ptr)
+ ast_cdr_specialized_reset(peer_cdr,0); /* nothing changed, reset the peer_cdr */
+ }
+ if (chan_ptr)
+ ast_channel_unlock(chan_ptr);
}
return res;
}
More information about the asterisk-commits
mailing list