From fce9ed42b1d59650d47e999ea61a2c707407ea2a Mon Sep 17 00:00:00 2001 From: "Stephen M. Coakley" Date: Wed, 28 Oct 2020 20:26:58 -0500 Subject: [PATCH 1/2] Probe for OpenSSL certificates only once Fixes #362. --- src/easy/handler.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/easy/handler.rs b/src/easy/handler.rs index fc0ea77c82..8b09dd3e52 100644 --- a/src/easy/handler.rs +++ b/src/easy/handler.rs @@ -673,7 +673,20 @@ impl Easy2 { #[cfg(need_openssl_probe)] fn ssl_configure(&mut self) { - let probe = ::openssl_probe::probe(); + use std::sync::Once; + + static mut PROBE: Option<::openssl_probe::ProbeResult> = None; + static INIT: Once = Once::new(); + + // Probe for certificate stores the first time an easy handle is created, + // and re-use the results for subsequent handles. + INIT.call_once(|| unsafe { + PROBE = Some(::openssl_probe::probe()); + }); + let probe = unsafe { + PROBE.as_ref().unwrap() + }; + if let Some(ref path) = probe.cert_file { let _ = self.cainfo(path); } From 1941d53be107b8fa6c3aa33f12929b0b3a415021 Mon Sep 17 00:00:00 2001 From: "Stephen M. Coakley" Date: Thu, 29 Oct 2020 19:10:53 -0500 Subject: [PATCH 2/2] rustfmt --- src/easy/handler.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/easy/handler.rs b/src/easy/handler.rs index 8b09dd3e52..685037fb66 100644 --- a/src/easy/handler.rs +++ b/src/easy/handler.rs @@ -683,9 +683,7 @@ impl Easy2 { INIT.call_once(|| unsafe { PROBE = Some(::openssl_probe::probe()); }); - let probe = unsafe { - PROBE.as_ref().unwrap() - }; + let probe = unsafe { PROBE.as_ref().unwrap() }; if let Some(ref path) = probe.cert_file { let _ = self.cainfo(path);