mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
gnutls: honor the specified timeout value
* gnutls.c (wgnutls_poll): Honor the specified `timeout' value. (wgnutls_peek): Likewise.
This commit is contained in:
parent
e93bb4fa28
commit
370f96d36c
@ -1,3 +1,8 @@
|
|||||||
|
2012-05-18 Tim Ruehsen <tim.ruehsen@gmx.de>
|
||||||
|
|
||||||
|
* gnutls.c (wgnutls_poll): Honor the specified `timeout' value.
|
||||||
|
(wgnutls_peek): Likewise.
|
||||||
|
|
||||||
2012-05-19 illusionoflife <illusion.of.life92@gmail.com> (tiny change)
|
2012-05-19 illusionoflife <illusion.of.life92@gmail.com> (tiny change)
|
||||||
|
|
||||||
* convert.c (register_html,register_css): Fixed functions signature to
|
* convert.c (register_html,register_css): Fixed functions signature to
|
||||||
|
30
src/gnutls.c
30
src/gnutls.c
@ -216,11 +216,11 @@ wgnutls_read_timeout (int fd, char *buf, int bufsize, void *arg, double timeout)
|
|||||||
{
|
{
|
||||||
double next_timeout = 0;
|
double next_timeout = 0;
|
||||||
if (timeout)
|
if (timeout)
|
||||||
{
|
{
|
||||||
next_timeout = timeout - ptimer_measure (timer);
|
next_timeout = timeout - ptimer_measure (timer);
|
||||||
if (next_timeout < 0)
|
if (next_timeout < 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = GNUTLS_E_AGAIN;
|
ret = GNUTLS_E_AGAIN;
|
||||||
if (timeout == 0 || gnutls_record_check_pending (ctx->session)
|
if (timeout == 0 || gnutls_record_check_pending (ctx->session)
|
||||||
@ -294,8 +294,12 @@ static int
|
|||||||
wgnutls_poll (int fd, double timeout, int wait_for, void *arg)
|
wgnutls_poll (int fd, double timeout, int wait_for, void *arg)
|
||||||
{
|
{
|
||||||
struct wgnutls_transport_context *ctx = arg;
|
struct wgnutls_transport_context *ctx = arg;
|
||||||
return ctx->peeklen || gnutls_record_check_pending (ctx->session)
|
|
||||||
|| select_fd (fd, timeout, wait_for);
|
if (timeout)
|
||||||
|
return ctx->peeklen || gnutls_record_check_pending (ctx->session)
|
||||||
|
|| select_fd (fd, timeout, wait_for);
|
||||||
|
else
|
||||||
|
return ctx->peeklen || gnutls_record_check_pending (ctx->session);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -304,15 +308,19 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
|
|||||||
int read = 0;
|
int read = 0;
|
||||||
struct wgnutls_transport_context *ctx = arg;
|
struct wgnutls_transport_context *ctx = arg;
|
||||||
int offset = MIN (bufsize, ctx->peeklen);
|
int offset = MIN (bufsize, ctx->peeklen);
|
||||||
|
|
||||||
|
if (ctx->peeklen)
|
||||||
|
{
|
||||||
|
memcpy (buf, ctx->peekbuf, offset);
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
if (bufsize > sizeof ctx->peekbuf)
|
if (bufsize > sizeof ctx->peekbuf)
|
||||||
bufsize = sizeof ctx->peekbuf;
|
bufsize = sizeof ctx->peekbuf;
|
||||||
|
|
||||||
if (ctx->peeklen)
|
|
||||||
memcpy (buf, ctx->peekbuf, offset);
|
|
||||||
|
|
||||||
if (bufsize > offset)
|
if (bufsize > offset)
|
||||||
{
|
{
|
||||||
if (gnutls_record_check_pending (ctx->session) <= 0
|
if (opt.read_timeout && gnutls_record_check_pending (ctx->session) == 0
|
||||||
&& select_fd (fd, 0.0, WAIT_FOR_READ) <= 0)
|
&& select_fd (fd, 0.0, WAIT_FOR_READ) <= 0)
|
||||||
read = 0;
|
read = 0;
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user