Mercurial > hg > nginx
view src/os/unix/ngx_socket.c @ 102:7e86d028d8f0
nginx-0.0.1-2003-06-06-18:59:20 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 06 Jun 2003 14:59:20 +0000 |
parents | 2e069b6e6920 |
children | 6dfda4cf5200 |
line wrap: on
line source
#include <ngx_config.h> #include <ngx_core.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). ioctl() and fcntl() are syscalls on FreeBSD, Solaris 7/8 and Linux */ #if (HAVE_FIONBIO) 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 #ifdef __FreeBSD__ int ngx_tcp_nopush(ngx_socket_t s) { int tcp_nopush; tcp_nopush = 1; return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, (const void *) &tcp_nopush, sizeof(int)); } int ngx_tcp_push(ngx_socket_t s) { int tcp_nopush; tcp_nopush = 0; return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, (const void *) &tcp_nopush, sizeof(int)); } #else int ngx_tcp_nopush(ngx_socket_t s) { return NGX_OK; } int ngx_tcp_push(ngx_socket_t s) { return NGX_OK; } #endif