[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-wget] gnutls_handshake can return GNUTLS_E_INTERRUPTED
From: |
Tim Ruehsen |
Subject: |
Re: [Bug-wget] gnutls_handshake can return GNUTLS_E_INTERRUPTED |
Date: |
Thu, 30 Jun 2016 16:58:34 +0200 |
User-agent: |
KMail/4.14.10 (Linux/4.6.0-1-amd64; KDE/4.14.21; x86_64; ; ) |
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.