diff src/os/unix/ngx_socket.c @ 101:2e069b6e6920

nginx-0.0.1-2003-06-04-21:28:33 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 04 Jun 2003 17:28:33 +0000
parents 738fe44c70d5
children 6dfda4cf5200
line wrap: on
line diff
--- a/src/os/unix/ngx_socket.c
+++ b/src/os/unix/ngx_socket.c
@@ -1,5 +1,6 @@
 
-#include <ngx_socket.h>
+#include <ngx_config.h>
+#include <ngx_core.h>
 
 
 /*
@@ -10,7 +11,8 @@
    ioctl() and fcntl() are syscalls on FreeBSD, Solaris 7/8 and Linux
 */
 
-#if 1
+
+#if (HAVE_FIONBIO)
 
 int ngx_nonblocking(ngx_socket_t s)
 {
@@ -19,6 +21,7 @@ int ngx_nonblocking(ngx_socket_t s)
     return ioctl(s, FIONBIO, &nb);
 }
 
+
 int ngx_blocking(ngx_socket_t s)
 {
     unsigned long  nb = 0;
@@ -27,3 +30,42 @@ int ngx_blocking(ngx_socket_t s)
 }
 
 #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