From b38c40b34e086256a10af53a062a276d9cff2921 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Sat, 23 Oct 2010 12:34:49 +0200 Subject: [PATCH] gnutls: peek blocks until data is available. --- src/ChangeLog | 4 ++++ src/gnutls.c | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7b8c1772..2175acff 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-10-23 Giuseppe Scrivano + + * gnutls.c (wgnutls_peek): Block until data is available. + 2010-10-21 Giuseppe Scrivano * retr.c (retrieve_url): Do not register HTML files twice. diff --git a/src/gnutls.c b/src/gnutls.c index 17c7c928..440b1aed 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -184,13 +184,14 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg) { do { - if (gnutls_record_check_pending (ctx->session) - || select_fd (fd, 0, WAIT_FOR_READ)) - ret = gnutls_record_recv (ctx->session, buf + offset, - bufsize - offset); + ret = gnutls_record_recv (ctx->session, buf + offset, + bufsize - offset); } while (ret == GNUTLS_E_INTERRUPTED); + if (ret < 0) + return ret; + if (ret > 0) { memcpy (ctx->peekbuf + offset, buf + offset, -- 2.39.2