]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: connection: provide conn_{data|sock}_{read0|shutw} functions
authorWilly Tarreau <wtarreau@exceliance.fr>
Mon, 20 Aug 2012 14:55:48 +0000 (16:55 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 2 Sep 2012 19:54:56 +0000 (21:54 +0200)
These functions are used to report unidirectional shutdown and to disable
polling in the related direction.

include/proto/connection.h

index 07568aaefa1f6cd4117d2f5c140d2814b65e1847..d97978ebf90461c22a0e850e051c949ede66af2d 100644 (file)
@@ -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 */
 
 /*