# HG changeset patch # User Augie Fackler # Date 1523668288 14400 # Node ID a1f785148097f1903164af34b6ad10bf561f17b9 # Parent 6cb7e3b9188348cb13440d210244d91cb76cdfd2 httppeer: work around API differences on urllib Request objects Since this is only a problem in httppeer, I'd rather keep this a local-to-the-module kludge rather than pile more on pycompat. We'll still find it easily to clean up later because it checks pycompat.ispy3. Differential Revision: https://phab.mercurial-scm.org/D3347 diff -r 6cb7e3b91883 -r a1f785148097 mercurial/httppeer.py --- a/mercurial/httppeer.py Fri Apr 13 21:07:18 2018 -0400 +++ b/mercurial/httppeer.py Fri Apr 13 21:11:28 2018 -0400 @@ -264,6 +264,14 @@ return req, cu, qs +def _reqdata(req): + """Get request data, if any. If no data, returns None.""" + if pycompat.ispy3: + return req.data + if not req.has_data(): + return None + return req.get_data() + def sendrequest(ui, opener, req): """Send a prepared HTTP request. @@ -290,9 +298,8 @@ if hgargssize is not None: dbg(line % ' %d bytes of commands arguments in headers' % hgargssize) - - if req.has_data(): - data = req.get_data() + data = _reqdata(req) + if data is not None: length = getattr(data, 'length', None) if length is None: length = len(data)