Bug 1201979: Support requestBody in onBeforeRequest, use boundary from header if ever possible. r?kmag draft
authorGiorgio Maone <g.maone@informaction.com>
Fri, 20 May 2016 00:18:55 +0200
changeset 368972 dd531e527bc33d5de6125d9fbe09280658b314cb
parent 368926 0f65c8cf4e24d58273c920dc5ce77280c6af306f
child 389909 e6f73b2b1b96e4d3fb1b550b78548b92c97ee45c
push id18682
push userg.maone@informaction.com
push dateThu, 19 May 2016 22:23:26 +0000
reviewerskmag
bugs1201979
milestone49.0a1
Bug 1201979: Support requestBody in onBeforeRequest, use boundary from header if ever possible. r?kmag MozReview-Commit-ID: JksaqkHln2s
toolkit/modules/addons/WebRequestUpload.jsm
--- 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);