MINOR: stream-int: make it clear that si_ops cannot be null

There was an ambiguity in which functions of the si_ops struct could be
null or not. only ->update doesn't exist in one of the si_ops (the
embedded one), all others are always defined. ->shutr and ->shutw were
never tested. However ->chk_rcv() and ->chk_snd() were tested, causing
confusion about the proper way to wake the other side up if undefined
(which never happens).

Let's update the comments to state these functions are mandatory and
remove the offending checks.
This commit is contained in:
Willy Tarreau 2018-11-07 11:28:12 +01:00
parent 43e69dc1eb
commit 57f08bb63b
2 changed files with 7 additions and 9 deletions

View File

@ -388,15 +388,13 @@ static inline void si_update(struct stream_interface *si)
/* Calls chk_rcv on the connection using the data layer */
static inline void si_chk_rcv(struct stream_interface *si)
{
if (si->ops->chk_rcv)
si->ops->chk_rcv(si);
si->ops->chk_rcv(si);
}
/* Calls chk_snd on the connection using the data layer */
static inline void si_chk_snd(struct stream_interface *si)
{
if (si->ops->chk_snd)
si->ops->chk_snd(si);
si->ops->chk_snd(si);
}
/* Calls chk_snd on the connection using the ctrl layer */

View File

@ -106,11 +106,11 @@ struct stream_interface {
/* operations available on a stream-interface */
struct si_ops {
void (*update)(struct stream_interface *); /* I/O update function */
void (*chk_rcv)(struct stream_interface *); /* chk_rcv function */
void (*chk_snd)(struct stream_interface *); /* chk_snd function */
void (*shutr)(struct stream_interface *); /* shut read function */
void (*shutw)(struct stream_interface *); /* shut write function */
void (*update)(struct stream_interface *); /* I/O update function, may be null */
void (*chk_rcv)(struct stream_interface *); /* chk_rcv function, may not be null */
void (*chk_snd)(struct stream_interface *); /* chk_snd function, may not be null */
void (*shutr)(struct stream_interface *); /* shut read function, may not be null */
void (*shutw)(struct stream_interface *); /* shut write function, may not be null */
};
#endif /* _TYPES_STREAM_INTERFACE_H */