mirror of
https://github.com/MeexReay/bRAC.git
synced 2025-05-06 13:38:04 +03:00
fix chat reading
This commit is contained in:
parent
fc339f46ce
commit
8c442de4fa
@ -8,16 +8,15 @@ rand = "0.9.0"
|
|||||||
regex = "1.11.1"
|
regex = "1.11.1"
|
||||||
colored = "3.0.0"
|
colored = "3.0.0"
|
||||||
lazy_static = "1.5.0"
|
lazy_static = "1.5.0"
|
||||||
crossterm = { version = "0.29.0", optional = true }
|
clap = { version = "4.5.36", features = ["derive"] }
|
||||||
serde = { version = "1.0.219", features = ["serde_derive"] }
|
serde = { version = "1.0.219", features = ["serde_derive"] }
|
||||||
serde_yml = "0.0.12"
|
serde_yml = "0.0.12"
|
||||||
|
crossterm = { version = "0.29.0", optional = true }
|
||||||
homedir = { version = "0.3.4", optional = true }
|
homedir = { version = "0.3.4", optional = true }
|
||||||
clap = { version = "4.5.36", features = ["derive"] }
|
|
||||||
native-tls = { version = "0.2.14", optional = true }
|
native-tls = { version = "0.2.14", optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["ssl", "pretty", "homedir"]
|
default = ["ssl", "pretty", "homedir"]
|
||||||
|
|
||||||
ssl = ["dep:native-tls"]
|
ssl = ["dep:native-tls"]
|
||||||
pretty = ["dep:crossterm"]
|
pretty = ["dep:crossterm"]
|
||||||
homedir = ["dep:homedir"]
|
homedir = ["dep:homedir"]
|
@ -50,7 +50,9 @@ impl ChatStorage {
|
|||||||
pub fn update(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
pub fn update(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||||
let mut messages = messages;
|
let mut messages = messages;
|
||||||
messages.drain(max_length..);
|
if messages.len() > max_length {
|
||||||
|
messages.drain(max_length..);
|
||||||
|
}
|
||||||
*self.messages.write().unwrap() = messages;
|
*self.messages.write().unwrap() = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
src/proto.rs
26
src/proto.rs
@ -120,6 +120,13 @@ pub fn skip_null(stream: &mut impl Read) -> Result<Vec<u8>, Box<dyn Error>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn remove_trailing_null(vec: &mut Vec<u8>) -> Result<(), Box<dyn Error>> {
|
||||||
|
while vec.ends_with(&[0]) {
|
||||||
|
vec.remove(vec.len()-1);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
/// Read messages
|
/// Read messages
|
||||||
///
|
///
|
||||||
/// max_messages - max messages in list
|
/// max_messages - max messages in list
|
||||||
@ -141,15 +148,13 @@ pub fn read_messages(
|
|||||||
let data = if start_null {
|
let data = if start_null {
|
||||||
let mut data = skip_null(stream)?;
|
let mut data = skip_null(stream)?;
|
||||||
|
|
||||||
loop {
|
let mut buf = vec![0; 10];
|
||||||
let mut buf = vec![0; 1];
|
let len = stream.read(&mut buf)?;
|
||||||
stream.read_exact(&mut buf)?;
|
buf.truncate(len);
|
||||||
let ch = buf[0];
|
|
||||||
if ch == 0 {
|
remove_trailing_null(&mut buf);
|
||||||
break
|
data.append(&mut buf);
|
||||||
}
|
|
||||||
data.push(ch);
|
|
||||||
}
|
|
||||||
data
|
data
|
||||||
} else {
|
} else {
|
||||||
let mut data = vec![0; 10];
|
let mut data = vec![0; 10];
|
||||||
@ -180,7 +185,8 @@ pub fn read_messages(
|
|||||||
let mut data = skip_null(stream)?;
|
let mut data = skip_null(stream)?;
|
||||||
while data.len() < to_read {
|
while data.len() < to_read {
|
||||||
let mut buf = vec![0; to_read - data.len()];
|
let mut buf = vec![0; to_read - data.len()];
|
||||||
stream.read_exact(&mut buf)?;
|
let len = stream.read(&mut buf)?;
|
||||||
|
buf.truncate(len);
|
||||||
data.append(&mut buf);
|
data.append(&mut buf);
|
||||||
}
|
}
|
||||||
data
|
data
|
||||||
|
Loading…
Reference in New Issue
Block a user