abort: error: EOF occurred in violation of protocol (_ssl.c:590)

Tony Mechelynck antoine.mechelynck at gmail.com
Sat Feb 25 23:39:21 UTC 2017


Could there have been a timeout? https is just a tiny wee bit slower
than http and that can push you just over the edge in some marginal
cases, especially with big repos or a busy client machine.

When cloning a very big repo, I have had some success by separating
the clone step into two, namely "hg clone -U serverURL" (getting only
the metadata; replace of course «serverURL» by the actual URL) then,
after a cd one level down to the top-level directory of the clone, "hg
update -r default" (building a working directory tree without
accessing the Internet).

Best regards,
Tony.

On Fri, Feb 24, 2017 at 10:05 PM, Andreas Buff <autobuff at gmx.de> wrote:
> Hi,
>
> I seem to have an issue using HTTPS/TLS when cloning a repo.
>
> Using "hg clone https://domain.com/path/to/repo",
>
> The error I get is:
>
> "abort: error: EOF occurred in violation of protocol (_ssl.c:590)"
>
> --debug --traceback output can be found on the bottom.
>
> This does work though: hg clone http://selenic.com/hg mercurial-repo
>
> I am using Mercurial 4.0.1 on OSX 10.11.6 (installed with package
> installer).
>
> hg --version:
> Mercurial Distributed SCM (version 4.0.1)
>
> python -V:
> Python 2.7.13
>
> My .hgrc:
>
> [hostsecurity]
> disabletls10warning = true
> [hostfingerprints]
> domain.com = my:sh:aa:a0:29:04:02:ed:aa:23:40:66:b2:eb:e1:0a:03:c0:ec:66
>
> This Python script runs fine:
>
> import socket, ssl
> context = ssl.create_default_context()
> context.verify_mode = ssl.CERT_REQUIRED
> context.load_default_certs()
> conn = context.wrap_socket(socket.socket(socket.AF_INET),
> server_hostname='www.mozilla.org')
> conn.connect(('www.mozilla.org', 443))
>
> This Python script:
>
> import ssl
> context = ssl.create_default_context()
> context.load_default_certs()
> context.cert_store_stats()
>
> returns: {'x509': 0, 'x509_ca': 0, 'crl': 0}
>
> which does look fishy to me.
>
> I searched a lot and get out of ideas.
>
> Thankful for any hints.
>
> Best,
> Andreas
>
> Output of "hg clone --debug --traceback https://domain.com/path/to/repo":
> sending capabilities command Traceback (most recent call last):   File
> "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 205, in
> _runcatchfunc     return _dispatch(req)   File
> "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 901, in
> _dispatch     cmdpats, cmdoptions)   File
> "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 650, in
> runcommand     ret = _runcommand(ui, options, cmd, d)   File
> "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 909, in
> _runcommand     return cmdfunc()   File
> "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 898, in
> <lambda>     d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
> File "/Library/Python/2.7/site-packages/mercurial/util.py", line 1037, in
> check     return func(*args, **kwargs)   File
> "/Library/Python/2.7/site-packages/mercurial/commands.py", line 1559, in
> clone     shareopts=opts.get('shareopts'))   File
> "/Library/Python/2.7/site-packages/mercurial/hg.py", line 447, in clone
> srcpeer = peer(ui, peeropts, source)   File
> "/Library/Python/2.7/site-packages/mercurial/hg.py", line 175, in peer
> return _peerorrepo(rui, path, create).peer()   File
> "/Library/Python/2.7/site-packages/mercurial/hg.py", line 152, in
> _peerorrepo     obj = _peerlookup(path).instance(ui, path, create)   File
> "/Library/Python/2.7/site-packages/mercurial/httppeer.py", line 298, in
> instance     inst._fetchcaps()   File
> "/Library/Python/2.7/site-packages/mercurial/httppeer.py", line 78, in
> _fetchcaps     self.caps = set(self._call('capabilities').split())   File
> "/Library/Python/2.7/site-packages/mercurial/httppeer.py", line 207, in
> _call     fp = self._callstream(cmd, **args)   File
> "/Library/Python/2.7/site-packages/mercurial/httppeer.py", line 154, in
> _callstream     resp = self.urlopener.open(req)   File
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
> line 431, in open     response = self._open(req, data)   File
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
> line 449, in _open     '_open', req)   File
> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py",
> line 409, in _call_chain     result = func(*args)   File
> "/Library/Python/2.7/site-packages/mercurial/url.py", line 342, in
> https_open     return self.do_open(self._makeconnection, req)   File
> "/Library/Python/2.7/site-packages/mercurial/keepalive.py", line 264, in
> do_open     raise urlerr.urlerror(err) URLError: <urlopen error EOF occurred
> in violation of protocol (_ssl.c:590)>
>
> _______________________________________________
> Mercurial mailing list
> Mercurial at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial
>



More information about the Mercurial mailing list