diff --git a/src/session.c b/src/session.c index 6db9f31c5..7bc2248d1 100644 --- a/src/session.c +++ b/src/session.c @@ -545,6 +545,7 @@ static int sess_update_st_con_tcp(struct session *s, struct stream_interface *si si->flags &= ~SI_FL_CAP_SPLICE; fd_delete(si_fd(si)); + si_data_close(si); if (si->release) si->release(si); diff --git a/src/sock_raw.c b/src/sock_raw.c index 213d46972..5194ea441 100644 --- a/src/sock_raw.c +++ b/src/sock_raw.c @@ -811,6 +811,7 @@ static void sock_raw_shutw(struct stream_interface *si) case SI_ST_TAR: si->state = SI_ST_DIS; + si_data_close(si); if (si->release) si->release(si); default: @@ -845,6 +846,7 @@ static void sock_raw_shutr(struct stream_interface *si) si->state = SI_ST_DIS; si->exp = TICK_ETERNITY; + si_data_close(si); if (si->release) si->release(si); return; diff --git a/src/stream_interface.c b/src/stream_interface.c index c2f7b94f4..ceed60274 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -227,6 +227,7 @@ static void stream_int_shutr(struct stream_interface *si) si->state = SI_ST_DIS; si->exp = TICK_ETERNITY; + si_data_close(si); if (si->release) si->release(si); } @@ -263,6 +264,7 @@ static void stream_int_shutw(struct stream_interface *si) si->state = SI_ST_DIS; /* fall through */ + si_data_close(si); if (si->release) si->release(si); default: