Make registertimeout be configurable (bug #2874)
authorMark Spencer <markster@digium.com>
Sun, 12 Dec 2004 03:44:17 +0000 (03:44 +0000)
committerMark Spencer <markster@digium.com>
Sun, 12 Dec 2004 03:44:17 +0000 (03:44 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4434 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

index cb66c7e..7bdb91b 100755 (executable)
@@ -74,6 +74,7 @@
 #define SIPDUMPER
 #define DEFAULT_DEFAULT_EXPIRY  120
 #define DEFAULT_MAX_EXPIRY      3600
+#define DEFAULT_REGISTRATION_TIMEOUT   20
 
 /* guard limit must be larger than guard secs */
 /* guard min must be < 1000, and should be >= 250 */
@@ -154,6 +155,8 @@ static int global_trustrpid = 0;    /* Trust RPID headers? Default off. */
 
 static int global_progressinband = 0;
 
+static int global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;
+
 #ifdef OSP_SUPPORT
 static int global_ospauth = 0;         /* OSP = Open Settlement Protocol */
 #endif
@@ -4160,7 +4163,7 @@ static int transmit_register(struct sip_registry *r, char *cmd, char *auth, char
                        ast_log(LOG_WARNING, "Still have a timeout, %d\n", r->timeout);
                        ast_sched_del(sched, r->timeout);
                }
-               r->timeout = ast_sched_add(sched, 20*1000, sip_reg_timeout, r);
+               r->timeout = ast_sched_add(sched, global_reg_timeout*1000, sip_reg_timeout, r);
                ast_log(LOG_DEBUG, "Scheduled a timeout # %d\n", r->timeout);
        }
 
@@ -8809,6 +8812,10 @@ static int reload_config(void)
                        default_expiry = atoi(v->value);
                        if (default_expiry < 1)
                                default_expiry = DEFAULT_DEFAULT_EXPIRY;
+               } else if (!strcasecmp(v->name, "registertimeout")){
+                       global_reg_timeout = atoi(v->value);
+                       if (global_reg_timeout < 1)
+                               global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;
                } else if (!strcasecmp(v->name, "bindaddr")) {
                        if (!(hp = ast_gethostbyname(v->value, &ahp))) {
                                ast_log(LOG_WARNING, "Invalid address: %s\n", v->value);
index eb201d4..9db19b7 100755 (executable)
@@ -121,6 +121,7 @@ srvlookup=yes                       ; Enable DNS SRV lookups on outbound calls
 ;        Tip 2: Use separate type=peer and type=user sections for SIP providers
 ;                      (instead of type=friend) if you have calls in both directions
   
+;registertimeout=20            ; retry registration calls every 20 seconds (default)
 
 ;externip = 200.201.202.203    ; Address that we're going to put in outbound SIP messages
                                ; if we're behind a NAT