diff options
Diffstat (limited to 'src/os/unix/ngx_socket.c')
-rw-r--r-- | src/os/unix/ngx_socket.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/os/unix/ngx_socket.c b/src/os/unix/ngx_socket.c new file mode 100644 index 000000000..d213fa86f --- /dev/null +++ b/src/os/unix/ngx_socket.c @@ -0,0 +1,26 @@ + +#include <ngx_socket.h> + + +/* ioctl(FIONBIO) set blocking mode with one syscall only while + fcntl(F_SETFL, ~O_NONBLOCK) need to know previous state + using fcntl(F_GETFL). + On FreeBSD both are syscall */ + +#ifdef __FreeBSD__ + +int ngx_nonblocking(ngx_socket_t s) +{ + unsigned long nb = 1; + + return ioctl(s, FIONBIO, &nb); +} + +int ngx_blocking(ngx_socket_t s) +{ + unsigned long nb = 0; + + return ioctl(s, FIONBIO, &nb); +} + +#endif |