Thanks, Daniel. I believe, we already handle that case. If GNUTLS_E_INTERRUPTED occurs, we restart the loop and re-enter gnutls_handshake(). This happens for all non-fatal errors.
That is the while part while (err && gnutls_error_is_fatal (err) == 0); Tim On Thursday 30 June 2016 15:18:18 Daniel Stenberg wrote: > Hello, > > gnutls_handshake() is documented to possibly return GNUTLS_E_INTERRUPTED as > well as GNUTLS_E_AGAIN and should probably behave similarly for both return > codes within wget. > > diff --git a/src/gnutls.c b/src/gnutls.c > index 63c7c33..44c497b 100644 > --- a/src/gnutls.c > +++ b/src/gnutls.c > @@ -463,11 +463,11 @@ _do_handshake (gnutls_session_t session, int fd, > double timeout) > /* We don't stop the handshake process for non-fatal errors */ > do > { > err = gnutls_handshake (session); > > - if (timeout && err == GNUTLS_E_AGAIN) > + if (timeout && ((err == GNUTLS_E_AGAIN) || (err == > GNUTLS_E_INTERRUPTED))) { > if (gnutls_record_get_direction (session)) > { > /* wait for writeability */ > err = select_fd (fd, timeout, WAIT_FOR_WRITE);
signature.asc
Description: This is a digitally signed message part.