mirror of
https://github.com/golang/go
synced 2024-11-18 11:24:41 -07:00
Don't prefix Url.Path with a slash in Request.write,
because Url.Path already starts with one. Avoid crashing in Request.ParseForm if there is no body. R=rsc APPROVED=rsc DELTA=5 (4 added, 0 deleted, 1 changed) OCL=30552 CL=30607
This commit is contained in:
parent
71f19d66d4
commit
343bfcfca7
@ -36,6 +36,7 @@ var (
|
|||||||
HeaderTooLong = &ProtocolError{"http header too long"};
|
HeaderTooLong = &ProtocolError{"http header too long"};
|
||||||
BadContentLength = &ProtocolError{"invalid content length"};
|
BadContentLength = &ProtocolError{"invalid content length"};
|
||||||
ShortEntityBody = &ProtocolError{"entity body too short"};
|
ShortEntityBody = &ProtocolError{"entity body too short"};
|
||||||
|
NoEntityBody = &ProtocolError{"no entity body"};
|
||||||
BadHeader = &ProtocolError{"malformed http header"};
|
BadHeader = &ProtocolError{"malformed http header"};
|
||||||
BadRequest = &ProtocolError{"invalid http request"};
|
BadRequest = &ProtocolError{"invalid http request"};
|
||||||
BadHTTPVersion = &ProtocolError{"unsupported http version"};
|
BadHTTPVersion = &ProtocolError{"unsupported http version"};
|
||||||
@ -124,7 +125,7 @@ const defaultUserAgent = "http.Client";
|
|||||||
// Write an HTTP request -- header and body -- in wire format.
|
// Write an HTTP request -- header and body -- in wire format.
|
||||||
// See Send for a list of which Request fields we use.
|
// See Send for a list of which Request fields we use.
|
||||||
func (req *Request) write(w io.Writer) os.Error {
|
func (req *Request) write(w io.Writer) os.Error {
|
||||||
uri := "/" + URLEscape(req.Url.Path);
|
uri := URLEscape(req.Url.Path);
|
||||||
if req.Url.RawQuery != "" {
|
if req.Url.RawQuery != "" {
|
||||||
uri += "?" + req.Url.RawQuery;
|
uri += "?" + req.Url.RawQuery;
|
||||||
}
|
}
|
||||||
@ -493,6 +494,9 @@ func parseForm(body string) (data map[string] *vector.StringVector, err os.Error
|
|||||||
|
|
||||||
// ParseForm parses the request body as a form.
|
// ParseForm parses the request body as a form.
|
||||||
func (r *Request) ParseForm() (err os.Error) {
|
func (r *Request) ParseForm() (err os.Error) {
|
||||||
|
if r.Body == nil {
|
||||||
|
return NoEntityBody
|
||||||
|
}
|
||||||
ct, ok := r.Header["Content-Type"];
|
ct, ok := r.Header["Content-Type"];
|
||||||
if !ok {
|
if !ok {
|
||||||
ct = "application/x-www-form-urlencoded"; // default
|
ct = "application/x-www-form-urlencoded"; // default
|
||||||
|
Loading…
Reference in New Issue
Block a user