mirror of https://github.com/sipwise/kamailio.git
parent
d22c14c08b
commit
4bca15e83f
@ -0,0 +1,122 @@
|
||||
From: Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||
Date: Thu, 8 Sep 2016 12:38:49 +0200
|
||||
Subject: sca: add onhold_bflag module parameter
|
||||
|
||||
* disable by default (-1)
|
||||
* will skip parsing the sdp for on hold discovery and it will
|
||||
use the value of the bflag
|
||||
|
||||
Change-Id: I5180804f189316b48be9cbd1410376d6601666ba
|
||||
---
|
||||
modules/sca/doc/sca_admin.xml | 22 ++++++++++++++++++++++
|
||||
modules/sca/sca.c | 7 +++++++
|
||||
modules/sca/sca.h | 1 +
|
||||
modules/sca/sca_util.c | 8 ++++++--
|
||||
4 files changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/sca/doc/sca_admin.xml b/modules/sca/doc/sca_admin.xml
|
||||
index 85911ce..a4b5210 100644
|
||||
--- a/modules/sca/doc/sca_admin.xml
|
||||
+++ b/modules/sca/doc/sca_admin.xml
|
||||
@@ -262,6 +262,28 @@ modparam( "sca", "db_update_interval", 120 )
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
+
|
||||
+ <section id="sca.p.onhold_bflag">
|
||||
+ <title><varname>onhold_bflag</varname> (integer)</title>
|
||||
+ <para>
|
||||
+ <para>
|
||||
+ Which branch flag should be used by the module to identify if the call
|
||||
+ is on-hold instead of parsing the sdp.
|
||||
+ </para>
|
||||
+ <para>
|
||||
+ <emphasis>
|
||||
+ Default value is -1 (disabled).
|
||||
+ </emphasis>
|
||||
+ </para>
|
||||
+ <example>
|
||||
+ <title>Set <varname>onhold_bflag</varname> parameter</title>
|
||||
+ <programlisting format="linespecific">
|
||||
+...
|
||||
+modparam("sca", "onhold_bflag", 15)
|
||||
+...
|
||||
+</programlisting>
|
||||
+ </example>
|
||||
+ </section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
diff --git a/modules/sca/sca.c b/modules/sca/sca.c
|
||||
index 4c73c0f..6b9f0e9 100644
|
||||
--- a/modules/sca/sca.c
|
||||
+++ b/modules/sca/sca.c
|
||||
@@ -99,6 +99,7 @@ int hash_table_size = -1;
|
||||
int call_info_max_expires = 3600;
|
||||
int line_seize_max_expires = 15;
|
||||
int purge_expired_interval = 120;
|
||||
+int onhold_bflag = -1;
|
||||
|
||||
static param_export_t params[] = {
|
||||
{ "outbound_proxy", PARAM_STR, &outbound_proxy },
|
||||
@@ -110,6 +111,7 @@ static param_export_t params[] = {
|
||||
{ "call_info_max_expires", INT_PARAM, &call_info_max_expires },
|
||||
{ "line_seize_max_expires", INT_PARAM, &line_seize_max_expires },
|
||||
{ "purge_expired_interval", INT_PARAM, &purge_expired_interval },
|
||||
+ {"onhold_bflag", INT_PARAM, &onhold_bflag},
|
||||
{ NULL, 0, NULL },
|
||||
};
|
||||
|
||||
@@ -242,6 +244,11 @@ sca_set_config( sca_mod *scam )
|
||||
scam->cfg->call_info_max_expires = call_info_max_expires;
|
||||
scam->cfg->line_seize_max_expires = line_seize_max_expires;
|
||||
scam->cfg->purge_expired_interval = purge_expired_interval;
|
||||
+ if(onhold_bflag > 31) {
|
||||
+ LM_ERR("sca_set_config: onhold_bflag value > 31\n");
|
||||
+ return (-1);
|
||||
+ }
|
||||
+ scam->cfg->onhold_bflag = onhold_bflag;
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
diff --git a/modules/sca/sca.h b/modules/sca/sca.h
|
||||
index 83a1c08..f5dd225 100644
|
||||
--- a/modules/sca/sca.h
|
||||
+++ b/modules/sca/sca.h
|
||||
@@ -37,6 +37,7 @@ struct _sca_config {
|
||||
int call_info_max_expires;
|
||||
int line_seize_max_expires;
|
||||
int purge_expired_interval;
|
||||
+ int onhold_bflag;
|
||||
};
|
||||
typedef struct _sca_config sca_config;
|
||||
|
||||
diff --git a/modules/sca/sca_util.c b/modules/sca/sca_util.c
|
||||
index 1a5643e..ce422ba 100644
|
||||
--- a/modules/sca/sca_util.c
|
||||
+++ b/modules/sca/sca_util.c
|
||||
@@ -18,11 +18,11 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "sca_common.h"
|
||||
-
|
||||
+#include "sca.h"
|
||||
#include <assert.h>
|
||||
|
||||
#include "sca_util.h"
|
||||
-
|
||||
+#include "../../dset.h"
|
||||
#include "../../parser/sdp/sdp.h"
|
||||
|
||||
int
|
||||
@@ -431,6 +431,10 @@ sca_call_is_held( sip_msg_t *msg )
|
||||
int is_held = 0;
|
||||
int rc;
|
||||
|
||||
+ if(sca->cfg->onhold_bflag >= 0) {
|
||||
+ LM_DBG("sca_call_is_held: skip parse_sdp and use onhold_bflag\n");
|
||||
+ return isbflagset(0, (flag_t)sca->cfg->onhold_bflag);
|
||||
+ }
|
||||
rc = parse_sdp( msg );
|
||||
if ( rc < 0 ) {
|
||||
LM_ERR( "sca_call_is_held: parse_sdp body failed" );
|
Loading…
Reference in new issue