From: Brad Fitzpatrick Date: Wed, 25 Apr 2012 19:46:16 +0000 (-0700) Subject: net/http: ignore paths on CONNECT requests in ServeMux X-Git-Tag: go1.1rc2~3311 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=61a8eb07f80b1db11a527060c9d861a20ab86d52;p=gostls13.git net/http: ignore paths on CONNECT requests in ServeMux Fixes #3538 R=golang-dev, adg, rsc CC=golang-dev https://golang.org/cl/6117058 --- diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go index 924ffd3481..00daef434c 100644 --- a/src/pkg/net/http/server.go +++ b/src/pkg/net/http/server.go @@ -917,11 +917,13 @@ func (mux *ServeMux) handler(r *Request) Handler { // ServeHTTP dispatches the request to the handler whose // pattern most closely matches the request URL. func (mux *ServeMux) ServeHTTP(w ResponseWriter, r *Request) { - // Clean path to canonical form and redirect. - if p := cleanPath(r.URL.Path); p != r.URL.Path { - w.Header().Set("Location", p) - w.WriteHeader(StatusMovedPermanently) - return + if r.Method != "CONNECT" { + // Clean path to canonical form and redirect. + if p := cleanPath(r.URL.Path); p != r.URL.Path { + w.Header().Set("Location", p) + w.WriteHeader(StatusMovedPermanently) + return + } } mux.handler(r).ServeHTTP(w, r) }