BUG/MEDIUM: applet: Report a send activity everytime data were sent

In the same way than for stream-connectors (see "BUG/MEDIUM: stconn: Report
a send activity everytime data were sent" for details), we now report a send
activity everytime something was consumed by an applet, even if some output
data remains blocked into the channel's buffer.

This patch must be backported to 2.8.
This commit is contained in:
Christopher Faulet 2023-10-10 18:23:05 +02:00
parent 3083fd90e1
commit 2a51d5b6ea

View File

@ -458,9 +458,13 @@ struct task *task_run_applet(struct task *t, void *context, unsigned int state)
sc_oc(sc)->flags |= CF_WRITE_EVENT | CF_WROTE_DATA;
if (sco->room_needed < 0 || channel_recv_max(sc_oc(sc)) >= sco->room_needed)
sc_have_room(sco);
sc_ep_report_send_activity(sc);
}
else {
if (!sco->room_needed)
sc_have_room(sco);
sc_ep_report_blocked_send(sc);
}
else if (!sco->room_needed)
sc_have_room(sco);
if (sc_ic(sc)->flags & CF_READ_EVENT)
sc_ep_report_read_activity(sc);
@ -468,11 +472,6 @@ struct task *task_run_applet(struct task *t, void *context, unsigned int state)
if (sc_waiting_room(sc) && (sc->flags & SC_FL_ABRT_DONE)) {
sc_ep_set(sc, SE_FL_EOS|SE_FL_ERROR);
}
else if (channel_is_empty(sc_oc(sc)))
sc_ep_report_send_activity(sc);
else {
sc_ep_report_blocked_send(sc);
}
/* 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