MEDIUM: stream-int: call stream_int_update() from si_update()
Now the call to stream_int_update() is moved to si_update(), which
is exclusively called from the stream, so that the socket layer may
be updated without updating the stream layer. This will later permit
to call it individually from other places (other tasks or applets for
example).
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 890bfb8..84c3090 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -319,9 +319,10 @@
si->ops->shutw(si);
}
-/* Calls the data state update on the stream interfaace */
+/* Updates the stream interface and timers, then updates the data layer below */
static inline void si_update(struct stream_interface *si)
{
+ stream_int_update(si);
si->ops->update(si);
}
diff --git a/src/stream_interface.c b/src/stream_interface.c
index abd0cee..51099b8 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -786,9 +786,6 @@
struct channel *oc = si_oc(si);
struct connection *conn = __objt_conn(si->end);
- stream_int_update(si);
-
- /* now update the connection itself */
if (!(ic->flags & CF_SHUTR)) {
/* Read not closed */
if ((ic->flags & CF_DONT_READ) || !channel_may_recv(ic))
@@ -1486,8 +1483,6 @@
*/
void stream_int_update_applet(struct stream_interface *si)
{
- stream_int_update(si);
-
if (((si->flags & (SI_FL_WANT_PUT|SI_FL_WAIT_ROOM)) == SI_FL_WANT_PUT) ||
((si->flags & (SI_FL_WANT_GET|SI_FL_WAIT_DATA)) == SI_FL_WANT_GET))
appctx_wakeup(si_appctx(si));