]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Disable the direct p2p RTP call setup in SIP. You can enable it in sip.conf, but...
authorOlle Johansson <oej@edvina.net>
Fri, 2 Feb 2007 00:24:03 +0000 (00:24 +0000)
committerOlle Johansson <oej@edvina.net>
Fri, 2 Feb 2007 00:24:03 +0000 (00:24 +0000)
considered experimental until we solve the AST_CONTROL_ANSWER with payload and videocaps
stuff.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@53109 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c
configs/sip.conf.sample

index 22953bbcf049129109ff1558460e96db5d0a56f7..2f2d8ba4ffad7b508d88c99825bd11b441a893d8 100644 (file)
@@ -523,6 +523,7 @@ static int default_maxcallbitrate;  /*!< Maximum bitrate for call */
 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 */
@@ -10241,6 +10242,7 @@ static int sip_show_settings(int fd, int argc, char *argv[])
        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)"));
@@ -16080,6 +16082,7 @@ static int reload_config(enum channelreloadreason reason)
        expiry = DEFAULT_EXPIRY;
        global_notifyringing = DEFAULT_NOTIFYRINGING;
        global_limitonpeers = FALSE;
+       global_directrtpsetup = FALSE;          /* Experimental feature, disabled by default */
        global_notifyhold = FALSE;
        global_alwaysauthreject = 0;
        global_allowsubscribe = FALSE;
@@ -16206,6 +16209,8 @@ static int reload_config(enum channelreloadreason reason)
                        ast_copy_string(default_notifymime, v->value, sizeof(default_notifymime));
                } else if (!strcasecmp(v->name, "limitonpeers")) {
                        global_limitonpeers = ast_true(v->value);
+               } else if (!strcasecmp(v->name, "directrtpsetup")) {
+                       global_directrtpsetup = ast_true(v->value);
                } else if (!strcasecmp(v->name, "notifyringing")) {
                        global_notifyringing = ast_true(v->value);
                } else if (!strcasecmp(v->name, "notifyhold")) {
@@ -16757,6 +16762,11 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struc
        p = chan->tech_pvt;
        if (!p) 
                return -1;
+
+       /* Disable early RTP bridge  */
+       if (chan->_state != AST_STATE_UP && !global_directrtpsetup)     /* We are in early state */
+               return 0;
+
        ast_mutex_lock(&p->lock);
        if (ast_test_flag(&p->flags[0], SIP_ALREADYGONE)) {
                /* If we're destroyed, don't bother */
index 2948eebabd3751e72769ac841bb8927a96d14473..293eafa636666f9b18c1038d8dfe3e5ac102e270 100644 (file)
@@ -307,6 +307,12 @@ srvlookup=yes                      ; Enable DNS SRV lookups on outbound calls
                                ; call directly between the endpoints instead of sending
                                ; a re-INVITE).
 
+;directrtpsetup=yes            ; Enable the new experimental direct RTP setup. This sets up
+                               ; the call directly with media peer-2-peer without re-invites.
+                               ; Will not work for video and cases where the callee sends 
+                               ; RTP payloads and fmtp headers in the 200 OK that does not match the
+                               ; callers INVITE.
+
 ;canreinvite=nonat             ; An additional option is to allow media path redirection
                                ; (reinvite) but only when the peer where the media is being
                                ; sent is known to not be behind a NAT (as the RTP core can