From a94fda30bd5638a77ea96a1c5fca7945fe736714 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 6 Jul 2017 15:51:35 +0200 Subject: [PATCH] BUG/MINOR: http: Don't reset the transaction if there are still data to send To reset an HTTP transaction, we need to be sure all data were sent, for the request and the response. There are tests on request and response buffers for that in http_resync_states function. But the return code was wrong. We must return 0 to wait. This patch must be backported in 1.7 --- src/proto_http.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/proto_http.c b/src/proto_http.c index 7141833b0d..e0ed2dab67 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -5654,16 +5654,18 @@ int http_resync_states(struct stream *s) * and the response buffer must realigned * (realign is done is http_end_txn_clean_session). */ - if (s->req.buf->o) + if (s->req.buf->o) { s->req.flags |= CF_WAKE_WRITE; - else if (s->res.buf->o) + return 0; + } + else if (s->res.buf->o) { s->res.flags |= CF_WAKE_WRITE; - else { - s->req.analysers = AN_REQ_FLT_END; - s->res.analysers = AN_RES_FLT_END; - txn->flags |= TX_WAIT_CLEANUP; - return 1; + return 0; } + s->req.analysers = AN_REQ_FLT_END; + s->res.analysers = AN_RES_FLT_END; + txn->flags |= TX_WAIT_CLEANUP; + return 1; } return txn->req.msg_state != old_req_state || -- 2.39.5