Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42a73532 authored by Mike Yu's avatar Mike Yu
Browse files

DoH: Change to use runtime with current thread scheduler in doh_query()

Perfetto shows that using runtime with multi-thread scheduler
in doh_query() results in 8 threads created and terminated every time
doh_query() is called, which takes approximately 2 ms. So,
change the code to use a runtime with current thread scheduler.
This approximately reduces the time overhead of doh_query()
from 2 ms to 0.5 ms.

Bug: 212364676
Test: cd packages/modules/DnsResolver && atest
Change-Id: I7652e6982b1485ee435b6399798b19badd264500
parent 9b748ee3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ use std::os::unix::io::RawFd;
use std::str::FromStr;
use std::sync::{Arc, Mutex};
use std::{ptr, slice};
use tokio::runtime::Runtime;
use tokio::runtime::Builder;
use tokio::sync::oneshot;
use tokio::task;
use url::Url;
@@ -275,7 +275,7 @@ pub unsafe extern "C" fn doh_query(
        return DOH_RESULT_CAN_NOT_SEND;
    }

    if let Ok(rt) = Runtime::new() {
    if let Ok(rt) = Builder::new_current_thread().enable_all().build() {
        let local = task::LocalSet::new();
        match local.block_on(&rt, async { timeout(t, resp_rx).await }) {
            Ok(v) => match v {