diff --git a/auto/cc b/auto/cc
index 082b13f..6edae88 100644
--- a/auto/cc
+++ b/auto/cc
@@ -24,7 +24,7 @@
          # debug
          CFLAGS="$CFLAGS -g"
 
-         CFLAGS="$CFLAGS -D HAVE_GCC_VARIADIC_MACROS=1"
+         have=HAVE_GCC_VARIADIC_MACROS . auto/have
 
          OBJEXT=o
          OBJOUT="-o "
@@ -50,7 +50,7 @@
          # stop on warning
          CFLAGS="$CFLAGS -Werror"
 
-         CFLAGS="$CFLAGS -D HAVE_C99_VARIADIC_MACROS=1"
+         have=HAVE_C99_VARIADIC_MACROS . auto/have
 
          OBJEXT=o
          OBJOUT="-o "
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 32c544a..99b2555 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -40,7 +40,7 @@
 static int ngx_rtsig_add_connection(ngx_connection_t *c);
 static int ngx_rtsig_del_connection(ngx_connection_t *c, u_int flags);
 static int ngx_rtsig_process_events(ngx_log_t *log);
-static int ngx_rtsig_process_overlow(ngx_log_t *log);
+static int ngx_rtsig_process_overflow(ngx_log_t *log);
 
 static void *ngx_rtsig_create_conf(ngx_cycle_t *cycle);
 static char *ngx_rtsig_init_conf(ngx_cycle_t *cycle, void *conf);
@@ -310,7 +310,7 @@
 }
 
 
-static int ngx_rtsig_process_overlow(ngx_log_t *log)
+static int ngx_rtsig_process_overflow(ngx_log_t *log)
 {
     if (ngx_poll_module_ctx.actions.process(log) == NGX_OK) {
         ngx_event_actions = ngx_rtsig_module_ctx.actions;
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index 1a05751..83ce814 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -287,6 +287,7 @@
 #define NGX_WRITE_EVENT    POLLOUT
 
 #define NGX_LEVEL_EVENT    0
+#define NGX_ONESHOT_EVENT  1
 
 
 #elif (HAVE_EPOLL)
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 3d53d20..e447340 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -11,6 +11,7 @@
 #include <fcntl.h>
 #include <string.h>
 #include <signal.h>
+#include <limits.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/time.h>
@@ -71,6 +72,11 @@
 #endif
 
 
+#ifndef IOV_MAX
+#define IOV_MAX   1024
+#endif
+
+
 #ifndef HAVE_INHERITED_NONBLOCK
 #define HAVE_INHERITED_NONBLOCK  1
 #endif
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index f784b1f..d5e1831 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -73,7 +73,7 @@
         prev = NULL;
         iov = NULL;
 
-        for (cl = in; cl; cl = cl->next) {
+        for (cl = in; cl && header.nelts < IOV_MAX; cl = cl->next) {
             if (ngx_hunk_special(cl->hunk)) {
                 continue;
             }
@@ -123,7 +123,7 @@
         prev = NULL;
         iov = NULL;
 
-        for ( /* void */; cl; cl = cl->next) {
+        for ( /* void */; cl && trailer.nelts < IOV_MAX; cl = cl->next) {
             if (ngx_hunk_special(cl->hunk)) {
                 continue;
             }
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 1ca1c1f..23745df 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -17,6 +17,7 @@
 #include <fcntl.h>
 #include <string.h>
 #include <signal.h>
+#include <limits.h>
 #include <time.h>
 #include <sys/types.h>
 #include <sys/time.h>
diff --git a/src/os/unix/ngx_linux_sendfile_chain.c b/src/os/unix/ngx_linux_sendfile_chain.c
index 39c2e83..4fa8f83 100644
--- a/src/os/unix/ngx_linux_sendfile_chain.c
+++ b/src/os/unix/ngx_linux_sendfile_chain.c
@@ -52,7 +52,7 @@
 
         /* create the iovec and coalesce the neighbouring hunks */
 
-        for (cl = in; cl; cl = cl->next) {
+        for (cl = in; cl && header.nelts < IOV_MAX; cl = cl->next) {
             if (ngx_hunk_special(cl->hunk)) {
                 continue;
             }
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index f4f8df2..db74aeb 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -18,6 +18,7 @@
 #include <fcntl.h>
 #include <string.h>
 #include <signal.h>
+#include <limits.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index a5b741f..9cd1618 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -16,7 +16,7 @@
     sendfilevec_t  *sfv;
     ngx_array_t     vec;
     ngx_event_t    *wev;
-    ngx_chain_t    *cl;
+    ngx_chain_t    *cl, *tail;
 
     wev = c->write;
 
@@ -37,7 +37,7 @@
 
         /* create the sendfilevec and coalesce the neighbouring hunks */
 
-        for (cl = in; cl; cl = cl->next) {
+        for (cl = in; cl && vec.nelts < IOV_MAX; cl = cl->next) {
             if (ngx_hunk_special(cl->hunk)) {
                 continue;
             }
@@ -77,6 +77,13 @@
             }
         }
 
+        /*
+         * the tail is the rest of the chain that exceeded a single
+         * sendfilev() capability, IOV_MAX in Solaris is only 16
+         */
+
+        tail = cl;
+
         n = sendfilev(c->fd, vec.elts, vec.nelts, &sent);
 
         if (n == -1) {
@@ -142,7 +149,9 @@
 
         in = cl;
 
-    } while (eintr);
+        /* "tail == in" means that a single sendfilev() is complete */
+
+    } while ((tail && tail == in) || eintr);
 
     if (in) {
         wev->ready = 0;
