https://origsvn.digium.com/svn/asterisk/trunk
........
r269307 | rmudgett | 2010-06-09 11:54:38 -0500 (Wed, 09 Jun 2010) | 12 lines
Eliminate deadlock potential in dahdi_fixup().
Calling dahdi_indicate() within dahdi_fixup() while the owner pointers are
in a potentially inconsistent state is a potentially bad thing in
principle.
However, calling dahdi_indicate() when the channel private lock is already
held can cause a deadlock if the PRI lock is needed because
dahdi_indicate() will also get the channel private lock. The pri_grab()
function assumes that the channel private lock is held once to avoid
deadlock.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@271338
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
dahdi_unlink(NULL, p, 0);
p->subs[x].owner = newchan;
}
- if (newchan->_state == AST_STATE_RINGING)
- dahdi_indicate(newchan, AST_CONTROL_RINGING, NULL, 0);
update_conf(p);
ast_mutex_unlock(&p->lock);
+ if (newchan->_state == AST_STATE_RINGING) {
+ dahdi_indicate(newchan, AST_CONTROL_RINGING, NULL, 0);
+ }
return 0;
}