Bug 1201979: Support requestBody in onBeforeRequest, use boundary from header if ever possible. r?kmag
MozReview-Commit-ID: JksaqkHln2s
--- a/toolkit/modules/addons/WebRequestUpload.jsm
+++ b/toolkit/modules/addons/WebRequestUpload.jsm
@@ -103,21 +103,20 @@ function parseFormData(stream, channel,
function appendFormData(formData, name, value) {
if (name in formData) {
formData[name].push(value);
} else {
formData[name] = [value];
}
}
- function parseMultiPart(firstChunk) {
+ function parseMultiPart(firstChunk, boundary = "") {
let formData = Object.create(null);
- let boundary;
- {
+ if (!boundary) {
let match = firstChunk.match(/^--\S+/);
if (!match) {
return null;
}
boundary = match[0];
}
let unslash = (s) => s.replace(/\\"/g, '"');
@@ -207,17 +206,17 @@ function parseFormData(stream, channel,
return null;
}
}
let match = contentType.match(/^(?:multipart\/form-data;\s*boundary=(\S*)|application\/x-www-form-urlencoded\s)/i);
if (match) {
let boundary = match[1];
if (boundary) {
- return parseMultiPart(chunk);
+ return parseMultiPart(chunk, boundary);
} else {
return parseUrlEncoded(chunk);
}
}
}
} finally {
for (let stream of touchedStreams) {
rewind(stream);