Skip to content

Commit b852dc6

Browse files
committed
Delay cleanup when cache write continues after early client response
1 parent c819d6a commit b852dc6

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

proxy/http/Http1ClientSession.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ Http1ClientSession::do_io_close(int alerrno)
253253
if (transact_count == released_transactions) {
254254
half_close = false;
255255
}
256+
257+
// Clean up the write VIO in case of inactivity timeout
258+
this->do_io_write(nullptr, 0, nullptr);
259+
256260
if (half_close && this->trans.get_sm()) {
257261
read_state = HCS_HALF_CLOSED;
258262
SET_HANDLER(&Http1ClientSession::state_wait_for_close);
@@ -286,7 +290,6 @@ Http1ClientSession::do_io_close(int alerrno)
286290
HTTP_SUM_DYN_STAT(http_transactions_per_client_con, transact_count);
287291
HTTP_DECREMENT_DYN_STAT(http_current_client_connections_stat);
288292
conn_decrease = false;
289-
// the netvc will be closed in the session free
290293
}
291294
if (transact_count == released_transactions) {
292295
this->destroy();

proxy/http2/Http2ClientSession.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,15 @@ Http2ClientSession::do_io_close(int alerrno)
300300
ink_assert(this->mutex->thread_holding == this_ethread());
301301
send_connection_event(&this->connection_state, HTTP2_SESSION_EVENT_FINI, this);
302302

303-
// client_vc will be closed in Http2ClientSession::free
304-
305303
{
306304
SCOPED_MUTEX_LOCK(lock, this->connection_state.mutex, this_ethread());
307305
this->connection_state.release_stream();
308306
}
309307

310308
this->clear_session_active();
309+
310+
// Clean up the write VIO in case of inactivity timeout
311+
this->do_io_write(nullptr, 0, nullptr);
311312
}
312313

313314
void

0 commit comments

Comments
 (0)