]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
In 10 and trunk this option is disabled by default.
authorMatthew Nicholson <mnicholson@digium.com>
Tue, 16 Aug 2011 14:40:37 +0000 (14:40 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Tue, 16 Aug 2011 14:40:37 +0000 (14:40 +0000)
Merged revisions 332021 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r332021 | mnicholson | 2011-08-16 09:20:43 -0500 (Tue, 16 Aug 2011) | 7 lines

  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/10@332022 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

diff --git a/CHANGES b/CHANGES
index d4526a24aecef62d1012dc23e0491a4281a97c86..4b3e1dac75b557c5972a4d3ff6bfd7dffba90fb4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -179,6 +179,9 @@ res_fax
 SIP Changes
 -----------
  * Add T38 support for REJECTED state where T.38 Negotiation is explicitly rejected.
+ * Setting of HASH(SIP_CAUSE,<slave-channel-name>) on channels is now disabled
+   by default. It can be enabled using the 'storesipcause' option. This feature
+   has a significant performance penalty.
 
 Queue changes
 -------------
@@ -245,7 +248,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
index 6629efb0291ca1c6825e48c0a6246d09c858542e..d128ad85f804d5dc6ee99265dfb7ca6dbbf6ad86 100644 (file)
@@ -746,6 +746,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 */
 /*@}*/
 
@@ -17962,6 +17964,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));
@@ -25055,7 +25058,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);
@@ -28086,6 +28089,7 @@ static int reload_config(enum channelreloadreason reason)
        global_shrinkcallerid = 1;
        authlimit = DEFAULT_AUTHLIMIT;
        authtimeout = DEFAULT_AUTHTIMEOUT;
+       global_store_sip_cause = FALSE;
 
        sip_cfg.matchexternaddrlocally = DEFAULT_MATCHEXTERNADDRLOCALLY;
 
@@ -28563,6 +28567,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);
index f33b1cf320e397696c7f0d6183bb5544de4fda29..fb487dba66155c6307b5a6afc62adffcaf85dab5 100644 (file)
@@ -1016,6 +1016,16 @@ 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 = no          ; 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. This
+                              ; option defaults to "no".
+
 ;-----------------------------------------------------------------------------------
 
 [authentication]