diff --git a/src/http/ngx_http_event.c b/src/http/ngx_http_event.c
index fa17f72..efeacf8 100644
--- a/src/http/ngx_http_event.c
+++ b/src/http/ngx_http_event.c
@@ -166,7 +166,7 @@
     r->header_in = c->buffer;
 
     ngx_test_null(r->pool, ngx_create_pool(ngx_http_request_pool_size, ev->log),
-                  ngx_http_close_request(r));
+                  NGX_ERROR);
 
     ngx_test_null(r->ctx,
                   ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module),
@@ -935,8 +935,9 @@
 
     ngx_log_debug(ev->log, "http keepalive handler");
 
-    if (ev->timedout)
+    if (ev->timedout) {
         return NGX_DONE;
+    }
 
     /* MSIE closes keepalive connection with RST flag
        so we ignore ECONNRESET here */
@@ -946,8 +947,9 @@
     n = ngx_event_recv(c, c->buffer->last, c->buffer->end - c->buffer->last);
     ev->ignore_econnreset = 0;
 
-    if (n == NGX_AGAIN || n == NGX_ERROR)
+    if (n == NGX_AGAIN || n == NGX_ERROR) {
         return n;
+    }
 
     ctx = (ngx_http_log_ctx_t *) ev->log->data;
     ev->log->handler = NULL;
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index aa55de0..6bf62b3 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -76,6 +76,8 @@
     { 0, NULL},  /* 412 */
     { 0, NULL},  /* 413 */
     { sizeof(error_414_page) - 1, error_414_page },
+    { 0, NULL},  /* 415 */
+    { 0, NULL},  /* 416 */
 
     { sizeof(error_500_page) - 1, error_500_page }
 };
@@ -90,20 +92,31 @@
 
     r->headers_out.status = error;
 
-    if (error < NGX_HTTP_BAD_REQUEST)
+    if (error < NGX_HTTP_BAD_REQUEST) {
         err = error - NGX_HTTP_MOVED_PERMANENTLY;
 
-    else if (error < NGX_HTTP_INTERNAL_SERVER_ERROR)
+    } else if (error < NGX_HTTP_INTERNAL_SERVER_ERROR) {
         err = error - NGX_HTTP_BAD_REQUEST + 4;
 
-    else
-        err = error - NGX_HTTP_INTERNAL_SERVER_ERROR + 4 + 15;
+    } else {
+        err = error - NGX_HTTP_INTERNAL_SERVER_ERROR + 4 + 17;
+    }
 
-    if (error_pages[err].len == 0)
+    if (r->keepalive != 0) {
+        switch (error) {
+            case NGX_HTTP_BAD_REQUEST:
+            case NGX_HTTP_REQUEST_URI_TOO_LARGE:
+            case NGX_HTTP_INTERNAL_SERVER_ERROR:
+                r->keepalive = 0;
+        }
+    }
+
+    if (error_pages[err].len == 0) {
         r->headers_out.content_length = -1;
-    else
+    } else {
         r->headers_out.content_length = error_pages[err].len
                                         + len + sizeof(error_tail);
+    }
 
     if (ngx_http_send_header(r) == NGX_ERROR) {
         return NGX_ERROR;
