[MacPorts] #33930: Ignore consequences of broken DNS servers
MacPorts
noreply at macports.org
Thu Jul 25 01:58:02 PDT 2013
#33930: Ignore consequences of broken DNS servers
---------------------------+--------------------------
Reporter: ryandesign@… | Owner: ryandesign@…
Type: defect | Status: reopened
Priority: Normal | Milestone:
Component: base | Version: 2.0.4
Resolution: | Keywords:
Port: |
---------------------------+--------------------------
Comment (by cal@…):
Can we check whether a user's DNS is broken when an HTML file is
downloaded (e.g. by trying to resolve nonexistant.macports.org), print an
appropriate warning and continue using a different mirror? We could even
try to fall back to known working DNS servers ourselves, it seems cURL >=
7.24.0 supports that when built against c-ares using
`CURLOPT_DNS_SERVERS`:
> Set the list of DNS servers to be used instead of the system default.
The format of the dns servers option is:
>
> host[:port][,host[:port]]...
>
> For example:
>
> 192.168.1.100,192.168.1.101,3.4.5.6
>
> This option requires that libcurl was built with a resolver backend that
supports this operation. The c-ares backend is the only such one.
Even without c-ares support, cURL >= 7.21.3 can be tricked into using
manually fetched DNS data that is known to be correct using
`CURLOPT_RESOLVE`:
> Pass a pointer to a linked list of strings with host name resolve
information to use for requests with this handle. The linked list should
be a fully valid list of struct curl_slist structs properly filled in. Use
curl_slist_append(3) to create the list and curl_slist_free_all(3) to
clean up an entire list.
>
> Each single name resolve string should be written using the format
HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT
is the port number of the service where libcurl wants to connect to the
HOST and ADDRESS is the numerical IP address. If libcurl is built to
support IPv6, ADDRESS can of course be either IPv4 or IPv6 style
addressing.
>
> This option effectively pre-populates the DNS cache with entries for the
host+port pair so redirects and everything that operations against the
HOST+PORT will instead use your provided ADDRESS.
>
> You can remove names from the DNS cache again, to stop providing these
fake resolves, by including a string in the linked list that uses the
format "-HOST:PORT". The host name must be prefixed with a dash, and the
host name and port number must exactly match what was already added
previously.
--
Ticket URL: <https://trac.macports.org/ticket/33930#comment:4>
MacPorts <http://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list