mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-28 22:08:01 +00:00
BUG/MAJOR: applet: fix a freeze if data is immedately forwarded.
Introduced regression with 'MAJOR: applet scheduler rework' (1.8-dev only). The fix consist to re-enable the appctx immediatly from the applet wake cb if the process_stream is not pending in runqueue and the applet want perform a put or a get and the WAIT_ROOM flag was removed by stream_int_notify.
This commit is contained in:
parent
a03d4ada26
commit
2802b07d97
@ -1354,7 +1354,7 @@ void stream_sock_read0(struct stream_interface *si)
|
||||
|
||||
/* Callback to be used by applet handlers upon completion. It updates the stream
|
||||
* (which may or may not take this opportunity to try to forward data), then
|
||||
* may disable the applet's based on the channels and stream interface's final
|
||||
* may re-enable the applet's based on the channels and stream interface's final
|
||||
* states.
|
||||
*/
|
||||
void si_applet_wake_cb(struct stream_interface *si)
|
||||
@ -1369,8 +1369,15 @@ void si_applet_wake_cb(struct stream_interface *si)
|
||||
|
||||
/* update the stream-int, channels, and possibly wake the stream up */
|
||||
stream_int_notify(si);
|
||||
}
|
||||
|
||||
/* stream_int_notify may pass throught checksnd and released some
|
||||
* WAIT_ROOM flags. The process_stream will consider those flags
|
||||
* to wakeup the appctx but in the case the task is not in runqueue
|
||||
* we may have to wakeup the appctx immediately.
|
||||
*/
|
||||
if (!task_in_rq(si_task(si)))
|
||||
stream_int_update_applet(si);
|
||||
}
|
||||
|
||||
/* Updates the activity status of an applet outside of the applet handler based
|
||||
* on the channel's flags and the stream interface's flags. It needs to be
|
||||
|
Loading…
Reference in New Issue
Block a user