Skip to content

Commit 6d3a817

Browse files
committed
build: update deps
1 parent 4986a65 commit 6d3a817

File tree

9 files changed

+123
-71
lines changed

9 files changed

+123
-71
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@
22
target/
33
.DS_Store
44
.idea/
5+
6+
tuic-server/dbg.toml

Cargo.lock

Lines changed: 70 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tuic-client/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ rustls-pemfile = { version = "2", default-features = false, features = ["std"] }
5252
# Error-handling
5353
thiserror = { version = "2", default-features = false }
5454
anyhow = "1"
55-
eyre = { version = "0" }
55+
eyre = { version = "0.6" }
5656

5757
# Logging
5858
time = { version = "0.3", features = ["macros", "local-offset"] }

tuic-quinn/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ thiserror = { version = "2", default-features = false }
1919
tuic = { path = "../tuic", default-features = false, features = ["async_marshal", "marshal", "model"] }
2020
uuid = { version = "1", default-features = false, features = ["std"] }
2121
tokio = { version = "1", default-features = false, features = ["io-util"] }
22-
eyre = { version = "0" }
22+
eyre = { version = "0.6" }

tuic-server/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,5 @@ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"
7575
tempfile = "3"
7676
tokio = { version = "1", features = ["full", "test-util"] }
7777
x509-parser = "0.18"
78-
chrono = "0.4"
78+
chrono = "0.4"
79+
tokio-test = "0.4"

tuic-server/src/connection/handle_task.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use super::{Connection, ERROR_CODE, UdpSession};
1818
use crate::{
1919
config::OutboundRule,
2020
error::Error,
21-
io::exchange_tcp,
21+
io::copy_io,
2222
restful,
2323
utils::{IpMode, UdpRelayMode},
2424
};
@@ -226,7 +226,7 @@ impl Connection {
226226

227227
// a -> b tx
228228
// a <- b rx
229-
let (tx, rx, err) = exchange_tcp(&mut conn, &mut stream).await;
229+
let (tx, rx, err) = copy_io(&mut conn, &mut stream).await;
230230
if err.is_some() {
231231
_ = conn.reset(ERROR_CODE);
232232
} else {
@@ -241,9 +241,9 @@ impl Connection {
241241
restful::traffic_tx(&self.ctx, &uuid, tx);
242242
restful::traffic_rx(&self.ctx, &uuid, rx);
243243
if let Some(err) = err {
244-
return Err(err);
244+
return Err(err.into());
245245
}
246-
Ok(())
246+
eyre::Ok(())
247247
};
248248

249249
match process.await {

tuic-server/src/io.rs

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
use tokio::io::{AsyncReadExt, AsyncWriteExt};
1+
use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt};
22

3-
const BUFFER_SIZE: usize = 8 * 1024;
3+
const BUFFER_SIZE: usize = 16 * 1024;
44

5-
pub async fn exchange_tcp(
6-
a: &mut tuic_quinn::Connect,
7-
b: &mut tokio::net::TcpStream,
8-
) -> (usize, usize, Option<eyre::Error>) {
5+
pub async fn copy_io<A, B>(a: &mut A, b: &mut B) -> (usize, usize, Option<std::io::Error>)
6+
where
7+
A: AsyncRead + AsyncWrite + Unpin + ?Sized,
8+
B: AsyncRead + AsyncWrite + Unpin + ?Sized,
9+
{
910
let mut a2b = [0u8; BUFFER_SIZE];
1011
let mut b2a = [0u8; BUFFER_SIZE];
1112

@@ -16,42 +17,40 @@ pub async fn exchange_tcp(
1617

1718
loop {
1819
tokio::select! {
19-
a2b_res = a.recv.read(&mut a2b) => match a2b_res {
20-
Ok(Some(num)) => {
21-
a2b_num += num;
22-
if let Err(err) = b.write_all(&a2b[..num]).await {
23-
last_err = Some(err.into());
24-
break;
25-
}
26-
},
27-
// EOF
28-
Ok(None) => {
20+
a2b_res = a.read(&mut a2b) => match a2b_res {
21+
Ok(num) => {
22+
// EOF
23+
if num == 0 {
2924
break;
30-
},
31-
Err(err) => {
32-
last_err = Some(err.into());
25+
}
26+
a2b_num += num;
27+
if let Err(err) = b.write_all(&a2b[..num]).await {
28+
last_err = Some(err);
3329
break;
34-
}
35-
},
36-
37-
b2a_res = b.read(&mut b2a) => match b2a_res {
38-
Ok(num) => {
39-
// EOF
40-
if num == 0 {
41-
break;
42-
}
43-
b2a_num += num;
44-
if let Err(err) = a.send.write_all(&b2a[..num]).await {
45-
last_err = Some(err.into());
46-
break;
47-
}
48-
},
49-
Err(err) => {
50-
last_err = Some(err.into());
30+
}
31+
},
32+
Err(err) => {
33+
last_err = Some(err);
34+
break;
35+
}
36+
},
37+
b2a_res = b.read(&mut b2a) => match b2a_res {
38+
Ok(num) => {
39+
// EOF
40+
if num == 0 {
5141
break;
52-
},
53-
}
54-
42+
}
43+
b2a_num += num;
44+
if let Err(err) = a.write_all(&b2a[..num]).await {
45+
last_err = Some(err);
46+
break;
47+
}
48+
},
49+
Err(err) => {
50+
last_err = Some(err);
51+
break;
52+
},
53+
}
5554
}
5655
}
5756

tuic-server/src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ struct AppContext {
4040

4141
#[tokio::main]
4242
async fn main() -> eyre::Result<()> {
43+
4344
let cfg = match parse_config(lexopt::Parser::from_env()).await {
4445
Ok(cfg) => cfg,
4546
Err(ConfigError::Version(msg) | ConfigError::Help(msg)) => {
@@ -51,7 +52,10 @@ async fn main() -> eyre::Result<()> {
5152
process::exit(1);
5253
}
5354
};
55+
run(cfg).await
56+
}
5457

58+
pub async fn run(cfg: Config) -> eyre::Result<()> {
5559
let mut online_counter = HashMap::new();
5660
for (user, _) in cfg.users.iter() {
5761
online_counter.insert(user.to_owned(), AtomicUsize::new(0));

0 commit comments

Comments
 (0)