return req, nil;
}
-func parseForm(query string) (m map[string][]string, err os.Error) {
+func parseForm(m map[string][]string, query string) (err os.Error) {
data := make(map[string]*vector.StringVector);
for _, kv := range strings.Split(query, "&", 0) {
kvPair := strings.Split(kv, "=", 2);
vec.Push(value);
}
- m = make(map[string][]string);
for k, vec := range data {
m[k] = vec.Data()
}
if r.Form != nil {
return
}
+ r.Form = make(map[string][]string);
var query string;
-
switch r.Method {
case "GET":
query = r.URL.RawQuery
case "text/plain", "application/x-www-form-urlencoded", "":
var b []byte;
if b, err = io.ReadAll(r.Body); err != nil {
- return
+ return err
}
query = string(b);
// TODO(dsymonds): Handle multipart/form-data
return &badStringError{"unknown Content-Type", ct}
}
}
- r.Form, err = parseForm(query);
- return;
+ return parseForm(r.Form, query);
}
// FormValue returns the first value for the named component of the query.
func TestParseForm(t *testing.T) {
for i, test := range parseTests {
- form, err := parseForm(test.query);
+ form := make(map[string][]string);
+ err := parseForm(form, test.query);
if err != nil {
t.Errorf("test %d: Unexpected error: %v", i, err);
continue;