Skip to content

Commit 1f63407

Browse files
committed
fix possible infinite loop
1 parent 6458288 commit 1f63407

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "omnip"
3-
version = "0.7.5"
3+
version = "0.7.6"
44
edition = "2021"
55

66
[lib]

src/http/http_req.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ impl HttpReq {
3030
loop {
3131
let mut tmp_buffer = [0u8; 256];
3232
let len = utils::read_from_stream(outbound_stream, &mut tmp_buffer).await?;
33+
if len == 0 {
34+
log::error!("failed to read request after retrying for 10 times");
35+
return Err(ProxyError::BadRequest);
36+
}
37+
3338
buffer.extend_from_slice(&tmp_buffer[..len]);
3439
let len = buffer.len();
3540
if len > 4 {

src/socks/socks_req.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,13 @@ impl SocksReq {
8686
_ => {}
8787
}
8888

89-
let read_len = utils::read_from_stream(outbound_stream, &mut buf).await?;
90-
if !resp_parser.advance(&buf[..read_len]) {
89+
let len = utils::read_from_stream(outbound_stream, &mut buf).await?;
90+
if len == 0 {
91+
log::error!("failed to read request after retrying for 10 times");
92+
return Err(ProxyError::BadRequest);
93+
}
94+
95+
if !resp_parser.advance(&buf[..len]) {
9196
error!(
9297
"connect failed: {:?}, dst_addr: {}",
9398
resp_parser.state(),

0 commit comments

Comments
 (0)