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