File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed
Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -286,6 +286,8 @@ Http1ClientSession::do_io_close(int alerrno)
286286 _reader->consume (_reader->read_avail ());
287287 } else {
288288 read_state = HCS_CLOSED;
289+ SET_HANDLER (&Http1ClientSession::state_wait_for_sm_shutdown);
290+ ka_vio = client_vc->do_io_read (this , INT64_MAX, read_buffer);
289291 HttpSsnDebug (" [%" PRId64 " ] session closed" , con_id);
290292 HTTP_SUM_DYN_STAT (http_transactions_per_client_con, transact_count);
291293 HTTP_DECREMENT_DYN_STAT (http_current_client_connections_stat);
@@ -296,6 +298,17 @@ Http1ClientSession::do_io_close(int alerrno)
296298 }
297299}
298300
301+ int
302+ Http1ClientSession::state_wait_for_sm_shutdown (int event, void *data)
303+ {
304+ STATE_ENTER (&Http1ClientSession::state_wait_for_sm_shutdown, event, data);
305+ ink_assert (data == ka_vio);
306+ ink_assert (read_state == HCS_CLOSED);
307+
308+ // Just eat IO events until the state machine has finished
309+ return 0 ;
310+ }
311+
299312int
300313Http1ClientSession::state_wait_for_close (int event, void *data)
301314{
Original file line number Diff line number Diff line change @@ -99,6 +99,7 @@ class Http1ClientSession : public ProxySession
9999 int state_keep_alive (int event, void *data);
100100 int state_slave_keep_alive (int event, void *data);
101101 int state_wait_for_close (int event, void *data);
102+ int state_wait_for_sm_shutdown (int event, void *data);
102103
103104 enum C_Read_State {
104105 HCS_INIT,
You can’t perform that action at this time.
0 commit comments