From: Jim Jagielski Date: Tue, 31 Mar 2015 12:58:59 +0000 (+0000) Subject: Merge r1669289, r1669292 from trunk: X-Git-Tag: 2.4.13~291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9efd58aed31173a5a1153f9d2a75a08b5cebaeeb;p=thirdparty%2Fapache%2Fhttpd.git Merge r1669289, r1669292 from trunk: core_filters: restore/disable TCP_NOPUSH option after non-blocking sendfile. CHANGES: follow up to r1669289. Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1670328 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 77feaa07d0b..d3a219d29f3 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,9 @@ Changes with Apache 2.4.13 calls r:wsupgrade() can cause a child process crash. [Edward Lu ] + *) core_filters: restore/disable TCP_NOPUSH option after non-blocking + sendfile. [Yann Ylavic] + *) core: Initialize scoreboard's used optional functions on graceful restarts to avoid a crash when relocation occurs. PR 57177. [Yann Ylavic] diff --git a/STATUS b/STATUS index 89042e34c6e..1366baeb444 100644 --- a/STATUS +++ b/STATUS @@ -106,12 +106,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) core_filters: restore/disable TCP_NOPUSH option after non-blocking - sendfile. - trunk patch: http://svn.apache.org/r1669289 - http://svn.apache.org/r1669292 (CHANGES entry) - 2.4.x patch: trunk works (modulo CHANGES) - +1: ylavic, covener, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/server/core_filters.c b/server/core_filters.c index 8700b76d532..b535887236c 100644 --- a/server/core_filters.c +++ b/server/core_filters.c @@ -644,7 +644,6 @@ static apr_status_t send_brigade_nonblocking(apr_socket_t *s, if (nvec > 0) { (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1); rv = writev_nonblocking(s, vec, nvec, bb, bytes_written, c); - nvec = 0; if (rv != APR_SUCCESS) { (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0); return rv; @@ -653,6 +652,7 @@ static apr_status_t send_brigade_nonblocking(apr_socket_t *s, rv = sendfile_nonblocking(s, bucket, bytes_written, c); if (nvec > 0) { (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0); + nvec = 0; } if (rv != APR_SUCCESS) { return rv;