summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelley <simon@thekelleys.org.uk>2021-10-06 22:54:35 +0100
committerSimon Kelley <simon@thekelleys.org.uk>2021-10-06 22:54:35 +0100
commit33d6a01cd3d7a2d41e1e6aaa6a1aa792e2397635 (patch)
tree10196a05551cf341b9c24e0ee796a3dcaa531018
parentd290630d31f4517ab26392d00753d1397f9a4114 (diff)
downloaddnsmasq-33d6a01cd3d7a2d41e1e6aaa6a1aa792e2397635.tar.gz
Use host byte-order variable for answer counting.
-rw-r--r--src/domain-match.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/domain-match.c b/src/domain-match.c
index d280e83..7bf3d5a 100644
--- a/src/domain-match.c
+++ b/src/domain-match.c
@@ -395,7 +395,7 @@ int is_local_answer(time_t now, int first, char *name)
size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header *header, char *name, char *limit, int first, int last, int ede)
{
- int trunc = 0;
+ int trunc = 0, anscount = 0;
unsigned char *p;
int start;
union all_addr addr;
@@ -419,7 +419,7 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
addr.addr4 = srv->addr;
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_A, C_IN, "4", &addr))
- header->ancount = htons(ntohs(header->ancount) + 1);
+ anscount++;
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, name, (union all_addr *)&addr, NULL, 0);
}
@@ -434,13 +434,14 @@ size_t make_local_answer(int flags, int gotname, size_t size, struct dns_header
addr.addr6 = srv->addr;
if (add_resource_record(header, limit, &trunc, sizeof(struct dns_header), &p, daemon->local_ttl, NULL, T_AAAA, C_IN, "6", &addr))
- header->ancount = htons(ntohs(header->ancount) + 1);
+ anscount++;
log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, name, (union all_addr *)&addr, NULL, 0);
}
if (trunc)
header->hb3 |= HB3_TC;
-
+ header->ancount = htons(anscount);
+
return p - (unsigned char *)header;
}