about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-10-15 12:33:13 +0200
committerFlorian Weimer <fweimer@redhat.com>2020-11-10 16:59:42 +0100
commit5c36293f067d2af16e4eb9f9465be36f346ea6d0 (patch)
tree23f0c09fc3ef16437434535ed4424adb66f575ec
parent2dfa659a66f20facc4082207884c20e986ddecee (diff)
downloadglibc-5c36293f067d2af16e4eb9f9465be36f346ea6d0.tar.gz
glibc-5c36293f067d2af16e4eb9f9465be36f346ea6d0.tar.xz
glibc-5c36293f067d2af16e4eb9f9465be36f346ea6d0.zip
resolv: Serialize processing in resolv/tst-resolv-txnid-collision
When switching name servers, response processing by two server
threads clobbers the global test state.  (There is still some
risk that this test is negatively impact by packet drops and
packet reordering, but this applies to many of the resolver tests
and is difficult to avoid.)

Fixes commit f1f00c072138af90ae6da180f260111f09afe7a3 ("resolv:
Handle transaction ID collisions in parallel queries (bug 26600)").

(cherry picked from commit b8b53b338f6da91e86d115a39da860cefac736ad)
-rw-r--r--resolv/tst-resolv-txnid-collision.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/resolv/tst-resolv-txnid-collision.c b/resolv/tst-resolv-txnid-collision.c
index 611d37362f..189b76f126 100644
--- a/resolv/tst-resolv-txnid-collision.c
+++ b/resolv/tst-resolv-txnid-collision.c
@@ -309,6 +309,11 @@ do_test (void)
     ((struct resolv_redirect_config)
      {
        .response_callback = response,
+
+       /* The response callback use global state (the previous_*
+          variables), and query processing must therefore be
+          serialized.  */
+       .single_thread_udp = true,
      });
 
   for (int rcode = 0; rcode <= 5; ++rcode)