diff options
-rw-r--r-- | src/pkg/http/request.go | 11 | ||||
-rw-r--r-- | 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 89a5d837c..2110dfd52 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 b04e0baba..2b47e0b3b 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" + |