use match

This commit is contained in:
yggverse 2026-04-03 08:56:47 +03:00
parent 23d4167511
commit 462bba605d

View file

@ -210,25 +210,27 @@ impl CertStore {
impl ResolvesServerCert for CertStore { impl ResolvesServerCert for CertStore {
fn resolve(&self, client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>> { fn resolve(&self, client_hello: ClientHello<'_>) -> Option<Arc<CertifiedKey>> {
if let Some(name) = client_hello.server_name() { match client_hello.server_name() {
let name: &str = name;
// The certificate list is sorted so the longest match will always // The certificate list is sorted so the longest match will always
// appear first. We have to find the first that is either this // appear first. We have to find the first that is either this
// domain or a parent domain of the current one. // domain or a parent domain of the current one.
Some(name) => {
let name: &str = name;
self.certs self.certs
.iter() .iter()
.find(|(s, _)| name.ends_with(s)) .find(|(s, _)| name.ends_with(s))
// only the key is interesting // only the key is interesting
.map(|(_, k)| k) .map(|(_, k)| k)
.cloned() .cloned()
} else { }
// Fallback to default cert. // Fallback to default cert.
// * must exist in the `.certificates` root // * must exist in the `.certificates` root
// * CN value can be any // * CN value can be any
self.certs None => self
.certs
.iter() .iter()
.find(|(domain, _)| domain.is_empty()) .find(|(domain, _)| domain.is_empty())
.map(|(_, key)| Arc::clone(key)) .map(|(_, key)| Arc::clone(key)),
} }
} }
} }