mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
* Add the possibility to set a separate connection timeout for backend
workers. PR: 45445 Submitted by: rahul <rahul sun.com> Reviewed by: rpluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@684341 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -2,6 +2,10 @@
|
|||||||
Changes with Apache 2.3.0
|
Changes with Apache 2.3.0
|
||||||
[ When backported to 2.2.x, remove entry from this file ]
|
[ When backported to 2.2.x, remove entry from this file ]
|
||||||
|
|
||||||
|
*) mod_proxy: Add connectiontimeout parameter for proxy workers in order to
|
||||||
|
be able to set the timeout for connecting to the backend separately.
|
||||||
|
PR 45445. [Ruediger Pluem, rahul <rahul sun.com>]
|
||||||
|
|
||||||
*) mod_dav_fs: Retrieve minimal system information about directory
|
*) mod_dav_fs: Retrieve minimal system information about directory
|
||||||
entries when walking a DAV fs, resolving a performance degradation on
|
entries when walking a DAV fs, resolving a performance degradation on
|
||||||
Windows. PR 45464. [Jeff Trawick]
|
Windows. PR 45464. [Jeff Trawick]
|
||||||
|
@@ -697,6 +697,12 @@ expressions</description>
|
|||||||
connections in the pool the Apache will return <code>SERVER_BUSY</code>
|
connections in the pool the Apache will return <code>SERVER_BUSY</code>
|
||||||
status to the client.
|
status to the client.
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
<tr><td>connectiontimeout</td>
|
||||||
|
<td>timeout</td>
|
||||||
|
<td>Connect timeout in seconds.
|
||||||
|
The number of seconds Apache waits for the creation of a connection to
|
||||||
|
the backend to complete.
|
||||||
|
</td></tr>
|
||||||
<tr><td>disablereuse</td>
|
<tr><td>disablereuse</td>
|
||||||
<td>Off</td>
|
<td>Off</td>
|
||||||
<td>This parameter should be used when you want to force mod_proxy
|
<td>This parameter should be used when you want to force mod_proxy
|
||||||
|
@@ -163,6 +163,9 @@
|
|||||||
* Rationale: see r661069.
|
* Rationale: see r661069.
|
||||||
* 20080528.1 (2.3.0-dev) add has_realm_hash() to authn_provider struct
|
* 20080528.1 (2.3.0-dev) add has_realm_hash() to authn_provider struct
|
||||||
* 20080722.0 (2.3.0-dev) remove has_realm_hash() from authn_provider struct
|
* 20080722.0 (2.3.0-dev) remove has_realm_hash() from authn_provider struct
|
||||||
|
* 20080722.1 (2.3.0-dev) Add conn_timeout and conn_timeout_set to
|
||||||
|
* proxy_worker struct.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
|
#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
|
||||||
@@ -170,7 +173,7 @@
|
|||||||
#ifndef MODULE_MAGIC_NUMBER_MAJOR
|
#ifndef MODULE_MAGIC_NUMBER_MAJOR
|
||||||
#define MODULE_MAGIC_NUMBER_MAJOR 20080722
|
#define MODULE_MAGIC_NUMBER_MAJOR 20080722
|
||||||
#endif
|
#endif
|
||||||
#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
|
#define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the server's current MODULE_MAGIC_NUMBER is at least a
|
* Determine if the server's current MODULE_MAGIC_NUMBER is at least a
|
||||||
|
@@ -281,6 +281,16 @@ static const char *set_worker_param(apr_pool_t *p,
|
|||||||
return "lbset must be between 0 and 99";
|
return "lbset must be between 0 and 99";
|
||||||
worker->lbset = ival;
|
worker->lbset = ival;
|
||||||
}
|
}
|
||||||
|
else if (!strcasecmp(key, "connectiontimeout")) {
|
||||||
|
/* Request timeout in seconds.
|
||||||
|
* Defaults to connection timeout
|
||||||
|
*/
|
||||||
|
ival = atoi(val);
|
||||||
|
if (ival < 1)
|
||||||
|
return "Connectiontimeout must be at least one second.";
|
||||||
|
worker->conn_timeout = apr_time_from_sec(ival);
|
||||||
|
worker->conn_timeout_set = 1;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
return "unknown Worker parameter";
|
return "unknown Worker parameter";
|
||||||
}
|
}
|
||||||
|
@@ -352,6 +352,8 @@ struct proxy_worker {
|
|||||||
char retry_set;
|
char retry_set;
|
||||||
char disablereuse;
|
char disablereuse;
|
||||||
char disablereuse_set;
|
char disablereuse_set;
|
||||||
|
apr_interval_time_t conn_timeout;
|
||||||
|
char conn_timeout_set;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -2325,8 +2325,11 @@ PROXY_DECLARE(int) ap_proxy_connect_backend(const char *proxy_function,
|
|||||||
"Failed to set");
|
"Failed to set");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set a timeout on the socket */
|
/* Set a timeout for connecting to the backend on the socket */
|
||||||
if (worker->timeout_set == 1) {
|
if (worker->conn_timeout_set) {
|
||||||
|
apr_socket_timeout_set(newsock, worker->conn_timeout);
|
||||||
|
}
|
||||||
|
else if (worker->timeout_set == 1) {
|
||||||
apr_socket_timeout_set(newsock, worker->timeout);
|
apr_socket_timeout_set(newsock, worker->timeout);
|
||||||
}
|
}
|
||||||
else if (conf->timeout_set == 1) {
|
else if (conf->timeout_set == 1) {
|
||||||
@@ -2364,6 +2367,17 @@ PROXY_DECLARE(int) ap_proxy_connect_backend(const char *proxy_function,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set a timeout on the socket */
|
||||||
|
if (worker->timeout_set == 1) {
|
||||||
|
apr_socket_timeout_set(newsock, worker->timeout);
|
||||||
|
}
|
||||||
|
else if (conf->timeout_set == 1) {
|
||||||
|
apr_socket_timeout_set(newsock, conf->timeout);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
apr_socket_timeout_set(newsock, s->timeout);
|
||||||
|
}
|
||||||
|
|
||||||
conn->sock = newsock;
|
conn->sock = newsock;
|
||||||
connected = 1;
|
connected = 1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user