From 0a44a5e2a3ab6be3460c1059b88d89a3ad4b128a Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Sat, 9 Mar 2019 19:09:20 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=F0=9F=90=9B=20Fix=20TLS=20location?= =?UTF-8?q?s=20init=20when=20unsupported?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore TLS certificate lookup file and dir locations initialization failure when the TLS backend library doesn't support it. Ref #878 --- pygit2/settings.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/pygit2/settings.py b/pygit2/settings.py index 43904c5b0..01dc8bc21 100644 --- a/pygit2/settings.py +++ b/pygit2/settings.py @@ -38,6 +38,8 @@ from _pygit2 import GIT_OPT_SET_CACHE_MAX_SIZE from _pygit2 import GIT_OPT_SET_SSL_CERT_LOCATIONS +from .errors import GitError + __metaclass__ = type # make all classes new-style by default @@ -59,11 +61,22 @@ class Settings: _search_path = SearchPathList() def __init__(self): + """Initialize global pygit2 and libgit2 settings.""" + self._initialize_tls_certificate_locations() + + def _initialize_tls_certificate_locations(self): + """Set up initial TLS file and directory lookup locations.""" self._default_tls_verify_paths = get_default_verify_paths() - self.set_ssl_cert_locations( - self._default_tls_verify_paths.cafile, - self._default_tls_verify_paths.capath, - ) + try: + self.set_ssl_cert_locations( + self._default_tls_verify_paths.cafile, + self._default_tls_verify_paths.capath, + ) + except GitError as git_err: + if git_err != "TLS backend doesn't support certificate locations": + raise + self._ssl_cert_file = self._default_tls_verify_paths.cafile + self._ssl_cert_dir = self._default_tls_verify_paths.capath @property def search_path(self):