From ae92ebb92bfec7f263d4e901bc23c06a6b3c3265 Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Wed, 10 Jan 2001 13:51:58 +0000 Subject: [PATCH] Especially on FreeBSD it seems to be common that send(2) does not do a decent job. We handle that better now. --- sapi/thttpd/thttpd.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/sapi/thttpd/thttpd.c b/sapi/thttpd/thttpd.c index 7c37606a4b..947e00c9d9 100644 --- a/sapi/thttpd/thttpd.c +++ b/sapi/thttpd/thttpd.c @@ -42,17 +42,26 @@ static php_thttpd_globals thttpd_globals; 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); - - if (n == -1 && errno == EPIPE) { - php_handle_aborted_connection(); + 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 == EAGAIN) + continue; + if (n <= 0) + return n; + + TG(hc)->bytes += n; + str += n; + sent += n; + str_length -= n; } - TG(hc)->bytes += n; - - return n; + return sent; } static int sapi_thttpd_send_headers(sapi_headers_struct *sapi_headers SLS_DC) -- 2.50.1