aboutsummaryrefslogtreecommitdiffstats
path: root/channels/sig_analog.h
diff options
context:
space:
mode:
authorrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-10-13 23:45:11 +0000
committerrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-10-13 23:45:11 +0000
commit477b92c18a37166d955c4dfe49a847ff5e322245 (patch)
treecd9cc5fee83bbdd97e59001b7175cdc328f42004 /channels/sig_analog.h
parent117aaf9bce95f3f5963dd37e4b014d5dc49920d0 (diff)
Merged revisions 291655 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r291655 | rmudgett | 2010-10-13 18:36:50 -0500 (Wed, 13 Oct 2010) | 27 lines Merged revisions 291643 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r291643 | rmudgett | 2010-10-13 18:29:58 -0500 (Wed, 13 Oct 2010) | 20 lines Deadlock between dahdi_exception() and dahdi_indicate(). There is a deadlock between dahdi_exception() and dahdi_indicate() for analog ports. The call-waiting and three-way-calling feature can experience deadlock if these features are trying to do something and an event from the bridged channel happens at the same time. Deadlock avoidance code added to obtain necessary channel locks before attemting an operation with call-waiting and three-way-calling. (closes issue #16847) Reported by: shin-shoryuken Patches: issue_16847_v1.4.patch uploaded by rmudgett (license 664) issue_16847_v1.6.2.patch uploaded by rmudgett (license 664) issue_16847_v1.8_v2.patch uploaded by rmudgett (license 664) Tested by: alecdavis, rmudgett Review: https://reviewboard.asterisk.org/r/971/ ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@291656 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/sig_analog.h')
-rw-r--r--channels/sig_analog.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/channels/sig_analog.h b/channels/sig_analog.h
index d88e622e7..c1b611527 100644
--- a/channels/sig_analog.h
+++ b/channels/sig_analog.h
@@ -129,6 +129,9 @@ struct analog_callback {
void (* const unlock_private)(void *pvt);
/* Lock the private in the signalling private structure. ... */
void (* const lock_private)(void *pvt);
+ /* Do deadlock avoidance for the private signaling structure lock. */
+ void (* const deadlock_avoidance_private)(void *pvt);
+
/* Function which is called back to handle any other DTMF up events that are received. Called by analog_handle_event. Why is this
* important to use, instead of just directly using events received before they are passed into the library? Because sometimes,
* (CWCID) the library absorbs DTMF events received. */