diff --git a/ChangeLog b/ChangeLog index 4dca208ceb..e1316a0d4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-05-05 Aurelien Jarno + + [BZ #10128] + * resolv/res_query.c (__libc_res_nquery): If one query returns NOTIMP + or FORMERR and the other NOERROR, don't raise an error. + 2009-05-06 Ryan S. Arnold [BZ #10118] 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);