nginx-0.0.1-2003-05-14-21:13:13 import
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c
index a24fc41..f8896e8 100644
--- a/src/os/unix/ngx_freebsd_init.c
+++ b/src/os/unix/ngx_freebsd_init.c
@@ -2,19 +2,41 @@
 #include <ngx_freebsd_init.h>
 
 
-int freebsd_kern_osreldate;
-int freebsd_hw_ncpu;
-
-int freebsd_sendfile_nbytes_bug;
+char ngx_freebsd_kern_ostype[20];
+char ngx_freebsd_kern_osrelease[20];
+int ngx_freebsd_kern_osreldate;
+int ngx_freebsd_hw_ncpu;
+int ngx_freebsd_net_inet_tcp_sendspace;
+int ngx_freebsd_sendfile_nbytes_bug;
 
 
 int ngx_os_init(ngx_log_t *log)
 {
     size_t  size;
 
+    size = 20;
+    if (sysctlbyname("kern.ostype",
+                     ngx_freebsd_kern_ostype, &size, NULL, 0) == -1) {
+        ngx_log_error(NGX_LOG_ALERT, log, errno,
+                      "sysctlbyname(kern.ostype) failed");
+        return NGX_ERROR;
+    }
+
+    size = 20;
+    if (sysctlbyname("kern.osrelease",
+                     ngx_freebsd_kern_osrelease, &size, NULL, 0) == -1) {
+        ngx_log_error(NGX_LOG_ALERT, log, errno,
+                      "sysctlbyname(kern.osrelease) failed");
+        return NGX_ERROR;
+    }
+
+    ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %s %s",
+                  ngx_freebsd_kern_ostype, ngx_freebsd_kern_osrelease);
+
+
     size = 4;
     if (sysctlbyname("kern.osreldate",
-                     &freebsd_kern_osreldate, &size, NULL, 0) == -1) {
+                     &ngx_freebsd_kern_osreldate, &size, NULL, 0) == -1) {
         ngx_log_error(NGX_LOG_ALERT, log, errno,
                       "sysctlbyname(kern.osreldate) failed");
         return NGX_ERROR;
@@ -22,7 +44,7 @@
 
     ngx_log_error(NGX_LOG_INFO, log, 0,
                   "kern.osreldate: %d, built on %d",
-                  freebsd_kern_osreldate, __FreeBSD_version);
+                  ngx_freebsd_kern_osreldate, __FreeBSD_version);
 
 
 #if HAVE_FREEBSD_SENDFILE
@@ -42,12 +64,12 @@
     || __FreeBSD_version == 460002 || __FreeBSD_version >= 500039
 
     /* a new syscall without the bug */
-    freebsd_sendfile_nbytes_bug = 0;
+    ngx_freebsd_sendfile_nbytes_bug = 0;
 
 #else
 
     /* an old syscall that can have the bug */
-    freebsd_sendfile_nbytes_bug = 1;
+    ngx_freebsd_sendfile_nbytes_bug = 1;
 
 #endif
 
@@ -55,13 +77,27 @@
 
 
     size = 4;
-    if (sysctlbyname("hw.ncpu", &freebsd_hw_ncpu, &size, NULL, 0) == -1) {
+    if (sysctlbyname("hw.ncpu", &ngx_freebsd_hw_ncpu, &size, NULL, 0) == -1) {
         ngx_log_error(NGX_LOG_ALERT, log, errno,
                       "sysctlbyname(hw.ncpu) failed");
         return NGX_ERROR;
     }
 
-    ngx_log_error(NGX_LOG_INFO, log, 0, "hw.ncpu: %d", freebsd_hw_ncpu);
+    ngx_log_error(NGX_LOG_INFO, log, 0, "hw.ncpu: %d", ngx_freebsd_hw_ncpu);
+
+
+    size = 4;
+    if (sysctlbyname("net.inet.tcp.sendspace",
+                     &ngx_freebsd_net_inet_tcp_sendspace,
+                     &size, NULL, 0) == -1)
+    {
+        ngx_log_error(NGX_LOG_ALERT, log, errno,
+                      "sysctlbyname(net.inet.tcp.sendspace) failed");
+        return NGX_ERROR;
+    }
+
+    ngx_log_error(NGX_LOG_INFO, log, 0, "net.inet.tcp.sendspace: %d",
+                  ngx_freebsd_net_inet_tcp_sendspace);
 
     return NGX_OK;
 }
diff --git a/src/os/unix/ngx_freebsd_init.h b/src/os/unix/ngx_freebsd_init.h
index d0af10b..400295a 100644
--- a/src/os/unix/ngx_freebsd_init.h
+++ b/src/os/unix/ngx_freebsd_init.h
@@ -1,5 +1,5 @@
-#ifndef _NGX_OS_INIT_H_INCLUDED_
-#define _NGX_OS_INIT_H_INCLUDED_
+#ifndef _NGX_FREEBSD_INIT_H_INCLUDED_
+#define _NGX_FREEBSD_INIT_H_INCLUDED_
 
 
 #include <ngx_config.h>
@@ -11,8 +11,10 @@
 int ngx_os_init(ngx_log_t *log);
 
 
-extern int freebsd_kern_osreldate;
-extern int freebsd_hw_ncpu;
+extern int ngx_freebsd_kern_osreldate;
+extern int ngx_freebsd_hw_ncpu;
+extern int ngx_freebsd_net_inet_tcp_sendspace;
+extern int ngx_freebsd_sendfile_nbytes_bug;
 
 
-#endif /* _NGX_OS_INIT_H_INCLUDED_ */
+#endif /* _NGX_FREEBSD_INIT_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_freebsd_write_chain.c b/src/os/unix/ngx_freebsd_write_chain.c
index 09c0120..6b9882a 100644
--- a/src/os/unix/ngx_freebsd_write_chain.c
+++ b/src/os/unix/ngx_freebsd_write_chain.c
@@ -9,6 +9,7 @@
 #include <ngx_connection.h>
 #include <ngx_sendv.h>
 #include <ngx_sendfile.h>
+#include <ngx_freebsd_init.h>
 
 
 ngx_chain_t *ngx_freebsd_write_chain(ngx_connection_t *c, ngx_chain_t *in)
@@ -50,9 +51,9 @@
                 prev = ce->hunk->last;
             }
 
-#if (HAVE_FREEBSD_SENDFILE_NBYTES_BUG)
-            hsize += ce->hunk->last - ce->hunk->pos;
-#endif
+            if (ngx_freebsd_sendfile_nbytes_bug) {
+                hsize += ce->hunk->last - ce->hunk->pos;
+            }
             ce = ce->next;
         }
     }
diff --git a/src/os/unix/ngx_os_init.h b/src/os/unix/ngx_os_init.h
new file mode 100644
index 0000000..5c445ac
--- /dev/null
+++ b/src/os/unix/ngx_os_init.h
@@ -0,0 +1,12 @@
+#ifndef _NGX_OS_INIT_H_INCLUDED_
+#define _NGX_OS_INIT_H_INCLUDED_
+
+
+#include <ngx_config.h>
+#include <ngx_log.h>
+
+
+int ngx_os_init(ngx_log_t *log);
+
+
+#endif /* _NGX_OS_INIT_H_INCLUDED_ */