diff --git a/evutil.c b/evutil.c index df63f453..c8112017 100644 --- a/evutil.c +++ b/evutil.c @@ -856,10 +856,16 @@ evutil_getaddrinfo(const char *nodename, const char *servname, /* Enough operating systems handle enough common non-resolve * cases here weirdly enough that we are better off just * overriding them. For example: - * - Some believe that giving a numeric port as a servname is - * totally verboten. (I think this includes OpenBSD IIUC). - * [XXXX we don't fix this case completely.] - * - Windows is eccentric. + * - Some older BSDs used to believe that giving a numeric + * port without giving an ai_socktype was verboten. + * (XXX we don't yet handle the general case of this.) + * + * - Windows doesn't like to infer the protocol from the + * socket type, or fill in socket or protocol types much at + * all. It also seems to do its own broken implicit + * always-on version of AI_ADDRCONFIG that keeps it from + * ever resolving even a literal IPv6 address when + * ai_addrtype is PF_UNSPEC. */ { int err, port; diff --git a/include/event2/dns.h b/include/event2/dns.h index 233cbf6d..54f9ffd3 100644 --- a/include/event2/dns.h +++ b/include/event2/dns.h @@ -613,8 +613,12 @@ struct evdns_getaddrinfo_request; * we pass the evutil_addrinfo structures we found (or NULL on error). We * pass 'arg' as the third argument. * + * Limitations: + * * - The AI_V4MAPPED and AI_ALL flags are not currently implemented. * - We don't look at the /etc/hosts file. + * - For ai_socktype, we only handle SOCKTYPE_STREAM, SOCKTYPE_UDP, and 0. + * - For ai_protocol, we only handle IPPROTO_TCP, IPPROTO_UDP, and 0. */ struct evdns_getaddrinfo_request *evdns_getaddrinfo( struct evdns_base *dns_base,