allow MultipartReader() to process multipart/mixed

This commit is contained in:
OneOfOne 2018-02-21 21:19:42 +02:00
parent ac81c5c402
commit 885ff1d9c9
No known key found for this signature in database
GPG Key ID: F3A4E8B6760B7805
1 changed files with 5 additions and 5 deletions

View File

@ -411,7 +411,7 @@ var multipartByReader = &multipart.Form{
}
// MultipartReader returns a MIME multipart reader if this is a
// multipart/form-data POST request, else returns nil and an error.
// multipart/form-data or a multipart/mixed POST request, else returns nil and an error.
// Use this function instead of ParseMultipartForm to
// process the request body as a stream.
func (r *Request) MultipartReader() (*multipart.Reader, error) {
@ -422,16 +422,16 @@ func (r *Request) MultipartReader() (*multipart.Reader, error) {
return nil, errors.New("http: multipart handled by ParseMultipartForm")
}
r.MultipartForm = multipartByReader
return r.multipartReader()
return r.multipartReader(true)
}
func (r *Request) multipartReader() (*multipart.Reader, error) {
func (r *Request) multipartReader(allowMixed bool) (*multipart.Reader, error) {
v := r.Header.Get("Content-Type")
if v == "" {
return nil, ErrNotMultipart
}
d, params, err := mime.ParseMediaType(v)
if err != nil || d != "multipart/form-data" {
if err != nil || d != "multipart/form-data" || (allowMixed && d != "multipart/mixed") {
return nil, ErrNotMultipart
}
boundary, ok := params["boundary"]
@ -1207,7 +1207,7 @@ func (r *Request) ParseMultipartForm(maxMemory int64) error {
return nil
}
mr, err := r.multipartReader()
mr, err := r.multipartReader(false)
if err != nil {
return err
}