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;
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);
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 '%s@%s' 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");
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)))
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)
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;
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);
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);
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, };
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);
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);
dundi_eid testeid;
dundi_ttl = DUNDI_DEFAULT_TTL;
+ dundi_cache_time = DUNDI_DEFAULT_CACHE_TIME;
cfg = ast_config_load(config_file);
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;
}