From 5b5e68741ae9b29017b95fb2c0ae72589a108da7 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 25 Sep 2017 16:17:25 +0200 Subject: [PATCH] MINOR: h2: small function to know when the mux is busy A mux is busy when any stream id >= 0 is currently being handled and the current stream's id doesn't match. When no stream is involved (ie: demuxer), stream 0 is considered. This will be necessary to know when it's possible to send frames. --- src/mux_h2.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mux_h2.c b/src/mux_h2.c index ea4f90f7a..370494d5b 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -361,6 +361,18 @@ static inline int h2s_id(const struct h2s *h2s) return h2s ? h2s->id : 0; } +/* returns true of the mux is currently busy as seen from stream */ +static inline int h2c_mux_busy(const struct h2c *h2c, const struct h2s *h2s) +{ + if (h2c->msi < 0) + return 0; + + if (h2c->msi == h2s_id(h2s)) + return 0; + + return 1; +} + /*********************************************************/ /* functions below are I/O callbacks from the connection */