mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-03-17 04:51:09 +01:00
MINOR: muxes: Wakup the data layer from a mux stream with TASK_WOKEN_IO state
Now, when a mux stream is waking its data layer up for receives or sends, it uses the TASK_WOKEN_IO state. The state is not used by the stconn I/O callback function for now.
This commit is contained in:
parent
376487cca9
commit
26a0817c1a
@ -862,7 +862,7 @@ static void fcgi_strm_notify_recv(struct fcgi_strm *fstrm)
|
||||
{
|
||||
if (fstrm->subs && (fstrm->subs->events & SUB_RETRY_RECV)) {
|
||||
TRACE_POINT(FCGI_EV_STRM_WAKE, fstrm->fconn->conn, fstrm);
|
||||
tasklet_wakeup(fstrm->subs->tasklet);
|
||||
tasklet_wakeup(fstrm->subs->tasklet, TASK_WOKEN_IO);
|
||||
fstrm->subs->events &= ~SUB_RETRY_RECV;
|
||||
if (!fstrm->subs->events)
|
||||
fstrm->subs = NULL;
|
||||
@ -875,7 +875,7 @@ static void fcgi_strm_notify_send(struct fcgi_strm *fstrm)
|
||||
if (fstrm->subs && (fstrm->subs->events & SUB_RETRY_SEND)) {
|
||||
TRACE_POINT(FCGI_EV_STRM_WAKE, fstrm->fconn->conn, fstrm);
|
||||
fstrm->flags |= FCGI_SF_NOTIFIED;
|
||||
tasklet_wakeup(fstrm->subs->tasklet);
|
||||
tasklet_wakeup(fstrm->subs->tasklet, TASK_WOKEN_IO);
|
||||
fstrm->subs->events &= ~SUB_RETRY_SEND;
|
||||
if (!fstrm->subs->events)
|
||||
fstrm->subs = NULL;
|
||||
|
||||
@ -3716,7 +3716,7 @@ static void h1_wake_stream_for_recv(struct h1s *h1s)
|
||||
{
|
||||
if (h1s && h1s->subs && h1s->subs->events & SUB_RETRY_RECV) {
|
||||
TRACE_POINT(H1_EV_STRM_WAKE, h1s->h1c->conn, h1s);
|
||||
tasklet_wakeup(h1s->subs->tasklet);
|
||||
tasklet_wakeup(h1s->subs->tasklet, TASK_WOKEN_IO);
|
||||
h1s->subs->events &= ~SUB_RETRY_RECV;
|
||||
if (!h1s->subs->events)
|
||||
h1s->subs = NULL;
|
||||
@ -3726,7 +3726,7 @@ static void h1_wake_stream_for_send(struct h1s *h1s)
|
||||
{
|
||||
if (h1s && h1s->subs && h1s->subs->events & SUB_RETRY_SEND) {
|
||||
TRACE_POINT(H1_EV_STRM_WAKE, h1s->h1c->conn, h1s);
|
||||
tasklet_wakeup(h1s->subs->tasklet);
|
||||
tasklet_wakeup(h1s->subs->tasklet, TASK_WOKEN_IO);
|
||||
h1s->subs->events &= ~SUB_RETRY_SEND;
|
||||
if (!h1s->subs->events)
|
||||
h1s->subs = NULL;
|
||||
|
||||
@ -1668,9 +1668,10 @@ static void __maybe_unused h2s_notify_recv(struct h2s *h2s)
|
||||
TRACE_POINT(H2_EV_STRM_WAKE, h2s->h2c->conn, h2s);
|
||||
if (h2s->h2c->next_tasklet ||
|
||||
(th_ctx->current && th_ctx->current->process == h2_io_cb))
|
||||
h2s->h2c->next_tasklet = tasklet_wakeup_after(h2s->h2c->next_tasklet, h2s->subs->tasklet);
|
||||
h2s->h2c->next_tasklet = tasklet_wakeup_after(h2s->h2c->next_tasklet, h2s->subs->tasklet,
|
||||
TASK_WOKEN_IO);
|
||||
else
|
||||
tasklet_wakeup(h2s->subs->tasklet);
|
||||
tasklet_wakeup(h2s->subs->tasklet, TASK_WOKEN_IO);
|
||||
h2s->subs->events &= ~SUB_RETRY_RECV;
|
||||
if (!h2s->subs->events)
|
||||
h2s->subs = NULL;
|
||||
@ -1683,7 +1684,7 @@ static void __maybe_unused h2s_notify_send(struct h2s *h2s)
|
||||
if (h2s->subs && h2s->subs->events & SUB_RETRY_SEND) {
|
||||
TRACE_POINT(H2_EV_STRM_WAKE, h2s->h2c->conn, h2s);
|
||||
h2s->flags |= H2_SF_NOTIFIED;
|
||||
tasklet_wakeup(h2s->subs->tasklet);
|
||||
tasklet_wakeup(h2s->subs->tasklet, TASK_WOKEN_IO);
|
||||
h2s->subs->events &= ~SUB_RETRY_SEND;
|
||||
if (!h2s->subs->events)
|
||||
h2s->subs = NULL;
|
||||
|
||||
@ -548,7 +548,7 @@ void qcs_notify_recv(struct qcs *qcs)
|
||||
{
|
||||
if (qcs->subs && qcs->subs->events & SUB_RETRY_RECV) {
|
||||
TRACE_POINT(QMUX_EV_STRM_WAKE, qcs->qcc->conn, qcs);
|
||||
tasklet_wakeup(qcs->subs->tasklet);
|
||||
tasklet_wakeup(qcs->subs->tasklet, TASK_WOKEN_IO);
|
||||
qcs->subs->events &= ~SUB_RETRY_RECV;
|
||||
if (!qcs->subs->events)
|
||||
qcs->subs = NULL;
|
||||
@ -559,7 +559,7 @@ void qcs_notify_send(struct qcs *qcs)
|
||||
{
|
||||
if (qcs->subs && qcs->subs->events & SUB_RETRY_SEND) {
|
||||
TRACE_POINT(QMUX_EV_STRM_WAKE, qcs->qcc->conn, qcs);
|
||||
tasklet_wakeup(qcs->subs->tasklet);
|
||||
tasklet_wakeup(qcs->subs->tasklet, TASK_WOKEN_IO);
|
||||
qcs->subs->events &= ~SUB_RETRY_SEND;
|
||||
if (!qcs->subs->events)
|
||||
qcs->subs = NULL;
|
||||
|
||||
@ -952,7 +952,7 @@ static void spop_strm_notify_recv(struct spop_strm *spop_strm)
|
||||
{
|
||||
if (spop_strm->subs && (spop_strm->subs->events & SUB_RETRY_RECV)) {
|
||||
TRACE_POINT(SPOP_EV_STRM_WAKE, spop_strm->spop_conn->conn, spop_strm);
|
||||
tasklet_wakeup(spop_strm->subs->tasklet);
|
||||
tasklet_wakeup(spop_strm->subs->tasklet, TASK_WOKEN_IO);
|
||||
spop_strm->subs->events &= ~SUB_RETRY_RECV;
|
||||
if (!spop_strm->subs->events)
|
||||
spop_strm->subs = NULL;
|
||||
@ -965,7 +965,7 @@ static void spop_strm_notify_send(struct spop_strm *spop_strm)
|
||||
if (spop_strm->subs && (spop_strm->subs->events & SUB_RETRY_SEND)) {
|
||||
TRACE_POINT(SPOP_EV_STRM_WAKE, spop_strm->spop_conn->conn, spop_strm);
|
||||
spop_strm->flags |= SPOP_SF_NOTIFIED;
|
||||
tasklet_wakeup(spop_strm->subs->tasklet);
|
||||
tasklet_wakeup(spop_strm->subs->tasklet, TASK_WOKEN_IO);
|
||||
spop_strm->subs->events &= ~SUB_RETRY_SEND;
|
||||
if (!spop_strm->subs->events)
|
||||
spop_strm->subs = NULL;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user