diff --git a/include/haproxy/stream_interface.h b/include/haproxy/stream_interface.h index 88c8101d0..c1c2b03fa 100644 --- a/include/haproxy/stream_interface.h +++ b/include/haproxy/stream_interface.h @@ -177,17 +177,17 @@ static inline void si_release_endpoint(struct stream_interface *si) if (!si->end) return; - if ((cs = objt_cs(si->end))) { + if ((appctx = objt_appctx(si->end))) { + if (appctx->applet->release && !si_state_in(si->state, SI_SB_DIS|SI_SB_CLO)) + appctx->applet->release(appctx); + appctx_free(appctx); + } + else if ((cs = objt_cs(si->end))) { if (si->wait_event.events != 0) cs->conn->mux->unsubscribe(cs, si->wait_event.events, &si->wait_event); cs_destroy(cs); } - else if ((appctx = objt_appctx(si->end))) { - if (appctx->applet->release && !si_state_in(si->state, SI_SB_DIS|SI_SB_CLO)) - appctx->applet->release(appctx); - appctx_free(appctx); - } si_detach_endpoint(si); }