Commit 37f05cc6 authored by Guilherme Goncalves's avatar Guilherme Goncalves Committed by Brad Fitzpatrick

net/http: document and test behavior of ServeMux with ports

Beginning on Go 1.9, ServeMux has been dropping the port number from the Host
header and in the path pattern. This commit explicitly mentions the change in
behavior and adds a simple test case to ensure consistency.

Fixes #23351.

Change-Id: I0270c8bd96cda92c13ac6437cdf66c2807b3042d
Reviewed-on: https://go-review.googlesource.com/120557Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 444e7ddb
......@@ -5924,6 +5924,28 @@ func TestServerCloseListenerOnce(t *testing.T) {
}
}
// Issue 23351: document and test behavior of ServeMux with ports
func TestStripPortFromHost(t *testing.T) {
mux := NewServeMux()
mux.HandleFunc("example.com/", func(w ResponseWriter, r *Request) {
fmt.Fprintf(w, "OK")
})
mux.HandleFunc("example.com:9000/", func(w ResponseWriter, r *Request) {
fmt.Fprintf(w, "uh-oh!")
})
req := httptest.NewRequest("GET", "http://example.com:9000/", nil)
rw := httptest.NewRecorder()
mux.ServeHTTP(rw, req)
response := rw.Body.String()
if response != "OK" {
t.Errorf("Response gotten was %q", response)
}
}
func BenchmarkResponseStatusLine(b *testing.B) {
b.ReportAllocs()
b.RunParallel(func(pb *testing.PB) {
......
......@@ -2137,9 +2137,9 @@ func RedirectHandler(url string, code int) Handler {
// "/codesearch" and "codesearch.google.com/" without also taking over
// requests for "http://www.google.com/".
//
// ServeMux also takes care of sanitizing the URL request path,
// redirecting any request containing . or .. elements or repeated slashes
// to an equivalent, cleaner URL.
// ServeMux also takes care of sanitizing the URL request path and the Host
// header, stripping the port number and redirecting any request containing . or
// .. elements or repeated slashes to an equivalent, cleaner URL.
type ServeMux struct {
mu sync.RWMutex
m map[string]muxEntry
......
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