----- Original Message ----- > Updated Branches: > refs/heads/master 80734a8d6 -> 948df744d > > > TS-2178: Disable client side keep alive if server is not and using client > 4-tuple > > > Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo > Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/948df744 > Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/948df744 > Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/948df744 > > Branch: refs/heads/master > Commit: 948df744d1e64f56daa37e46320b05460da6cb28 > Parents: 80734a8 > Author: Alan M. Carroll <a...@network-geographics.com> > Authored: Sat Nov 2 19:52:04 2013 -0500 > Committer: Alan M. Carroll <a...@network-geographics.com> > Committed: Sat Nov 2 19:52:04 2013 -0500 > > ---------------------------------------------------------------------- > proxy/http/HttpTransact.cc | 7 +++++++ > 1 file changed, 7 insertions(+) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/trafficserver/blob/948df744/proxy/http/HttpTransact.cc > ---------------------------------------------------------------------- > diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc > index de4052a..a0fb53c 100644 > --- a/proxy/http/HttpTransact.cc > +++ b/proxy/http/HttpTransact.cc > @@ -5580,8 +5580,15 @@ > HttpTransact::initialize_state_variables_from_response(State* s, HTTPHdr* > incomi > if (s->current.server->keep_alive == HTTP_KEEPALIVE) { > if (!s->cop_test_page) > DebugTxn("http_hdrs", "[initialize_state_variables_from_response]" > "Server is keep-alive."); > + } else if (s->state_machine->ua_session && > s->state_machine->ua_session->f_outbound_transparent && > s->state_machine->t_state.http_config_param->use_client_source_port) { > + /* If we are reusing the client<->ATS 4-tuple for ATS<->server then if > the server side is closed, we can't > + re-open it because the 4-tuple may still be in the processing of
processing -> process > shutting down. So if the server isn't > + keep alive we must turn that off for the client as well. > + */ > + s->state_machine->t_state.client_info.keep_alive = HTTP_NO_KEEPALIVE; > } > > + > HTTPStatus status_code = incoming_response->status_get(); > if (is_response_body_precluded(status_code, s->method)) { > s->hdr_info.response_content_length = 0; > > -- Igor Galić Tel: +43 (0) 664 886 22 883 Mail: i.ga...@brainsware.org URL: http://brainsware.org/ GPG: 8716 7A9F 989B ABD5 100F 4008 F266 55D6 2998 1641