diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py
index 7469067de2ba69273c5327f6fa47eaa7a1857d2e_bWVyY3VyaWFsL2J1bmRsZTIucHk=..d40029b4296e986f210ad9bc8bee1ce1523fd189_bWVyY3VyaWFsL2J1bmRsZTIucHk= 100644
--- a/mercurial/bundle2.py
+++ b/mercurial/bundle2.py
@@ -657,12 +657,7 @@
             raise error.BundleValueError('negative bundle param size: %i'
                                          % paramssize)
         if paramssize:
-            for p in self._readexact(paramssize).split(' '):
-                p = p.split('=', 1)
-                p = [urllib.unquote(i) for i in p]
-                if len(p) < 2:
-                    p.append(None)
-                self._processparam(*p)
-                params[p[0]] = p[1]
+            params = self._readexact(paramssize)
+            params = self._processallparams(params)
         return params
 
@@ -667,5 +662,18 @@
         return params
 
+    def _processallparams(self, paramsblock):
+        """"""
+        params = {}
+        for p in paramsblock.split(' '):
+            p = p.split('=', 1)
+            p = [urllib.unquote(i) for i in p]
+            if len(p) < 2:
+                p.append(None)
+            self._processparam(*p)
+            params[p[0]] = p[1]
+        return params
+
+
     def _processparam(self, name, value):
         """process a parameter, applying its effect if needed