diff src/http/ngx_http_core_module.c @ 3573:5d9ff79eab6f stable-0.7

merge r3316, r3317, r3420, r3421, r3453: browsers related fixes: *) add MSIE padding for Chrome too *) disable keepalive for Safari: https://bugs.webkit.org/show_bug.cgi?id=5760 *) do not disable keepalive after POST requests for MSIE 7+
author Igor Sysoev <igor@sysoev.ru>
date Fri, 04 Jun 2010 17:47:04 +0000
parents b0fbe6ab9ebe
children 28ee756697b1
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -744,14 +744,24 @@ ngx_http_handler(ngx_http_request_t *r)
             break;
         }
 
-        if (r->keepalive && r->headers_in.msie && r->method == NGX_HTTP_POST) {
-
-            /*
-             * MSIE may wait for some time if an response for
-             * a POST request was sent over a keepalive connection
-             */
-
-            r->keepalive = 0;
+        if (r->keepalive) {
+
+            if (r->headers_in.msie6) {
+                if (r->method == NGX_HTTP_POST) {
+                    /*
+                     * MSIE may wait for some time if an response for
+                     * a POST request was sent over a keepalive connection
+                     */
+                    r->keepalive = 0;
+                }
+
+            } else if (r->headers_in.safari) {
+                /*
+                 * Safari may send a POST request to a closed keepalive
+                 * connection and stalls for some time
+                 */
+                r->keepalive = 0;
+            }
         }
 
         if (r->headers_in.content_length_n > 0) {