gnutls-cli should handle network errors more gracefully

Mantas Mikulėnas grawity at gmail.com
Sun Nov 25 22:10:41 CET 2012


On Sun, Nov 25, 2012 at 10:52 PM, Nikos Mavrogiannopoulos
<nmav at gnutls.org> wrote:
> On 11/24/2012 10:54 PM, Mantas Mikulėnas wrote:
>
>> I often use `gnutls-cli` to connect to dualstack hosts (having both IPv4
>> and IPv6 addresses).
>>
>> At times, when the client computer has an IPv6 default route, but the
>> server is temporarily unreachable over IPv6, `gnutls-cli` exits
>> immediately after failing to connect to the first address. Because of
>> this, it is impossible to connect to such servers until I disable IPv6
>> entirely on my computer. The lack of -4/-6 options to force IPv4 (or
>> IPv6) makes things only worse.
>
> ...
>> The expected result here is that `gnutls-cli` would keep trying other
>> addresses returned from getaddrinfo(), until at least one succeeds.
>
>
> I'm curious, how do other networking programs avoid this issue? Do they
> keep trying or do they provide an option to force IPv4 or 6?

The ones I just tested – `lftp`, `curl`, `nc-openbsd`, `mutt`, `ncat`,
`wget`, inetutils `telnet` and `ssh` – keep trying addresses until one
succeeds, or until the program runs out of addresses to try.

Almost all programs (all that I've listed, excluding `lftp` and
`mutt`) also support options "-4" and "-6" to limit to just a
particular address family.

(The major web browsers implement an "Happy Eyeballs" algorithm and
try both protocols in parallel, but it's probably not the right choice
for such tools as `gnutls-cli`.)

--
Mantas Mikulėnas




More information about the Gnutls-devel mailing list