diff options
author | Richard Mudgett <rmudgett@digium.com> | 2011-11-14 22:05:39 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2011-11-14 22:05:39 +0000 |
commit | 113612b9d68c4bfaeebed988ef67f1869a2ccf24 (patch) | |
tree | b0c7b5ea788efdf5c93460132d9c41dd2f7070a7 /channels/sip | |
parent | 1cef6cf8cdfee52564c58087f0235e101e10c0d7 (diff) |
Restore SIP DTMF overlap dialing method.
The recent fix for ASTERISK-17288 to get RFC3578 SIP overlap support
working correctly removed a long standing ability to do overlap dialing
using DTMF in the early media phase of a call.
See ASTERISK-18702 it has a very good description of the issue.
I started with Pavel Troller's chan_sip.diff patch on issue
ASTERISK-18702.
* Added 'dtmf' enum value to sip.conf allowoverlap config option. The new
option value causes the Incomplte application to not send anything with
chan_sip so the caller can supply more digits via DTMF.
* Renames SIP_GET_DEST_PICKUP_EXTEN_FOUND to SIP_GET_DEST_EXTEN_MATCHMORE
since that is what it really means.
* Fixed get_destination() inconsistency with the pickup extension
matching.
* Fixed initialization of PAGE3 of global_flags in reload_config().
(closes issue ASTERISK-18702)
Reported by: Pavel Troller
Review: https://reviewboard.asterisk.org/r/1517/
Review: https://reviewboard.asterisk.org/r/1582/
........
Merged revisions 345273 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 345275 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@345276 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sip')
-rw-r--r-- | channels/sip/include/sip.h | 88 |
1 files changed, 47 insertions, 41 deletions
diff --git a/channels/sip/include/sip.h b/channels/sip/include/sip.h index bc4ea4d96..0c3661d91 100644 --- a/channels/sip/include/sip.h +++ b/channels/sip/include/sip.h @@ -303,46 +303,52 @@ a second page of flags (for flags[1] */ /*@{*/ /* realtime flags */ -#define SIP_PAGE2_RTCACHEFRIENDS (1 << 0) /*!< GP: Should we keep RT objects in memory for extended time? */ -#define SIP_PAGE2_RTAUTOCLEAR (1 << 1) /*!< GP: Should we clean memory from peers after expiry? */ -#define SIP_PAGE2_RPID_UPDATE (1 << 2) -#define SIP_PAGE2_Q850_REASON (1 << 3) /*!< DP: Get/send cause code via Reason header */ -#define SIP_PAGE2_SYMMETRICRTP (1 << 4) /*!< GDP: Whether symmetric RTP is enabled or not */ -#define SIP_PAGE2_STATECHANGEQUEUE (1 << 5) /*!< D: Unsent state pending change exists */ -#define SIP_PAGE2_CONNECTLINEUPDATE_PEND (1 << 6) -#define SIP_PAGE2_RPID_IMMEDIATE (1 << 7) -#define SIP_PAGE2_RPORT_PRESENT (1 << 8) /*!< Was rport received in the Via header? */ -#define SIP_PAGE2_PREFERRED_CODEC (1 << 9) /*!< GDP: Only respond with single most preferred joint codec */ -#define SIP_PAGE2_VIDEOSUPPORT (1 << 10) /*!< DP: Video supported if offered? */ -#define SIP_PAGE2_TEXTSUPPORT (1 << 11) /*!< GDP: Global text enable */ -#define SIP_PAGE2_ALLOWSUBSCRIBE (1 << 12) /*!< GP: Allow subscriptions from this peer? */ -#define SIP_PAGE2_ALLOWOVERLAP (1 << 13) /*!< DP: Allow overlap dialing ? */ -#define SIP_PAGE2_SUBSCRIBEMWIONLY (1 << 14) /*!< GP: Only issue MWI notification if subscribed to */ -#define SIP_PAGE2_IGNORESDPVERSION (1 << 15) /*!< GDP: Ignore the SDP session version number we receive and treat all sessions as new */ - -#define SIP_PAGE2_T38SUPPORT (3 << 16) /*!< GDP: T.38 Fax Support */ -#define SIP_PAGE2_T38SUPPORT_UDPTL (1 << 16) /*!< GDP: T.38 Fax Support (no error correction) */ -#define SIP_PAGE2_T38SUPPORT_UDPTL_FEC (2 << 16) /*!< GDP: T.38 Fax Support (FEC error correction) */ -#define SIP_PAGE2_T38SUPPORT_UDPTL_REDUNDANCY (3 << 16) /*!< GDP: T.38 Fax Support (redundancy error correction) */ - -#define SIP_PAGE2_CALL_ONHOLD (3 << 18) /*!< D: Call hold states: */ -#define SIP_PAGE2_CALL_ONHOLD_ACTIVE (1 << 18) /*!< D: Active hold */ -#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (2 << 18) /*!< D: One directional hold */ -#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (3 << 18) /*!< D: Inactive hold */ - -#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 20) /*!< DP: Compensate for buggy RFC2833 implementations */ -#define SIP_PAGE2_BUGGY_MWI (1 << 21) /*!< DP: Buggy CISCO MWI fix */ -#define SIP_PAGE2_DIALOG_ESTABLISHED (1 << 22) /*!< 29: Has a dialog been established? */ - -#define SIP_PAGE2_FAX_DETECT (3 << 23) /*!< DP: Fax Detection support */ -#define SIP_PAGE2_FAX_DETECT_CNG (1 << 23) /*!< DP: Fax Detection support - detect CNG in audio */ -#define SIP_PAGE2_FAX_DETECT_T38 (2 << 23) /*!< DP: Fax Detection support - detect T.38 reinvite from peer */ -#define SIP_PAGE2_FAX_DETECT_BOTH (3 << 23) /*!< DP: Fax Detection support - detect both */ - -#define SIP_PAGE2_UDPTL_DESTINATION (1 << 25) /*!< DP: Use source IP of RTP as destination if NAT is enabled */ -#define SIP_PAGE2_VIDEOSUPPORT_ALWAYS (1 << 26) /*!< DP: Always set up video, even if endpoints don't support it */ -#define SIP_PAGE2_HAVEPEERCONTEXT (1 << 27) /*< Are we associated with a configured peer context? */ -#define SIP_PAGE2_USE_SRTP (1 << 28) /*!< DP: Whether we should offer (only) SRTP */ +#define SIP_PAGE2_RTCACHEFRIENDS (1 << 0) /*!< GP: Should we keep RT objects in memory for extended time? */ +#define SIP_PAGE2_RTAUTOCLEAR (1 << 1) /*!< GP: Should we clean memory from peers after expiry? */ +#define SIP_PAGE2_RPID_UPDATE (1 << 2) +#define SIP_PAGE2_Q850_REASON (1 << 3) /*!< DP: Get/send cause code via Reason header */ +#define SIP_PAGE2_SYMMETRICRTP (1 << 4) /*!< GDP: Whether symmetric RTP is enabled or not */ +#define SIP_PAGE2_STATECHANGEQUEUE (1 << 5) /*!< D: Unsent state pending change exists */ +#define SIP_PAGE2_CONNECTLINEUPDATE_PEND (1 << 6) +#define SIP_PAGE2_RPID_IMMEDIATE (1 << 7) +#define SIP_PAGE2_RPORT_PRESENT (1 << 8) /*!< Was rport received in the Via header? */ +#define SIP_PAGE2_PREFERRED_CODEC (1 << 9) /*!< GDP: Only respond with single most preferred joint codec */ +#define SIP_PAGE2_VIDEOSUPPORT (1 << 10) /*!< DP: Video supported if offered? */ +#define SIP_PAGE2_TEXTSUPPORT (1 << 11) /*!< GDP: Global text enable */ +#define SIP_PAGE2_ALLOWSUBSCRIBE (1 << 12) /*!< GP: Allow subscriptions from this peer? */ + +#define SIP_PAGE2_ALLOWOVERLAP (3 << 13) /*!< DP: Allow overlap dialing ? */ +#define SIP_PAGE2_ALLOWOVERLAP_NO (0 << 13) /*!< No, terminate with 404 Not found */ +#define SIP_PAGE2_ALLOWOVERLAP_YES (1 << 13) /*!< Yes, using the 484 Address Incomplete response */ +#define SIP_PAGE2_ALLOWOVERLAP_DTMF (2 << 13) /*!< Yes, using the DTMF transmission through Early Media */ +#define SIP_PAGE2_ALLOWOVERLAP_SPARE (3 << 13) /*!< Spare (reserved for another dialling transmission mechanisms like KPML) */ + +#define SIP_PAGE2_SUBSCRIBEMWIONLY (1 << 15) /*!< GP: Only issue MWI notification if subscribed to */ +#define SIP_PAGE2_IGNORESDPVERSION (1 << 16) /*!< GDP: Ignore the SDP session version number we receive and treat all sessions as new */ + +#define SIP_PAGE2_T38SUPPORT (3 << 17) /*!< GDP: T.38 Fax Support */ +#define SIP_PAGE2_T38SUPPORT_UDPTL (1 << 17) /*!< GDP: T.38 Fax Support (no error correction) */ +#define SIP_PAGE2_T38SUPPORT_UDPTL_FEC (2 << 17) /*!< GDP: T.38 Fax Support (FEC error correction) */ +#define SIP_PAGE2_T38SUPPORT_UDPTL_REDUNDANCY (3 << 17) /*!< GDP: T.38 Fax Support (redundancy error correction) */ + +#define SIP_PAGE2_CALL_ONHOLD (3 << 19) /*!< D: Call hold states: */ +#define SIP_PAGE2_CALL_ONHOLD_ACTIVE (1 << 19) /*!< D: Active hold */ +#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (2 << 19) /*!< D: One directional hold */ +#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (3 << 19) /*!< D: Inactive hold */ + +#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 21) /*!< DP: Compensate for buggy RFC2833 implementations */ +#define SIP_PAGE2_BUGGY_MWI (1 << 22) /*!< DP: Buggy CISCO MWI fix */ +#define SIP_PAGE2_DIALOG_ESTABLISHED (1 << 23) /*!< 29: Has a dialog been established? */ + +#define SIP_PAGE2_FAX_DETECT (3 << 24) /*!< DP: Fax Detection support */ +#define SIP_PAGE2_FAX_DETECT_CNG (1 << 24) /*!< DP: Fax Detection support - detect CNG in audio */ +#define SIP_PAGE2_FAX_DETECT_T38 (2 << 24) /*!< DP: Fax Detection support - detect T.38 reinvite from peer */ +#define SIP_PAGE2_FAX_DETECT_BOTH (3 << 24) /*!< DP: Fax Detection support - detect both */ + +#define SIP_PAGE2_UDPTL_DESTINATION (1 << 26) /*!< DP: Use source IP of RTP as destination if NAT is enabled */ +#define SIP_PAGE2_VIDEOSUPPORT_ALWAYS (1 << 27) /*!< DP: Always set up video, even if endpoints don't support it */ +#define SIP_PAGE2_HAVEPEERCONTEXT (1 << 28) /*< Are we associated with a configured peer context? */ +#define SIP_PAGE2_USE_SRTP (1 << 29) /*!< DP: Whether we should offer (only) SRTP */ #define SIP_PAGE2_FLAGS_TO_COPY \ (SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_IGNORESDPVERSION | \ @@ -466,7 +472,7 @@ enum sip_auth_type { /*! \brief Result from get_destination function */ enum sip_get_dest_result { - SIP_GET_DEST_PICKUP_EXTEN_FOUND = 1, + SIP_GET_DEST_EXTEN_MATCHMORE = 1, SIP_GET_DEST_EXTEN_FOUND = 0, SIP_GET_DEST_EXTEN_NOT_FOUND = -1, SIP_GET_DEST_REFUSED = -2, |