fnet.c

Simple C networking library
git clone git://git.finwo.net/lib/fnet.c
Log | Files | Refs | README

commit 57959fe244c4335252f430215238de9e45e342ff
parent 04ed6866020673c335ca000881669c9610d1a006
Author: Yersa Nordman <yersa@finwo.nl>
Date:   Sun, 22 Oct 2023 22:19:47 +0200

Add windows implementation for setting socket to non-blocking

Diffstat:
Msrc/fnet.c | 10++++++++++
1 file changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/fnet.c b/src/fnet.c @@ -76,12 +76,22 @@ FNET_RETURNCODE settcpnodelay(FNET_SOCKET fd) { } FNET_RETURNCODE setnonblock(FNET_SOCKET fd) { + if (fd < 0) return FNET_RETURNCODE_ERROR; +#if defined(_WIN32) || defined(_WIN64) + unsigned long mode = 1; + if (ioctlsocket(fd, FIONBIO, &mode) == 0) { + return FNET_RETURNCODE_OK; + } else { + return FNET_RETURNCODE_ERROR; + } +#else int flags = fcntl(fd, F_GETFL, 0); if (flags < 0) return flags; if(fcntl(fd, F_SETFL, flags | O_NONBLOCK)) { return FNET_RETURNCODE_ERROR; } return FNET_RETURNCODE_OK; +#endif } int64_t _fnet_now() {