BUG/MEDIUM: stconn: Update stream expiration date on blocked sends

When outgoing data are blocked, we must update the stream expiration date
and requeue the task. It is important to be sure to properly handle write
timeout, expecially if the stream cannot expire on reads. This bug was
introduced when handling of channel's timeouts was refactored to be managed
by the stream-connectors.

It is an issue if there is no server timeout and the client does not consume
the response (or the opposite but it is less common). It is also possible to
trigger the same scenario with applets on server side because, most of time,
there is no server timeout.

This patch must be backported to 2.8.

(cherry picked from commit 3479d99d5f4c7fd8afc4e52a92ec3d1fb5c91446)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/applet.c b/src/applet.c
index 7298860..f4c5c86 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -467,8 +467,11 @@
 
 	if (channel_is_empty(sc_oc(sc)))
 		sc_ep_report_send_activity(sc);
-	else
+	else {
 		sc_ep_report_blocked_send(sc);
+		__sc_strm(sc)->task->expire = tick_first(__sc_strm(sc)->task->expire, sc_ep_snd_ex(sc));
+		task_queue(__sc_strm(sc)->task);
+	}
 
 	/* measure the call rate and check for anomalies when too high */
 	if (((b_size(sc_ib(sc)) && sc->flags & SC_FL_NEED_BUFF) || // asks for a buffer which is present