MEDIUM: channel: make buffer_reserved() use channel_in_transit()
This ensures that we rely on a sane computation for the buffer size.
(cherry picked from commit fe5783495546da274c0270f0f59e3f84de3bf790)
[wt: this is not a bug but the next bugfix needs it]
diff --git a/include/proto/channel.h b/include/proto/channel.h
index 9473709..5ddc67d 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -287,16 +287,11 @@
*/
static inline int buffer_reserved(const struct channel *chn)
{
- unsigned int reserved = global.tune.maxrewrite;
+ int reserved;
- if (chn->to_forward == CHN_INFINITE_FORWARD ||
- chn->to_forward >= reserved ||
- chn->buf->o >= reserved ||
- chn->to_forward + chn->buf->o >= reserved)
+ reserved = global.tune.maxrewrite - channel_in_transit(chn);
+ if (reserved < 0)
reserved = 0;
- else
- reserved -= chn->to_forward + chn->buf->o;
-
return reserved;
}