Commit 6a9aea04 authored by Etienne Bruines's avatar Etienne Bruines Committed by Matt Holt

fastcig: GET requests send along the body (#1975)

Fixes #1961

According to RFC 7231 and RFC 7230, there's
no reason a GET-Request can't have a body
(other than it possibly not being supported
by existing software). It's use is simply not
defined, and is left to the application.
parent 592d1993
...@@ -148,7 +148,7 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) ...@@ -148,7 +148,7 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
case "HEAD": case "HEAD":
resp, err = fcgiBackend.Head(env) resp, err = fcgiBackend.Head(env)
case "GET": case "GET":
resp, err = fcgiBackend.Get(env) resp, err = fcgiBackend.Get(env, r.Body, contentLength)
case "OPTIONS": case "OPTIONS":
resp, err = fcgiBackend.Options(env) resp, err = fcgiBackend.Options(env)
default: default:
......
...@@ -460,12 +460,12 @@ func (c *FCGIClient) Request(p map[string]string, req io.Reader) (resp *http.Res ...@@ -460,12 +460,12 @@ func (c *FCGIClient) Request(p map[string]string, req io.Reader) (resp *http.Res
} }
// Get issues a GET request to the fcgi responder. // Get issues a GET request to the fcgi responder.
func (c *FCGIClient) Get(p map[string]string) (resp *http.Response, err error) { func (c *FCGIClient) Get(p map[string]string, body io.Reader, l int64) (resp *http.Response, err error) {
p["REQUEST_METHOD"] = "GET" p["REQUEST_METHOD"] = "GET"
p["CONTENT_LENGTH"] = "0" p["CONTENT_LENGTH"] = strconv.FormatInt(l, 10)
return c.Request(p, nil) return c.Request(p, body)
} }
// Head issues a HEAD request to the fcgi responder. // Head issues a HEAD request to the fcgi responder.
......
...@@ -140,7 +140,8 @@ func sendFcgi(reqType int, fcgiParams map[string]string, data []byte, posts map[ ...@@ -140,7 +140,8 @@ func sendFcgi(reqType int, fcgiParams map[string]string, data []byte, posts map[
} }
resp, err = fcgi.PostForm(fcgiParams, values) resp, err = fcgi.PostForm(fcgiParams, values)
} else { } else {
resp, err = fcgi.Get(fcgiParams) rd := bytes.NewReader(data)
resp, err = fcgi.Get(fcgiParams, rd, int64(rd.Len()))
} }
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment