.TP 5
.B ratelimit\-size: \fI<memory size>
Give the size of the data structure in which the current ongoing rates are
-kep track in. Default 4m. In bytes or use m(mega), k(kilo), g(giga).
+kept track in. Default 4m. In bytes or use m(mega), k(kilo), g(giga).
The ratelimit structure is small, so this data structure likely does
not need to be large.
.TP 5
if(!outq) {
log_addr(VERB_DETAIL, "error sending query to auth server",
&target->addr, target->addrlen);
- infra_ratelimit_dec(qstate->env->infra_cache, iq->dp->name,
+ if(!(iq->chase_flags & BIT_RD))
+ infra_ratelimit_dec(qstate->env->infra_cache, iq->dp->name,
iq->dp->namelen, *qstate->env->now);
return next_state(iq, QUERYTARGETS_STATE);
}
/* can we find it? */
d = (struct domain_limit_data*)name_tree_find(&infra->domain_limits,
nm, nmlen, labs, LDNS_RR_CLASS_IN);
- if(d)
+ if(d) {
+ free(nm);
return d;
+ }
/* create it */
d = (struct domain_limit_data*)calloc(1, sizeof(*d));
- if(!d)
+ if(!d) {
+ free(nm);
return NULL;
+ }
d->node.node.key = &d->node;
d->node.name = nm;
d->node.len = nmlen;
if(!name_tree_insert(&infra->domain_limits, &d->node, nm, nmlen,
labs, LDNS_RR_CLASS_IN)) {
log_err("duplicate element in domainlimit tree");
+ free(nm);
+ free(d);
return NULL;
}
return d;