summaryrefslogtreecommitdiff
path: root/src/rfc1035.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rfc1035.c')
-rw-r--r--src/rfc1035.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rfc1035.c b/src/rfc1035.c
index 9f5570c..43a06b9 100644
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -1547,10 +1547,20 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
ans = 1;
if (!dryrun)
{
+ unsigned long ttl = daemon->local_ttl;
+ int ok = 1;
log_query(F_CONFIG | F_RRNAME, name, NULL, "<TXT>");
- if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,
- daemon->local_ttl, NULL,
- T_TXT, t->class, "t", t->len, t->txt))
+ /* Dynamically generate stat record */
+ if (t->stat != 0)
+ {
+ ttl = 0;
+ if (!cache_make_stat(t))
+ ok = 0;
+ }
+
+ if (ok && add_resource_record(header, limit, &trunc, nameoffset, &ansp,
+ ttl, NULL,
+ T_TXT, t->class, "t", t->len, t->txt))
anscount++;
}