You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by us...@apache.org on 2013/03/22 16:14:52 UTC
git commit: TS-1708: Using tr-pass port option causes requests with
large headers to hang
Updated Branches:
refs/heads/master f41323e01 -> ec019615f
TS-1708: Using tr-pass port option causes requests with large headers to hang
If 4KB of headers are read and we haven't decided on requets validity yet, disregard
tr-pass option in order to avoid blocking the writer
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ec019615
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ec019615
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ec019615
Branch: refs/heads/master
Commit: ec019615ff15894e01b91ea7b593a76534883b3b
Parents: f41323e
Author: Uri Shachar <us...@apache.org>
Authored: Fri Mar 22 17:10:02 2013 +0200
Committer: Uri Shachar <us...@apache.org>
Committed: Fri Mar 22 17:10:02 2013 +0200
----------------------------------------------------------------------
CHANGES | 2 ++
proxy/http/HttpSM.cc | 12 ++++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec019615/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 4669806..61e5938 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@
Changes with Apache Traffic Server 3.3.2
+ *) [TS-1708] Using tr-pass port option causes requests with large headers to hang
+
*) [TS-1734] Remove dead code that invokes missing vmap_config tool
Author: John Kew <jo...@gmail.com>
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ec019615/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index bbd6495..17f3ba7 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -728,9 +728,9 @@ HttpSM::state_read_client_request_header(int event, void *data)
if (event == VC_EVENT_READ_READY &&
state == PARSE_ERROR &&
- is_transparent_passthrough_allowed()) {
+ is_transparent_passthrough_allowed() &&
+ ua_raw_buffer_reader != NULL) {
- ink_assert(ua_raw_buffer_reader != NULL);
DebugSM("http", "[%" PRId64 "] first request on connection failed parsing, switching to passthrough.", sm_id);
t_state.transparent_passthrough = true;
@@ -773,6 +773,14 @@ HttpSM::state_read_client_request_header(int event, void *data)
call_transact_and_set_next_state(HttpTransact::BadRequest);
break;
} else {
+ if (is_transparent_passthrough_allowed() &&
+ ua_raw_buffer_reader != NULL &&
+ ua_raw_buffer_reader->get_current_block()->write_avail() <= 0) {
+ //Disable passthrough regardless of eventual parsing failure or success -- otherwise
+ //we either have to consume some data or risk blocking the writer.
+ ua_raw_buffer_reader->dealloc();
+ ua_raw_buffer_reader = NULL;
+ }
ua_entry->read_vio->reenable();
return VC_EVENT_CONT;
}