[Dnsmasq-discuss] TCP optimization regressions
Simon Kelley
simon at thekelleys.org.uk
Mon Mar 16 15:34:42 UTC 2026
Dominik,
Thanks for the report.
https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=3a052d55fbfca49d8d435cdd2110fb2667594c61
Should fix this.
Cheers,
Simon.
On 04.03.2026 18:14, Dominik Derigs wrote:
> Hey Simon,
>
> during our automated CI testing, we discovered two regressions of the
> recent TCP buffer use optimization: https://thekelleys.org.uk/gitweb/?
> p=dnsmasq.git;a=commit;h=729c16a8ace49d472bc29cc37f87ca39ade920b6
>
> The first one may be reproduced easily in the following way:
>
> 1. Start dnsmasq like:
>
> dnsmasq -d --log-queries=proto --server=127.0.0.1#5000 --no-resolv
>
> Note that the configured server does intentionally NOT exist.
>
> 2. Initiate a zone transfer to produce a non-query (an exemplary python
> script doing this is attached)
>
> 3. See the following log lines:
>
> dnsmasq: TCP 1 127.0.0.1/41420 non-query opcode 5 from 127.0.0.1
> dnsmasq: TCP 1 127.0.0.1/41420 config error is REFUSED (EDE: network error)
>
> We see an exception in the python script:
>
> >>> dns.query.BadResponse: A DNS query response does not respond to the
> question asked.
>
> The reason is that the reply ID is 0 instead of being the same as the
> request ID. You may also check recording.pcap handy to see the effect.
>
>
> I also found another, related issue when running the same script this
> time with an existing upstream server. We get the following log lines:
>
> dnsmasq: TCP 1 127.0.0.1/36338 non-query opcode 5 from 127.0.0.1
> dnsmasq: TCP 1 127.0.0.1/36338 forwarded example.com to 127.0.0.1#5555
> dnsmasq: TCP 1 127.0.0.1/36338 reply error is not implemented
>
> We get again the python exception. This time, we observe that the ID is
> correct, however, while query has opcode 5 (update), the reply has
> opcode 0 (query), which obviously doesn't match. Looking into
> recording2.pcap, we see that it is actually the upstream server which is
> changing the opcode and dnsmasq just passing this along. Previous
> versions of dnsmasq (pre-v2.93test2 to be precise) did not bother
> forwarding such non-queries at all and replied with the same opcode . I
> think this behavior should be restored.
>
> Best,
> Dominik
>
More information about the Dnsmasq-discuss
mailing list