Loading Experiments.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -65,6 +65,7 @@ class Experiments { "doh_query_timeout_ms", "doh_query_timeout_ms", "doh_probe_timeout_ms", "doh_probe_timeout_ms", "doh_idle_timeout_ms", "doh_idle_timeout_ms", "doh_session_resumption", "mdns_resolution", "mdns_resolution", }; }; // This value is used in updateInternal as the default value if any flags can't be found. // This value is used in updateInternal as the default value if any flags can't be found. Loading PrivateDnsConfiguration.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -505,9 +505,12 @@ int PrivateDnsConfiguration::setDoh(int32_t netId, uint32_t mark, getTimeoutFromFlag("doh_probe_timeout_ms", kDohProbeDefaultTimeoutMs), getTimeoutFromFlag("doh_probe_timeout_ms", kDohProbeDefaultTimeoutMs), .idle_timeout_ms = .idle_timeout_ms = getTimeoutFromFlag("doh_idle_timeout_ms", kDohIdleDefaultTimeoutMs), getTimeoutFromFlag("doh_idle_timeout_ms", kDohIdleDefaultTimeoutMs), .use_session_resumption = Experiments::getInstance()->getFlag("doh_session_resumption", 0) == 1, }; }; LOG(DEBUG) << __func__ << ": probe_timeout_ms=" << flags.probe_timeout_ms LOG(DEBUG) << __func__ << ": probe_timeout_ms=" << flags.probe_timeout_ms << ", idle_timeout_ms=" << flags.idle_timeout_ms; << ", idle_timeout_ms=" << flags.idle_timeout_ms << ", use_session_resumption=" << flags.use_session_resumption; return doh_net_new(mDohDispatcher, netId, dohId.httpsTemplate.c_str(), dohId.host.c_str(), return doh_net_new(mDohDispatcher, netId, dohId.httpsTemplate.c_str(), dohId.host.c_str(), dohId.ipAddr.c_str(), mark, caCert.c_str(), &flags); dohId.ipAddr.c_str(), mark, caCert.c_str(), &flags); Loading doh.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -53,6 +53,7 @@ struct DohDispatcher; struct FeatureFlags { struct FeatureFlags { uint64_t probe_timeout_ms; uint64_t probe_timeout_ms; uint64_t idle_timeout_ms; uint64_t idle_timeout_ms; bool use_session_resumption; }; }; using ValidationCallback = void (*)(uint32_t net_id, bool success, const char* ip_addr, using ValidationCallback = void (*)(uint32_t net_id, bool success, const char* ip_addr, Loading doh/ffi.rs +3 −0 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ pub type TagSocketCallback = extern "C" fn(sock: RawFd); pub struct FeatureFlags { pub struct FeatureFlags { probe_timeout_ms: uint64_t, probe_timeout_ms: uint64_t, idle_timeout_ms: uint64_t, idle_timeout_ms: uint64_t, use_session_resumption: bool, } } fn wrap_validation_callback(validation_fn: ValidationCallback) -> ValidationReporter { fn wrap_validation_callback(validation_fn: ValidationCallback) -> ValidationReporter { Loading Loading @@ -231,6 +232,7 @@ pub unsafe extern "C" fn doh_net_new( sk_mark, sk_mark, cert_path, cert_path, idle_timeout_ms: flags.idle_timeout_ms, idle_timeout_ms: flags.idle_timeout_ms, use_session_resumption: flags.use_session_resumption, }, }, timeout: Duration::from_millis(flags.probe_timeout_ms), timeout: Duration::from_millis(flags.probe_timeout_ms), }; }; Loading Loading @@ -381,6 +383,7 @@ mod tests { sk_mark: 0, sk_mark: 0, cert_path: None, cert_path: None, idle_timeout_ms: 0, idle_timeout_ms: 0, use_session_resumption: true, }; }; wrap_validation_callback(success_cb)(&info, true).await; wrap_validation_callback(success_cb)(&info, true).await; Loading doh/network/driver.rs +2 −1 Original line number Original line Diff line number Diff line Loading @@ -185,7 +185,8 @@ impl Driver { } } if !self.connection.wait_for_live().await { if !self.connection.wait_for_live().await { let session = self.connection.session(); let session = if self.info.use_session_resumption { self.connection.session() } else { None }; // Try reconnecting // Try reconnecting self.connection = self.connection = build_connection(&self.info, &self.tag_socket, &mut self.config, session).await?; build_connection(&self.info, &self.tag_socket, &mut self.config, session).await?; Loading Loading
Experiments.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -65,6 +65,7 @@ class Experiments { "doh_query_timeout_ms", "doh_query_timeout_ms", "doh_probe_timeout_ms", "doh_probe_timeout_ms", "doh_idle_timeout_ms", "doh_idle_timeout_ms", "doh_session_resumption", "mdns_resolution", "mdns_resolution", }; }; // This value is used in updateInternal as the default value if any flags can't be found. // This value is used in updateInternal as the default value if any flags can't be found. Loading
PrivateDnsConfiguration.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -505,9 +505,12 @@ int PrivateDnsConfiguration::setDoh(int32_t netId, uint32_t mark, getTimeoutFromFlag("doh_probe_timeout_ms", kDohProbeDefaultTimeoutMs), getTimeoutFromFlag("doh_probe_timeout_ms", kDohProbeDefaultTimeoutMs), .idle_timeout_ms = .idle_timeout_ms = getTimeoutFromFlag("doh_idle_timeout_ms", kDohIdleDefaultTimeoutMs), getTimeoutFromFlag("doh_idle_timeout_ms", kDohIdleDefaultTimeoutMs), .use_session_resumption = Experiments::getInstance()->getFlag("doh_session_resumption", 0) == 1, }; }; LOG(DEBUG) << __func__ << ": probe_timeout_ms=" << flags.probe_timeout_ms LOG(DEBUG) << __func__ << ": probe_timeout_ms=" << flags.probe_timeout_ms << ", idle_timeout_ms=" << flags.idle_timeout_ms; << ", idle_timeout_ms=" << flags.idle_timeout_ms << ", use_session_resumption=" << flags.use_session_resumption; return doh_net_new(mDohDispatcher, netId, dohId.httpsTemplate.c_str(), dohId.host.c_str(), return doh_net_new(mDohDispatcher, netId, dohId.httpsTemplate.c_str(), dohId.host.c_str(), dohId.ipAddr.c_str(), mark, caCert.c_str(), &flags); dohId.ipAddr.c_str(), mark, caCert.c_str(), &flags); Loading
doh.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -53,6 +53,7 @@ struct DohDispatcher; struct FeatureFlags { struct FeatureFlags { uint64_t probe_timeout_ms; uint64_t probe_timeout_ms; uint64_t idle_timeout_ms; uint64_t idle_timeout_ms; bool use_session_resumption; }; }; using ValidationCallback = void (*)(uint32_t net_id, bool success, const char* ip_addr, using ValidationCallback = void (*)(uint32_t net_id, bool success, const char* ip_addr, Loading
doh/ffi.rs +3 −0 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ pub type TagSocketCallback = extern "C" fn(sock: RawFd); pub struct FeatureFlags { pub struct FeatureFlags { probe_timeout_ms: uint64_t, probe_timeout_ms: uint64_t, idle_timeout_ms: uint64_t, idle_timeout_ms: uint64_t, use_session_resumption: bool, } } fn wrap_validation_callback(validation_fn: ValidationCallback) -> ValidationReporter { fn wrap_validation_callback(validation_fn: ValidationCallback) -> ValidationReporter { Loading Loading @@ -231,6 +232,7 @@ pub unsafe extern "C" fn doh_net_new( sk_mark, sk_mark, cert_path, cert_path, idle_timeout_ms: flags.idle_timeout_ms, idle_timeout_ms: flags.idle_timeout_ms, use_session_resumption: flags.use_session_resumption, }, }, timeout: Duration::from_millis(flags.probe_timeout_ms), timeout: Duration::from_millis(flags.probe_timeout_ms), }; }; Loading Loading @@ -381,6 +383,7 @@ mod tests { sk_mark: 0, sk_mark: 0, cert_path: None, cert_path: None, idle_timeout_ms: 0, idle_timeout_ms: 0, use_session_resumption: true, }; }; wrap_validation_callback(success_cb)(&info, true).await; wrap_validation_callback(success_cb)(&info, true).await; Loading
doh/network/driver.rs +2 −1 Original line number Original line Diff line number Diff line Loading @@ -185,7 +185,8 @@ impl Driver { } } if !self.connection.wait_for_live().await { if !self.connection.wait_for_live().await { let session = self.connection.session(); let session = if self.info.use_session_resumption { self.connection.session() } else { None }; // Try reconnecting // Try reconnecting self.connection = self.connection = build_connection(&self.info, &self.tag_socket, &mut self.config, session).await?; build_connection(&self.info, &self.tag_socket, &mut self.config, session).await?; Loading