From: Willy Tarreau Date: Thu, 4 Sep 2008 07:14:08 +0000 (+0200) Subject: [MINOR] add buffer_check_timeouts() to check what timeouts have fired. X-Git-Tag: v1.3.16-rc1~151 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2eb52f012d69b4067427974833af8b42faad573d;p=thirdparty%2Fhaproxy.git [MINOR] add buffer_check_timeouts() to check what timeouts have fired. This new function sets the BF_*_TIMEOUT flags when a buffer timeout has expired. --- diff --git a/include/proto/buffers.h b/include/proto/buffers.h index e5df177c0e..73999cea82 100644 --- a/include/proto/buffers.h +++ b/include/proto/buffers.h @@ -64,6 +64,24 @@ static inline int buffer_isfull(const struct buffer *buf) { return buf->l == BUFSIZE; } +/* Check buffer timeouts, and set the corresponding flags. The + * likely/unlikely have been optimized for fastest normal path. + */ +static inline void buffer_check_timeouts(struct buffer *b) +{ + if (likely(!(b->flags & (BF_SHUTR|BF_READ_TIMEOUT))) && + unlikely(tick_is_expired(b->rex, now_ms))) + b->flags |= BF_READ_TIMEOUT; + + if (likely(!(b->flags & (BF_SHUTW|BF_WRITE_TIMEOUT))) && + unlikely(tick_is_expired(b->wex, now_ms))) + b->flags |= BF_WRITE_TIMEOUT; + + if (likely(!(b->flags & BF_ANA_TIMEOUT)) && + unlikely(tick_is_expired(b->analyse_exp, now_ms))) + b->flags |= BF_ANA_TIMEOUT; +} + /* flushes any content from buffer and adjusts flags * accordingly. */