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:
parent
8405493e1d
commit
ea96533903
@ -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
|
||||||
|
12
src/gnutls.c
12
src/gnutls.c
@ -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
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user