提交 0fef7ffa 编写于 作者: R Rich Felker

fix handling of dns response codes

rcode of 3 (NxDomain) was treated as a hard EAI_NONAME failure, but it
should instead return 0 (no results) so the caller can continue
searching. this will be important for adding search domain support.
the top-level caller will automatically return EAI_NONAME if there are
zero results at the end.

also, the case where rcode is 0 (success) but there are no results was
not handled. this happens when the domain exists but there are no A or
AAAA records for it. in this case a hard EAI_NONAME should be imposed
to inhibit further search, since the name was defined and just does
not have any address associated with it. previously a misleading hard
failure of EAI_FAIL was reported.
上级 fe8453d2
......@@ -152,7 +152,8 @@ static int name_from_dns(struct address buf[static MAXADDRS], char canon[static
if (ctx.cnt) return ctx.cnt;
if (alens[0] < 4 || (abuf[0][3] & 15) == 2) return EAI_AGAIN;
if ((abuf[0][3] & 15) == 3) return EAI_NONAME;
if ((abuf[0][3] & 15) == 0) return EAI_NONAME;
if ((abuf[0][3] & 15) == 3) return 0;
return EAI_FAIL;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册