From 89747b349d6ba97e3c18198be2b6c0915c429a2c Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 8 Oct 2024 17:30:27 +0300 Subject: [PATCH] modified: Cargo.lock modified: Cargo.toml modified: src/client.rs --- Cargo.lock | 10 ++++++++++ Cargo.toml | 5 +++-- src/client.rs | 7 ++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e552a22..f98345c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -695,6 +695,7 @@ dependencies = [ "jni 0.20.0", "log", "network-interface", + "nonblock", "packet", "rand", "robusta_jni", @@ -1271,6 +1272,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonblock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51c7a4f22e5f2e2bd805d6ab56f1ae87eb1815673e1b452048896fb687a8a3d4" +dependencies = [ + "libc", +] + [[package]] name = "num-traits" version = "0.2.19" diff --git a/Cargo.toml b/Cargo.toml index 4a5ae38..83d62c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,9 +35,10 @@ base64 = "0.22.1" chrono = "0.4.38" console-subscriber = "0.4.0" network-interface = "2.0.0" -fast32 = "1.0.2" [target.'cfg(target_os="android")'.dependencies] jni = "^0.20" robusta_jni = "0.2.2" -android_logger = "0.14.1" \ No newline at end of file +android_logger = "0.14.1" +nonblock = "0.2.0" +fast32 = "1.0.2" \ No newline at end of file diff --git a/src/client.rs b/src/client.rs index a4e7a51..eae3067 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,6 +1,6 @@ use crossbeam_channel::unbounded; use socket2::SockAddr; -use tokio::{net::UdpSocket, sync::Mutex}; +use tokio::{net::UdpSocket, sync::Mutex, io::BufReader, io::BufWriter}; use base64::prelude::*; use log::{error, info, warn}; use std::sync::Arc; @@ -8,7 +8,7 @@ use std::net::Ipv4Addr; use x25519_dalek::{PublicKey, StaticSecret}; use std::{ fs::File, - io::{self, Read, Write, BufReader, BufWriter}, + io::{self, Read, Write}, net::SocketAddr, process::Command, os::unix::io::FromRawFd, @@ -50,7 +50,8 @@ pub async fn client_mode(client_config: ClientConfiguration, fd: i32, env: &JNIE tokio::spawn(async move { while let Ok(bytes) = rx.recv() { lltx.send("Write to tun.".as_bytes().to_vec()); - dev_writer.write_all(&bytes).unwrap(); + dev_writer.write_all(&bytes).await; + dev_writer.flush().await; } });