Update of /usr/cvsroot/asterisk/pbx
In directory mongoose.digium.com:/tmp/cvs-serv2244/pbx

Modified Files:
        pbx_dundi.c 
Log Message:
make query cache time configurable (bug #4524)


Index: pbx_dundi.c
===================================================================
RCS file: /usr/cvsroot/asterisk/pbx/pbx_dundi.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- pbx_dundi.c 7 Jun 2005 17:06:33 -0000       1.37
+++ pbx_dundi.c 21 Jun 2005 00:58:31 -0000      1.38
@@ -113,6 +113,7 @@
 static int authdebug = 0;
 static int dundi_ttl = DUNDI_DEFAULT_TTL;
 static int dundi_key_ttl = DUNDI_DEFAULT_KEY_EXPIRE;
+static int dundi_cache_time = DUNDI_DEFAULT_CACHE_TIME;
 static int global_autokilltimeout = 0;
 static dundi_eid global_eid;
 static int default_expiration = 60;
@@ -538,7 +539,7 @@
                        ast_copy_flags(dr + anscnt, &flags, AST_FLAGS_ALL);
                        dr[anscnt].techint = map->tech;
                        dr[anscnt].weight = map->weight;
-                       dr[anscnt].expiration = DUNDI_DEFAULT_CACHE_TIME;
+                       dr[anscnt].expiration = dundi_cache_time;
                        strncpy(dr[anscnt].tech, tech2str(map->tech), 
sizeof(dr[anscnt].tech));
                        dr[anscnt].eid = *us_eid;
                        dundi_eid_to_str(dr[anscnt].eid_str, 
sizeof(dr[anscnt].eid_str), &dr[anscnt].eid);
@@ -594,7 +595,7 @@
        int res, x;
        int ouranswers=0;
        int max = 999999;
-       int expiration = DUNDI_DEFAULT_CACHE_TIME;
+       int expiration = dundi_cache_time;
 
        ast_log(LOG_DEBUG, "Whee, looking up '[EMAIL PROTECTED]' for '%s'\n", 
st->called_number, st->called_context, 
                st->eids[0] ? dundi_eid_to_str(eid_str, sizeof(eid_str), 
st->eids[0]) :  "ourselves");
@@ -812,7 +813,7 @@
        time_t timeout;
 
        if (expiration < 0)
-               expiration = DUNDI_DEFAULT_CACHE_TIME;
+               expiration = dundi_cache_time;
 
        /* Only cache hint if "don't ask" is there... */
        if (!ast_test_flag_nonstd(hint, htons(DUNDI_HINT_DONT_ASK)))    
@@ -847,7 +848,7 @@
        time_t timeout;
 
        if (expiration < 1)     
-               expiration = DUNDI_DEFAULT_CACHE_TIME;
+               expiration = dundi_cache_time;
 
        /* Keep pushes a little longer, cut pulls a little short */
        if (push)
@@ -903,7 +904,7 @@
        hmd.flags = DUNDI_HINT_DONT_ASK | DUNDI_HINT_UNAFFECTED;
        dr.dr = dr2;
        dr.maxcount = MAX_RESULTS;
-       dr.expiration = DUNDI_DEFAULT_CACHE_TIME;
+       dr.expiration = dundi_cache_time;
        dr.hmd = &hmd;
        dr.pfds[0] = dr.pfds[1] = -1;
        trans->parent = &dr;
@@ -927,7 +928,7 @@
                                if (ies->expiration > 0)
                                        
trans->parent->dr[trans->parent->respcount].expiration = ies->expiration;
                                else
-                                       
trans->parent->dr[trans->parent->respcount].expiration = 
DUNDI_DEFAULT_CACHE_TIME;
+                                       
trans->parent->dr[trans->parent->respcount].expiration = dundi_cache_time;
                                
dundi_eid_to_str(trans->parent->dr[trans->parent->respcount].eid_str, 
                                        
sizeof(trans->parent->dr[trans->parent->respcount].eid_str),
                                        &ies->answers[x]->eid);
@@ -1662,7 +1663,7 @@
                                                                if 
(ies.expiration > 0)
                                                                        
trans->parent->dr[trans->parent->respcount].expiration = ies.expiration;
                                                                else
-                                                                       
trans->parent->dr[trans->parent->respcount].expiration = 
DUNDI_DEFAULT_CACHE_TIME;
+                                                                       
trans->parent->dr[trans->parent->respcount].expiration = dundi_cache_time;
                                                                
dundi_eid_to_str(trans->parent->dr[trans->parent->respcount].eid_str, 
                                                                        
sizeof(trans->parent->dr[trans->parent->respcount].eid_str),
                                                                        
&ies.answers[x]->eid);
@@ -3119,7 +3120,7 @@
        struct dundi_ie_data ied;
        int x, res;
        int max = 999999;
-       int expiration = DUNDI_DEFAULT_CACHE_TIME;
+       int expiration = dundi_cache_time;
        int ouranswers=0;
        dundi_eid *avoid[1] = { NULL, };
        int direct[1] = { 0, };
@@ -3629,7 +3630,7 @@
        struct dundi_hint_metadata hmd;
        dundi_eid *avoid[1] = { NULL, };
        int direct[1] = { 0, };
-       int expiration = DUNDI_DEFAULT_CACHE_TIME;
+       int expiration = dundi_cache_time;
        memset(&hmd, 0, sizeof(hmd));
        hmd.flags = DUNDI_HINT_DONT_ASK | DUNDI_HINT_UNAFFECTED;
        return dundi_lookup_internal(result, maxret, chan, dcontext, number, 
dundi_ttl, 0, &hmd, &expiration, cbypass, 0, NULL, avoid, direct);
@@ -3752,7 +3753,7 @@
        strncpy(dr.number, number, sizeof(dr.number) - 1);
        strncpy(dr.dcontext, context ? context : "e164", sizeof(dr.dcontext) - 
1);
        dr.maxcount = MAX_RESULTS;
-       dr.expiration = DUNDI_DEFAULT_CACHE_TIME;
+       dr.expiration = dundi_cache_time;
        dr.hmd = &hmd;
        dr.pfds[0] = dr.pfds[1] = -1;
        pipe(dr.pfds);
@@ -4467,6 +4468,7 @@
        dundi_eid testeid;
 
        dundi_ttl = DUNDI_DEFAULT_TTL;
+       dundi_cache_time = DUNDI_DEFAULT_CACHE_TIME;
        cfg = ast_config_load(config_file);
        
        
@@ -4566,6 +4568,13 @@
                        strncpy(phone, v->value, sizeof(phone) - 1);
                } else if (!strcasecmp(v->name, "storehistory")) {
                        global_storehistory = ast_true(v->value);
+               } else if (!strcasecmp(v->name, "cachetime")) {
+                       if ((sscanf(v->value, "%d", &x) == 1)) {
+                               dundi_cache_time = x;
+                       } else {
+                               ast_log(LOG_WARNING, "'%s' is not a valid cache 
time at line %d. Using default value '%d'.\n",
+                                       v->value, v->lineno, 
DUNDI_DEFAULT_CACHE_TIME);
+                       }
                }
                v = v->next;
        }

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to