Added the 'storesipcause' option to sip.conf to allow the user to disable the

setting of HASH(SIP_CAUSE,<chan name>) on the channel.

Having chan_sip set HASH(SIP_CAUSE,<chan name>) on the channel carries a
significant performance penalty because of the usage of the MASTER_CHANNEL()
dialplan function.

AST-580


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@332021 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Nicholson
2011-08-16 14:20:43 +00:00
parent acc2d27a47
commit f01a484b48
3 changed files with 21 additions and 2 deletions

View File

@@ -43,7 +43,9 @@ SIP Changes
and enables symmetric RTP support.
* Slave SIP channels now set HASH(SIP_CAUSE,<slave-channel-name>) on each
response. This permits the master channel to know how each channel dialled
in a multi-channel setup resolved in an individual way.
in a multi-channel setup resolved in an individual way. This carries a
performance penalty and can be disabled in sip.conf using the
'storesipcause' option.
* Added 'externtcpport' and 'externtlsport' options to allow custom port
configuration for the externip and externhost options when tcp or tls is used.
* Added support for message body (stored in content variable) to SIP NOTIFY message

View File

@@ -745,6 +745,8 @@ static enum st_refresher global_st_refresher; /*!< Session-Timer refresher
static int global_min_se; /*!< Lowest threshold for session refresh interval */
static int global_max_se; /*!< Highest threshold for session refresh interval */
static int global_store_sip_cause; /*!< Whether the MASTER_CHANNEL(HASH(SIP_CAUSE,[chan_name])) var should be set */
static int global_dynamic_exclude_static = 0; /*!< Exclude static peers from contact registrations */
/*@}*/
@@ -17495,6 +17497,7 @@ static char *sip_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_
ast_cli(a->fd, " SIP realtime: Enabled\n" );
ast_cli(a->fd, " Qualify Freq : %d ms\n", global_qualifyfreq);
ast_cli(a->fd, " Q.850 Reason header: %s\n", AST_CLI_YESNO(ast_test_flag(&global_flags[1], SIP_PAGE2_Q850_REASON)));
ast_cli(a->fd, " Store SIP_CAUSE: %s\n", AST_CLI_YESNO(global_store_sip_cause));
ast_cli(a->fd, "\nNetwork QoS Settings:\n");
ast_cli(a->fd, "---------------------------\n");
ast_cli(a->fd, " IP ToS SIP: %s\n", ast_tos2str(global_tos_sip));
@@ -24422,7 +24425,7 @@ static int handle_incoming(struct sip_pvt *p, struct sip_request *req, struct as
handle_response(p, respid, e + len, req, seqno);
if (p->owner) {
if (global_store_sip_cause && p->owner) {
struct ast_channel *owner = p->owner;
snprintf(causevar, sizeof(causevar), "MASTER_CHANNEL(HASH(SIP_CAUSE,%s))", owner->name);
@@ -27402,6 +27405,7 @@ static int reload_config(enum channelreloadreason reason)
global_shrinkcallerid = 1;
authlimit = DEFAULT_AUTHLIMIT;
authtimeout = DEFAULT_AUTHTIMEOUT;
global_store_sip_cause = TRUE;
sip_cfg.matchexternaddrlocally = DEFAULT_MATCHEXTERNADDRLOCALLY;
@@ -27871,6 +27875,8 @@ static int reload_config(enum channelreloadreason reason)
} else {
global_st_refresher = i;
}
} else if (!strcasecmp(v->name, "storesipcause")) {
global_store_sip_cause = ast_true(v->value);
} else if (!strcasecmp(v->name, "qualifygap")) {
if (sscanf(v->value, "%30d", &global_qualify_gap) != 1) {
ast_log(LOG_WARNING, "Invalid qualifygap '%s' at line %d of %s\n", v->value, v->lineno, config);

View File

@@ -1005,6 +1005,17 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
; but occasionally has spikes.
; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;----------------------------- SIP_CAUSE reporting ---------------------------------
; storesipcause = yes ; This option causes chan_sip to set the
; HASH(SIP_CAUSE,<channel name>) channel variable
; to the value of the last sip response.
; WARNING: enabling this option carries a
; significant performance burden. It should only
; be used in low call volume situations. For
; historical reasons, this option defaults to
; "yes".
;-----------------------------------------------------------------------------------
[authentication]