0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2025-01-13 22:51:08 -05:00

FastCGI: Explicitly set Content-Length #626

This commit is contained in:
Benoit Benedetti 2016-02-24 19:35:21 +01:00
parent 05957b4965
commit ef5f9c771d

11
middleware/fastcgi/fastcgi.go Executable file → Normal file
View file

@ -4,6 +4,7 @@
package fastcgi
import (
"bytes"
"errors"
"io"
"net/http"
@ -105,13 +106,21 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
return http.StatusBadGateway, err
}
// Write the response body to a buffer
// To explicitly set Content-Length
// For FastCGI app that don't set it
var buf bytes.Buffer
io.Copy(&buf, resp.Body)
if r.Header.Get("Content-Length") == "" {
w.Header().Set("Content-Length", strconv.Itoa(buf.Len()))
}
writeHeader(w, resp)
// Write the response body
// TODO: If this has an error, the response will already be
// partly written. We should copy out of resp.Body into a buffer
// first, then write it to the response...
_, err = io.Copy(w, resp.Body)
_, err = io.Copy(w, &buf)
if err != nil {
return http.StatusBadGateway, err
}