TS-3665: Redirect logic causing debug asserts (cherry picked from commit e46eea5f1eee107a19a8412fef8b967a2f162457)
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/fd1f7543 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/fd1f7543 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/fd1f7543 Branch: refs/heads/5.3.x Commit: fd1f7543b355a3c8f5fe1d65f04dee19383e1d1d Parents: 75f2860 Author: shinrich <[email protected]> Authored: Tue Jun 9 08:16:47 2015 -0500 Committer: Phil Sorber <[email protected]> Committed: Mon Jun 29 13:48:01 2015 -0600 ---------------------------------------------------------------------- proxy/http/HttpCacheSM.cc | 8 ++++++-- proxy/http/HttpSM.cc | 2 -- 2 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/fd1f7543/proxy/http/HttpCacheSM.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpCacheSM.cc b/proxy/http/HttpCacheSM.cc index 1025796..ff02e3a 100644 --- a/proxy/http/HttpCacheSM.cc +++ b/proxy/http/HttpCacheSM.cc @@ -106,7 +106,11 @@ HttpCacheSM::state_cache_open_read(int event, void *data) switch (event) { case CACHE_EVENT_OPEN_READ: HTTP_INCREMENT_DYN_STAT(http_current_cache_connections_stat); - ink_assert(cache_read_vc == NULL); + ink_assert((cache_read_vc == NULL) || master_sm->t_state.redirect_info.redirect_in_process); + if (cache_read_vc) { + // redirect follow in progress, close the previous cache_read_vc + close_read(); + } open_read_cb = true; cache_read_vc = (CacheVConnection *)data; master_sm->handleEvent(event, data); @@ -267,7 +271,7 @@ HttpCacheSM::open_write(URL *url, HTTPHdr *request, CacheHTTPInfo *old_info, tim { SET_HANDLER(&HttpCacheSM::state_cache_open_write); ink_assert(pending_action == NULL); - ink_assert(cache_write_vc == NULL); + ink_assert((cache_write_vc == NULL) || master_sm->t_state.redirect_info.redirect_in_process); // INKqa12119 open_write_cb = false; open_write_tries++; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/fd1f7543/proxy/http/HttpSM.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc index 048b41d..096f2c5 100644 --- a/proxy/http/HttpSM.cc +++ b/proxy/http/HttpSM.cc @@ -1584,7 +1584,6 @@ HttpSM::handle_api_return() case HttpTransact::SM_ACTION_REDIRECT_READ: { // Clean up from any communication with previous servers release_server_session(); - // tunnel.deallocate_redirect_postdata_buffers(); call_transact_and_set_next_state(HttpTransact::HandleRequest); break; @@ -4473,7 +4472,6 @@ HttpSM::do_cache_prepare_action(HttpCacheSM *c_sm, CacheHTTPInfo *object_read_in bool restore_client_request = false; ink_assert(!pending_action); - ink_assert(c_sm->cache_write_vc == NULL); if (t_state.api_lock_url == HttpTransact::LOCK_URL_FIRST) { if (t_state.redirect_info.redirect_in_process) {
