#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
#include <fcntl.h>
+#include <sys/ioctl.h>
#include "utils.h"
#include "connect.h"
if (bufsize > offset)
{
+#ifdef F_GETFL
int flags;
flags = fcntl (fd, F_GETFL, 0);
if (flags < 0)
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,
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;