Auto merge of #24670 - glowe:add-crlf-to-boundary, r=Manishearth

Add CRLF to encoded multipart form data

<!-- Please describe your changes on the following line: -->
Some (3) WPT tests were failing because they expected the body for a multipart form data response to end with a CRLF. So I updated encode_multipart_form_data to add the missing terminator.

Looking at the corresponding spec (https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart%2Fform-data-encoding-algorithm) and RFC (https://tools.ietf.org/html/rfc7578), I couldn't find anything mentioned about this detail.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
bors-servo 2019-11-29 20:21:38 -05:00 committed by GitHub
commit 3db473714b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 3 additions and 12 deletions

View file

@ -1366,7 +1366,7 @@ pub fn encode_multipart_form_data(
} }
} }
let mut boundary_bytes = format!("\r\n--{}--", boundary).into_bytes(); let mut boundary_bytes = format!("\r\n--{}--\r\n", boundary).into_bytes();
result.append(&mut boundary_bytes); result.append(&mut boundary_bytes);
result result

View file

@ -34,15 +34,6 @@
[Consume response's body: from FormData to formData] [Consume response's body: from FormData to formData]
expected: FAIL expected: FAIL
[Consume response's body: from FormData to blob]
expected: FAIL
[Consume response's body: from FormData to text]
expected: FAIL
[Consume response's body: from FormData to arrayBuffer]
expected: FAIL
[Consume response's body: from stream to blob] [Consume response's body: from stream to blob]
expected: FAIL expected: FAIL

View file

@ -18499,7 +18499,7 @@
"testharness" "testharness"
], ],
"mozilla/FileAPI/resource/file-submission.py": [ "mozilla/FileAPI/resource/file-submission.py": [
"24d5129eb8d38c9415622c78ed401ae344273ce1", "79e72fb99a95c186e4916b40627ee762d694b8ea",
"support" "support"
], ],
"mozilla/FileAPI/resource/upload.txt": [ "mozilla/FileAPI/resource/upload.txt": [

View file

@ -21,7 +21,7 @@ def main(request, response):
boundary = content_type[1].strip("boundary=") boundary = content_type[1].strip("boundary=")
body = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"file-input\"; filename=\"upload.txt\"" body = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"file-input\"; filename=\"upload.txt\""
body += "\r\n" + "content-type: text/plain\r\n\r\nHello\r\n--" + boundary + "--" body += "\r\n" + "content-type: text/plain\r\n\r\nHello\r\n--" + boundary + "--\r\n"
if body != request.body: if body != request.body:
return fail("request body doesn't match: " + body + "+++++++" + request.body) return fail("request body doesn't match: " + body + "+++++++" + request.body)