Mercurial > public > mercurial-scm > hg
diff mercurial/exchange.py @ 26645:2faa7671a4b3
clonebundles: filter on SNI requirement
Server Name Indication (SNI) is commonly used in CDNs and other hosted
environments. Unfortunately, Python <2.7.9 does not support SNI and when
these older Python versions attempt to negotiate TLS to an SNI server,
they raise an opaque error like
"_ssl.c:507: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert
handshake failure."
We introduce a manifest attribute to denote the URL requires SNI and
have clients without SNI support filter these entries.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 13 Oct 2015 10:59:41 -0700 |
parents | 74de1c59f71c |
children | 77769354d4ad |
line wrap: on
line diff
--- a/mercurial/exchange.py Tue Oct 13 11:45:30 2015 -0700 +++ b/mercurial/exchange.py Tue Oct 13 10:59:41 2015 -0700 @@ -12,6 +12,7 @@ import discovery, phases, obsolete, bookmarks as bookmod, bundle2, pushkey import lock as lockmod import streamclone +import sslutil import tags import url as urlmod @@ -1670,6 +1671,11 @@ 'spec: %s\n' % (entry['URL'], str(e))) continue + if 'REQUIRESNI' in entry and not sslutil.hassni: + repo.ui.debug('filtering %s because SNI not supported\n' % + entry['URL']) + continue + newentries.append(entry) return newentries