You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ch...@apache.org on 2013/08/22 08:17:24 UTC
git commit: TS-2107: change
proxy.config.http.transaction_active_timeout_in
Updated Branches:
refs/heads/master 2e8f0c352 -> e5d27294b
TS-2107: change proxy.config.http.transaction_active_timeout_in
split proxy.config.http.transaction_active_timeout_in to proxy.config.http.transaction_header_timeout_in
and proxy.config.http.transaction_request_timeout_in.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e5d27294
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e5d27294
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e5d27294
Branch: refs/heads/master
Commit: e5d27294be996520588825bad8c82788e15dde85
Parents: 2e8f0c3
Author: Chen Bin <ku...@taobao.com>
Authored: Thu Aug 22 13:47:30 2013 +0800
Committer: Chen Bin <ku...@taobao.com>
Committed: Thu Aug 22 13:49:39 2013 +0800
----------------------------------------------------------------------
CHANGES | 3 +++
mgmt/RecordsConfig.cc | 4 +++-
mgmt/cli/ConfigCmd.cc | 9 +++++----
mgmt/cli/ConfigCmd.h | 3 ++-
mgmt/cli/ShowCmd.cc | 9 ++++++---
mgmt/cli/cli_detailed_command_list.txt | 6 ++++--
proxy/http/HttpConfig.cc | 8 ++++++--
proxy/http/HttpConfig.h | 9 +++++++--
proxy/http/HttpSM.cc | 27 +++++++++++++++++++++++++--
9 files changed, 61 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index c2e5d1b..cadbb34 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
Changes with Apache Traffic Server 4.1.0
+ *) [TS-2107] split proxy.config.http.transaction_active_timeout_in to proxy.config.http.transaction_header_timeout_in
+ and proxy.config.http.transaction_request_timeout_in.
+
*) [TS-2114] buffer_upload plugin defines true and false
Author: Kit Chan <ch...@gmail.com>
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/RecordsConfig.cc
----------------------------------------------------------------------
diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc
index 11f60c7..8e90ac1 100644
--- a/mgmt/RecordsConfig.cc
+++ b/mgmt/RecordsConfig.cc
@@ -506,7 +506,9 @@ RecordElement RecordsConfig[] = {
,
{RECT_CONFIG, "proxy.config.http.transaction_no_activity_timeout_out", RECD_INT, "30", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
,
- {RECT_CONFIG, "proxy.config.http.transaction_active_timeout_in", RECD_INT, "900", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
+ {RECT_CONFIG, "proxy.config.http.transaction_header_active_timeout_in", RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
+ ,
+ {RECT_CONFIG, "proxy.config.http.transaction_request_active_timeout_in", RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
,
{RECT_CONFIG, "proxy.config.http.transaction_active_timeout_out", RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
,
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.cc
----------------------------------------------------------------------
diff --git a/mgmt/cli/ConfigCmd.cc b/mgmt/cli/ConfigCmd.cc
index a40da20..ae7a5c5 100644
--- a/mgmt/cli/ConfigCmd.cc
+++ b/mgmt/cli/ConfigCmd.cc
@@ -978,8 +978,11 @@ Cmd_ConfigHttp(ClientData clientData, Tcl_Interp * interp, int argc, const char
case CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT:
return (Cli_RecordInt_Action(action, "proxy.config.http.transaction_no_activity_timeout_out", argtable->arg_int));
- case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN:
- return (Cli_RecordInt_Action(action, "proxy.config.http.transaction_active_timeout_in", argtable->arg_int));
+ case CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN:
+ return (Cli_RecordInt_Action(action, "proxy.config.http.transaction_header_active_timeout_in", argtable->arg_int));
+
+ case CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN:
+ return (Cli_RecordInt_Action(action, "proxy.config.http.transaction_request_active_timeout_in", argtable->arg_int));
case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT:
return (Cli_RecordInt_Action(action, "proxy.config.http.transaction_active_timeout_out", argtable->arg_int));
@@ -1039,8 +1042,6 @@ CmdArgs_ConfigHttp()
createArgument("inactive-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE,
(char *) NULL, CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT, "Inactive timeout outbound <seconds>",
(char *) NULL);
- createArgument("active-timeout-in", 1, CLI_ARGV_OPTION_INT_VALUE,
- (char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN, "Active timeout inbound <seconds>", (char *) NULL);
createArgument("active-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE,
(char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT, "Active timeout outbound <seconds>", (char *) NULL);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.h
----------------------------------------------------------------------
diff --git a/mgmt/cli/ConfigCmd.h b/mgmt/cli/ConfigCmd.h
index 42ed681..05473c4 100644
--- a/mgmt/cli/ConfigCmd.h
+++ b/mgmt/cli/ConfigCmd.h
@@ -113,7 +113,8 @@ typedef enum
CMD_CONFIG_HTTP_KEEP_ALIVE_TIMEOUT_OUT,
CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_IN,
CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT,
- CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN,
+ CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN,
+ CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN,
CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT,
CMD_CONFIG_HTTP_REMOVE_FROM,
CMD_CONFIG_HTTP_REMOVE_REFERER,
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ShowCmd.cc
----------------------------------------------------------------------
diff --git a/mgmt/cli/ShowCmd.cc b/mgmt/cli/ShowCmd.cc
index ed71560..138e8cb 100644
--- a/mgmt/cli/ShowCmd.cc
+++ b/mgmt/cli/ShowCmd.cc
@@ -1155,7 +1155,8 @@ ShowHttp()
TSInt keepalive_timeout_out = -1;
TSInt inactivity_timeout_in = -1;
TSInt inactivity_timeout_out = -1;
- TSInt activity_timeout_in = -1;
+ TSInt header_activity_timeout_in = -1;
+ TSInt request_activity_timeout_in = -1;
TSInt activity_timeout_out = -1;
TSInt max_alts = -1;
TSInt remove_from = -1;
@@ -1176,7 +1177,8 @@ ShowHttp()
Cli_RecordGetInt("proxy.config.http.keep_alive_no_activity_timeout_out", &keepalive_timeout_out);
Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_in", &inactivity_timeout_in);
Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_out", &inactivity_timeout_out);
- Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_in", &activity_timeout_in);
+ Cli_RecordGetInt("proxy.config.http.transaction_header_active_timeout_in", &header_activity_timeout_in);
+ Cli_RecordGetInt("proxy.config.http.transaction_request_active_timeout_in", &request_activity_timeout_in);
Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_out", &activity_timeout_out);
Cli_RecordGetInt("proxy.config.cache.limits.http.max_alts", &max_alts);
Cli_RecordGetInt("proxy.config.http.anonymize_remove_from", &remove_from);
@@ -1199,7 +1201,8 @@ ShowHttp()
Cli_Printf("Keep-Alive Timeout Outbound --- %d s\n", keepalive_timeout_out);
Cli_Printf("Inactivity Timeout Inbound ---- %d s\n", inactivity_timeout_in);
Cli_Printf("Inactivity Timeout Outbound --- %d s\n", inactivity_timeout_out);
- Cli_Printf("Activity Timeout Inbound ------ %d s\n", activity_timeout_in);
+ Cli_Printf("Header Activity Timeout Inbound ------ %d s\n", header_activity_timeout_in);
+ Cli_Printf("Request Activity Timeout Inbound ------ %d s\n", request_activity_timeout_in);
Cli_Printf("Activity Timeout Outbound ----- %d s\n", activity_timeout_out);
Cli_Printf("Maximum Number of Alternates -- %d\n", max_alts);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/cli_detailed_command_list.txt
----------------------------------------------------------------------
diff --git a/mgmt/cli/cli_detailed_command_list.txt b/mgmt/cli/cli_detailed_command_list.txt
index 54b2776..670be8c 100644
--- a/mgmt/cli/cli_detailed_command_list.txt
+++ b/mgmt/cli/cli_detailed_command_list.txt
@@ -362,7 +362,8 @@ http HTTP Configuration
Keep-Alive Timeout Outbound --- 10 s (proxy.config.http.keep_alive_no_activity_timeout_out)
Inactivity Timeout Inbound ---- 120 s (proxy.config.http.transaction_no_activity_timeout_in)
Inactivity Timeout Outbound --- 120 s (proxy.config.http.transaction_no_activity_timeout_out)
- Activity Timeout Inbound ------ 7200 s (proxy.config.http.transaction_active_timeout_in)
+ Header Activity Timeout Inbound ------ 7200 s (proxy.config.http.transaction_header_active_timeout_in)
+ Request Activity Timeout Inbound ------ 7200 s (proxy.config.http.transaction_request_active_timeout_in)
Activity Timeout Outbound ----- 7200 s (proxy.config.http.transaction_active_timeout_out)
Maximum Number of Alternates -- 3 (proxy.config.cache.limits.http.max_alts)
Remove the following common headers
@@ -965,7 +966,8 @@ http HTTP Configuration
keep-alive-timeout-out (proxy.config.http.keep_alive_no_activity_timeout_out)
inactive-timeout-in (proxy.config.http.transaction_no_activity_timeout_in)
inactive-timeout-out (proxy.config.http.transaction_no_activity_timeout_out)
- active-timeout-in (proxy.config.http.transaction_active_timeout_in)
+ header-active-timeout-in (proxy.config.http.transaction_header_active_timeout_in)
+ request-active-timeout-in (proxy.config.http.transaction_request_active_timeout_in)
active-timeout-out (proxy.config.http.transaction_active_timeout_out)
ts# config:http keep-alive-timeout-in 10
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index 461a9b7..14cbf1e 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -1190,7 +1190,10 @@ HttpConfig::startup()
"proxy.config.http.transaction_no_activity_timeout_in");
HttpEstablishStaticConfigLongLong(c.oride.transaction_no_activity_timeout_out,
"proxy.config.http.transaction_no_activity_timeout_out");
- HttpEstablishStaticConfigLongLong(c.transaction_active_timeout_in, "proxy.config.http.transaction_active_timeout_in");
+ HttpEstablishStaticConfigLongLong(c.transaction_header_active_timeout_in, "proxy.config.http.transaction_header_active_timeout_in");
+ HttpEstablishStaticConfigLongLong(c.transaction_request_active_timeout_in, "proxy.config.http.transaction_request_active_timeout_in");
+ if (c.transaction_header_active_timeout_in >= c.transaction_request_active_timeout_in)
+ c.transaction_request_active_timeout_in = 0;
HttpEstablishStaticConfigLongLong(c.oride.transaction_active_timeout_out, "proxy.config.http.transaction_active_timeout_out");
HttpEstablishStaticConfigLongLong(c.accept_no_activity_timeout, "proxy.config.http.accept_no_activity_timeout");
@@ -1461,7 +1464,8 @@ HttpConfig::reconfigure()
params->oride.keep_alive_no_activity_timeout_out = m_master.oride.keep_alive_no_activity_timeout_out;
params->oride.transaction_no_activity_timeout_in = m_master.oride.transaction_no_activity_timeout_in;
params->oride.transaction_no_activity_timeout_out = m_master.oride.transaction_no_activity_timeout_out;
- params->transaction_active_timeout_in = m_master.transaction_active_timeout_in;
+ params->oride.transaction_header_active_timeout_in = m_master.oride.transaction_header_active_timeout_in;
+ params->oride.transaction_request_active_timeout_in = m_master.oride.transaction_request_active_timeout_in;
params->oride.transaction_active_timeout_out = m_master.oride.transaction_active_timeout_out;
params->accept_no_activity_timeout = m_master.accept_no_activity_timeout;
params->oride.background_fill_active_timeout = m_master.oride.background_fill_active_timeout;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.h
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index c220463..04e14cb 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -420,6 +420,7 @@ struct OverridableHttpConfigParams {
cache_guaranteed_min_lifetime(0), cache_guaranteed_max_lifetime(31536000), cache_max_stale_age(604800),
keep_alive_no_activity_timeout_in(115), keep_alive_no_activity_timeout_out(120),
transaction_no_activity_timeout_in(30), transaction_no_activity_timeout_out(30),
+ transaction_header_active_timeout_in(0), transaction_request_active_timeout_in(0),
transaction_active_timeout_out(0), origin_max_connections(0),
connect_attempts_max_retries(0), connect_attempts_max_retries_dead_server(3),
connect_attempts_rr_retries(3), connect_attempts_timeout(30),
@@ -558,6 +559,8 @@ struct OverridableHttpConfigParams {
MgmtInt keep_alive_no_activity_timeout_out;
MgmtInt transaction_no_activity_timeout_in;
MgmtInt transaction_no_activity_timeout_out;
+ MgmtInt transaction_header_active_timeout_in;
+ MgmtInt transaction_request_active_timeout_in;
MgmtInt transaction_active_timeout_out;
MgmtInt origin_max_connections;
@@ -669,7 +672,8 @@ public:
MgmtByte session_auth_cache_keep_alive_enabled;
MgmtInt origin_server_pipeline;
MgmtInt user_agent_pipeline;
- MgmtInt transaction_active_timeout_in;
+ MgmtInt transaction_header_active_timeout_in;
+ MgmtInt transaction_request_active_timeout_in;
MgmtInt accept_no_activity_timeout;
////////////////////////////////////
@@ -902,7 +906,8 @@ HttpConfigParams::HttpConfigParams()
session_auth_cache_keep_alive_enabled(1),
origin_server_pipeline(1),
user_agent_pipeline(8),
- transaction_active_timeout_in(900),
+ transaction_header_active_timeout_in(0),
+ transaction_request_active_timeout_in(0),
accept_no_activity_timeout(120),
parent_connect_attempts(4),
per_parent_connect_attempts(2),
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index ba460da..ad9cd4c 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -636,8 +636,11 @@ HttpSM::attach_client_session(HttpClientSession * client_vc, IOBufferReader * bu
// set up timeouts //
/////////////////////////
client_vc->get_netvc()->set_inactivity_timeout(HRTIME_SECONDS(HttpConfig::m_master.accept_no_activity_timeout));
- client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_active_timeout_in));
-
+ if (HttpConfig::m_master.transaction_header_active_timeout_in)
+ client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in));
+ else if (HttpConfig::m_master.transaction_request_active_timeout_in)
+ client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in));
+
// Add our state sm to the sm list
state_add_to_list(EVENT_NONE, NULL);
}
@@ -758,6 +761,7 @@ HttpSM::state_read_client_request_header(int event, void *data)
milestones.ua_read_header_done = ink_get_hrtime();
}
+ int method;
switch (state) {
case PARSE_ERROR:
DebugSM("http", "[%" PRId64 "] error parsing client request header", sm_id);
@@ -765,6 +769,7 @@ HttpSM::state_read_client_request_header(int event, void *data)
// Disable further I/O on the client
ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone;
+ ua_session->get_netvc()->cancel_active_timeout();
call_transact_and_set_next_state(HttpTransact::BadRequest);
break;
@@ -776,6 +781,7 @@ HttpSM::state_read_client_request_header(int event, void *data)
// Disable further I/O on the client
ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone;
+ ua_session->get_netvc()->cancel_active_timeout();
call_transact_and_set_next_state(HttpTransact::BadRequest);
break;
} else if (event == VC_EVENT_READ_COMPLETE) {
@@ -819,6 +825,21 @@ HttpSM::state_read_client_request_header(int event, void *data)
(t_state.method == HTTP_WKSIDX_POST && HttpConfig::m_master.post_copy_size))
enable_redirection = HttpConfig::m_master.redirection_enabled;
+ method = t_state.hdr_info.client_request.method_get_wksidx();
+ if ((method == HTTP_WKSIDX_POST || method == HTTP_WKSIDX_PUT || (t_state.hdr_info.extension_method && t_state.hdr_info.request_content_length > 0))) {
+ // is setted HttpConfig::m_master.transaction_header_active_timeout_in, so should reset active_timeout_in
+ if (ua_session->get_netvc()->get_active_timeout() == HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in)) {
+ if (HttpConfig::m_master.transaction_request_active_timeout_in) {
+ if (HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in) > (milestones.ua_read_header_done - milestones.sm_start)) {
+ ua_session->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in) - (milestones.ua_read_header_done - milestones.sm_start));
+ }
+ } else {
+ ua_session->get_netvc()->cancel_active_timeout();
+ }
+ }
+ } else {
+ ua_session->get_netvc()->cancel_active_timeout();
+ }
call_transact_and_set_next_state(HttpTransact::ModifyRequest);
break;
@@ -3268,6 +3289,7 @@ HttpSM::tunnel_handler_post_ua(int event, HttpTunnelProducer * p)
case VC_EVENT_ACTIVE_TIMEOUT:
// Did not complete post tunnling. Abort the
// server and close the ua
+ ua_session->get_netvc()->cancel_active_timeout();
p->handler_state = HTTP_SM_POST_UA_FAIL;
tunnel.chain_abort_all(p);
p->read_vio = NULL;
@@ -3297,6 +3319,7 @@ HttpSM::tunnel_handler_post_ua(int event, HttpTunnelProducer * p)
p->handler_state = HTTP_SM_POST_SUCCESS;
p->read_success = true;
ua_entry->in_tunnel = false;
+ ua_session->get_netvc()->cancel_active_timeout();
if (p->do_dechunking || p->do_chunked_passthru) {
if (p->chunked_handler.truncation) {
Re: git commit: TS-2107: change
proxy.config.http.transaction_active_timeout_in
Posted by Igor Galić <i....@brainsware.org>.
----- Original Message -----
> Updated Branches:
> refs/heads/master 2e8f0c352 -> e5d27294b
>
>
> TS-2107: change proxy.config.http.transaction_active_timeout_in
>
> split proxy.config.http.transaction_active_timeout_in to
> proxy.config.http.transaction_header_timeout_in
> and proxy.config.http.transaction_request_timeout_in.
doc/reference/configuration/records.config.en.rst
644:.. ts:cv:: CONFIG proxy.config.http.transaction_active_timeout_in INT 0
lib/perl/examples/forw_proxy_conf.pl
36:$recedit->set(conf => "proxy.config.http.transaction_active_timeout_in", val => "1800");
lib/perl/lib/Apache/TS/AdminClient.pm
517: proxy.config.http.transaction_active_timeout_in
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/e5d27294
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/e5d27294
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/e5d27294
>
> Branch: refs/heads/master
> Commit: e5d27294be996520588825bad8c82788e15dde85
> Parents: 2e8f0c3
> Author: Chen Bin <ku...@taobao.com>
> Authored: Thu Aug 22 13:47:30 2013 +0800
> Committer: Chen Bin <ku...@taobao.com>
> Committed: Thu Aug 22 13:49:39 2013 +0800
>
> ----------------------------------------------------------------------
> CHANGES | 3 +++
> mgmt/RecordsConfig.cc | 4 +++-
> mgmt/cli/ConfigCmd.cc | 9 +++++----
> mgmt/cli/ConfigCmd.h | 3 ++-
> mgmt/cli/ShowCmd.cc | 9 ++++++---
> mgmt/cli/cli_detailed_command_list.txt | 6 ++++--
> proxy/http/HttpConfig.cc | 8 ++++++--
> proxy/http/HttpConfig.h | 9 +++++++--
> proxy/http/HttpSM.cc | 27 +++++++++++++++++++++++++--
> 9 files changed, 61 insertions(+), 17 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/CHANGES
> ----------------------------------------------------------------------
> diff --git a/CHANGES b/CHANGES
> index c2e5d1b..cadbb34 100644
> --- a/CHANGES
> +++ b/CHANGES
> @@ -2,6 +2,9 @@
> Changes with Apache Traffic Server 4.1.0
>
>
> + *) [TS-2107] split proxy.config.http.transaction_active_timeout_in to
> proxy.config.http.transaction_header_timeout_in
> + and proxy.config.http.transaction_request_timeout_in.
> +
> *) [TS-2114] buffer_upload plugin defines true and false
> Author: Kit Chan <ch...@gmail.com>
>
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/RecordsConfig.cc
> ----------------------------------------------------------------------
> diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc
> index 11f60c7..8e90ac1 100644
> --- a/mgmt/RecordsConfig.cc
> +++ b/mgmt/RecordsConfig.cc
> @@ -506,7 +506,9 @@ RecordElement RecordsConfig[] = {
> ,
> {RECT_CONFIG, "proxy.config.http.transaction_no_activity_timeout_out",
> RECD_INT, "30", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
> ,
> - {RECT_CONFIG, "proxy.config.http.transaction_active_timeout_in", RECD_INT,
> "900", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
> + {RECT_CONFIG, "proxy.config.http.transaction_header_active_timeout_in",
> RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
> + ,
> + {RECT_CONFIG, "proxy.config.http.transaction_request_active_timeout_in",
> RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
> ,
> {RECT_CONFIG, "proxy.config.http.transaction_active_timeout_out",
> RECD_INT, "0", RECU_DYNAMIC, RR_NULL, RECC_STR, "^[0-9]+$", RECA_NULL}
> ,
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.cc
> ----------------------------------------------------------------------
> diff --git a/mgmt/cli/ConfigCmd.cc b/mgmt/cli/ConfigCmd.cc
> index a40da20..ae7a5c5 100644
> --- a/mgmt/cli/ConfigCmd.cc
> +++ b/mgmt/cli/ConfigCmd.cc
> @@ -978,8 +978,11 @@ Cmd_ConfigHttp(ClientData clientData, Tcl_Interp *
> interp, int argc, const char
> case CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT:
> return (Cli_RecordInt_Action(action,
> "proxy.config.http.transaction_no_activity_timeout_out",
> argtable->arg_int));
>
> - case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN:
> - return (Cli_RecordInt_Action(action,
> "proxy.config.http.transaction_active_timeout_in", argtable->arg_int));
> + case CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN:
> + return (Cli_RecordInt_Action(action,
> "proxy.config.http.transaction_header_active_timeout_in",
> argtable->arg_int));
> +
> + case CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN:
> + return (Cli_RecordInt_Action(action,
> "proxy.config.http.transaction_request_active_timeout_in",
> argtable->arg_int));
>
> case CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT:
> return (Cli_RecordInt_Action(action,
> "proxy.config.http.transaction_active_timeout_out",
> argtable->arg_int));
> @@ -1039,8 +1042,6 @@ CmdArgs_ConfigHttp()
> createArgument("inactive-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE,
> (char *) NULL, CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT,
> "Inactive timeout outbound <seconds>",
> (char *) NULL);
> - createArgument("active-timeout-in", 1, CLI_ARGV_OPTION_INT_VALUE,
> - (char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN, "Active
> timeout inbound <seconds>", (char *) NULL);
> createArgument("active-timeout-out", 1, CLI_ARGV_OPTION_INT_VALUE,
> (char *) NULL, CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT, "Active
> timeout outbound <seconds>", (char *) NULL);
>
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ConfigCmd.h
> ----------------------------------------------------------------------
> diff --git a/mgmt/cli/ConfigCmd.h b/mgmt/cli/ConfigCmd.h
> index 42ed681..05473c4 100644
> --- a/mgmt/cli/ConfigCmd.h
> +++ b/mgmt/cli/ConfigCmd.h
> @@ -113,7 +113,8 @@ typedef enum
> CMD_CONFIG_HTTP_KEEP_ALIVE_TIMEOUT_OUT,
> CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_IN,
> CMD_CONFIG_HTTP_INACTIVE_TIMEOUT_OUT,
> - CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_IN,
> + CMD_CONFIG_HTTP_HEADER_ACTIVE_TIMEOUT_IN,
> + CMD_CONFIG_HTTP_REQUEST_ACTIVE_TIMEOUT_IN,
> CMD_CONFIG_HTTP_ACTIVE_TIMEOUT_OUT,
> CMD_CONFIG_HTTP_REMOVE_FROM,
> CMD_CONFIG_HTTP_REMOVE_REFERER,
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/ShowCmd.cc
> ----------------------------------------------------------------------
> diff --git a/mgmt/cli/ShowCmd.cc b/mgmt/cli/ShowCmd.cc
> index ed71560..138e8cb 100644
> --- a/mgmt/cli/ShowCmd.cc
> +++ b/mgmt/cli/ShowCmd.cc
> @@ -1155,7 +1155,8 @@ ShowHttp()
> TSInt keepalive_timeout_out = -1;
> TSInt inactivity_timeout_in = -1;
> TSInt inactivity_timeout_out = -1;
> - TSInt activity_timeout_in = -1;
> + TSInt header_activity_timeout_in = -1;
> + TSInt request_activity_timeout_in = -1;
> TSInt activity_timeout_out = -1;
> TSInt max_alts = -1;
> TSInt remove_from = -1;
> @@ -1176,7 +1177,8 @@ ShowHttp()
> Cli_RecordGetInt("proxy.config.http.keep_alive_no_activity_timeout_out",
> &keepalive_timeout_out);
> Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_in",
> &inactivity_timeout_in);
> Cli_RecordGetInt("proxy.config.http.transaction_no_activity_timeout_out",
> &inactivity_timeout_out);
> - Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_in",
> &activity_timeout_in);
> + Cli_RecordGetInt("proxy.config.http.transaction_header_active_timeout_in",
> &header_activity_timeout_in);
> +
> Cli_RecordGetInt("proxy.config.http.transaction_request_active_timeout_in",
> &request_activity_timeout_in);
> Cli_RecordGetInt("proxy.config.http.transaction_active_timeout_out",
> &activity_timeout_out);
> Cli_RecordGetInt("proxy.config.cache.limits.http.max_alts", &max_alts);
> Cli_RecordGetInt("proxy.config.http.anonymize_remove_from", &remove_from);
> @@ -1199,7 +1201,8 @@ ShowHttp()
> Cli_Printf("Keep-Alive Timeout Outbound --- %d s\n",
> keepalive_timeout_out);
> Cli_Printf("Inactivity Timeout Inbound ---- %d s\n",
> inactivity_timeout_in);
> Cli_Printf("Inactivity Timeout Outbound --- %d s\n",
> inactivity_timeout_out);
> - Cli_Printf("Activity Timeout Inbound ------ %d s\n", activity_timeout_in);
> + Cli_Printf("Header Activity Timeout Inbound ------ %d s\n",
> header_activity_timeout_in);
> + Cli_Printf("Request Activity Timeout Inbound ------ %d s\n",
> request_activity_timeout_in);
> Cli_Printf("Activity Timeout Outbound ----- %d s\n",
> activity_timeout_out);
> Cli_Printf("Maximum Number of Alternates -- %d\n", max_alts);
>
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/mgmt/cli/cli_detailed_command_list.txt
> ----------------------------------------------------------------------
> diff --git a/mgmt/cli/cli_detailed_command_list.txt
> b/mgmt/cli/cli_detailed_command_list.txt
> index 54b2776..670be8c 100644
> --- a/mgmt/cli/cli_detailed_command_list.txt
> +++ b/mgmt/cli/cli_detailed_command_list.txt
> @@ -362,7 +362,8 @@ http HTTP Configuration
> Keep-Alive Timeout Outbound --- 10 s
> (proxy.config.http.keep_alive_no_activity_timeout_out)
> Inactivity Timeout Inbound ---- 120 s
> (proxy.config.http.transaction_no_activity_timeout_in)
> Inactivity Timeout Outbound --- 120 s
> (proxy.config.http.transaction_no_activity_timeout_out)
> - Activity Timeout Inbound ------ 7200 s
> (proxy.config.http.transaction_active_timeout_in)
> + Header Activity Timeout Inbound ------ 7200 s
> (proxy.config.http.transaction_header_active_timeout_in)
> + Request Activity Timeout Inbound ------ 7200 s
> (proxy.config.http.transaction_request_active_timeout_in)
> Activity Timeout Outbound ----- 7200 s
> (proxy.config.http.transaction_active_timeout_out)
> Maximum Number of Alternates -- 3
> (proxy.config.cache.limits.http.max_alts)
> Remove the following common headers
> @@ -965,7 +966,8 @@ http HTTP Configuration
> keep-alive-timeout-out
> (proxy.config.http.keep_alive_no_activity_timeout_out)
> inactive-timeout-in
> (proxy.config.http.transaction_no_activity_timeout_in)
> inactive-timeout-out
> (proxy.config.http.transaction_no_activity_timeout_out)
> - active-timeout-in
> (proxy.config.http.transaction_active_timeout_in)
> + header-active-timeout-in
> (proxy.config.http.transaction_header_active_timeout_in)
> + request-active-timeout-in
> (proxy.config.http.transaction_request_active_timeout_in)
> active-timeout-out
> (proxy.config.http.transaction_active_timeout_out)
>
> ts# config:http keep-alive-timeout-in 10
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.cc
> ----------------------------------------------------------------------
> diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
> index 461a9b7..14cbf1e 100644
> --- a/proxy/http/HttpConfig.cc
> +++ b/proxy/http/HttpConfig.cc
> @@ -1190,7 +1190,10 @@ HttpConfig::startup()
> "proxy.config.http.transaction_no_activity_timeout_in");
> HttpEstablishStaticConfigLongLong(c.oride.transaction_no_activity_timeout_out,
> "proxy.config.http.transaction_no_activity_timeout_out");
> - HttpEstablishStaticConfigLongLong(c.transaction_active_timeout_in,
> "proxy.config.http.transaction_active_timeout_in");
> + HttpEstablishStaticConfigLongLong(c.transaction_header_active_timeout_in,
> "proxy.config.http.transaction_header_active_timeout_in");
> + HttpEstablishStaticConfigLongLong(c.transaction_request_active_timeout_in,
> "proxy.config.http.transaction_request_active_timeout_in");
> + if (c.transaction_header_active_timeout_in >=
> c.transaction_request_active_timeout_in)
> + c.transaction_request_active_timeout_in = 0;
> HttpEstablishStaticConfigLongLong(c.oride.transaction_active_timeout_out,
> "proxy.config.http.transaction_active_timeout_out");
> HttpEstablishStaticConfigLongLong(c.accept_no_activity_timeout,
> "proxy.config.http.accept_no_activity_timeout");
>
> @@ -1461,7 +1464,8 @@ HttpConfig::reconfigure()
> params->oride.keep_alive_no_activity_timeout_out =
> m_master.oride.keep_alive_no_activity_timeout_out;
> params->oride.transaction_no_activity_timeout_in =
> m_master.oride.transaction_no_activity_timeout_in;
> params->oride.transaction_no_activity_timeout_out =
> m_master.oride.transaction_no_activity_timeout_out;
> - params->transaction_active_timeout_in =
> m_master.transaction_active_timeout_in;
> + params->oride.transaction_header_active_timeout_in =
> m_master.oride.transaction_header_active_timeout_in;
> + params->oride.transaction_request_active_timeout_in =
> m_master.oride.transaction_request_active_timeout_in;
> params->oride.transaction_active_timeout_out =
> m_master.oride.transaction_active_timeout_out;
> params->accept_no_activity_timeout = m_master.accept_no_activity_timeout;
> params->oride.background_fill_active_timeout =
> m_master.oride.background_fill_active_timeout;
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpConfig.h
> ----------------------------------------------------------------------
> diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
> index c220463..04e14cb 100644
> --- a/proxy/http/HttpConfig.h
> +++ b/proxy/http/HttpConfig.h
> @@ -420,6 +420,7 @@ struct OverridableHttpConfigParams {
> cache_guaranteed_min_lifetime(0),
> cache_guaranteed_max_lifetime(31536000), cache_max_stale_age(604800),
> keep_alive_no_activity_timeout_in(115),
> keep_alive_no_activity_timeout_out(120),
> transaction_no_activity_timeout_in(30),
> transaction_no_activity_timeout_out(30),
> + transaction_header_active_timeout_in(0),
> transaction_request_active_timeout_in(0),
> transaction_active_timeout_out(0), origin_max_connections(0),
> connect_attempts_max_retries(0),
> connect_attempts_max_retries_dead_server(3),
> connect_attempts_rr_retries(3), connect_attempts_timeout(30),
> @@ -558,6 +559,8 @@ struct OverridableHttpConfigParams {
> MgmtInt keep_alive_no_activity_timeout_out;
> MgmtInt transaction_no_activity_timeout_in;
> MgmtInt transaction_no_activity_timeout_out;
> + MgmtInt transaction_header_active_timeout_in;
> + MgmtInt transaction_request_active_timeout_in;
> MgmtInt transaction_active_timeout_out;
> MgmtInt origin_max_connections;
>
> @@ -669,7 +672,8 @@ public:
> MgmtByte session_auth_cache_keep_alive_enabled;
> MgmtInt origin_server_pipeline;
> MgmtInt user_agent_pipeline;
> - MgmtInt transaction_active_timeout_in;
> + MgmtInt transaction_header_active_timeout_in;
> + MgmtInt transaction_request_active_timeout_in;
> MgmtInt accept_no_activity_timeout;
>
> ////////////////////////////////////
> @@ -902,7 +906,8 @@ HttpConfigParams::HttpConfigParams()
> session_auth_cache_keep_alive_enabled(1),
> origin_server_pipeline(1),
> user_agent_pipeline(8),
> - transaction_active_timeout_in(900),
> + transaction_header_active_timeout_in(0),
> + transaction_request_active_timeout_in(0),
> accept_no_activity_timeout(120),
> parent_connect_attempts(4),
> per_parent_connect_attempts(2),
>
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/e5d27294/proxy/http/HttpSM.cc
> ----------------------------------------------------------------------
> diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
> index ba460da..ad9cd4c 100644
> --- a/proxy/http/HttpSM.cc
> +++ b/proxy/http/HttpSM.cc
> @@ -636,8 +636,11 @@ HttpSM::attach_client_session(HttpClientSession *
> client_vc, IOBufferReader * bu
> // set up timeouts //
> /////////////////////////
> client_vc->get_netvc()->set_inactivity_timeout(HRTIME_SECONDS(HttpConfig::m_master.accept_no_activity_timeout));
> -
> client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_active_timeout_in));
> -
> + if (HttpConfig::m_master.transaction_header_active_timeout_in)
> +
> client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in));
> + else if (HttpConfig::m_master.transaction_request_active_timeout_in)
> +
> client_vc->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in));
> +
> // Add our state sm to the sm list
> state_add_to_list(EVENT_NONE, NULL);
> }
> @@ -758,6 +761,7 @@ HttpSM::state_read_client_request_header(int event, void
> *data)
> milestones.ua_read_header_done = ink_get_hrtime();
> }
>
> + int method;
> switch (state) {
> case PARSE_ERROR:
> DebugSM("http", "[%" PRId64 "] error parsing client request header",
> sm_id);
> @@ -765,6 +769,7 @@ HttpSM::state_read_client_request_header(int event, void
> *data)
> // Disable further I/O on the client
> ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone;
>
> + ua_session->get_netvc()->cancel_active_timeout();
> call_transact_and_set_next_state(HttpTransact::BadRequest);
> break;
>
> @@ -776,6 +781,7 @@ HttpSM::state_read_client_request_header(int event, void
> *data)
> // Disable further I/O on the client
> ua_entry->read_vio->nbytes = ua_entry->read_vio->ndone;
>
> + ua_session->get_netvc()->cancel_active_timeout();
> call_transact_and_set_next_state(HttpTransact::BadRequest);
> break;
> } else if (event == VC_EVENT_READ_COMPLETE) {
> @@ -819,6 +825,21 @@ HttpSM::state_read_client_request_header(int event, void
> *data)
> (t_state.method == HTTP_WKSIDX_POST &&
> HttpConfig::m_master.post_copy_size))
> enable_redirection = HttpConfig::m_master.redirection_enabled;
>
> + method = t_state.hdr_info.client_request.method_get_wksidx();
> + if ((method == HTTP_WKSIDX_POST || method == HTTP_WKSIDX_PUT ||
> (t_state.hdr_info.extension_method &&
> t_state.hdr_info.request_content_length > 0))) {
> + // is setted
> HttpConfig::m_master.transaction_header_active_timeout_in, so should reset
> active_timeout_in
> + if (ua_session->get_netvc()->get_active_timeout() ==
> HRTIME_SECONDS(HttpConfig::m_master.transaction_header_active_timeout_in)) {
> + if (HttpConfig::m_master.transaction_request_active_timeout_in) {
> + if
> (HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in)
> > (milestones.ua_read_header_done - milestones.sm_start)) {
> +
> ua_session->get_netvc()->set_active_timeout(HRTIME_SECONDS(HttpConfig::m_master.transaction_request_active_timeout_in)
> - (milestones.ua_read_header_done - milestones.sm_start));
> + }
> + } else {
> + ua_session->get_netvc()->cancel_active_timeout();
> + }
> + }
> + } else {
> + ua_session->get_netvc()->cancel_active_timeout();
> + }
> call_transact_and_set_next_state(HttpTransact::ModifyRequest);
>
> break;
> @@ -3268,6 +3289,7 @@ HttpSM::tunnel_handler_post_ua(int event,
> HttpTunnelProducer * p)
> case VC_EVENT_ACTIVE_TIMEOUT:
> // Did not complete post tunnling. Abort the
> // server and close the ua
> + ua_session->get_netvc()->cancel_active_timeout();
> p->handler_state = HTTP_SM_POST_UA_FAIL;
> tunnel.chain_abort_all(p);
> p->read_vio = NULL;
> @@ -3297,6 +3319,7 @@ HttpSM::tunnel_handler_post_ua(int event,
> HttpTunnelProducer * p)
> p->handler_state = HTTP_SM_POST_SUCCESS;
> p->read_success = true;
> ua_entry->in_tunnel = false;
> + ua_session->get_netvc()->cancel_active_timeout();
>
> if (p->do_dechunking || p->do_chunked_passthru) {
> if (p->chunked_handler.truncation) {
>
>
--
Igor Galić
Tel: +43 (0) 664 886 22 883
Mail: i.galic@brainsware.org
URL: http://brainsware.org/
GPG: 6880 4155 74BD FD7C B515 2EA5 4B1D 9E08 A097 C9AE