From 7889af7cab950b993917d1d727780c1eb95c829d Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Tue, 25 Jan 2011 17:58:00 +0000 Subject: Merged revisions 303771 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r303771 | rmudgett | 2011-01-25 11:49:20 -0600 (Tue, 25 Jan 2011) | 54 lines Merged revisions 303769 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303769 | rmudgett | 2011-01-25 11:42:42 -0600 (Tue, 25 Jan 2011) | 47 lines Merged revisions 303765 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303765 | rmudgett | 2011-01-25 11:36:50 -0600 (Tue, 25 Jan 2011) | 40 lines Sending out unnecessary PROCEEDING messages breaks overlap dialing. Issue #16789 was a good idea. Unfortunately, it breaks overlap dialing through Asterisk. There is not enough information available at this point to know if dialing is complete. The ast_exists_extension(), ast_matchmore_extension(), and ast_canmatch_extension() calls are not adequate to detect a dial through extension pattern of "_9!". Workaround is to use the dialplan Proceeding() application early in non-dial through extensions. * Effectively revert issue #16789. * Allow outgoing overlap dialing to hear dialtone and other early media. A PROGRESS "inband-information is now available" message is now sent after the SETUP_ACKNOWLEDGE message for non-digital calls. An AST_CONTROL_PROGRESS is now generated for incoming SETUP_ACKNOWLEDGE messages for non-digital calls. * Handling of the AST_CONTROL_CONGESTION in chan_dahdi/sig_pri was inconsistent with the cause codes. * Added better protection from sending out of sequence messages by combining several flags into a single enum value representing call progress level. * Added diagnostic messages for deferred overlap digits handling corner cases. (closes issue #17085) Reported by: shawkris (closes issue #18509) Reported by: wimpy Patches: issue18509_early_media_v1.8_v3.patch uploaded by rmudgett (license 664) Expanded upon issue18509_early_media_v1.8_v3.patch to include analog and SS7 because of backporting requirements. Tested by: wimpy, rmudgett ........ ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@303772 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/sig_pri.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'channels/sig_pri.h') diff --git a/channels/sig_pri.h b/channels/sig_pri.h index 2832bd5d3..1c3750800 100644 --- a/channels/sig_pri.h +++ b/channels/sig_pri.h @@ -144,6 +144,22 @@ enum sig_pri_moh_event { SIG_PRI_MOH_EVENT_NUM }; +/*! Call establishment life cycle level for simple comparisons. */ +enum sig_pri_call_level { + /*! Call does not exist. */ + SIG_PRI_CALL_LEVEL_IDLE, + /*! Call is present but has no response yet. (SETUP) */ + SIG_PRI_CALL_LEVEL_SETUP, + /*! Call is collecting digits for overlap dialing. (SETUP ACKNOWLEDGE) */ + SIG_PRI_CALL_LEVEL_OVERLAP, + /*! Call routing is happening. (PROCEEDING) */ + SIG_PRI_CALL_LEVEL_PROCEEDING, + /*! Called party is being alerted of the call. (ALERTING) */ + SIG_PRI_CALL_LEVEL_ALERTING, + /*! Call is connected/answered. (CONNECT) */ + SIG_PRI_CALL_LEVEL_CONNECT, +}; + struct sig_pri_span; struct sig_pri_callback { @@ -274,13 +290,10 @@ struct sig_pri_chan { unsigned int holding_aoce:1; /*!< received AOC-E msg from asterisk. holding for disconnect/release */ #endif /* defined(HAVE_PRI_AOC_EVENTS) */ unsigned int inalarm:1; - unsigned int alerting:1; /*!< TRUE if channel is alerting/ringing */ unsigned int alreadyhungup:1; /*!< TRUE if the call has already gone/hungup */ unsigned int isidlecall:1; /*!< TRUE if this is an idle call */ - unsigned int proceeding:1; /*!< TRUE if call is in a proceeding state */ - unsigned int progress:1; /*!< TRUE if the call has seen progress through the network */ + unsigned int progress:1; /*!< TRUE if the call has seen inband-information progress through the network */ unsigned int resetting:1; /*!< TRUE if this channel is being reset/restarted */ - unsigned int setup_ack:1; /*!< TRUE if this channel has received a SETUP_ACKNOWLEDGE */ unsigned int outgoing:1; unsigned int digital:1; @@ -296,6 +309,8 @@ struct sig_pri_chan { struct sig_pri_span *pri; q931_call *call; /*!< opaque libpri call control structure */ + /*! Call establishment life cycle level for simple comparisons. */ + enum sig_pri_call_level call_level; int prioffset; /*!< channel number in span */ int logicalspan; /*!< logical span number within trunk group */ int mastertrunkgroup; /*!< what trunk group is our master */ -- cgit v1.2.3