mirror of
https://github.com/apache/httpd.git
synced 2025-11-06 16:49:32 +03:00
Change core connection handling so that a connection-oriented
error disabling nagle* is logged with the client IP address and a debug log level. We filter out not-implemented errors from platforms which don't support TCP_NODELAY. *This is typically EINVAL, which means that the client already dropped the connection. Also, mention an earlier change to include the client IP address when logging connection-oriented errors. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105652 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
6
CHANGES
6
CHANGES
@@ -2,6 +2,12 @@ Changes with Apache 2.1.0-dev
|
|||||||
|
|
||||||
[Remove entries to the current 2.0 section below, when backported]
|
[Remove entries to the current 2.0 section below, when backported]
|
||||||
|
|
||||||
|
*) Log the client IP address when an error occurs disabling nagle on a
|
||||||
|
connection, but log at a severity of debug since this error
|
||||||
|
generally means that the connection was dropped before data was
|
||||||
|
sent. Log the client IP address when reporting errors in the core
|
||||||
|
output filter. [Jeff Trawick]
|
||||||
|
|
||||||
*) Add ap_log_cerror() for logging messages associated with particular
|
*) Add ap_log_cerror() for logging messages associated with particular
|
||||||
client connections. [Jeff Trawick]
|
client connections. [Jeff Trawick]
|
||||||
|
|
||||||
|
|||||||
@@ -4544,6 +4544,7 @@ static conn_rec *core_create_conn(apr_pool_t *ptrans, server_rec *server,
|
|||||||
static int core_pre_connection(conn_rec *c, void *csd)
|
static int core_pre_connection(conn_rec *c, void *csd)
|
||||||
{
|
{
|
||||||
core_net_rec *net = apr_palloc(c->pool, sizeof(*net));
|
core_net_rec *net = apr_palloc(c->pool, sizeof(*net));
|
||||||
|
apr_status_t rv;
|
||||||
|
|
||||||
#ifdef AP_MPM_DISABLE_NAGLE_ACCEPTED_SOCK
|
#ifdef AP_MPM_DISABLE_NAGLE_ACCEPTED_SOCK
|
||||||
/* BillS says perhaps this should be moved to the MPMs. Some OSes
|
/* BillS says perhaps this should be moved to the MPMs. Some OSes
|
||||||
@@ -4551,7 +4552,21 @@ static int core_pre_connection(conn_rec *c, void *csd)
|
|||||||
* accept sockets which means this call only needs to be made
|
* accept sockets which means this call only needs to be made
|
||||||
* once on the listener
|
* once on the listener
|
||||||
*/
|
*/
|
||||||
ap_sock_disable_nagle(csd);
|
/* The Nagle algorithm says that we should delay sending partial
|
||||||
|
* packets in hopes of getting more data. We don't want to do
|
||||||
|
* this; we are not telnet. There are bad interactions between
|
||||||
|
* persistent connections and Nagle's algorithm that have very severe
|
||||||
|
* performance penalties. (Failing to disable Nagle is not much of a
|
||||||
|
* problem with simple HTTP.)
|
||||||
|
*/
|
||||||
|
rv = apr_socket_opt_set(csd, APR_TCP_NODELAY, 1);
|
||||||
|
if (rv != APR_SUCCESS && rv != APR_ENOTIMPL) {
|
||||||
|
/* expected cause is that the client disconnected already,
|
||||||
|
* hence the debug level
|
||||||
|
*/
|
||||||
|
ap_log_cerror(APLOG_MARK, APLOG_DEBUG, rv, c,
|
||||||
|
"apr_socket_opt_set(APR_TCP_NODELAY)");
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
net->c = c;
|
net->c = c;
|
||||||
net->in_ctx = NULL;
|
net->in_ctx = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user