sas             Wed Jan 10 05:51:58 2001 EDT

  Modified files:              
    /php4/sapi/thttpd   thttpd.c 
  Log:
  Especially on FreeBSD it seems to be common that send(2) does not
  do a decent job.  We handle that better now.
  
  
Index: php4/sapi/thttpd/thttpd.c
diff -u php4/sapi/thttpd/thttpd.c:1.32 php4/sapi/thttpd/thttpd.c:1.33
--- php4/sapi/thttpd/thttpd.c:1.32      Tue Jan  9 01:01:33 2001
+++ php4/sapi/thttpd/thttpd.c   Wed Jan 10 05:51:58 2001
@@ -42,17 +42,26 @@
 static int sapi_thttpd_ub_write(const char *str, uint str_length)
 {
        int n;
+       uint sent = 0;  
        TLS_FETCH();
        
-       n = send(TG(hc)->conn_fd, str, str_length, 0);
+       while (str_length > 0) {
+               n = send(TG(hc)->conn_fd, str, str_length, 0);
 
-       if (n == -1 && errno == EPIPE) {
-               php_handle_aborted_connection();
-       }
+               if (n == -1 && errno == EPIPE)
+                       php_handle_aborted_connection();
+               if (n == -1 && errno == EAGAIN)
+                       continue;
+               if (n <= 0) 
+                       return n;
 
-       TG(hc)->bytes += n;
+               TG(hc)->bytes += n;
+               str += n;
+               sent += n;
+               str_length -= n;
+       }
 
-       return n;
+       return sent;
 }
 
 static int sapi_thttpd_send_headers(sapi_headers_struct *sapi_headers SLS_DC)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to