<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Found it, looks like ai_addrlen is being set to sizeof() the wrong
    structure ... ugh.<br>
    <br>
<a class="moz-txt-link-freetext" href="https://github.com/c-ares/c-ares/commit/71adb3c4170dc47f71c21bf8d95ed7ddd640819e">https://github.com/c-ares/c-ares/commit/71adb3c4170dc47f71c21bf8d95ed7ddd640819e</a><br>
    <br>
    looks like we need a quick 1.18.1...<br>
    <br>
    <div class="moz-cite-prefix">On 10/26/21 5:35 PM, Brad House wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:a239ffb8-bc0c-4905-3446-75aa94a96e96@brad-house.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Erm, this is really strange.  I mean just using the c-ares ahost()
      which calls ares_gethostbyname(), I get reasonable results:<br>
      <br>
      $ ./ahost -t u production-all-ipv6.easypost.com<br>
      production-all-ipv6.easypost.com    2607:f0d0:2901:7e::2<br>
      production-all-ipv6.easypost.com    2607:f0d0:3803:ca::2<br>
      production-all-ipv6.easypost.com    2607:f0d0:2901:7e::3<br>
      production-all-ipv6.easypost.com    2607:f0d0:3803:ca::3<br>
      <br>
      Using ahost instead of adig is more representative of how
      consumers of c-ares use it as adig uses low level apis whereas
      ahost uses the higher level apis.<br>
      <br>
      The socket(), connect(), getsockname() pattern you see for each IP
      address is actually a weird thing about getaddrinfo() where you
      have to determine reach-ability by the routes to the destination
      as per rfc6724 section 6.  If you notice, the socket() is
      SOCK_DGRAM, IPPROTO_UDP and UDP is stateless, so connect() doesn't
      actually connect, but it *does* resolve if the system thinks the
      endpoint is reachable.<br>
      <br>
      I guess maybe I need to look at the curl code to see how its
      calling into c-ares to see if the change has some weird sanity
      check that isn't covered by our test cases.<br>
      <br>
      <br>
      <br>
      <div class="moz-cite-prefix">On 10/26/21 5:16 PM, James Brown via
        c-ares wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:CALgeuKz=jqop9c+CK90sSZZLx2ppaSEMAQQNnPVYv6y+33NT1w@mail.gmail.com">
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <div dir="ltr">
          <div class="gmail_default" style="font-family:times new
            roman,serif">Testing an upgrade from 1.17.2 to 1.18.0 and
            all curl requests to internal names started failing with
            "Could not resolve host". adig and ahost are both able to
            resolve the names just fine. It appears that this affects
            any lookup that only returns IPv6 addresses, and possibly
            also any lookup that is behind a DNAME. The IPv6 case is
            easier to reproduce so that's what I've put below:</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style=""><span
              style="font-family:"times new roman",serif">This
              can be easily reproduced from `</span><font
              face="monospace">curl -vs <a
                href="https://production-all-ipv6.easypost.com/health/ok"
                moz-do-not-send="true" class="moz-txt-link-freetext">https://production-all-ipv6.easypost.com/health/ok</a></font><font
              face="times new roman, serif">` on any host with c-ares
              1.18.0 installed and curl linked against c-ares.</font></div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">Bizarrely enough, if I strace curl, I see it
            actually connecting to the correct remote IP before
            returning the "Could not resolve host" error. ???</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">I did a git-bisect run and it points at <a
href="https://github.com/c-ares/c-ares/commit/778d7cd9e7bf6b31ce697f47cbe935e33a63a5b4"
              moz-do-not-send="true">778d7cd9e7bf6b31ce697f47cbe935e33a63a5b4</a> as
            the offending commit.</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">I'm running dnsmasq on localhost and nothing
            about it has changed. Below is some probably-relevant output
            from a system with c-ares 1.17.2 installed system wide and
            c-ares 1.18.0 installed in the "./prefix" directory.</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">$ curl --version<br>
            curl 7.79.1 (x86_64-redhat-linux-gnu) libcurl/7.79.1
            OpenSSL/1.0.2u zlib/1.2.3 zstd/1.4.9 c-ares/1.17.2
            libidn2/2.3.0 libssh2/1.10.0 nghttp2/1.45.1 OpenLDAP/2.4.40<br>
            Release-Date: 2021-09-22<br>
            Protocols: dict file ftp ftps gopher gophers http https imap
            imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp
            smtps telnet tftp<br>
            Features: alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IDN IPv6
            Largefile libz NTLM NTLM_WB SSL UnixSockets zstd<br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">$ env LD_LIBRARY_PATH=./prefix/lib/ curl
            --version<br>
            curl 7.79.1 (x86_64-redhat-linux-gnu) libcurl/7.79.1
            OpenSSL/1.0.2u zlib/1.2.3 zstd/1.4.9 c-ares/1.18.0
            libidn2/2.3.0 libssh2/1.10.0 nghttp2/1.45.1 OpenLDAP/2.4.40<br>
            Release-Date: 2021-09-22<br>
            Protocols: dict file ftp ftps gopher gophers http https imap
            imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp
            smtps telnet tftp<br>
            Features: alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IDN IPv6
            Largefile libz NTLM NTLM_WB SSL UnixSockets zstd</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">$ curl <a
              href="https://production-all-ipv6.easypost.com/health/ok"
              moz-do-not-send="true" class="moz-txt-link-freetext">https://production-all-ipv6.easypost.com/health/ok</a><br>
            UP<br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">$ env LD_LIBRARY_PATH=./prefix/lib/  curl <a
              href="https://production-all-ipv6.easypost.com/health/ok"
              moz-do-not-send="true" class="moz-txt-link-freetext">https://production-all-ipv6.easypost.com/health/ok</a><br>
            curl: (6) Could not resolve host: <a
              href="http://production-all-ipv6.easypost.com"
              moz-do-not-send="true">production-all-ipv6.easypost.com</a><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif"><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">$ env LD_LIBRARY_PATH=./prefix/lib/ strace curl
            <a href="https://production-all-ipv6.easypost.com/health/ok"
              moz-do-not-send="true" class="moz-txt-link-freetext">https://production-all-ipv6.easypost.com/health/ok</a><br>
          </div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">[snip]</div>
          <div class="gmail_default" style="font-family:times new
            roman,serif">connect(5, {sa_family=AF_INET6,
            sin6_port=htons(53), inet_pton(AF_INET6, "::1",
            &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0<br>
            sendto(5,
            "Q\337\1\0\0\1\0\0\0\0\0\0\23production-all-ipv6"..., 50,
            MSG_NOSIGNAL, NULL, 0) = 50<br>
            sendto(5,
            "~\311\1\0\0\1\0\0\0\0\0\0\23production-all-ipv6"..., 50,
            MSG_NOSIGNAL, NULL, 0) = 50<br>
            poll([{fd=5, events=POLLIN|POLLRDNORM}], 1, 0) = 1 ([{fd=5,
            revents=POLLIN|POLLRDNORM}])<br>
            recvfrom(5,
            "Q\337\201\200\0\1\0\0\0\0\0\0\23production-all-ipv6"...,
            4097, 0, {sa_family=AF_INET6, sin6_port=htons(53),
            inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0,
            sin6_scope_id=0}, [28]) = 50<br>
            recvfrom(5,
            "~\311\201\200\0\1\0\4\0\0\0\0\23production-all-ipv6"...,
            4097, 0, {sa_family=AF_INET6, sin6_port=htons(53),
            inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0,
            sin6_scope_id=0}, [28]) = 162<br>
            socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP) = 6<br>
            connect(6, {sa_family=AF_INET6, sin6_port=htons(443),
            inet_pton(AF_INET6, "2607:f0d0:2901:7e::3", &sin6_addr),
            sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0<br>
            getsockname(6, {sa_family=AF_INET6, sin6_port=htons(43428),
            inet_pton(AF_INET6, "2607:f0d0:2901:4b::66",
            &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
            0<br>
            close(6)                                = 0<br>
            socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP) = 6<br>
            connect(6, {sa_family=AF_INET6, sin6_port=htons(443),
            inet_pton(AF_INET6, "2607:f0d0:3803:ca::3", &sin6_addr),
            sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0<br>
            getsockname(6, {sa_family=AF_INET6, sin6_port=htons(44405),
            inet_pton(AF_INET6, "2607:f0d0:2901:4b::66",
            &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
            0<br>
            close(6)                                = 0<br>
            socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP) = 6<br>
            connect(6, {sa_family=AF_INET6, sin6_port=htons(443),
            inet_pton(AF_INET6, "2607:f0d0:3803:ca::2", &sin6_addr),
            sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0<br>
            getsockname(6, {sa_family=AF_INET6, sin6_port=htons(33765),
            inet_pton(AF_INET6, "2607:f0d0:2901:4b::66",
            &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
            0<br>
            close(6)                                = 0<br>
            socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP) = 6<br>
            connect(6, {sa_family=AF_INET6, sin6_port=htons(443),
            inet_pton(AF_INET6, "2607:f0d0:2901:7e::2", &sin6_addr),
            sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0<br>
            getsockname(6, {sa_family=AF_INET6, sin6_port=htons(59083),
            inet_pton(AF_INET6, "2607:f0d0:2901:4b::66",
            &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
            0<br>
            close(6)                                = 0<br>
            close(5)                                = 0<br>
            rt_sigaction(SIGPIPE, {SIG_IGN, [PIPE],
            SA_RESTORER|SA_RESTART, 0x7ff5cb5f4570}, NULL, 8) = 0<br>
            rt_sigaction(SIGPIPE, {SIG_IGN, [PIPE],
            SA_RESTORER|SA_RESTART, 0x7ff5cb5f4570}, NULL, 8) = 0<br>
            write(2, "c", 1c)                        = 1<br>
            write(2, "u", 1u)                        = 1<br>
            write(2, "r", 1r)                        = 1<br>
            write(2, "l", 1l)                        = 1<br>
            write(2, ":", 1:)                        = 1<br>
            write(2, " ", 1 )                        = 1<br>
            write(2, "(", 1()                        = 1<br>
            write(2, "6", 16)                        = 1<br>
            write(2, ")", 1))                        = 1<br>
            write(2, " ", 1 )                        = 1<br>
            write(2, "C", 1C)                        = 1<br>
            write(2, "o", 1o)                        = 1<br>
            write(2, "u", 1u)                        = 1<br>
            write(2, "l", 1l)                        = 1<br>
            write(2, "d", 1d)                        = 1<br>
            write(2, " ", 1 )                        = 1<br>
            write(2, "n", 1n)                        = 1<br>
            write(2, "o", 1o)                        = 1<br>
            write(2, "t", 1t)                        = 1<br>
            write(2, " ", 1 )                        = 1<br>
            write(2, "r", 1r)                        = 1<br>
            write(2, "e", 1e)                        = 1<br>
            write(2, "s", 1s)                        = 1<br>
            write(2, "o", 1o)                        = 1<br>
            write(2, "l", 1l)                        = 1<br>
            write(2, "v", 1v)                        = 1<br>
            write(2, "e", 1e)                        = 1<br>
            write(2, " ", 1 )                        = 1<br>
            write(2, "h", 1h)                        = 1<br>
            write(2, "o", 1o)                        = 1<br>
            write(2, "s", 1s)                        = 1<br>
            write(2, "t", 1t)                        = 1<br>
            write(2, ":", 1:)                        = 1<br>
          </div>
          -- <br>
          <div dir="ltr" class="gmail_signature"
            data-smartmail="gmail_signature">
            <div dir="ltr">
              <div>
                <div dir="ltr"><span style="font-family:times new
                    roman,serif">James Brown</span>
                  <div><span style="font-family:times new roman,serif">Engineer</span></div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>