Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 19 Sep 2022 22:57:55 +0200
From: Florian Weimer <>
To: Rich Felker <>
Subject: Re: EAI_NOADDR ?

* Rich Felker:

> One problem I've seen come up again and again with libc stub resolver
> API is that there's no way to distinguish between NxDomain and NODATA
> responses from DNS. These have very different meanings ("name doesn't
> exist" vs "name exists but has no address (or whatever record type you
> were looking for") and being able to distinguish them is important for
> implementing containerized-type DNS service on top of the host's
> resolver API rather than direct proxying to outside DNS (when the
> latter isn't desirable).
> POSIX defines EAI_NONAME as:
>     The name does not resolve for the supplied parameters. 
> which, under generous interpretation of "parameters", seems to cover
> both cases, although arguably it does "resolve" to just an empty list
> of addresses in the NODATA case.
> To address this, I'm considering proposing a new error code EAI_NOADDR
> that would be defined something like:
>     The name does not have any addresses for the supplied parameters.
> Would other implementators be on-board with such a proposal?

I think several libcs implemented this as EAI_NODATA already.  I see it
documented for AIX, glibc, NetBSD, OpenBSD, QNX, Solaris.  Apparently,
it's absent from FreeBSD (and Windows).


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.