From: Willy Tarreau Date: Mon, 6 Aug 2012 10:23:51 +0000 (+0200) Subject: MINOR: sock_raw: move calls to si_data_close upper X-Git-Tag: v1.5-dev12~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3438f5dce1d5c617710d66942e24a58bb9890a8a;p=thirdparty%2Fhaproxy.git MINOR: sock_raw: move calls to si_data_close upper Some users of si_data_close() need to have the fd still open, so we must move the call before fd_delete(). --- diff --git a/src/sock_raw.c b/src/sock_raw.c index 1532e762d7..a50d77ad30 100644 --- a/src/sock_raw.c +++ b/src/sock_raw.c @@ -710,6 +710,7 @@ static void sock_raw_shutw(struct stream_interface *si) /* we may have to close a pending connection, and mark the * response buffer as shutr */ + si_data_close(si); fd_delete(si_fd(si)); /* fall through */ case SI_ST_CER: @@ -717,7 +718,6 @@ 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: @@ -748,11 +748,11 @@ static void sock_raw_shutr(struct stream_interface *si) return; if (si->ob->flags & BF_SHUTW) { + si_data_close(si); fd_delete(si_fd(si)); si->state = SI_ST_DIS; si->exp = TICK_ETERNITY; - si_data_close(si); if (si->release) si->release(si); return;