diff --git a/mercurial/httppeer.py b/mercurial/httppeer.py
--- a/mercurial/httppeer.py
+++ b/mercurial/httppeer.py
@@ -283,7 +283,7 @@
         if varyheaders:
             headers['Vary'] = ','.join(varyheaders)
 
-        req = self._requestbuilder(cu, data, headers)
+        req = self._requestbuilder(pycompat.strurl(cu), data, headers)
 
         if data is not None:
             self.ui.debug("sending %s bytes\n" % size)