BUG/MAJOR: http: Fix possible infinity loop in http_sync_(req|res)_state

In commit "MINOR: http: Switch requests/responses in TUNNEL mode only by
checking txn flags", it is possible to have an infinite loop on HTTP_MSG_CLOSING
state.
This commit is contained in:
Christopher Faulet 2017-07-20 11:05:10 +02:00 committed by Willy Tarreau
parent ac752ff68c
commit 56d260916f

View File

@ -5413,8 +5413,8 @@ int http_sync_req_state(struct stream *s)
else if (chn->flags & CF_SHUTW) {
txn->req.err_state = txn->req.msg_state;
txn->req.msg_state = HTTP_MSG_ERROR;
goto wait_other_side;
}
goto wait_other_side;
}
if (txn->req.msg_state == HTTP_MSG_CLOSED) {
@ -5542,8 +5542,8 @@ int http_sync_res_state(struct stream *s)
s->be->be_counters.cli_aborts++;
if (objt_server(s->target))
objt_server(s->target)->counters.cli_aborts++;
goto wait_other_side;
}
goto wait_other_side;
}
if (txn->rsp.msg_state == HTTP_MSG_CLOSED) {