Skip to content

Commit 307e961

Browse files
authored
Merge pull request #324 from sfackler/fix-root-config
Cache openssl cert lookup and don't bail on error
2 parents e861c7c + c5289c0 commit 307e961

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- uses: actions/checkout@v2
2121
- uses: sfackler/actions/rustup@master
2222
- uses: sfackler/actions/rustfmt@master
23-
23+
2424
windows:
2525
strategy:
2626
fail-fast: false
@@ -35,7 +35,7 @@ jobs:
3535
- uses: actions/checkout@v2
3636
- uses: sfackler/actions/rustup@master
3737
with:
38-
version: 1.65.0
38+
version: 1.80.0
3939
- run: echo "::set-output name=version::$(rustc --version)"
4040
id: rust-version
4141
- uses: actions/cache@v1

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ license = "MIT OR Apache-2.0"
66
description = "A wrapper over a platform's native TLS implementation"
77
repository = "https://github.com/sfackler/rust-native-tls"
88
readme = "README.md"
9-
rust-version = "1.53.0"
9+
rust-version = "1.80.0"
1010

1111
[package.metadata.docs.rs]
1212
features = ["alpn"]

build.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ fn main() {
1717
println!("cargo:rustc-cfg=have_min_max_version");
1818
}
1919
}
20+
21+
println!("cargo::rustc-check-cfg=cfg(have_min_max_version)")
2022
}

src/imp/openssl.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ use self::openssl::ssl::{
1111
SslVerifyMode,
1212
};
1313
use self::openssl::x509::{store::X509StoreBuilder, X509VerifyResult, X509};
14+
use self::openssl_probe::ProbeResult;
1415
use std::error;
1516
use std::fmt;
1617
use std::io;
18+
use std::sync::LazyLock;
1719

1820
use {Protocol, TlsAcceptorBuilder, TlsConnectorBuilder};
1921

22+
static PROBE_RESULT: LazyLock<ProbeResult> = LazyLock::new(openssl_probe::probe);
23+
2024
#[cfg(have_min_max_version)]
2125
fn supported_protocols(
2226
min: Option<Protocol>,
@@ -268,8 +272,17 @@ impl TlsConnector {
268272
pub fn new(builder: &TlsConnectorBuilder) -> Result<TlsConnector, Error> {
269273
let mut connector = SslConnector::builder(SslMethod::tls())?;
270274

271-
let probe = openssl_probe::probe();
272-
connector.load_verify_locations(probe.cert_file.as_deref(), probe.cert_dir.as_deref())?;
275+
// We need to load these separately so an error on one doesn't prevent the other from loading.
276+
if let Some(cert_file) = &PROBE_RESULT.cert_file {
277+
if let Err(e) = connector.load_verify_locations(Some(cert_file), None) {
278+
debug!("load_verify_locations cert file error: {:?}", e);
279+
}
280+
}
281+
if let Some(cert_dir) = &PROBE_RESULT.cert_dir {
282+
if let Err(e) = connector.load_verify_locations(None, Some(cert_dir)) {
283+
debug!("load_verify_locations cert dir error: {:?}", e);
284+
}
285+
}
273286

274287
if let Some(ref identity) = builder.identity {
275288
connector.set_certificate(&identity.0.cert)?;

0 commit comments

Comments
 (0)