[asterisk-commits] rizzo: branch rizzo/astobj2 r57941 -
/team/rizzo/astobj2/channels/chan_sip.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Mon Mar 5 12:57:54 MST 2007
Author: rizzo
Date: Mon Mar 5 13:57:53 2007
New Revision: 57941
URL: http://svn.digium.com/view/asterisk?view=rev&rev=57941
Log:
merge from trunk up to svn 53125
Modified:
team/rizzo/astobj2/channels/chan_sip.c
Modified: team/rizzo/astobj2/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/channels/chan_sip.c?view=diff&rev=57941&r1=57940&r2=57941
==============================================================================
--- team/rizzo/astobj2/channels/chan_sip.c (original)
+++ team/rizzo/astobj2/channels/chan_sip.c Mon Mar 5 13:57:53 2007
@@ -531,6 +531,7 @@
static struct ast_codec_pref default_prefs; /*!< Default codec prefs */
/* Global settings only apply to the channel */
+static int global_directrtpsetup; /*!< Enable support for Direct RTP setup (no re-invites) */
static int global_limitonpeers; /*!< Match call limit on peers only */
static int global_rtautoclear;
static int global_notifyringing; /*!< Send notifications on ringing */
@@ -3240,6 +3241,7 @@
p->callingpres = ast->cid.cid_pres;
p->jointcapability = ast_translate_available_formats(p->capability, p->prefcodec);
+ p->jointnoncodeccapability = p->noncodeccapability;
/* If there are no audio formats left to offer, punt */
if (!(p->jointcapability & AST_FORMAT_AUDIO_MASK)) {
@@ -5664,6 +5666,9 @@
if (newnoncodeccapability & AST_RTP_DTMF) {
/* XXX Would it be reasonable to drop the DSP at this point? XXX */
ast_set_flag(&p->flags[0], SIP_DTMF_RFC2833);
+ /* Since RFC2833 is now negotiated we need to change some properties of the RTP stream */
+ ast_rtp_setdtmf(p->rtp, 1);
+ ast_rtp_setdtmfcompensate(p->rtp, ast_test_flag(&p->flags[1], SIP_PAGE2_RFC2833_COMPENSATE));
} else {
ast_set_flag(&p->flags[0], SIP_DTMF_INBAND);
}
@@ -9965,7 +9970,7 @@
snprintf(ilimits, sizeof(ilimits), "%d", iterator->call_limit);
else
ast_copy_string(ilimits, "N/A", sizeof(ilimits));
- snprintf(iused, sizeof(iused), "%d/%d", iterator->inUse, iterator->inRinging);
+ snprintf(iused, sizeof(iused), "%d/%d/%d", iterator->inUse, iterator->inRinging, iterator->onHold);
if (showall || iterator->call_limit)
ast_cli(fd, FORMAT2, iterator->name, iused, ilimits);
ASTOBJ_UNLOCK(iterator);
@@ -10910,6 +10915,7 @@
ast_cli(fd, " Realm. auth: %s\n", authl ? "Yes": "No");
ast_cli(fd, " Always auth rejects: %s\n", global_alwaysauthreject ? "Yes" : "No");
ast_cli(fd, " Call limit peers only: %s\n", global_limitonpeers ? "Yes" : "No");
+ ast_cli(fd, " Direct RTP setup: %s\n", global_directrtpsetup ? "Yes" : "No");
ast_cli(fd, " User Agent: %s\n", global_useragent);
ast_cli(fd, " MWI checking interval: %d secs\n", global_mwitime);
ast_cli(fd, " Reg. context: %s\n", S_OR(global_regcontext, "(not set)"));
@@ -16937,6 +16943,7 @@
global_notifyringing = DEFAULT_NOTIFYRINGING;
global_limitonpeers = FALSE; /*!< Match call limit on peers only */
global_notifyhold = FALSE; /*!< Keep track of hold status for a peer */
+ global_directrtpsetup = FALSE; /* Experimental feature, disabled by default */
global_alwaysauthreject = 0;
global_allowsubscribe = FALSE;
snprintf(global_useragent, sizeof(global_useragent), "%s %s", DEFAULT_USERAGENT, ASTERISK_VERSION);
@@ -17027,6 +17034,7 @@
M_BOOL("compactheaders", compactheaders)
M_STR("notifymimetype", default_notifymime)
M_BOOL("limitonpeers", global_limitonpeers)
+ M_BOOL("directrtpsetup", global_directrtpsetup)
M_BOOL("notifyringing", global_notifyringing)
M_BOOL("notifyhold", global_notifyhold)
M_BOOL("alwaysauthreject", global_alwaysauthreject)
@@ -17530,6 +17538,9 @@
if (!p)
return -1;
+ /* Disable early RTP bridge */
+ if (chan->_state != AST_STATE_UP && !global_directrtpsetup) /* We are in early state */
+ return 0;
sip_pvt_lock(p);
if (ast_test_flag(&p->flags[0], SIP_ALREADYGONE)) {
/* If we're destroyed, don't bother */
More information about the asterisk-commits
mailing list