mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-24 05:32:21 +00:00
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:
parent
f8413cba2a
commit
d7111e7ace
11
src/stconn.c
11
src/stconn.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user