X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fgnutls.c;h=1d6316298a6af8fff815ff5aeaa17f9acebef8d6;hp=2e5f89a781888f68af3362562a4539e81263cfa0;hb=d18b9749d94b29856ceecfd30ebda958bd954f55;hpb=6dca252c60d88e43e0430170e8ae0f3c4cf5d8b7 diff --git a/src/gnutls.c b/src/gnutls.c index 2e5f89a7..1d631629 100644 --- a/src/gnutls.c +++ b/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 *