refactor resolver tuples into structs
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
eeda96d94a
commit
eaf1cf38a5
5 changed files with 93 additions and 47 deletions
|
@ -2,7 +2,7 @@ mod client;
|
|||
mod data;
|
||||
pub(super) mod emerg_access;
|
||||
pub(super) mod migrations;
|
||||
mod resolver;
|
||||
pub(crate) mod resolver;
|
||||
pub(super) mod updates;
|
||||
|
||||
use std::{
|
||||
|
|
|
@ -12,21 +12,21 @@ use hickory_resolver::TokioAsyncResolver;
|
|||
use reqwest::dns::{Addrs, Name, Resolve, Resolving};
|
||||
use ruma::OwnedServerName;
|
||||
|
||||
use crate::sending::FedDest;
|
||||
use crate::sending::{CachedDest, CachedOverride};
|
||||
|
||||
type WellKnownMap = HashMap<OwnedServerName, (FedDest, String)>;
|
||||
type TlsNameMap = HashMap<String, (Vec<IpAddr>, u16)>;
|
||||
type WellKnownMap = HashMap<OwnedServerName, CachedDest>;
|
||||
type TlsNameMap = HashMap<String, CachedOverride>;
|
||||
|
||||
pub struct Resolver {
|
||||
pub destinations: Arc<RwLock<WellKnownMap>>, // actual_destination, host
|
||||
pub overrides: Arc<RwLock<TlsNameMap>>,
|
||||
pub resolver: Arc<TokioAsyncResolver>,
|
||||
pub hooked: Arc<Hooked>,
|
||||
pub(crate) resolver: Arc<TokioAsyncResolver>,
|
||||
pub(crate) hooked: Arc<Hooked>,
|
||||
}
|
||||
|
||||
pub struct Hooked {
|
||||
pub overrides: Arc<RwLock<TlsNameMap>>,
|
||||
pub resolver: Arc<TokioAsyncResolver>,
|
||||
pub(crate) struct Hooked {
|
||||
overrides: Arc<RwLock<TlsNameMap>>,
|
||||
resolver: Arc<TokioAsyncResolver>,
|
||||
}
|
||||
|
||||
impl Resolver {
|
||||
|
@ -117,15 +117,15 @@ impl Resolve for Resolver {
|
|||
|
||||
impl Resolve for Hooked {
|
||||
fn resolve(&self, name: Name) -> Resolving {
|
||||
let addr_port = self
|
||||
let cached = self
|
||||
.overrides
|
||||
.read()
|
||||
.expect("locked for reading")
|
||||
.get(name.as_str())
|
||||
.cloned();
|
||||
|
||||
if let Some((addr, port)) = addr_port {
|
||||
cached_to_reqwest(&addr, port)
|
||||
if let Some(cached) = cached {
|
||||
cached_to_reqwest(&cached.ips, cached.port)
|
||||
} else {
|
||||
resolve_to_reqwest(self.resolver.clone(), name)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue