mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-03-19 05:51:10 +01:00
BUG/MEDIUM: spoe: Properly abort processing on client abort
Client abort when abortonclose is configured was ignored when messges were sent on event while it works properly when messages are sent via an "send-spoe-group" action. To fix the issue, when the SPOE filter is waiting for the SPOE applet response, it must check if a client abort was reported and if so, must interrupt its processing. This patch should be backported as far as 3.1.
This commit is contained in:
parent
d10fc3d265
commit
b3be3b94a0
@ -1112,6 +1112,19 @@ static int spoe_process_event(struct stream *s, struct spoe_context *ctx,
|
||||
agent->id, spoe_event_str[ev], s->uniq_id, ctx->status_code, ctx->stats.t_process,
|
||||
agent->counters.nb_errors, agent->counters.nb_processed);
|
||||
}
|
||||
else if (ret == 0) {
|
||||
struct channel *chn = (dir == SMP_OPT_DIR_REQ) ? &s->req : &s->res;
|
||||
|
||||
if ((s->scf->flags & SC_FL_ERROR) ||
|
||||
((s->scf->flags & (SC_FL_EOS|SC_FL_ABRT_DONE)) && proxy_abrt_close_def(s->be, 1)) ||
|
||||
(chn_prod(chn)->flags & (SC_FL_ERROR|SC_FL_EOS|SC_FL_ABRT_DONE))) {
|
||||
ctx->status_code = SPOE_CTX_ERR_INTERRUPT;
|
||||
spoe_stop_processing(agent, ctx);
|
||||
spoe_handle_processing_error(s, agent, ctx, dir);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user