Skip to content

Commit

Permalink
net/http: be more consistent about Request.Method "" vs "GET"
Browse files Browse the repository at this point in the history
Patch from Russ.

No bug identified, but I didn't search exhaustively. The new code is
easier to read.

Fixes golang#13621

Change-Id: Ifda936e4101116fa254ead950b5fe06adb14e977
Reviewed-on: https://go-review.googlesource.com/17981
Reviewed-by: Brad Fitzpatrick <[email protected]>
Run-TryBot: Brad Fitzpatrick <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Russ Cox <[email protected]>
  • Loading branch information
bradfitz committed Dec 17, 2015
1 parent 761ac75 commit 18227bb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/net/http/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,11 @@ func (c *Client) send(req *Request) (*Response, error) {
//
// Generally Get, Post, or PostForm will be used instead of Do.
func (c *Client) Do(req *Request) (resp *Response, err error) {
if req.Method == "" || req.Method == "GET" || req.Method == "HEAD" {
method := valueOrDefault(req.Method, "GET")
if method == "" || method == "GET" || method == "HEAD" {
return c.doFollowingRedirects(req, shouldRedirectGet)
}
if req.Method == "POST" || req.Method == "PUT" {
if method == "POST" || method == "PUT" {
return c.doFollowingRedirects(req, shouldRedirectPost)
}
return c.send(req)
Expand Down
12 changes: 7 additions & 5 deletions src/net/http/request.go
Original file line number Diff line number Diff line change
Expand Up @@ -1057,11 +1057,13 @@ func (r *Request) closeBody() {
}

func (r *Request) isReplayable() bool {
return r.Body == nil &&
(r.Method == "GET" ||
r.Method == "HEAD" ||
r.Method == "OPTIONS" ||
r.Method == "TRACE")
if r.Body == nil {
switch valueOrDefault(r.Method, "GET") {
case "GET", "HEAD", "OPTIONS", "TRACE":
return true
}
}
return false
}

func validHostHeader(h string) bool {
Expand Down
2 changes: 1 addition & 1 deletion src/net/http/transfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func newTransferWriter(r interface{}) (t *transferWriter, err error) {
if rr.ContentLength != 0 && rr.Body == nil {
return nil, fmt.Errorf("http: Request.ContentLength=%d with nil Body", rr.ContentLength)
}
t.Method = rr.Method
t.Method = valueOrDefault(rr.Method, "GET")
t.Body = rr.Body
t.BodyCloser = rr.Body
t.ContentLength = rr.ContentLength
Expand Down

0 comments on commit 18227bb

Please sign in to comment.