X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fgnutls.c;h=2e5f89a781888f68af3362562a4539e81263cfa0;hp=4f38aca1d9c43ed302159d3ecf29c0e8f44fe29b;hb=b1acde223fb705a0b14b3f14e368c64e9d58ed01;hpb=ca244196f1c7347f89e4b382198177a48b44133c diff --git a/src/gnutls.c b/src/gnutls.c index 4f38aca1..2e5f89a7 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -41,6 +41,7 @@ as that of the covered work. */ #include #include #include +#include #include "utils.h" #include "connect.h" @@ -183,6 +184,7 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg) if (bufsize > offset) { +#ifdef F_GETFL int flags; flags = fcntl (fd, F_GETFL, 0); if (flags < 0) @@ -191,7 +193,13 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg) ret = fcntl (fd, F_SETFL, flags | O_NONBLOCK); if (ret < 0) return ret; - +#else + /* XXX: Assume it was blocking before. */ + const int zero = 0; + ret = ioctl (fd, FIONBIO, &zero); + if (ret < 0) + return ret; +#endif do { ret = gnutls_record_recv (ctx->session, buf + offset, @@ -214,9 +222,16 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg) ctx->peeklen += ret; } +#ifdef F_GETFL fcntl (fd, F_SETFL, flags); if (ret < 0) return ret; +#else + const int one = 1; + ret = ioctl (fd, FIONBIO, &one); + if (ret < 0) + return ret; +#endif } return offset + ret;