1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

gnutls: Read correctly last chunk of data.

This commit is contained in:
Giuseppe Scrivano 2010-10-24 01:21:01 +02:00
parent 8405493e1d
commit ea96533903
2 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2010-10-24 Giuseppe Scrivano <gscrivano@gnu.org>
* gnutls.c (wgnutls_peek): Do not return an error when
`gnutls_record_recv' fails but some data is already available.
2010-10-23 Giuseppe Scrivano <gscrivano@gnu.org> 2010-10-23 Giuseppe Scrivano <gscrivano@gnu.org>
* Makefile.am (LIBS): Remove @LIBGNUTLS@ and use @W32LIBS@ as last * Makefile.am (LIBS): Remove @LIBGNUTLS@ and use @W32LIBS@ as last

View File

@ -104,7 +104,8 @@ ssl_init ()
return true; return true;
} }
struct wgnutls_transport_context { struct wgnutls_transport_context
{
gnutls_session session; /* GnuTLS session handle */ gnutls_session session; /* GnuTLS session handle */
int last_error; /* last error returned by read/write/... */ int last_error; /* last error returned by read/write/... */
@ -144,6 +145,7 @@ wgnutls_read (int fd, char *buf, int bufsize, void *arg)
if (ret < 0) if (ret < 0)
ctx->last_error = ret; ctx->last_error = ret;
return ret; return ret;
} }
@ -190,7 +192,12 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
while (ret == GNUTLS_E_INTERRUPTED); while (ret == GNUTLS_E_INTERRUPTED);
if (ret < 0) if (ret < 0)
{
if (offset)
ret = 0;
else
return ret; return ret;
}
if (ret > 0) if (ret > 0)
{ {
@ -223,7 +230,8 @@ wgnutls_close (int fd, void *arg)
/* gnutls_transport is the singleton that describes the SSL transport /* gnutls_transport is the singleton that describes the SSL transport
methods provided by this file. */ methods provided by this file. */
static struct transport_implementation wgnutls_transport = { static struct transport_implementation wgnutls_transport =
{
wgnutls_read, wgnutls_write, wgnutls_poll, wgnutls_read, wgnutls_write, wgnutls_poll,
wgnutls_peek, wgnutls_errstr, wgnutls_close wgnutls_peek, wgnutls_errstr, wgnutls_close
}; };