[MINOR] stream_interface: add SI_FL_DONT_WAKE flag

We had to add a new stream_interface flag : SI_FL_DONT_WAKE. This flag
is used to indicate that a stream interface is being updated and that
no wake up should be sent to its owner. This will be required for tasks
embedded into stream interfaces. Otherwise, we could have the
owner task send wakeups to itself during status updates, thus
preventing the state from converging. As long as a stream_interface's
status is being monitored and adjusted, there is no reason to wake it
up again, as we know its changes will be seen and considered.
diff --git a/src/session.c b/src/session.c
index 38c1453..d085f16 100644
--- a/src/session.c
+++ b/src/session.c
@@ -636,6 +636,12 @@
 	rqf_last = s->req->flags;
 	rpf_last = s->rep->flags;
 
+	/* we don't want the stream interface functions to recursively wake us up */
+	if (s->req->prod->owner == t)
+		s->req->prod->flags |= SI_FL_DONT_WAKE;
+	if (s->req->cons->owner == t)
+		s->req->cons->flags |= SI_FL_DONT_WAKE;
+
 	/* 1a: Check for low level timeouts if needed. We just set a flag on
 	 * stream interfaces when their timeouts have expired.
 	 */
@@ -1128,6 +1134,10 @@
 	if ((s->rep->flags ^ rpf_last) & BF_MASK_STATIC)
 		goto resync_response;
 
+	/* we're interested in getting wakeups again */
+	s->req->prod->flags &= ~SI_FL_DONT_WAKE;
+	s->req->cons->flags &= ~SI_FL_DONT_WAKE;
+
 	/* This is needed only when debugging is enabled, to indicate
 	 * client-side or server-side close. Please note that in the unlikely
 	 * event where both sides would close at once, the sequence is reported