about summary refs log tree commit diff
path: root/resolv/res_query.c
diff options
context:
space:
mode:
Diffstat (limited to 'resolv/res_query.c')
-rw-r--r--resolv/res_query.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/resolv/res_query.c b/resolv/res_query.c
index 6ac33ce64c..9ffb3e3685 100644
--- a/resolv/res_query.c
+++ b/resolv/res_query.c
@@ -289,6 +289,13 @@ __libc_res_nquery(res_state statp,
 			break;
 		case FORMERR:
 		case NOTIMP:
+			/* Servers must not reply to AAAA queries with
+			   NOTIMP etc but some of them do.  */
+			if ((hp->rcode == NOERROR && ntohs (hp->ancount) != 0)
+			    || (hp2->rcode == NOERROR
+				&& ntohs (hp2->ancount) != 0))
+				goto success;
+			/* FALLTHROUGH */
 		case REFUSED:
 		default:
 			RES_SET_H_ERRNO(statp, NO_RECOVERY);