3 * Copyright (C) Igor Sysoev
7 #include <ngx_config.h>
12 * ioctl(FIONBIO) sets a non-blocking mode with the single syscall
13 * while fcntl(F_SETFL, O_NONBLOCK) needs to learn the current state
14 * using fcntl(F_GETFL).
16 * ioctl() and fcntl() are syscalls at least in FreeBSD 2.x, Linux 2.2
19 * ioctl() in Linux 2.4 and 2.6 uses BKL, however, fcntl(F_SETFL) uses it too.
23 #if (NGX_HAVE_FIONBIO)
26 ngx_nonblocking(ngx_socket_t s)
32 return ioctl(s, FIONBIO, &nb);
37 ngx_blocking(ngx_socket_t s)
43 return ioctl(s, FIONBIO, &nb);
52 ngx_tcp_nopush(ngx_socket_t s)
58 return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH,
59 (const void *) &tcp_nopush, sizeof(int));
64 ngx_tcp_push(ngx_socket_t s)
70 return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH,
71 (const void *) &tcp_nopush, sizeof(int));
78 ngx_tcp_nopush(ngx_socket_t s)
84 return setsockopt(s, IPPROTO_TCP, TCP_CORK,
85 (const void *) &cork, sizeof(int));
90 ngx_tcp_push(ngx_socket_t s)
96 return setsockopt(s, IPPROTO_TCP, TCP_CORK,
97 (const void *) &cork, sizeof(int));
103 ngx_tcp_nopush(ngx_socket_t s)
110 ngx_tcp_push(ngx_socket_t s)