From 6dcf9c22b5fe81227e8703676258fb8f195721bb Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Tue, 1 Jul 2003 05:29:17 +0000 Subject: [PATCH] properly restart syscalls --- sapi/thttpd/thttpd.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sapi/thttpd/thttpd.c b/sapi/thttpd/thttpd.c index b5912912a2..c6156c3b1d 100644 --- a/sapi/thttpd/thttpd.c +++ b/sapi/thttpd/thttpd.c @@ -50,6 +50,8 @@ typedef struct { int seen_cn; } php_thttpd_globals; +#define PHP_SYS_CALL(x) do { x } while (n == -1 && errno == EINTR) + #ifdef PREMIUM_THTTPD # define do_keep_alive persistent #endif @@ -73,7 +75,7 @@ static int sapi_thttpd_ub_write(const char *str, uint str_length TSRMLS_DC) } while (str_length > 0) { - n = send(TG(hc)->conn_fd, str, str_length, 0); + PHP_SYS_CALL(n = send(TG(hc)->conn_fd, str, str_length, 0);); if (n == -1) { if (errno == EAGAIN) { @@ -108,7 +110,7 @@ static int do_writev(struct iovec *vec, int nvec, int len TSRMLS_DC) assert(nvec <= IOV_MAX); if (TG(sbuf).c == 0) { - n = writev(TG(hc)->conn_fd, vec, nvec); + PHP_SYS_CALL(n = writev(TG(hc)->conn_fd, vec, nvec);); if (n == -1) { if (errno == EAGAIN) { @@ -120,8 +122,9 @@ static int do_writev(struct iovec *vec, int nvec, int len TSRMLS_DC) TG(hc)->bytes_sent += n; - } else + } else { n = 0; + } if (n < len) { int i; -- 2.50.1