summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/libc/minires-os-if.c
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/libc/minires-os-if.c')
-rw-r--r--winsup/cygwin/libc/minires-os-if.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/libc/minires-os-if.c b/winsup/cygwin/libc/minires-os-if.c
index 94460ffb2..05fc95f5f 100644
--- a/winsup/cygwin/libc/minires-os-if.c
+++ b/winsup/cygwin/libc/minires-os-if.c
@@ -249,6 +249,13 @@ static int cygwin_query(res_state statp, const char * DomName, int Class, int Ty
rr = pQueryResultsSet;
section = 0;
while (rr) {
+ /* Some Windows versions return questions when providing locally generated
+ answers, for example for "localhost" or for the computer name. */
+ if (((rr->Flags.DW & 0x3) == DnsSectionQuestion) &&
+ (rr->wDataLength > 0)) {
+ DPRINTF(debug, "Changing record below from question to answer\n");
+ rr->Flags.DW ^= DnsSectionQuestion ^ DnsSectionAnswer;
+ }
if (!counts[0] && (rr->Flags.DW & 0x3)) {
/* No question. Adopt the first name as the name in the question */
if ((len = dn_comp(rr->pName, ptr, AnsLength - 4,