mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-21 20:56:39 +00:00
Merged revisions 317865 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r317865 | russell | 2011-05-06 14:46:49 -0500 (Fri, 06 May 2011) | 11 lines chan_sip: fix a deadlock in check_rtp_timeout. Don't block doing silly deadlock avoidance. Just return and try again later. The funciton gets called often enough that it's fine. Also, this change was already made in trunk. (closes issue #18791) Reported by: irroot Patches: chan_sip.rtptimeout.patch uploaded by irroot (license 52) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@317866 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -24933,10 +24933,11 @@ static void check_rtp_timeout(struct sip_pvt *dialog, time_t t)
|
||||
if (!ast_test_flag(&dialog->flags[1], SIP_PAGE2_CALL_ONHOLD) || (ast_rtp_instance_get_hold_timeout(dialog->rtp) && (t > dialog->lastrtprx + ast_rtp_instance_get_hold_timeout(dialog->rtp)))) {
|
||||
/* Needs a hangup */
|
||||
if (ast_rtp_instance_get_timeout(dialog->rtp)) {
|
||||
if(ast_channel_trylock(dialog->owner)) {
|
||||
/* Dont do a infinite deadlock avoidance loop.
|
||||
* Lets try this on next round (1 ms to 1000 ms later)
|
||||
* call is allready dead */
|
||||
if (!dialog->owner || ast_channel_trylock(dialog->owner)) {
|
||||
/*
|
||||
* Don't block, just try again later.
|
||||
* If there was no owner, the call is dead already.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
|
||||
|
Reference in New Issue
Block a user