MINOR: conn_stream: test the various ops functions before calling them

We currently call all ->shutr, ->chk_snd etc from ->ops unconditionally,
while the ->wake() call from data_cb is checked. Better check ops as
well for consistency, this will help get them merged.
This commit is contained in:
Willy Tarreau 2022-05-24 08:17:58 +02:00
parent f3ae34b67d
commit c086960a03

View File

@ -275,13 +275,15 @@ static inline void cs_must_kill_conn(struct stconn *cs)
/* Sends a shutr to the endpoint using the data layer */ /* Sends a shutr to the endpoint using the data layer */
static inline void cs_shutr(struct stconn *cs) static inline void cs_shutr(struct stconn *cs)
{ {
cs->ops->shutr(cs); if (likely(cs->ops->shutr))
cs->ops->shutr(cs);
} }
/* Sends a shutw to the endpoint using the data layer */ /* Sends a shutw to the endpoint using the data layer */
static inline void cs_shutw(struct stconn *cs) static inline void cs_shutw(struct stconn *cs)
{ {
cs->ops->shutw(cs); if (likely(cs->ops->shutw))
cs->ops->shutw(cs);
} }
/* This is to be used after making some room available in a channel. It will /* This is to be used after making some room available in a channel. It will
@ -302,13 +304,15 @@ static inline void cs_chk_rcv(struct stconn *cs)
return; return;
sc_ep_set(cs, SE_FL_RX_WAIT_EP); sc_ep_set(cs, SE_FL_RX_WAIT_EP);
cs->ops->chk_rcv(cs); if (likely(cs->ops->chk_rcv))
cs->ops->chk_rcv(cs);
} }
/* Calls chk_snd on the endpoint using the data layer */ /* Calls chk_snd on the endpoint using the data layer */
static inline void cs_chk_snd(struct stconn *cs) static inline void cs_chk_snd(struct stconn *cs)
{ {
cs->ops->chk_snd(cs); if (likely(cs->ops->chk_snd))
cs->ops->chk_snd(cs);
} }
/* Combines both cs_update_rx() and cs_update_tx() at once */ /* Combines both cs_update_rx() and cs_update_tx() at once */