Patchwork D7512: exchange: guard against method invocation on `b2caps=None` args

login
register
mail settings
Submitter phabricator
Date Nov. 24, 2019, 1:01 a.m.
Message ID <45c9d37e1e13d65f7110ad57d955741e@localhost.localdomain>
Download mbox | patch
Permalink /patch/43507/
State Not Applicable
Headers show

Comments

phabricator - Nov. 24, 2019, 1:01 a.m.
Closed by commit rHG0dbea180525c: exchange: guard against method invocation on `b2caps=None` args (authored by mharbison72).
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7512?vs=18337&id=18379

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7512/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7512

AFFECTED FILES
  mercurial/exchange.py

CHANGE DETAILS




To: mharbison72, #hg-reviewers, dlax, indygreg
Cc: mercurial-devel

Patch

diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -2474,7 +2474,7 @@ 
     **kwargs
 ):
     """add a changegroup part to the requested bundle"""
-    if not kwargs.get('cg', True):
+    if not kwargs.get('cg', True) or not b2caps:
         return
 
     version = b'01'
@@ -2536,7 +2536,7 @@ 
     """add a bookmark part to the requested bundle"""
     if not kwargs.get('bookmarks', False):
         return
-    if b'bookmarks' not in b2caps:
+    if not b2caps or b'bookmarks' not in b2caps:
         raise error.Abort(_(b'no common bookmarks exchange method'))
     books = bookmod.listbinbookmarks(repo)
     data = bookmod.binaryencode(books)
@@ -2577,7 +2577,7 @@ 
 ):
     """add phase heads part to the requested bundle"""
     if kwargs.get('phases', False):
-        if not b'heads' in b2caps.get(b'phases'):
+        if not b2caps or not b'heads' in b2caps.get(b'phases'):
             raise error.Abort(_(b'no common phases exchange method'))
         if heads is None:
             heads = repo.heads()
@@ -2641,7 +2641,7 @@ 
     # Don't send unless:
     # - changeset are being exchanged,
     # - the client supports it.
-    if not (kwargs.get('cg', True) and b'hgtagsfnodes' in b2caps):
+    if not b2caps or not (kwargs.get('cg', True) and b'hgtagsfnodes' in b2caps):
         return
 
     outgoing = _computeoutgoing(repo, heads, common)
@@ -2675,6 +2675,7 @@ 
     # - narrow bundle isn't in play (not currently compatible).
     if (
         not kwargs.get('cg', True)
+        or not b2caps
         or b'rev-branch-cache' not in b2caps
         or kwargs.get('narrow', False)
         or repo.ui.has_section(_NARROWACL_SECTION)