|
|
@@ -0,0 +1,42 @@
|
|
|
+From: Uwe Kleine-König <[email protected]>
|
|
|
+Date: Sat, 8 Oct 2022 19:22:52 +0200
|
|
|
+Subject: [PATCH] nslookup: ensure unique transaction IDs for the DNS queries
|
|
|
+
|
|
|
+The transaction IDs generated by res_mkquery() for both glibc and musl only
|
|
|
+depends on the state of the monotonic clock.
|
|
|
+For some machines (here: a TP-Link RE200 powered by a MediaTek MT7620A)
|
|
|
+the monotonic clock has a coarse resolution (here: 20 µs) and it can happen
|
|
|
+that the requests for A and AAAA share the same transaction ID.
|
|
|
+
|
|
|
+In that case the mapping from received responses to the sent queries
|
|
|
+doesn't work and name resolution fails as follows:
|
|
|
+
|
|
|
+ # /bin/busybox nslookup heise.de
|
|
|
+ Server: 127.0.0.1
|
|
|
+ Address: 127.0.0.1:53
|
|
|
+
|
|
|
+ Non-authoritative answer:
|
|
|
+ Name: heise.de
|
|
|
+ Address: 193.99.144.80
|
|
|
+
|
|
|
+ *** Can't find heise.de: No answer
|
|
|
+
|
|
|
+because the AAAA reply is dropped as a duplicate reply to the A query.
|
|
|
+
|
|
|
+To prevent this make sure the transaction IDs are unique.
|
|
|
+
|
|
|
+Forwarded: http://lists.busybox.net/pipermail/busybox/2022-October/089911.html
|
|
|
+---
|
|
|
+--- a/networking/nslookup.c
|
|
|
++++ b/networking/nslookup.c
|
|
|
+@@ -978,6 +978,10 @@ int nslookup_main(int argc UNUSED_PARAM,
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
++ /* Ensure the Transaction IDs are unique */
|
|
|
++ for (rc = 1; rc < G.query_count; rc++)
|
|
|
++ G.query[rc].query[1] = G.query[rc - 1].query[1] + 1;
|
|
|
++
|
|
|
+ for (rc = 0; rc < G.serv_count;) {
|
|
|
+ int c;
|
|
|
+
|