[MEDIUM] session: call iohandler for embedded tasks (applets)
authorWilly Tarreau <w@1wt.eu>
Sat, 5 Sep 2009 18:57:35 +0000 (20:57 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 23 Sep 2009 21:52:15 +0000 (23:52 +0200)
commit1accfc0d3a4779f7dac9eebb12f3d3b4c3653fcb
tree8459f95fda09e78593814e5d32f107001031f91e
parentfb90d94d7a9056db8669f12b1ab2cd0c5f5c682e
[MEDIUM] session: call iohandler for embedded tasks (applets)

Currently, it's up to process_session() to call the internal tasks
if any are associated to the task being processed. If such a task
is referenced, we don't use ->update() in process_session(), but
only ->iohandler(), which itself is free to use ->update() to
complete its work.

It it also important to understand that an I/O handler may wake the
task up again, for instance because it tries to send data to the
other stream interface, which itself will wake the task up. So
after returning from ->iohandler(), we must check if the task has
been sent back to the runqueue, and if so, immediately return.
src/session.c