mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Fix a bug recently introduced in wgnutls_peek.
This commit is contained in:
parent
6dca252c60
commit
d18b9749d9
@ -1,3 +1,9 @@
|
||||
2011-04-07 Giuseppe Scrivano <gscrivano@gnu.org>
|
||||
|
||||
* gnutls.c (wgnutls_peek): New local variable `read'.
|
||||
Use `read' instead of `ret' to store the number of read bytes.
|
||||
Reported by: Ray Satiro <raysatiro@yahoo.com>
|
||||
|
||||
2011-04-04 Giuseppe Scrivano <gscrivano@gnu.org>
|
||||
|
||||
* openssl.c [WINDOWS]: Include <w32sock.h>.
|
||||
|
22
src/gnutls.c
22
src/gnutls.c
@ -173,7 +173,7 @@ wgnutls_poll (int fd, double timeout, int wait_for, void *arg)
|
||||
static int
|
||||
wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
|
||||
{
|
||||
int ret = 0;
|
||||
int ret = 0, read = 0;
|
||||
struct wgnutls_transport_context *ctx = arg;
|
||||
int offset = MIN (bufsize, ctx->peeklen);
|
||||
if (bufsize > sizeof ctx->peekbuf)
|
||||
@ -203,27 +203,29 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
|
||||
do
|
||||
{
|
||||
ret = gnutls_record_recv (ctx->session, buf + offset,
|
||||
bufsize - offset);
|
||||
bufsize - offset);
|
||||
}
|
||||
while (ret == GNUTLS_E_INTERRUPTED);
|
||||
|
||||
if (ret < 0)
|
||||
read = ret;
|
||||
|
||||
if (read < 0)
|
||||
{
|
||||
if (offset)
|
||||
ret = 0;
|
||||
read = 0;
|
||||
else
|
||||
return ret;
|
||||
return read;
|
||||
}
|
||||
|
||||
if (ret > 0)
|
||||
if (read > 0)
|
||||
{
|
||||
memcpy (ctx->peekbuf + offset, buf + offset,
|
||||
ret);
|
||||
ctx->peeklen += ret;
|
||||
read);
|
||||
ctx->peeklen += read;
|
||||
}
|
||||
|
||||
#ifdef F_GETFL
|
||||
fcntl (fd, F_SETFL, flags);
|
||||
ret = fcntl (fd, F_SETFL, flags);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
#else
|
||||
@ -234,7 +236,7 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
|
||||
#endif
|
||||
}
|
||||
|
||||
return offset + ret;
|
||||
return offset + read;
|
||||
}
|
||||
|
||||
static const char *
|
||||
|
Loading…
Reference in New Issue
Block a user