MINOR: stconn: Set half-close timeout using proxy settings

We now directly use the proxy settings to set the half-close timeout of a
stream-connector. The function sc_set_hcto() must be used to do so. This
timeout is only set when a shutw is performed. So it is not really a big
deal to use a dedicated function to do so.
This commit is contained in:
Christopher Faulet 2023-02-20 08:36:53 +01:00
parent 15315d6c0a
commit bcdcfad3ff
2 changed files with 18 additions and 9 deletions

View File

@ -401,4 +401,19 @@ static inline void sc_check_timeouts(const struct stconn *sc)
sc_oc(sc)->flags |= CF_WRITE_TIMEOUT;
}
static inline void sc_set_hcto(struct stconn *sc)
{
struct stream *strm = __sc_strm(sc);
if (sc->flags & SC_FL_ISBACK) {
if ((strm->flags & SF_BE_ASSIGNED) && tick_isset(strm->be->timeout.serverfin))
sc->ioto = strm->be->timeout.serverfin;
}
else {
if (tick_isset(strm_fe(strm)->timeout.clientfin))
sc->ioto = strm_fe(strm)->timeout.clientfin;
}
}
#endif /* _HAPROXY_SC_STRM_H */

View File

@ -568,9 +568,7 @@ static void sc_app_shutw(struct stconn *sc)
if (oc->flags & CF_SHUTW)
return;
oc->flags |= CF_SHUTW|CF_WRITE_EVENT;
if (tick_isset(sc->hcto))
sc->ioto = sc->hcto;
sc_set_hcto(sc);
switch (sc->state) {
case SC_ST_RDY:
@ -701,9 +699,7 @@ static void sc_app_shutw_conn(struct stconn *sc)
if (oc->flags & CF_SHUTW)
return;
oc->flags |= CF_SHUTW|CF_WRITE_EVENT;
if (tick_isset(sc->hcto))
sc->ioto = sc->hcto;
sc_set_hcto(sc);
switch (sc->state) {
case SC_ST_RDY:
@ -898,9 +894,7 @@ static void sc_app_shutw_applet(struct stconn *sc)
if (oc->flags & CF_SHUTW)
return;
oc->flags |= CF_SHUTW|CF_WRITE_EVENT;
if (tick_isset(sc->hcto))
sc->ioto = sc->hcto;
sc_set_hcto(sc);
/* on shutw we always wake the applet up */
appctx_wakeup(__sc_appctx(sc));