aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--UPGRADE.txt11
-rw-r--r--channels/chan_mgcp.c18
-rw-r--r--channels/chan_sip.c41
-rw-r--r--channels/chan_skinny.c12
-rw-r--r--configs/mgcp.conf.sample6
-rw-r--r--configs/res_ldap.conf.sample4
-rw-r--r--configs/sip.conf.sample32
-rw-r--r--configs/skinny.conf.sample2
-rw-r--r--contrib/scripts/realtime_pgsql.sql2
-rw-r--r--doc/chan_sip-perf-testing.txt2
-rw-r--r--doc/res_config_sqlite.txt2
-rw-r--r--doc/tex/phoneprov.tex2
-rw-r--r--main/rtp.c4
13 files changed, 75 insertions, 63 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 238920ceb..9903ff0d7 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -30,6 +30,17 @@ From 1.6.1 to 1.6.2:
Asterisk and various SIP/T.38 endpoints identified by many users of
Asterisk.
+* The 'canreinvite' option support by the SIP, MGCP and Skinny channel drivers
+ has been renamed to 'directmedia', to better reflect what it actually does.
+ In the case of SIP, there are still re-INVITEs issued for T.38 negotiation,
+ starting and stopping music-on-hold, and other reasons, and the 'canreinvite'
+ option never had any effect on these cases, it only affected the re-INVITEs
+ used for direct media path setup. For MGCP and Skinny, the option was poorly
+ named because those protocols don't even use INVITE messages at all. For
+ backwards compatibility, the old option is still supported in both normal
+ and Realtime configuration files, but all of the sample configuration files,
+ Realtime/LDAP schemas, and other documentation refer to it using the new name.
+
* The default console now will use colors according to the default background
color, instead of forcing the background color to black. If you are using a
light colored background for your console, you may wish to use the option
diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 1c1482975..1cb2f4de7 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -80,7 +80,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define MGCPDUMPER
#define DEFAULT_EXPIRY 120
#define MAX_EXPIRY 3600
-#define CANREINVITE 1
+#define DIRECTMEDIA 1
#ifndef INADDR_NONE
#define INADDR_NONE (in_addr_t)(-1)
@@ -177,7 +177,7 @@ static int cancallforward = 0;
static int singlepath = 0;
-static int canreinvite = CANREINVITE;
+static int directmedia = DIRECTMEDIA;
static char accountcode[AST_MAX_ACCOUNT_CODE] = "";
@@ -330,7 +330,7 @@ struct mgcp_endpoint {
int threewaycalling;
int singlepath;
int cancallforward;
- int canreinvite;
+ int directmedia;
int callreturn;
int dnd; /* How does this affect callwait? Do we just deny a mgcp_request if we're dnd? */
int hascallerid;
@@ -3557,7 +3557,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
int i=0, y=0;
int gw_reload = 0;
int ep_reload = 0;
- canreinvite = CANREINVITE;
+ directmedia = DIRECTMEDIA;
/* locate existing gateway */
gw = gateways;
@@ -3667,8 +3667,8 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
cancallforward = ast_true(v->value);
} else if (!strcasecmp(v->name, "singlepath")) {
singlepath = ast_true(v->value);
- } else if (!strcasecmp(v->name, "canreinvite")) {
- canreinvite = ast_true(v->value);
+ } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
+ directmedia = ast_true(v->value);
} else if (!strcasecmp(v->name, "mailbox")) {
ast_copy_string(mailbox, v->value, sizeof(mailbox));
} else if (!strcasecmp(v->name, "hasvoicemail")) {
@@ -3753,7 +3753,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
e->callreturn = callreturn;
e->cancallforward = cancallforward;
e->singlepath = singlepath;
- e->canreinvite = canreinvite;
+ e->directmedia = directmedia;
e->callwaiting = callwaiting;
e->hascallwaiting = callwaiting;
e->slowsequence = slowsequence;
@@ -3856,7 +3856,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
e->pickupgroup=cur_pickupgroup;
e->callreturn = callreturn;
e->cancallforward = cancallforward;
- e->canreinvite = canreinvite;
+ e->directmedia = directmedia;
e->singlepath = singlepath;
e->callwaiting = callwaiting;
e->hascallwaiting = callwaiting;
@@ -3949,7 +3949,7 @@ static enum ast_rtp_get_result mgcp_get_rtp_peer(struct ast_channel *chan, struc
*rtp = sub->rtp;
- if (sub->parent->canreinvite)
+ if (sub->parent->directmedia)
return AST_RTP_TRY_NATIVE;
else
return AST_RTP_TRY_PARTIAL;
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 155a3775e..99d8e36a3 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1335,8 +1335,8 @@ struct sip_auth {
/* re-INVITE related settings */
#define SIP_REINVITE (7 << 20) /*!< DP: four settings, uses three bits */
#define SIP_REINVITE_NONE (0 << 20) /*!< DP: no reinvite allowed */
-#define SIP_CAN_REINVITE (1 << 20) /*!< DP: allow peers to be reinvited to send media directly p2p */
-#define SIP_CAN_REINVITE_NAT (2 << 20) /*!< DP: allow media reinvite when new peer is behind NAT */
+#define SIP_DIRECT_MEDIA (1 << 20) /*!< DP: allow peers to be reinvited to send media directly p2p */
+#define SIP_DIRECT_MEDIA_NAT (2 << 20) /*!< DP: allow media reinvite when new peer is behind NAT */
#define SIP_REINVITE_UPDATE (4 << 20) /*!< DP: use UPDATE (RFC3311) when reinviting this peer */
/* "insecure" settings - see insecure2str() */
@@ -14796,7 +14796,7 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
ast_cli(fd, " Nat : %s\n", nat2str(ast_test_flag(&peer->flags[0], SIP_NAT)));
ast_cli(fd, " ACL : %s\n", cli_yesno(peer->ha != NULL));
ast_cli(fd, " T38 pt UDPTL : %s\n", cli_yesno(ast_test_flag(&peer->flags[1], SIP_PAGE2_T38SUPPORT)));
- ast_cli(fd, " CanReinvite : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_CAN_REINVITE)));
+ ast_cli(fd, " DirectMedia : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_DIRECT_MEDIA)));
ast_cli(fd, " PromiscRedir : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_PROMISCREDIR)));
ast_cli(fd, " User=Phone : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_USEREQPHONE)));
ast_cli(fd, " Video Support: %s\n", cli_yesno(ast_test_flag(&peer->flags[1], SIP_PAGE2_VIDEOSUPPORT)));
@@ -14899,7 +14899,8 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
astman_append(s, "SIP-AuthInsecure: %s\r\n", insecure2str(ast_test_flag(&peer->flags[0], SIP_INSECURE)));
astman_append(s, "SIP-NatSupport: %s\r\n", nat2str(ast_test_flag(&peer->flags[0], SIP_NAT)));
astman_append(s, "ACL: %s\r\n", (peer->ha?"Y":"N"));
- astman_append(s, "SIP-CanReinvite: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_CAN_REINVITE)?"Y":"N"));
+ astman_append(s, "SIP-CanReinvite: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_DIRECT_MEDIA)?"Y":"N"));
+ astman_append(s, "SIP-DirectMedia: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_DIRECT_MEDIA)?"Y":"N"));
astman_append(s, "SIP-PromiscRedir: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_PROMISCREDIR)?"Y":"N"));
astman_append(s, "SIP-UserPhone: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_USEREQPHONE)?"Y":"N"));
astman_append(s, "SIP-VideoSupport: %s\r\n", (ast_test_flag(&peer->flags[1], SIP_PAGE2_VIDEOSUPPORT)?"Y":"N"));
@@ -22535,11 +22536,11 @@ static int handle_common_options(struct ast_flags *flags, struct ast_flags *mask
ast_set_flag(&flags[0], SIP_NAT_ALWAYS);
else
ast_set_flag(&flags[0], SIP_NAT_RFC3581);
- } else if (!strcasecmp(v->name, "canreinvite")) {
+ } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
ast_set_flag(&mask[0], SIP_REINVITE);
ast_clear_flag(&flags[0], SIP_REINVITE);
if (ast_true(v->value)) {
- ast_set_flag(&flags[0], SIP_CAN_REINVITE | SIP_CAN_REINVITE_NAT);
+ ast_set_flag(&flags[0], SIP_DIRECT_MEDIA | SIP_DIRECT_MEDIA_NAT);
} else if (!ast_false(v->value)) {
char buf[64];
char *word, *next = buf;
@@ -22547,12 +22548,12 @@ static int handle_common_options(struct ast_flags *flags, struct ast_flags *mask
ast_copy_string(buf, v->value, sizeof(buf));
while ((word = strsep(&next, ","))) {
if (!strcasecmp(word, "update")) {
- ast_set_flag(&flags[0], SIP_REINVITE_UPDATE | SIP_CAN_REINVITE);
+ ast_set_flag(&flags[0], SIP_REINVITE_UPDATE | SIP_DIRECT_MEDIA);
} else if (!strcasecmp(word, "nonat")) {
- ast_set_flag(&flags[0], SIP_CAN_REINVITE);
- ast_clear_flag(&flags[0], SIP_CAN_REINVITE_NAT);
+ ast_set_flag(&flags[0], SIP_DIRECT_MEDIA);
+ ast_clear_flag(&flags[0], SIP_DIRECT_MEDIA_NAT);
} else {
- ast_log(LOG_WARNING, "Unknown canreinvite mode '%s' on line %d\n", v->value, v->lineno);
+ ast_log(LOG_WARNING, "Unknown directmedia mode '%s' on line %d\n", v->value, v->lineno);
}
}
}
@@ -23625,7 +23626,7 @@ static int reload_config(enum channelreloadreason reason)
ast_copy_string(default_vmexten, DEFAULT_VMEXTEN, sizeof(default_vmexten));
ast_set_flag(&global_flags[0], SIP_DTMF_RFC2833); /*!< Default DTMF setting: RFC2833 */
ast_set_flag(&global_flags[0], SIP_NAT_RFC3581); /*!< NAT support if requested by device with rport */
- ast_set_flag(&global_flags[0], SIP_CAN_REINVITE); /*!< Allow re-invites */
+ ast_set_flag(&global_flags[0], SIP_DIRECT_MEDIA); /*!< Allow re-invites */
/* Debugging settings, always default to off */
dumphistory = FALSE;
@@ -24331,7 +24332,7 @@ static struct ast_udptl *sip_get_udptl_peer(struct ast_channel *chan)
return NULL;
sip_pvt_lock(p);
- if (p->udptl && ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+ if (p->udptl && ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA))
udptl = p->udptl;
sip_pvt_unlock(p);
return udptl;
@@ -24381,9 +24382,9 @@ static enum ast_rtp_get_result sip_get_rtp_peer(struct ast_channel *chan, struct
*rtp = p->rtp;
- if (ast_rtp_getnat(*rtp) && !ast_test_flag(&p->flags[0], SIP_CAN_REINVITE_NAT))
+ if (ast_rtp_getnat(*rtp) && !ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA_NAT))
res = AST_RTP_TRY_PARTIAL;
- else if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+ else if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA))
res = AST_RTP_TRY_NATIVE;
else if (ast_test_flag(&global_jbconf, AST_JB_FORCED))
res = AST_RTP_GET_FAILED;
@@ -24410,7 +24411,7 @@ static enum ast_rtp_get_result sip_get_vrtp_peer(struct ast_channel *chan, struc
*rtp = p->vrtp;
- if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+ if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA))
res = AST_RTP_TRY_NATIVE;
sip_pvt_unlock(p);
@@ -24435,7 +24436,7 @@ static enum ast_rtp_get_result sip_get_trtp_peer(struct ast_channel *chan, struc
*rtp = p->trtp;
- if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE))
+ if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA))
res = AST_RTP_TRY_NATIVE;
sip_pvt_unlock(p);
@@ -24467,10 +24468,10 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struc
/* if this peer cannot handle reinvites of the media stream to devices
that are known to be behind a NAT, then stop the process now
*/
- if (nat_active && !ast_test_flag(&p->flags[0], SIP_CAN_REINVITE_NAT)) {
- sip_pvt_unlock(p);
- return 0;
- }
+ if (nat_active && !ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA_NAT)) {
+ sip_pvt_unlock(p);
+ return 0;
+ }
if (rtp) {
changed |= ast_rtp_get_peer(rtp, &p->redirip);
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 5f72ff310..864d52a92 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -1182,7 +1182,7 @@ struct skinny_subchannel {
int immediate; \
int hookstate; \
int nat; \
- int canreinvite; \
+ int directmedia; \
int prune;
struct skinny_line {
@@ -1208,7 +1208,7 @@ struct skinny_line_options{
.hidecallerid = 0,
.amaflags = 0,
.instance = 0,
- .canreinvite = 0,
+ .directmedia = 0,
.nat = 0,
.confcapability = AST_FORMAT_ULAW | AST_FORMAT_ALAW,
.capability = 0,
@@ -2593,7 +2593,7 @@ static enum ast_rtp_get_result skinny_get_rtp_peer(struct ast_channel *c, struct
l = sub->parent;
- if (!l->canreinvite || l->nat){
+ if (!l->directmedia || l->nat){
res = AST_RTP_TRY_PARTIAL;
if (skinnydebug)
ast_verb(1, "skinny_get_rtp_peer() Using AST_RTP_TRY_PARTIAL \n");
@@ -2653,7 +2653,7 @@ static int skinny_set_rtp_peer(struct ast_channel *c, struct ast_rtp *rtp, struc
req->data.startmedia.conferenceId = htolel(sub->callid);
req->data.startmedia.passThruPartyId = htolel(sub->callid);
- if (!(l->canreinvite) || (l->nat)){
+ if (!(l->directmedia) || (l->nat)){
ast_rtp_get_us(rtp, &us);
req->data.startmedia.remoteIp = htolel(d->ourip.s_addr);
req->data.startmedia.remotePort = htolel(ntohs(us.sin_port));
@@ -6631,9 +6631,9 @@ static struct ast_channel *skinny_request(const char *type, int format, void *da
CLINE_OPTS->callwaiting = ast_true(v->value);
continue;
}
- } else if (!strcasecmp(v->name, "canreinvite")) {
+ } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
if (type & (TYPE_DEF_LINE | TYPE_LINE)) {
- CLINE_OPTS->canreinvite = ast_true(v->value);
+ CLINE_OPTS->directmedia = ast_true(v->value);
continue;
}
} else if (!strcasecmp(v->name, "nat")) {
diff --git a/configs/mgcp.conf.sample b/configs/mgcp.conf.sample
index 104891e8a..c20b34a7c 100644
--- a/configs/mgcp.conf.sample
+++ b/configs/mgcp.conf.sample
@@ -41,7 +41,7 @@
;[dlinkgw]
;host = 192.168.0.64
;context = default
-;canreinvite = no
+;directmedia = no
;line => aaln/2
;line => aaln/1
@@ -96,7 +96,7 @@
;callwaiting = no
;callreturn = yes
;cancallforward = yes
-;canreinvite = no
+;directmedia = no
;transfer = no
;dtmfmode = inband
;line => aaln/1 ; now lets save this config to line1 aka aaln/1
@@ -104,7 +104,7 @@
;callwaiting = no
;callreturn = yes
;cancallforward = yes
-;canreinvite = no
+;directmedia = no
;transfer = no
;dtmfmode = inband
;line => aaln/2 ; now lets save this config to line2 aka aaln/2
diff --git a/configs/res_ldap.conf.sample b/configs/res_ldap.conf.sample
index 0a442298d..b02045f15 100644
--- a/configs/res_ldap.conf.sample
+++ b/configs/res_ldap.conf.sample
@@ -60,7 +60,7 @@ name = cn
amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup
callerid = AstAccountCallerID
-canreinvite = AstAccountCanReinvite
+directmedia = AstAccountDirectMedia
context = AstAccountContext
dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser
@@ -131,7 +131,7 @@ additionalFilter=(objectClass=*)
amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup
callerid = AstAccountCallerID
-canreinvite = AstAccountCanReinvite
+directmedia = AstAccountDirectMedia
context = AstAccountContext
dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser
diff --git a/configs/sip.conf.sample b/configs/sip.conf.sample
index 7a43598d4..b2050879f 100644
--- a/configs/sip.conf.sample
+++ b/configs/sip.conf.sample
@@ -611,17 +611,17 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; ; (work around more UNIDEN bugs)
;----------------------------------- MEDIA HANDLING --------------------------------
-; By default, Asterisk tries to re-invite the audio to an optimal path. If there's
+; By default, Asterisk tries to re-invite media streams to an optimal path. If there's
; no reason for Asterisk to stay in the media path, the media will be redirected.
-; This does not really work with in the case where Asterisk is outside and have
-; clients on the inside of a NAT. In that case, you want to set canreinvite=nonat
+; This does not really work well in the case where Asterisk is outside and the
+; clients are on the inside of a NAT. In that case, you want to set directmedia=nonat.
;
-;canreinvite=yes ; Asterisk by default tries to redirect the
- ; RTP media stream (audio) to go directly from
+;directmedia=yes ; Asterisk by default tries to redirect the
+ ; RTP media stream to go directly from
; the caller to the callee. Some devices do not
; support this (especially if one of them is behind a NAT).
; The default setting is YES. If you have all clients
- ; behind a NAT, or for some other reason wants Asterisk to
+ ; behind a NAT, or for some other reason want Asterisk to
; stay in the audio path, you may want to turn this off.
; This setting also affect direct RTP
@@ -633,18 +633,18 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; 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. This will also fail if canreinvite is enabled when
+ ; callers INVITE. This will also fail if directmedia is enabled when
; the device is actually behind NAT.
-;canreinvite=nonat ; An additional option is to allow media path redirection
+;directmedia=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
; determine it based on the apparent IP address the media
; arrives from).
-;canreinvite=update ; Yet a third option... use UPDATE for media path redirection,
+;directmedia=update ; Yet a third option... use UPDATE for media path redirection,
; instead of INVITE. This can be combined with 'nonat', as
- ; 'canreinvite=update,nonat'. It implies 'yes'.
+ ; 'directmedia=update,nonat'. It implies 'yes'.
;ignoresdpversion=yes ; By default, Asterisk will honor the session version
; number in SDP packets and will only modify the SDP
@@ -808,7 +808,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; remotesecret
; transport
; dtmfmode
-; canreinvite
+; directmedia
; nat
; callgroup
; pickupgroup
@@ -918,12 +918,12 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
[natted-phone](!,basic-options) ; another template inheriting basic-options
nat=yes
- canreinvite=no
+ directmedia=no
host=dynamic
[public-phone](!,basic-options) ; another template inheriting basic-options
nat=no
- canreinvite=yes
+ directmedia=yes
[my-codecs](!) ; a template for my preferred codecs
disallow=all
@@ -958,7 +958,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
;host=192.168.0.23 ; we have a static but private IP address
; No registration allowed
;nat=no ; there is not NAT between phone and Asterisk
-;canreinvite=yes ; allow RTP voice traffic to bypass Asterisk
+;directmedia=yes ; allow RTP voice traffic to bypass Asterisk
;dtmfmode=info ; either RFC2833 or INFO for the BudgeTone
;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time
; from the phone to asterisk (deprecated)
@@ -988,7 +988,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
;callerid="Jane Smith" <5678>
;host=dynamic ; This device needs to register
;nat=yes ; X-Lite is behind a NAT router
-;canreinvite=no ; Typically set to NO if behind NAT
+;directmedia=no ; Typically set to NO if behind NAT
;disallow=all
;allow=gsm ; GSM consumes far less bandwidth than ulaw
;allow=ulaw
@@ -1061,7 +1061,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; Send SIP and RTP to the IP address that packet is
; received from instead of trusting SIP headers
;host=dynamic ; This device registers with us
-;canreinvite=no ; Asterisk by default tries to redirect the
+;directmedia=no ; Asterisk by default tries to redirect the
; RTP media stream (audio) to go directly from
; the caller to the callee. Some devices do not
; support this (especially if one of them is
diff --git a/configs/skinny.conf.sample b/configs/skinny.conf.sample
index a7b188c45..2c26e6bf8 100644
--- a/configs/skinny.conf.sample
+++ b/configs/skinny.conf.sample
@@ -157,7 +157,7 @@ keepalive=120
;device=SEP00D0BA847E6B
;version=P002G204 ; Thanks critch
;context=did
-;canreinvite=yes ; Allow media to go directly between two RTP endpoints.
+;directmedia=yes ; Allow media to go directly between two RTP endpoints.
;line=120 ; Dial(Skinny/120@florian)
; Typical config for a 7910
diff --git a/contrib/scripts/realtime_pgsql.sql b/contrib/scripts/realtime_pgsql.sql
index 5539bbeb8..d50dff55b 100644
--- a/contrib/scripts/realtime_pgsql.sql
+++ b/contrib/scripts/realtime_pgsql.sql
@@ -37,7 +37,7 @@ accountcode character varying(20),
amaflags character varying(7),
callgroup character varying(10),
callerid character varying(80),
-canreinvite character varying(3) DEFAULT 'yes',
+directmedia character varying(3) DEFAULT 'yes',
context character varying(80),
defaultip character varying(15),
dtmfmode character varying(7),
diff --git a/doc/chan_sip-perf-testing.txt b/doc/chan_sip-perf-testing.txt
index 85b22bddc..56992ac7f 100644
--- a/doc/chan_sip-perf-testing.txt
+++ b/doc/chan_sip-perf-testing.txt
@@ -58,7 +58,7 @@ type=friend
context=test11
host=192.168.134.240 ;; the address of the host you will be running sipp on
user=sipp
-canreinvite=no
+directmedia=no
disallow=all
allow=ulaw
diff --git a/doc/res_config_sqlite.txt b/doc/res_config_sqlite.txt
index 39d31521a..95322cf10 100644
--- a/doc/res_config_sqlite.txt
+++ b/doc/res_config_sqlite.txt
@@ -70,7 +70,7 @@ CREATE TABLE ast_sip (
callgroup VARCHAR(10) DEFAULT NULL,
callerid VARCHAR(80) DEFAULT NULL,
cancallforward CHAR(3) DEFAULT 'yes',
- canreinvite CHAR(3) DEFAULT 'yes',
+ directmedia CHAR(3) DEFAULT 'yes',
context VARCHAR(80) DEFAULT NULL,
defaultip VARCHAR(15) DEFAULT NULL,
dtmfmode VARCHAR(7) DEFAULT NULL,
diff --git a/doc/tex/phoneprov.tex b/doc/tex/phoneprov.tex
index cb236a89a..04ca22fd0 100644
--- a/doc/tex/phoneprov.tex
+++ b/doc/tex/phoneprov.tex
@@ -146,7 +146,7 @@ threewaycalling = yes
deletevoicemail = no
autoprov = yes
profile = polycom
-canreinvite = no
+directmedia = no
nat = no
fullname = User Two ; ${DISPLAY_NAME}
secret = test ; ${SECRET}
diff --git a/main/rtp.c b/main/rtp.c
index c77db1969..1ae21bab5 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -2124,7 +2124,7 @@ int ast_rtp_early_bridge(struct ast_channel *c0, struct ast_channel *c1)
text_src_res = srcpr->get_trtp_info ? srcpr->get_trtp_info(c1, &tsrcp) : AST_RTP_GET_FAILED;
}
- /* Check if bridge is still possible (In SIP canreinvite=no stops this, like NAT) */
+ /* Check if bridge is still possible (In SIP directmedia=no stops this, like NAT) */
if (audio_dest_res != AST_RTP_TRY_NATIVE || (video_dest_res != AST_RTP_GET_FAILED && video_dest_res != AST_RTP_TRY_NATIVE)) {
/* Somebody doesn't want to play... */
ast_channel_unlock(c0);
@@ -2211,7 +2211,7 @@ int ast_rtp_make_compatible(struct ast_channel *dest, struct ast_channel *src, i
else
destcodec = 0;
- /* Check if bridge is still possible (In SIP canreinvite=no stops this, like NAT) */
+ /* Check if bridge is still possible (In SIP directmedia=no stops this, like NAT) */
if (audio_dest_res != AST_RTP_TRY_NATIVE || (video_dest_res != AST_RTP_GET_FAILED && video_dest_res != AST_RTP_TRY_NATIVE) || audio_src_res != AST_RTP_TRY_NATIVE || (video_src_res != AST_RTP_GET_FAILED && video_src_res != AST_RTP_TRY_NATIVE) || !(srccodec & destcodec)) {
/* Somebody doesn't want to play... */
ast_channel_unlock(dest);