From 39e91f88582092399910f1d3670cfd8871e2b5e9 Mon Sep 17 00:00:00 2001 From: Petar Maymounkov Date: Mon, 22 Feb 2010 15:39:30 -0800 Subject: [PATCH] http: use RawURL in Request.Write R=rsc CC=golang-dev https://golang.org/cl/217066 --- src/pkg/http/request.go | 11 +++++++---- src/pkg/http/requestwrite_test.go | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pkg/http/request.go b/src/pkg/http/request.go index 89a5d837cdf..2110dfd5253 100644 --- a/src/pkg/http/request.go +++ b/src/pkg/http/request.go @@ -152,7 +152,7 @@ const defaultUserAgent = "Go http package" // Write writes an HTTP/1.1 request -- header and body -- in wire format. // This method consults the following fields of req: // Host -// URL +// RawURL, if non-empty, or else URL // Method (defaults to "GET") // UserAgent (defaults to defaultUserAgent) // Referer @@ -167,9 +167,12 @@ func (req *Request) Write(w io.Writer) os.Error { host = req.URL.Host } - uri := valueOrDefault(urlEscape(req.URL.Path, false), "/") - if req.URL.RawQuery != "" { - uri += "?" + req.URL.RawQuery + uri := req.RawURL + if uri == "" { + uri = valueOrDefault(urlEscape(req.URL.Path, false), "/") + if req.URL.RawQuery != "" { + uri += "?" + req.URL.RawQuery + } } fmt.Fprintf(w, "%s %s HTTP/1.1\r\n", valueOrDefault(req.Method, "GET"), uri) diff --git a/src/pkg/http/requestwrite_test.go b/src/pkg/http/requestwrite_test.go index b04e0babae9..2b47e0b3b14 100644 --- a/src/pkg/http/requestwrite_test.go +++ b/src/pkg/http/requestwrite_test.go @@ -50,7 +50,7 @@ var reqWriteTests = []reqWriteTest{ Form: map[string][]string{}, }, - "GET / HTTP/1.1\r\n" + + "GET http://www.techcrunch.com/ HTTP/1.1\r\n" + "Host: www.techcrunch.com\r\n" + "User-Agent: Fake\r\n" + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" +