mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-17 02:02:22 +00:00
Adds an option to sip.conf that prevents diversion headers from being added.
send_diversion=no will prevent Diversion headers from being added to SIP requests. This doesn't prevent Diversion from being added with dialplan such as with SIPAddHeader. (closes issue ASTERISK-16862) Reported by: rsw686 Review: https://reviewboard.asterisk.org/r/1769/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@356987 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -65,6 +65,8 @@ SIP Changes
|
||||
which set the force_rport and comedia options automatically if Asterisk
|
||||
detects that an incoming SIP request crossed a NAT after being sent by
|
||||
the remote endpoint.
|
||||
* Adds an option send_diversion which can be disabled to prevent
|
||||
diversion headers from automatically being added to invites.
|
||||
|
||||
Chan_local changes
|
||||
------------------
|
||||
|
@@ -12542,6 +12542,11 @@ static void add_diversion_header(struct sip_request *req, struct sip_pvt *pvt)
|
||||
const char *reason;
|
||||
char header_text[256];
|
||||
|
||||
/* We skip this entirely if the configuration doesn't allow diversion headers */
|
||||
if (!sip_cfg.send_diversion) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pvt->owner) {
|
||||
return;
|
||||
}
|
||||
@@ -18827,6 +18832,7 @@ static char *sip_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_
|
||||
ast_cli(a->fd, " Trust RPID: %s\n", AST_CLI_YESNO(ast_test_flag(&global_flags[0], SIP_TRUSTRPID)));
|
||||
ast_cli(a->fd, " Send RPID: %s\n", AST_CLI_YESNO(ast_test_flag(&global_flags[0], SIP_SENDRPID)));
|
||||
ast_cli(a->fd, " Legacy userfield parse: %s\n", AST_CLI_YESNO(sip_cfg.legacy_useroption_parsing));
|
||||
ast_cli(a->fd, " Send Diversion: %s\n", AST_CLI_YESNO(sip_cfg.send_diversion));
|
||||
ast_cli(a->fd, " Caller ID: %s\n", default_callerid);
|
||||
if ((default_fromdomainport) && (default_fromdomainport != STANDARD_SIP_PORT)) {
|
||||
ast_cli(a->fd, " From: Domain: %s:%d\n", default_fromdomain, default_fromdomainport);
|
||||
@@ -29166,6 +29172,7 @@ static int reload_config(enum channelreloadreason reason)
|
||||
sip_set_default_format_capabilities(sip_cfg.caps);
|
||||
sip_cfg.regextenonqualify = DEFAULT_REGEXTENONQUALIFY;
|
||||
sip_cfg.legacy_useroption_parsing = DEFAULT_LEGACY_USEROPTION_PARSING;
|
||||
sip_cfg.send_diversion = DEFAULT_SEND_DIVERSION;
|
||||
sip_cfg.notifyringing = DEFAULT_NOTIFYRINGING;
|
||||
sip_cfg.notifycid = DEFAULT_NOTIFYCID;
|
||||
sip_cfg.notifyhold = FALSE; /*!< Keep track of hold status for a peer */
|
||||
@@ -29467,6 +29474,8 @@ static int reload_config(enum channelreloadreason reason)
|
||||
sip_cfg.regextenonqualify = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "legacy_useroption_parsing")) {
|
||||
sip_cfg.legacy_useroption_parsing = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "send_diversion")) {
|
||||
sip_cfg.send_diversion = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "callerid")) {
|
||||
ast_copy_string(default_callerid, v->value, sizeof(default_callerid));
|
||||
} else if (!strcasecmp(v->name, "mwi_from")) {
|
||||
|
@@ -219,6 +219,7 @@
|
||||
#define DEFAULT_ACCEPT_OUTOFCALL_MESSAGE TRUE
|
||||
#define DEFAULT_REGEXTENONQUALIFY FALSE
|
||||
#define DEFAULT_LEGACY_USEROPTION_PARSING FALSE
|
||||
#define DEFAULT_SEND_DIVERSION TRUE
|
||||
#define DEFAULT_T1MIN 100 /*!< 100 MS for minimal roundtrip time */
|
||||
#define DEFAULT_MAX_CALL_BITRATE (384) /*!< Max bitrate for video */
|
||||
#ifndef DEFAULT_USERAGENT
|
||||
@@ -733,6 +734,7 @@ struct sip_settings {
|
||||
int callevents; /*!< Whether we send manager events or not */
|
||||
int regextenonqualify; /*!< Whether to add/remove regexten when qualifying peers */
|
||||
int legacy_useroption_parsing; /*!< Whether to strip useroptions in URI via semicolons */
|
||||
int send_diversion; /*!< Whether to Send SIP Diversion headers */
|
||||
int matchexternaddrlocally; /*!< Match externaddr/externhost setting against localnet setting */
|
||||
char regcontext[AST_MAX_CONTEXT]; /*!< Context for auto-extensions */
|
||||
char messagecontext[AST_MAX_CONTEXT]; /*!< Default context for out of dialog msgs. */
|
||||
|
@@ -476,6 +476,11 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
|
||||
; user options for whatever reason. The behavior is similar to
|
||||
; how SIP URI's were typically handled in 1.6.2, hence the name.
|
||||
|
||||
;send_diversion=no ; Default "yes" ; Asterisk normally sends Diversion headers with certain SIP
|
||||
; invites to relay data about forwarded calls. If this option
|
||||
; is disabled, Asterisk won't send Diversion headers unless
|
||||
; they are added manually.
|
||||
|
||||
; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not
|
||||
; in square brackets. For example, the caller id value 555.5555 becomes 5555555
|
||||
; when this option is enabled. Disabling this option results in no modification
|
||||
|
Reference in New Issue
Block a user