+3
-5
@@ -31,13 +31,11 @@ fn read_body<T: Read + Write>(length: u32, socket: &mut ProxySocket<T>) {
|
|||||||
let stdin = io::stdin();
|
let stdin = io::stdin();
|
||||||
let mut handle = stdin.lock();
|
let mut handle = stdin.lock();
|
||||||
|
|
||||||
if let Ok(_) = handle.read_exact(&mut buffer) {
|
if handle.read_exact(&mut buffer).is_ok() && valid_length(length) {
|
||||||
if valid_length(length) {
|
socket.write_all(&buffer).unwrap();
|
||||||
socket.write(&buffer).unwrap();
|
|
||||||
socket.flush().unwrap();
|
socket.flush().unwrap();
|
||||||
read_response(socket);
|
read_response(socket);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_response<T: Read>(socket: &mut ProxySocket<T>) {
|
fn read_response<T: Read>(socket: &mut ProxySocket<T>) {
|
||||||
@@ -52,7 +50,7 @@ fn write_response(buf: &[u8]) {
|
|||||||
let mut out = stdout.lock();
|
let mut out = stdout.lock();
|
||||||
|
|
||||||
out.write_u32::<NativeEndian>(buf.len() as u32).unwrap();
|
out.write_u32::<NativeEndian>(buf.len() as u32).unwrap();
|
||||||
out.write(buf).unwrap();
|
out.write_all(buf).unwrap();
|
||||||
out.flush().unwrap();
|
out.flush().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-5
@@ -44,12 +44,11 @@ pub fn connect(buffer_size: u32) -> io::Result<ProxySocket<UnixStream>> {
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
let socket_name = "org.keepassxc.KeePassXC.BrowserServer";
|
let socket_name = "org.keepassxc.KeePassXC.BrowserServer";
|
||||||
let socket: String;
|
let socket = if let Ok(dir) = if cfg!(target_os = "macos") {env::var("TMPDIR") } else { env::var("XDG_RUNTIME_DIR") } {
|
||||||
if let Ok(dir) = if cfg!(target_os = "macos") {env::var("TMPDIR") } else { env::var("XDG_RUNTIME_DIR") } {
|
format!("{}/{}", dir, socket_name)
|
||||||
socket = format!("{}/{}", dir, socket_name);
|
|
||||||
} else {
|
} else {
|
||||||
socket = format!("/tmp/{}", socket_name);
|
format!("/tmp/{}", socket_name)
|
||||||
}
|
};
|
||||||
let s = UnixStream::connect(socket)?;
|
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(), 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");
|
socket::setsockopt(s.as_raw_fd(), RcvBuf, &(buffer_size as usize)).expect("setsockopt for RcvBuf failed");
|
||||||
|
|||||||
Reference in New Issue
Block a user