Merge in trunkrealloc option for chan_iax2. (issue #8267 reported by marcodmb, branch...
authorJoshua Colp <jcolp@digium.com>
Sat, 13 Jan 2007 03:26:04 +0000 (03:26 +0000)
committerJoshua Colp <jcolp@digium.com>
Sat, 13 Jan 2007 03:26:04 +0000 (03:26 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@50676 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
channels/chan_iax2.c
configs/iax.conf.sample

diff --git a/CHANGES b/CHANGES
index b93968d..f94f797 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -60,6 +60,7 @@ Changes since Asterisk 1.4-beta was branched:
      what Asterisk should set as the maximum number of open files when it loads.
   * Added the jittertargetextra configuration option.
   * Added the URI redirect option for the built-in HTTP server
      what Asterisk should set as the maximum number of open files when it loads.
   * Added the jittertargetextra configuration option.
   * Added the URI redirect option for the built-in HTTP server
+  * Added the trunkrealloc configuration option to chan_iax2.
 
 SIP changes
 -----------
 
 SIP changes
 -----------
index a1cba30..cd355b8 100644 (file)
@@ -165,6 +165,7 @@ static int resyncthreshold=1000;
 static int maxjitterinterps=10;
 static int jittertargetextra = 40; /* number of milliseconds the new jitter buffer adds on to its size */
 static int trunkfreq = 20;
 static int maxjitterinterps=10;
 static int jittertargetextra = 40; /* number of milliseconds the new jitter buffer adds on to its size */
 static int trunkfreq = 20;
+static int trunkrealloc = 0;
 static int authdebug = 1;
 static int autokill = 0;
 static int iaxcompat = 0;
 static int authdebug = 1;
 static int autokill = 0;
 static int iaxcompat = 0;
@@ -3649,7 +3650,7 @@ static int iax2_trunk_queue(struct chan_iax2_pvt *pvt, struct iax_frame *fr)
        if (tpeer) {
                if (tpeer->trunkdatalen + f->datalen + 4 >= tpeer->trunkdataalloc) {
                        /* Need to reallocate space */
        if (tpeer) {
                if (tpeer->trunkdatalen + f->datalen + 4 >= tpeer->trunkdataalloc) {
                        /* Need to reallocate space */
-                       if (tpeer->trunkdataalloc < MAX_TRUNKDATA) {
+                       if (tpeer->trunkdataalloc < MAX_TRUNKDATA || trunkrealloc) {
                                if (!(tmp = ast_realloc(tpeer->trunkdata, tpeer->trunkdataalloc + DEFAULT_TRUNKDATA + IAX2_TRUNK_PREFACE))) {
                                        ast_mutex_unlock(&tpeer->lock);
                                        return -1;
                                if (!(tmp = ast_realloc(tpeer->trunkdata, tpeer->trunkdataalloc + DEFAULT_TRUNKDATA + IAX2_TRUNK_PREFACE))) {
                                        ast_mutex_unlock(&tpeer->lock);
                                        return -1;
@@ -8909,6 +8910,8 @@ static int set_config(char *config_file, int reload)
 
        maxauthreq = 3;
 
 
        maxauthreq = 3;
 
+       trunkrealloc = 0;
+
        v = ast_variable_browse(cfg, "general");
 
        /* Seed initial tos value */
        v = ast_variable_browse(cfg, "general");
 
        /* Seed initial tos value */
@@ -9050,7 +9053,9 @@ static int set_config(char *config_file, int reload)
                                global_max_trunk_mtu = mtuv; 
                        else 
                                ast_log(LOG_NOTICE, "trunkmtu value out of bounds (%d) at line %d\n",
                                global_max_trunk_mtu = mtuv; 
                        else 
                                ast_log(LOG_NOTICE, "trunkmtu value out of bounds (%d) at line %d\n",
-                                       mtuv, v->lineno); 
+                                       mtuv, v->lineno);
+               } else if (!strcasecmp(v->name, "trunkrealloc")) {
+                       trunkrealloc = ast_true(v->value);
                } else if (!strcasecmp(v->name, "autokill")) {
                        if (sscanf(v->value, "%d", &x) == 1) {
                                if (x >= 0)
                } else if (!strcasecmp(v->name, "autokill")) {
                        if (sscanf(v->value, "%d", &x) == 1) {
                                if (x >= 0)
index afe2553..000c175 100644 (file)
@@ -172,6 +172,10 @@ forcejitterbuffer=no
 ;
 ; trunkmtu = 0
 ;
 ;
 ; trunkmtu = 0
 ;
+
+; Set the below option to yes to have the trunking size grow beyond the normal limit.
+; trunkrealloc=yes
+
 ; IAX helper threads
 
 ; Establishes the number of iax helper threads to handle I/O.
 ; IAX helper threads
 
 ; Establishes the number of iax helper threads to handle I/O.