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.
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 */
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:
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:
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));