From: Willy Tarreau Date: Mon, 20 Aug 2012 14:55:48 +0000 (+0200) Subject: MINOR: connection: provide conn_{data|sock}_{read0|shutw} functions X-Git-Tag: v1.5-dev12~81 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3af56a93593f8648044cde9b93c0b60e0fdc58d7;p=thirdparty%2Fhaproxy.git MINOR: connection: provide conn_{data|sock}_{read0|shutw} functions These functions are used to report unidirectional shutdown and to disable polling in the related direction. --- diff --git a/include/proto/connection.h b/include/proto/connection.h index 07568aaefa..d97978ebf9 100644 --- a/include/proto/connection.h +++ b/include/proto/connection.h @@ -283,6 +283,43 @@ static inline void conn_sock_stop_both(struct connection *c) conn_cond_update_sock_polling(c); } +/* shutdown management */ +static inline void conn_sock_read0(struct connection *c) +{ + c->flags |= CO_FL_SOCK_RD_SH; + __conn_sock_stop_recv(c); +} + +static inline void conn_data_read0(struct connection *c) +{ + c->flags |= CO_FL_DATA_RD_SH; + __conn_data_stop_recv(c); +} + +static inline void conn_sock_shutw(struct connection *c) +{ + c->flags |= CO_FL_SOCK_WR_SH; + __conn_sock_stop_send(c); +} + +static inline void conn_data_shutw(struct connection *c) +{ + c->flags |= CO_FL_DATA_WR_SH; + __conn_data_stop_send(c); +} + +/* detect sock->data read0 transition */ +static inline int conn_data_read0_pending(struct connection *c) +{ + return (c->flags & (CO_FL_DATA_RD_SH | CO_FL_SOCK_RD_SH)) == CO_FL_SOCK_RD_SH; +} + +/* detect data->sock shutw transition */ +static inline int conn_sock_shutw_pending(struct connection *c) +{ + return (c->flags & (CO_FL_DATA_WR_SH | CO_FL_SOCK_WR_SH)) == CO_FL_DATA_WR_SH; +} + #endif /* _PROTO_CONNECTION_H */ /*