From: Paul Querna Date: Sat, 11 Dec 2004 09:53:16 +0000 (+0000) Subject: * Add bits to use APR_TCP_DEFER_ACCEPT X-Git-Tag: 2.1.3~269 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f64f95d9e1d2753245ace161f244efcecc751c2d;p=thirdparty%2Fapache%2Fhttpd.git * Add bits to use APR_TCP_DEFER_ACCEPT * Log Warnings when adding defer accept or an accept filter fails. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@111596 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index ffc9d164f94..d5233b10fb0 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.1.3 [Remove entries to the current 2.0 section below, when backported] + *) core: Add support for APR_TCP_DEFER_ACCEPT to defer accepting + of a connection until data is available. + [Paul Querna] + *) conf: Remove AddDefaultCharset from the default configuration because setting a site-wide default does more harm than good. PR 23421. [Roy Fielding] diff --git a/server/listen.c b/server/listen.c index 461ebc4d5b5..4ac6734f934 100644 --- a/server/listen.c +++ b/server/listen.c @@ -164,7 +164,20 @@ static apr_status_t make_sock(apr_pool_t *p, ap_listen_rec *server) #endif #endif #endif - apr_socket_accept_filter(s, ACCEPT_FILTER_NAME, ""); + stat = apr_socket_accept_filter(s, ACCEPT_FILTER_NAME, ""); + if (stat != APR_SUCCESS && !APR_STATUS_IS_ENOTIMPL(stat)) { + ap_log_perror(APLOG_MARK, APLOG_WARNING, stat, p, + "Failed to enable the '%s' Accept Filter", + ACCEPT_FILTER_NAME); + } +#else +#ifdef APR_TCP_DEFER_ACCEPT + stat = apr_socket_opt_set(s, APR_TCP_DEFER_ACCEPT, 1); + if (stat != APR_SUCCESS && !APR_STATUS_IS_ENOTIMPL(stat)) { + ap_log_perror(APLOG_MARK, APLOG_WARNING, stat, p, + "Failed to enable APR_TCP_DEFER_ACCEPT"); + } +#endif #endif server->sd = s;