sslutil: support TLSV1_ALERT_PROTOCOL_VERSION reason code
It looks like python 3.10 returns a different reason code on protocol
version mismatch.
Differential Revision: https://phab.mercurial-scm.org/D12491
--- a/mercurial/sslutil.py Sat Apr 09 14:28:17 2022 +0200
+++ b/mercurial/sslutil.py Sat Apr 09 14:41:55 2022 +0200
@@ -425,7 +425,10 @@
# outright. Hopefully the reason for this error is that we require
# TLS 1.1+ and the server only supports TLS 1.0. Whatever the
# reason, try to emit an actionable warning.
- if e.reason == 'UNSUPPORTED_PROTOCOL':
+ if e.reason in (
+ 'UNSUPPORTED_PROTOCOL',
+ 'TLSV1_ALERT_PROTOCOL_VERSION',
+ ):
# We attempted TLS 1.0+.
if settings[b'minimumprotocol'] == b'tls1.0':
# We support more than just TLS 1.0+. If this happens,
--- a/tests/test-https.t Sat Apr 09 14:28:17 2022 +0200
+++ b/tests/test-https.t Sat Apr 09 14:41:55 2022 +0200
@@ -374,26 +374,26 @@
(could not negotiate a common security protocol (tls1.1+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
$ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.1 id https://localhost:$HGPORT/
(could not negotiate a common security protocol (tls1.1+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
$ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.2 id https://localhost:$HGPORT/
(could not negotiate a common security protocol (tls1.2+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
$ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.2 id https://localhost:$HGPORT1/
(could not negotiate a common security protocol (tls1.2+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
--insecure will allow TLS 1.0 connections and override configs
@@ -417,7 +417,7 @@
(could not negotiate a common security protocol (tls1.2+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
.hg/hgrc file [hostsecurity] settings are applied to remote ui instances (issue5305)
@@ -430,7 +430,7 @@
(could not negotiate a common security protocol (tls1.2+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
(consider contacting the operator of this server and ask them to support modern TLS protocol versions; or, set hostsecurity.localhost:minimumprotocol=tls1.0 to allow use of legacy, less secure protocols when communicating with this server)
(see https://mercurial-scm.org/wiki/SecureConnections for more info)
- abort: error: .*(unsupported protocol|wrong ssl version).* (re)
+ abort: error: .*(unsupported protocol|wrong ssl version|alert protocol version).* (re)
[100]
$ killdaemons.py hg0.pid