Fixed len 0 but index 0
This commit is contained in:
+41
-35
@@ -10,54 +10,60 @@ pub fn run() {
|
|||||||
))
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
for stream in server.incoming() {
|
loop {
|
||||||
match stream {
|
for stream in server.incoming() {
|
||||||
Ok(mut client) => {
|
match stream {
|
||||||
println!("Client connected");
|
Ok(mut client) => {
|
||||||
let mut buf = [0; 1024];
|
println!("Client connected");
|
||||||
|
let mut buf = [0; 1024];
|
||||||
|
|
||||||
let buf_len = client.read(&mut buf).unwrap();
|
let buf_len = client.read(&mut buf).unwrap();
|
||||||
|
|
||||||
let req = String::from_utf8_lossy(&buf[..buf_len]);
|
let req = String::from_utf8_lossy(&buf[..buf_len]);
|
||||||
let req = req.lines().collect::<Vec<_>>();
|
let req = req.lines().collect::<Vec<_>>();
|
||||||
|
|
||||||
if req[0].starts_with("ROUTE") {
|
if req.len() == 0 {
|
||||||
println!("Route mode");
|
continue;
|
||||||
let addr = req[0].split_once(' ').unwrap().1;
|
}
|
||||||
println!("Connecting to {addr}");
|
|
||||||
let mut target = TcpStream::connect(addr).unwrap();
|
if req[0].starts_with("ROUTE") {
|
||||||
let mut target_t = target.try_clone().unwrap();
|
println!("Route mode");
|
||||||
let mut client_t = client.try_clone().unwrap();
|
let addr = req[0].split_once(' ').unwrap().1;
|
||||||
println!("Connected to {addr}");
|
println!("Connecting to {addr}");
|
||||||
client.write_all("CONN EST".as_bytes()).unwrap();
|
let mut target = TcpStream::connect(addr).unwrap();
|
||||||
|
let mut target_t = target.try_clone().unwrap();
|
||||||
|
let mut client_t = client.try_clone().unwrap();
|
||||||
|
println!("Connected to {addr}");
|
||||||
|
client.write_all("CONN EST".as_bytes()).unwrap();
|
||||||
|
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
loop {
|
||||||
|
let mut buf = [0; 2048];
|
||||||
|
let buf_len = client_t.read(&mut buf).unwrap();
|
||||||
|
if buf_len == 0 {
|
||||||
|
target_t.shutdown(std::net::Shutdown::Both).unwrap();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
println!("Client -> Target {:?}", &buf[..buf_len]);
|
||||||
|
target_t.write_all(&buf[..buf_len]).unwrap();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
std::thread::spawn(move || {
|
|
||||||
loop {
|
loop {
|
||||||
let mut buf = [0; 2048];
|
let mut buf = [0; 2048];
|
||||||
let buf_len = client_t.read(&mut buf).unwrap();
|
let buf_len = target.read(&mut buf).unwrap();
|
||||||
if buf_len == 0 {
|
if buf_len == 0 {
|
||||||
target_t.shutdown(std::net::Shutdown::Both).unwrap();
|
client.shutdown(std::net::Shutdown::Both).unwrap();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
println!("Client -> Target {:?}", &buf[..buf_len]);
|
println!("Target -> Client {:?}", &buf[..buf_len]);
|
||||||
target_t.write_all(&buf[..buf_len]).unwrap();
|
client.write_all(&buf[..buf_len]).unwrap();
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
loop {
|
|
||||||
let mut buf = [0; 2048];
|
|
||||||
let buf_len = target.read(&mut buf).unwrap();
|
|
||||||
if buf_len == 0 {
|
|
||||||
client.shutdown(std::net::Shutdown::Both).unwrap();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
println!("Target -> Client {:?}", &buf[..buf_len]);
|
|
||||||
client.write_all(&buf[..buf_len]).unwrap();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user