]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: http: no need to close the request on redirect if data was parsed
authorWilly Tarreau <w@1wt.eu>
Thu, 28 May 2015 15:23:54 +0000 (17:23 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 28 May 2015 15:45:43 +0000 (17:45 +0200)
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.

src/proto_http.c

index d331eb13e1b59e1f1ea463620ce8b4830176d18a..4d352f7638b489a9ff4b479d9e79c640428a4f3d 100644 (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 */