about summary refs log tree commit diff
path: root/resolv/res_init.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-06-26 03:47:47 -0700
committerUlrich Drepper <drepper@redhat.com>2009-06-26 03:47:47 -0700
commit44d20bca52ace85850012b0ead37b360e3ecd96e (patch)
treec8268eed89c850af9e4dd58014d8cef3cb181438 /resolv/res_init.c
parent54c99aabdba157ab529dbfe67b233b22c4b0bc19 (diff)
downloadglibc-44d20bca52ace85850012b0ead37b360e3ecd96e.tar.gz
glibc-44d20bca52ace85850012b0ead37b360e3ecd96e.tar.xz
glibc-44d20bca52ace85850012b0ead37b360e3ecd96e.zip
Implement second fallback mode for DNS requests.
There is some more shardware/software out there which has problems
if two DNS requests are sent using the same tuple

  (source addr, source port, dest addr, dest port)

This can range from firewalls to load balancers.  Some of the vendors
already fixed it in response to this problem.  Still, we need a way
to make glibc work with broken environments.  The single-request-reopen
flag can be used or we fall back automatically to this mode.
Diffstat (limited to 'resolv/res_init.c')
-rw-r--r--resolv/res_init.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 8841fe9faa..40dbe7d7e5 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -540,6 +540,9 @@ res_setoptions(res_state statp, const char *options, const char *source) {
 			statp->options |= RES_NOCHECKNAME;
                 } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
 			statp->options |= RES_USE_EDNS0;
+                } else if (!strncmp(cp, "single-request-reopen",
+				    sizeof("single-request-reopen") - 1)) {
+			statp->options |= RES_SNGLKUPREOP;
                 } else if (!strncmp(cp, "single-request",
 				    sizeof("single-request") - 1)) {
 			statp->options |= RES_SNGLKUP;