Rename 'canreinvite' option to 'directmedia', with backwards compatibility.

It is clear from multiple mailing list, forum, wiki and other sorts of posts
that users don't really understand the effects that the 'canreinvite' config
option actually has, and that in some cases they think that setting it to 'no'
will actually cause various other features (T.38, MOH, etc.) to not work properly,
when in fact this is not the case. This patch changes the proper name of the
option to what it should have been from the beginning ('directmedia'), but
preserves backwards compatibility for existing configurations.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@210190 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.6
Kevin P. Fleming 16 years ago
parent 070de85e56
commit e9d22f802e

@ -41,6 +41,17 @@ From 1.6.2 to 1.6.3:
From 1.6.1 to 1.6.2: From 1.6.1 to 1.6.2:
* 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 * 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 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 light colored background for your console, you may wish to use the option

@ -80,7 +80,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define MGCPDUMPER #define MGCPDUMPER
#define DEFAULT_EXPIRY 120 #define DEFAULT_EXPIRY 120
#define MAX_EXPIRY 3600 #define MAX_EXPIRY 3600
#define CANREINVITE 1 #define DIRECTMEDIA 1
#ifndef INADDR_NONE #ifndef INADDR_NONE
#define INADDR_NONE (in_addr_t)(-1) #define INADDR_NONE (in_addr_t)(-1)
@ -177,7 +177,7 @@ static int cancallforward = 0;
static int singlepath = 0; static int singlepath = 0;
static int canreinvite = CANREINVITE; static int directmedia = DIRECTMEDIA;
static char accountcode[AST_MAX_ACCOUNT_CODE] = ""; static char accountcode[AST_MAX_ACCOUNT_CODE] = "";
@ -330,7 +330,7 @@ struct mgcp_endpoint {
int threewaycalling; int threewaycalling;
int singlepath; int singlepath;
int cancallforward; int cancallforward;
int canreinvite; int directmedia;
int callreturn; int callreturn;
int dnd; /* How does this affect callwait? Do we just deny a mgcp_request if we're dnd? */ int dnd; /* How does this affect callwait? Do we just deny a mgcp_request if we're dnd? */
int hascallerid; int hascallerid;
@ -3552,7 +3552,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
int i=0, y=0; int i=0, y=0;
int gw_reload = 0; int gw_reload = 0;
int ep_reload = 0; int ep_reload = 0;
canreinvite = CANREINVITE; directmedia = DIRECTMEDIA;
/* locate existing gateway */ /* locate existing gateway */
gw = gateways; gw = gateways;
@ -3662,8 +3662,8 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
cancallforward = ast_true(v->value); cancallforward = ast_true(v->value);
} else if (!strcasecmp(v->name, "singlepath")) { } else if (!strcasecmp(v->name, "singlepath")) {
singlepath = ast_true(v->value); singlepath = ast_true(v->value);
} else if (!strcasecmp(v->name, "canreinvite")) { } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
canreinvite = ast_true(v->value); directmedia = ast_true(v->value);
} else if (!strcasecmp(v->name, "mailbox")) { } else if (!strcasecmp(v->name, "mailbox")) {
ast_copy_string(mailbox, v->value, sizeof(mailbox)); ast_copy_string(mailbox, v->value, sizeof(mailbox));
} else if (!strcasecmp(v->name, "hasvoicemail")) { } else if (!strcasecmp(v->name, "hasvoicemail")) {
@ -3748,7 +3748,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
e->callreturn = callreturn; e->callreturn = callreturn;
e->cancallforward = cancallforward; e->cancallforward = cancallforward;
e->singlepath = singlepath; e->singlepath = singlepath;
e->canreinvite = canreinvite; e->directmedia = directmedia;
e->callwaiting = callwaiting; e->callwaiting = callwaiting;
e->hascallwaiting = callwaiting; e->hascallwaiting = callwaiting;
e->slowsequence = slowsequence; e->slowsequence = slowsequence;
@ -3851,7 +3851,7 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v)
e->pickupgroup=cur_pickupgroup; e->pickupgroup=cur_pickupgroup;
e->callreturn = callreturn; e->callreturn = callreturn;
e->cancallforward = cancallforward; e->cancallforward = cancallforward;
e->canreinvite = canreinvite; e->directmedia = directmedia;
e->singlepath = singlepath; e->singlepath = singlepath;
e->callwaiting = callwaiting; e->callwaiting = callwaiting;
e->hascallwaiting = callwaiting; e->hascallwaiting = callwaiting;
@ -3944,7 +3944,7 @@ static enum ast_rtp_glue_result mgcp_get_rtp_peer(struct ast_channel *chan, stru
*instance = sub->rtp ? ao2_ref(sub->rtp, +1), sub->rtp : NULL; *instance = sub->rtp ? ao2_ref(sub->rtp, +1), sub->rtp : NULL;
if (sub->parent->canreinvite) if (sub->parent->directmedia)
return AST_RTP_GLUE_RESULT_REMOTE; return AST_RTP_GLUE_RESULT_REMOTE;
else else
return AST_RTP_GLUE_RESULT_LOCAL; return AST_RTP_GLUE_RESULT_LOCAL;

@ -1457,8 +1457,8 @@ struct sip_auth {
/* re-INVITE related settings */ /* re-INVITE related settings */
#define SIP_REINVITE (7 << 20) /*!< DP: four settings, uses three bits */ #define SIP_REINVITE (7 << 20) /*!< DP: four settings, uses three bits */
#define SIP_REINVITE_NONE (0 << 20) /*!< DP: no reinvite allowed */ #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_DIRECT_MEDIA (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_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 */ #define SIP_REINVITE_UPDATE (4 << 20) /*!< DP: use UPDATE (RFC3311) when reinviting this peer */
/* "insecure" settings - see insecure2str() */ /* "insecure" settings - see insecure2str() */
@ -15369,7 +15369,7 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct
ast_cli(fd, " Force rport : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT))); ast_cli(fd, " Force rport : %s\n", cli_yesno(ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT)));
ast_cli(fd, " ACL : %s\n", cli_yesno(peer->ha != NULL)); 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, " 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, " 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, " 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))); ast_cli(fd, " Video Support: %s\n", cli_yesno(ast_test_flag(&peer->flags[1], SIP_PAGE2_VIDEOSUPPORT)));
@ -15473,7 +15473,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-AuthInsecure: %s\r\n", insecure2str(ast_test_flag(&peer->flags[0], SIP_INSECURE)));
astman_append(s, "SIP-Forcerport: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT)?"Y":"N")); astman_append(s, "SIP-Forcerport: %s\r\n", (ast_test_flag(&peer->flags[0], SIP_NAT_FORCE_RPORT)?"Y":"N"));
astman_append(s, "ACL: %s\r\n", (peer->ha?"Y":"N")); 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-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-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")); astman_append(s, "SIP-VideoSupport: %s\r\n", (ast_test_flag(&peer->flags[1], SIP_PAGE2_VIDEOSUPPORT)?"Y":"N"));
@ -23488,11 +23489,11 @@ static int handle_common_options(struct ast_flags *flags, struct ast_flags *mask
ast_set_flag(&mask[1], SIP_PAGE2_SYMMETRICRTP); ast_set_flag(&mask[1], SIP_PAGE2_SYMMETRICRTP);
ast_set_flag(&flags[1], SIP_PAGE2_SYMMETRICRTP); ast_set_flag(&flags[1], SIP_PAGE2_SYMMETRICRTP);
} }
} else if (!strcasecmp(v->name, "canreinvite")) { } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
ast_set_flag(&mask[0], SIP_REINVITE); ast_set_flag(&mask[0], SIP_REINVITE);
ast_clear_flag(&flags[0], SIP_REINVITE); ast_clear_flag(&flags[0], SIP_REINVITE);
if (ast_true(v->value)) { 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)) { } else if (!ast_false(v->value)) {
char buf[64]; char buf[64];
char *word, *next = buf; char *word, *next = buf;
@ -23500,12 +23501,12 @@ static int handle_common_options(struct ast_flags *flags, struct ast_flags *mask
ast_copy_string(buf, v->value, sizeof(buf)); ast_copy_string(buf, v->value, sizeof(buf));
while ((word = strsep(&next, ","))) { while ((word = strsep(&next, ","))) {
if (!strcasecmp(word, "update")) { 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")) { } else if (!strcasecmp(word, "nonat")) {
ast_set_flag(&flags[0], SIP_CAN_REINVITE); ast_set_flag(&flags[0], SIP_DIRECT_MEDIA);
ast_clear_flag(&flags[0], SIP_CAN_REINVITE_NAT); ast_clear_flag(&flags[0], SIP_DIRECT_MEDIA_NAT);
} else { } 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);
} }
} }
} }
@ -24594,7 +24595,7 @@ static int reload_config(enum channelreloadreason reason)
ast_copy_string(default_mohsuggest, DEFAULT_MOHSUGGEST, sizeof(default_mohsuggest)); ast_copy_string(default_mohsuggest, DEFAULT_MOHSUGGEST, sizeof(default_mohsuggest));
ast_copy_string(default_vmexten, DEFAULT_VMEXTEN, sizeof(default_vmexten)); 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_DTMF_RFC2833); /*!< Default DTMF setting: RFC2833 */
ast_set_flag(&global_flags[0], SIP_CAN_REINVITE); /*!< Allow re-invites */ ast_set_flag(&global_flags[0], SIP_DIRECT_MEDIA); /*!< Allow re-invites */
ast_copy_string(default_engine, DEFAULT_ENGINE, sizeof(default_engine)); ast_copy_string(default_engine, DEFAULT_ENGINE, sizeof(default_engine));
/* Debugging settings, always default to off */ /* Debugging settings, always default to off */
@ -25291,7 +25292,7 @@ static struct ast_udptl *sip_get_udptl_peer(struct ast_channel *chan)
return NULL; return NULL;
sip_pvt_lock(p); 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; udptl = p->udptl;
sip_pvt_unlock(p); sip_pvt_unlock(p);
return udptl; return udptl;
@ -25342,7 +25343,7 @@ static enum ast_rtp_glue_result sip_get_rtp_peer(struct ast_channel *chan, struc
ao2_ref(p->rtp, +1); ao2_ref(p->rtp, +1);
*instance = p->rtp; *instance = p->rtp;
if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE | SIP_CAN_REINVITE_NAT)) { if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA | SIP_DIRECT_MEDIA_NAT)) {
res = AST_RTP_GLUE_RESULT_REMOTE; res = AST_RTP_GLUE_RESULT_REMOTE;
} else if (ast_test_flag(&global_jbconf, AST_JB_FORCED)) { } else if (ast_test_flag(&global_jbconf, AST_JB_FORCED)) {
res = AST_RTP_GLUE_RESULT_FORBID; res = AST_RTP_GLUE_RESULT_FORBID;
@ -25371,7 +25372,7 @@ static enum ast_rtp_glue_result sip_get_vrtp_peer(struct ast_channel *chan, stru
ao2_ref(p->vrtp, +1); ao2_ref(p->vrtp, +1);
*instance = p->vrtp; *instance = 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_GLUE_RESULT_REMOTE; res = AST_RTP_GLUE_RESULT_REMOTE;
} }
@ -25398,7 +25399,7 @@ static enum ast_rtp_glue_result sip_get_trtp_peer(struct ast_channel *chan, stru
ao2_ref(p->trtp, +1); ao2_ref(p->trtp, +1);
*instance = p->trtp; *instance = 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_GLUE_RESULT_REMOTE; res = AST_RTP_GLUE_RESULT_REMOTE;
} }
@ -25430,7 +25431,7 @@ static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *i
/* if this peer cannot handle reinvites of the media stream to devices /* 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 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)) { if (nat_active && !ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA_NAT)) {
sip_pvt_unlock(p); sip_pvt_unlock(p);
return 0; return 0;
} }

@ -1239,7 +1239,7 @@ struct skinny_subchannel {
int immediate; \ int immediate; \
int hookstate; \ int hookstate; \
int nat; \ int nat; \
int canreinvite; \ int directmedia; \
int prune; int prune;
struct skinny_line { struct skinny_line {
@ -1265,7 +1265,7 @@ static struct skinny_line_options{
.hidecallerid = 0, .hidecallerid = 0,
.amaflags = 0, .amaflags = 0,
.instance = 0, .instance = 0,
.canreinvite = 0, .directmedia = 0,
.nat = 0, .nat = 0,
.confcapability = AST_FORMAT_ULAW | AST_FORMAT_ALAW, .confcapability = AST_FORMAT_ULAW | AST_FORMAT_ALAW,
.capability = 0, .capability = 0,
@ -2689,7 +2689,7 @@ static enum ast_rtp_glue_result skinny_get_rtp_peer(struct ast_channel *c, struc
l = sub->parent; l = sub->parent;
if (!l->canreinvite || l->nat){ if (!l->directmedia || l->nat){
res = AST_RTP_GLUE_RESULT_LOCAL; res = AST_RTP_GLUE_RESULT_LOCAL;
if (skinnydebug) if (skinnydebug)
ast_verb(1, "skinny_get_rtp_peer() Using AST_RTP_GLUE_RESULT_LOCAL \n"); ast_verb(1, "skinny_get_rtp_peer() Using AST_RTP_GLUE_RESULT_LOCAL \n");
@ -2749,7 +2749,7 @@ static int skinny_set_rtp_peer(struct ast_channel *c, struct ast_rtp_instance *r
req->data.startmedia.conferenceId = htolel(sub->callid); req->data.startmedia.conferenceId = htolel(sub->callid);
req->data.startmedia.passThruPartyId = htolel(sub->callid); req->data.startmedia.passThruPartyId = htolel(sub->callid);
if (!(l->canreinvite) || (l->nat)){ if (!(l->directmedia) || (l->nat)){
ast_rtp_instance_get_local_address(rtp, &us); ast_rtp_instance_get_local_address(rtp, &us);
req->data.startmedia.remoteIp = htolel(d->ourip.s_addr); req->data.startmedia.remoteIp = htolel(d->ourip.s_addr);
req->data.startmedia.remotePort = htolel(ntohs(us.sin_port)); req->data.startmedia.remotePort = htolel(ntohs(us.sin_port));
@ -6717,9 +6717,9 @@ static struct ast_channel *skinny_request(const char *type, int format, const st
CLINE_OPTS->callwaiting = ast_true(v->value); CLINE_OPTS->callwaiting = ast_true(v->value);
continue; continue;
} }
} else if (!strcasecmp(v->name, "canreinvite")) { } else if (!strcasecmp(v->name, "directmedia") || !strcasecmp(v->name, "canreinvite")) {
if (type & (TYPE_DEF_LINE | TYPE_LINE)) { if (type & (TYPE_DEF_LINE | TYPE_LINE)) {
CLINE_OPTS->canreinvite = ast_true(v->value); CLINE_OPTS->directmedia = ast_true(v->value);
continue; continue;
} }
} else if (!strcasecmp(v->name, "nat")) { } else if (!strcasecmp(v->name, "nat")) {

@ -41,7 +41,7 @@
;[dlinkgw] ;[dlinkgw]
;host = 192.168.0.64 ;host = 192.168.0.64
;context = default ;context = default
;canreinvite = no ;directmedia = no
;line => aaln/2 ;line => aaln/2
;line => aaln/1 ;line => aaln/1
@ -96,7 +96,7 @@
;callwaiting = no ;callwaiting = no
;callreturn = yes ;callreturn = yes
;cancallforward = yes ;cancallforward = yes
;canreinvite = no ;directmedia = no
;transfer = no ;transfer = no
;dtmfmode = inband ;dtmfmode = inband
;line => aaln/1 ; now lets save this config to line1 aka aaln/1 ;line => aaln/1 ; now lets save this config to line1 aka aaln/1
@ -104,7 +104,7 @@
;callwaiting = no ;callwaiting = no
;callreturn = yes ;callreturn = yes
;cancallforward = yes ;cancallforward = yes
;canreinvite = no ;directmedia = no
;transfer = no ;transfer = no
;dtmfmode = inband ;dtmfmode = inband
;line => aaln/2 ; now lets save this config to line2 aka aaln/2 ;line => aaln/2 ; now lets save this config to line2 aka aaln/2

@ -60,7 +60,7 @@ name = cn
amaflags = AstAccountAMAFlags amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup callgroup = AstAccountCallGroup
callerid = AstAccountCallerID callerid = AstAccountCallerID
canreinvite = AstAccountCanReinvite directmedia = AstAccountDirectMedia
context = AstAccountContext context = AstAccountContext
dtmfmode = AstAccountDTMFMode dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser fromuser = AstAccountFromUser
@ -131,7 +131,7 @@ additionalFilter=(objectClass=*)
amaflags = AstAccountAMAFlags amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup callgroup = AstAccountCallGroup
callerid = AstAccountCallerID callerid = AstAccountCallerID
canreinvite = AstAccountCanReinvite directmedia = AstAccountDirectMedia
context = AstAccountContext context = AstAccountContext
dtmfmode = AstAccountDTMFMode dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser fromuser = AstAccountFromUser

@ -662,17 +662,17 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; nat = comedia ; Use rport if the remote side says to use it and perform symmetric RTP. ; nat = comedia ; Use rport if the remote side says to use it and perform symmetric RTP.
;----------------------------------- MEDIA HANDLING -------------------------------- ;----------------------------------- 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. ; 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 ; This does not really work well in the case where Asterisk is outside and the
; clients on the inside of a NAT. In that case, you want to set canreinvite=nonat ; 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 ;directmedia=yes ; Asterisk by default tries to redirect the
; RTP media stream (audio) to go directly from ; RTP media stream to go directly from
; the caller to the callee. Some devices do not ; the caller to the callee. Some devices do not
; support this (especially if one of them is behind a NAT). ; support this (especially if one of them is behind a NAT).
; The default setting is YES. If you have all clients ; 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. ; stay in the audio path, you may want to turn this off.
; This setting also affect direct RTP ; This setting also affect direct RTP
@ -684,18 +684,18 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; the call directly with media peer-2-peer without re-invites. ; the call directly with media peer-2-peer without re-invites.
; Will not work for video and cases where the callee sends ; 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 ; 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. ; 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 ; (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 ; sent is known to not be behind a NAT (as the RTP core can
; determine it based on the apparent IP address the media ; determine it based on the apparent IP address the media
; arrives from). ; 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 ; 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 ;ignoresdpversion=yes ; By default, Asterisk will honor the session version
; number in SDP packets and will only modify the SDP ; number in SDP packets and will only modify the SDP
@ -859,7 +859,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; remotesecret ; remotesecret
; transport ; transport
; dtmfmode ; dtmfmode
; canreinvite ; directmedia
; nat ; nat
; callgroup ; callgroup
; pickupgroup ; pickupgroup
@ -969,12 +969,12 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
[natted-phone](!,basic-options) ; another template inheriting basic-options [natted-phone](!,basic-options) ; another template inheriting basic-options
nat=yes nat=yes
canreinvite=no directmedia=no
host=dynamic host=dynamic
[public-phone](!,basic-options) ; another template inheriting basic-options [public-phone](!,basic-options) ; another template inheriting basic-options
nat=no nat=no
canreinvite=yes directmedia=yes
[my-codecs](!) ; a template for my preferred codecs [my-codecs](!) ; a template for my preferred codecs
disallow=all disallow=all
@ -1009,7 +1009,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
;host=192.168.0.23 ; we have a static but private IP address ;host=192.168.0.23 ; we have a static but private IP address
; No registration allowed ; No registration allowed
;nat=no ; there is not NAT between phone and Asterisk ;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 ;dtmfmode=info ; either RFC2833 or INFO for the BudgeTone
;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time ;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time
; from the phone to asterisk (deprecated) ; from the phone to asterisk (deprecated)
@ -1039,7 +1039,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
;callerid="Jane Smith" <5678> ;callerid="Jane Smith" <5678>
;host=dynamic ; This device needs to register ;host=dynamic ; This device needs to register
;nat=yes ; X-Lite is behind a NAT router ;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 ;disallow=all
;allow=gsm ; GSM consumes far less bandwidth than ulaw ;allow=gsm ; GSM consumes far less bandwidth than ulaw
;allow=ulaw ;allow=ulaw
@ -1112,7 +1112,7 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; Send SIP and RTP to the IP address that packet is ; Send SIP and RTP to the IP address that packet is
; received from instead of trusting SIP headers ; received from instead of trusting SIP headers
;host=dynamic ; This device registers with us ;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 ; RTP media stream (audio) to go directly from
; the caller to the callee. Some devices do not ; the caller to the callee. Some devices do not
; support this (especially if one of them is ; support this (especially if one of them is

@ -157,7 +157,7 @@ keepalive=120
;device=SEP00D0BA847E6B ;device=SEP00D0BA847E6B
;version=P002G204 ; Thanks critch ;version=P002G204 ; Thanks critch
;context=did ;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) ;line=120 ; Dial(Skinny/120@florian)
; Typical config for a 7910 ; Typical config for a 7910

@ -37,7 +37,7 @@ accountcode character varying(20),
amaflags character varying(7), amaflags character varying(7),
callgroup character varying(10), callgroup character varying(10),
callerid character varying(80), callerid character varying(80),
canreinvite character varying(3) DEFAULT 'yes', directmedia character varying(3) DEFAULT 'yes',
context character varying(80), context character varying(80),
defaultip character varying(15), defaultip character varying(15),
dtmfmode character varying(7), dtmfmode character varying(7),

@ -58,7 +58,7 @@ type=friend
context=test11 context=test11
host=192.168.134.240 ;; the address of the host you will be running sipp on host=192.168.134.240 ;; the address of the host you will be running sipp on
user=sipp user=sipp
canreinvite=no directmedia=no
disallow=all disallow=all
allow=ulaw allow=ulaw

@ -70,7 +70,7 @@ CREATE TABLE ast_sip (
callgroup VARCHAR(10) DEFAULT NULL, callgroup VARCHAR(10) DEFAULT NULL,
callerid VARCHAR(80) DEFAULT NULL, callerid VARCHAR(80) DEFAULT NULL,
cancallforward CHAR(3) DEFAULT 'yes', cancallforward CHAR(3) DEFAULT 'yes',
canreinvite CHAR(3) DEFAULT 'yes', directmedia CHAR(3) DEFAULT 'yes',
context VARCHAR(80) DEFAULT NULL, context VARCHAR(80) DEFAULT NULL,
defaultip VARCHAR(15) DEFAULT NULL, defaultip VARCHAR(15) DEFAULT NULL,
dtmfmode VARCHAR(7) DEFAULT NULL, dtmfmode VARCHAR(7) DEFAULT NULL,

@ -146,7 +146,7 @@ threewaycalling = yes
deletevoicemail = no deletevoicemail = no
autoprov = yes autoprov = yes
profile = polycom profile = polycom
canreinvite = no directmedia = no
nat = no nat = no
fullname = User Two ; ${DISPLAY_NAME} fullname = User Two ; ${DISPLAY_NAME}
secret = test ; ${SECRET} secret = test ; ${SECRET}

Loading…
Cancel
Save