X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fmdnsd.git;a=blobdiff_plain;f=cache.c;h=c78a3b7a9b438118b369c68c3102fd62cad0b9ee;hp=cdc4a792c122cfe7f642ddd38d6d6576d489f19e;hb=3e754941460f3756b935d66780f406271be929c1;hpb=029c1bb0168e3fc6d71846b2ea79e2ac32e29cc2 diff --git a/cache.c b/cache.c index cdc4a79..c78a3b7 100644 --- a/cache.c +++ b/cache.c @@ -167,7 +167,7 @@ cache_record_find(char *record, int type, int port, int rdlength, uint8_t *rdata if (!l) return NULL; - while (l && !strcmp(l->record, record)) { + while (l && l->record && !strcmp(l->record, record)) { struct cache_record *r = l; l = avl_next_element(l, avl); @@ -301,7 +301,7 @@ cache_answer(struct interface *iface, uint8_t *base, int blen, char *name, struc if (r) { if (!a->ttl) { DBG(1, "D -> %s %s ttl:%d\n", dns_type_string(r->type), r->record, r->ttl); - cache_record_free(r); + r->time = time(0) + 1 - r->ttl; } else { r->ttl = a->ttl; DBG(1, "A -> %s %s ttl:%d\n", dns_type_string(r->type), r->record, r->ttl);