]> granicus.if.org Git - php/commitdiff
Improved handling of posts
authorSascha Schumann <sas@php.net>
Sat, 27 Oct 2001 11:27:39 +0000 (11:27 +0000)
committerSascha Schumann <sas@php.net>
Sat, 27 Oct 2001 11:27:39 +0000 (11:27 +0000)
sapi/thttpd/thttpd.c

index 22d413d9cb597e2f0262271ebc4948027a1f60c8..e6dcb2df38ad63907f40410094e85ec24455ca01 100644 (file)
@@ -150,9 +150,11 @@ static int sapi_thttpd_read_post(char *buffer, uint count_bytes TSRMLS_DC)
        while (read_bytes < count_bytes) {
                tmp = recv(TG(hc)->conn_fd, buffer + read_bytes, 
                                count_bytes - read_bytes, 0);
-               if (tmp <= 0) 
+               if (tmp == 0 || (tmp == -1 && errno != EAGAIN))
                        break;
-               read_bytes += tmp;
+               /* A simple "tmp > 0" produced broken code on Solaris/GCC */
+               if (tmp != 0 && tmp != -1)
+                       read_bytes += tmp;
        }
        
        return read_bytes;
@@ -501,6 +503,9 @@ static off_t thttpd_real_php_request(httpd_conn *hc TSRMLS_DC)
 {
        TG(hc) = hc;
        hc->bytes_sent = 0;
+
+       if (hc->method == METHOD_POST)
+               hc->should_linger = 1;
        
        thttpd_request_ctor(TSRMLS_C);