From b6999f72094d9c828aea8b5e19e9ae01007afe66 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Mon, 30 May 2022 21:06:25 +0200 Subject: [PATCH 1/3] Avoid unecessary late initialisation --- src/proxy_socket.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/proxy_socket.rs b/src/proxy_socket.rs index cd75550..b78ac5a 100644 --- a/src/proxy_socket.rs +++ b/src/proxy_socket.rs @@ -44,12 +44,11 @@ pub fn connect(buffer_size: u32) -> io::Result> { use std::time::Duration; let socket_name = "org.keepassxc.KeePassXC.BrowserServer"; - let socket: String; - if let Ok(dir) = if cfg!(target_os = "macos") {env::var("TMPDIR") } else { env::var("XDG_RUNTIME_DIR") } { - socket = format!("{}/{}", dir, socket_name); + let socket = if let Ok(dir) = if cfg!(target_os = "macos") {env::var("TMPDIR") } else { env::var("XDG_RUNTIME_DIR") } { + format!("{}/{}", dir, socket_name) } else { - socket = format!("/tmp/{}", socket_name); - } + format!("/tmp/{}", socket_name) + }; let s = UnixStream::connect(socket)?; socket::setsockopt(s.as_raw_fd(), SndBuf, &(buffer_size as usize)).expect("setsockopt for SndBuf failed"); socket::setsockopt(s.as_raw_fd(), RcvBuf, &(buffer_size as usize)).expect("setsockopt for RcvBuf failed"); From df160d90ae969fa56b189e0c0d95aabf641b41f1 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Mon, 30 May 2022 21:07:30 +0200 Subject: [PATCH 2/3] Make sure all data is written to socket Using `write` means that it's possible that not all data gets written out. Rather than check the return value and write in a loop, just use `write_all`. --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6938088..4d791fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,7 +33,7 @@ fn read_body(length: u32, socket: &mut ProxySocket) { if let Ok(_) = handle.read_exact(&mut buffer) { if valid_length(length) { - socket.write(&buffer).unwrap(); + socket.write_all(&buffer).unwrap(); socket.flush().unwrap(); read_response(socket); } @@ -52,7 +52,7 @@ fn write_response(buf: &[u8]) { let mut out = stdout.lock(); out.write_u32::(buf.len() as u32).unwrap(); - out.write(buf).unwrap(); + out.write_all(buf).unwrap(); out.flush().unwrap(); } From 689db2fcdef49576a5fd8d3146f50b9d94ff3be5 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Mon, 30 May 2022 21:09:14 +0200 Subject: [PATCH 3/3] Simplify `if` condition --- src/main.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4d791fe..f99773b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,12 +31,10 @@ fn read_body(length: u32, socket: &mut ProxySocket) { let stdin = io::stdin(); let mut handle = stdin.lock(); - if let Ok(_) = handle.read_exact(&mut buffer) { - if valid_length(length) { - socket.write_all(&buffer).unwrap(); - socket.flush().unwrap(); - read_response(socket); - } + if handle.read_exact(&mut buffer).is_ok() && valid_length(length) { + socket.write_all(&buffer).unwrap(); + socket.flush().unwrap(); + read_response(socket); } }