MEDIUM: stconn: Don't requeue the stream's task after I/O

After I/O handling, in sc_notify(), the stream's task is no longer
requeue. The stream may be woken up. But its task is not requeue. It is
useless nowadays and only avoids a call to process_stream() for edge
cases. It is not really a big deal if the stream is woken up for nothing
because its task expired. At worst, it will be responsible to compute its
new expiration date.
This commit is contained in:
Christopher Faulet 2023-02-14 15:49:15 +01:00
parent f8413cba2a
commit d7111e7ace

View File

@ -1218,18 +1218,7 @@ static void sc_notify(struct stconn *sc)
(channel_is_empty(oc) && !oc->to_forward)))))) { (channel_is_empty(oc) && !oc->to_forward)))))) {
task_wakeup(task, TASK_WOKEN_IO); task_wakeup(task, TASK_WOKEN_IO);
} }
else {
/* Update expiration date for the task and requeue it */
task->expire = tick_first((tick_is_expired(task->expire, now_ms) ? 0 : task->expire),
tick_first(tick_first(sc_ep_rex(sc), sc_ep_wex(sc)),
tick_first(sc_ep_rex(sco), sc_ep_wex(sco))));
task->expire = tick_first(task->expire, ic->analyse_exp);
task->expire = tick_first(task->expire, oc->analyse_exp);
task->expire = tick_first(task->expire, __sc_strm(sc)->conn_exp);
task_queue(task);
}
if (ic->flags & CF_READ_EVENT) if (ic->flags & CF_READ_EVENT)
ic->flags &= ~CF_READ_DONTWAIT; ic->flags &= ~CF_READ_DONTWAIT;
} }