MEDIUM: http: no need to close the request on redirect if data was parsed

There are two reasons for not keeping the client connection alive upon a
redirect :
  - save the client from uploading all data
  - avoid keeping a connection alive if the redirect goes to another domain

The first case should consider an exception when all the data from the
client have been read already. This specifically happens on response
redirects after a POST to a server. This is an easy situation to detect.

It could later be improved to cover the cases where option
http-buffer-request is used.
This commit is contained in:
Willy Tarreau 2015-05-28 17:23:54 +02:00
parent 51d861a44f
commit 2de8a50918

View File

@ -4116,7 +4116,7 @@ static int http_apply_redirect_rule(struct redirect_rule *rule, struct stream *s
if (*location == '/' &&
(req->flags & HTTP_MSGF_XFER_LEN) &&
!(req->flags & HTTP_MSGF_TE_CHNK) && !req->body_len &&
((!(req->flags & HTTP_MSGF_TE_CHNK) && !req->body_len) || (req->msg_state == HTTP_MSG_DONE)) &&
((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_SCL ||
(txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_KAL)) {
/* keep-alive possible */