Skip to content

Commit 74034c0

Browse files
committed
support setting DoT or name servers to resolve the server domain
1 parent c6fa589 commit 74034c0

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,8 @@ pub struct QuicClientConfig {
335335
pub local_tcp_server_addr: Option<SocketAddr>,
336336
pub local_udp_server_addr: Option<SocketAddr>,
337337
pub common_cfg: CommonQuicConfig,
338+
pub dot_servers: Vec<String>,
339+
pub name_servers: Vec<String>,
338340
}
339341

340342
#[derive(Debug, Clone)]

src/quic/quic_client.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ impl QuicClient {
7171
} else {
7272
None
7373
};
74-
// TODO specify DoT or dns servers to resolve the server domain
74+
config.dot_servers = quic_client_config.dot_servers.clone();
75+
config.dns_servers = quic_client_config.name_servers.clone();
7576
}
7677
}

src/server.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,8 @@ impl Server {
359359
) -> Result<JoinHandle<()>> {
360360
// if we have to forward tcp/udp through quic tunnel, we can directly use the
361361
// quic client's tcp/udp entry without creating another layer of traffic relay
362-
let server_addr = &self.config.server_addr;
362+
let cfg = &self.config;
363+
let server_addr = &cfg.server_addr;
363364
let (tcp_server_addr, udp_server_addr) = if server_addr.proto == Some(ProtoType::Udp) {
364365
(None, server_addr.net_addr.to_socket_addr())
365366
} else if server_addr.proto == Some(ProtoType::Tcp) {
@@ -371,12 +372,18 @@ impl Server {
371372
)
372373
};
373374

375+
#[allow(warnings)]
376+
let dot_servers = cfg.dot_server.split(',').map(String::from).collect();
377+
let name_servers = cfg.name_servers.split(',').map(String::from).collect();
378+
374379
// with +quic protocols, quic_client will be used to connect to the upstream
375380
let quic_client_config = QuicClientConfig {
376381
server_addr: quic_server_addr,
377382
local_tcp_server_addr: tcp_server_addr,
378383
local_udp_server_addr: udp_server_addr,
379384
common_cfg: common_quic_config,
385+
dot_servers,
386+
name_servers,
380387
};
381388

382389
let mut client = QuicClient::new(quic_client_config);

0 commit comments

Comments
 (0)