MEDIUM: stream-int: make si_chk_rcv() check that SI_FL_WAIT_ROOM is cleared
After careful inspection, it now seems OK to call si_chk_rcv() only when
SI_FL_WAIT_ROOM is cleared and SI_FL_WANT_PUT is set, since all identified
call places have already taken care of this.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 2d3fe56..54d9810 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -384,12 +384,13 @@
}
/* This is to be used after making some room available in a channel. It will
- * clear SI_FL_WAIT_ROOM, then if SI_FL_WANT_PUT is set, will calls ->chk_rcv()
- * to enable receipt of new data.
+ * return without doing anything if {SI_FL_WANT_PUT,SI_FL_WAIT_ROOM} != {1,0}.
+ * It will then call ->chk_rcv() to enable receipt of new data.
*/
static inline void si_chk_rcv(struct stream_interface *si)
{
- si->flags &= ~SI_FL_WAIT_ROOM;
+ if (si->flags & SI_FL_WAIT_ROOM)
+ return;
if (!(si->flags & SI_FL_WANT_PUT))
return;