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/branches/1.8@303771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett
2011-01-25 17:49:20 +00:00
parent b18db77287
commit 8e51d30b67
5 changed files with 234 additions and 88 deletions

View File

@@ -84,6 +84,20 @@ enum sig_ss7_law {
SIG_SS7_ALAW
};
/*! Call establishment life cycle level for simple comparisons. */
enum sig_ss7_call_level {
/*! Call does not exist. */
SIG_SS7_CALL_LEVEL_IDLE,
/*! Call is present but has no response yet. (SETUP) */
SIG_SS7_CALL_LEVEL_SETUP,
/*! Call routing is happening. (PROCEEDING) */
SIG_SS7_CALL_LEVEL_PROCEEDING,
/*! Called party is being alerted of the call. (ALERTING) */
SIG_SS7_CALL_LEVEL_ALERTING,
/*! Call is connected/answered. (CONNECT) */
SIG_SS7_CALL_LEVEL_CONNECT,
};
struct sig_ss7_linkset;
struct sig_ss7_callback {
@@ -120,6 +134,9 @@ struct sig_ss7_chan {
/*! \brief Opaque libss7 call control structure */
struct isup_call *ss7call;
/*! Call establishment life cycle level for simple comparisons. */
enum sig_ss7_call_level call_level;
int channel; /*!< Channel Number */
int cic; /*!< CIC associated with channel */
unsigned int dpc; /*!< CIC's DPC */
@@ -192,15 +209,8 @@ struct sig_ss7_chan {
unsigned int inalarm:1;
/*! TRUE if this channel is being used for an outgoing call. */
unsigned int outgoing:1;
/*!
* \brief TRUE if call is in a proceeding state.
* The call has started working its way through the network.
*/
unsigned int proceeding:1;
/*! \brief TRUE if the call has seen progress through the network. */
/*! \brief TRUE if the call has seen inband-information progress through the network. */
unsigned int progress:1;
/*! \brief TRUE if channel is alerting/ringing */
unsigned int alerting:1;
/*! \brief TRUE if the call has already gone/hungup */
unsigned int alreadyhungup:1;
/*! \brief XXX BOOLEAN Purpose??? */