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"
|
||||
colored = "3.0.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_yml = "0.0.12"
|
||||
crossterm = { version = "0.29.0", optional = true }
|
||||
homedir = { version = "0.3.4", optional = true }
|
||||
clap = { version = "4.5.36", features = ["derive"] }
|
||||
native-tls = { version = "0.2.14", optional = true }
|
||||
|
||||
[features]
|
||||
default = ["ssl", "pretty", "homedir"]
|
||||
|
||||
ssl = ["dep:native-tls"]
|
||||
pretty = ["dep:crossterm"]
|
||||
homedir = ["dep:homedir"]
|
@ -50,7 +50,9 @@ impl ChatStorage {
|
||||
pub fn update(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||
let mut messages = messages;
|
||||
messages.drain(max_length..);
|
||||
if messages.len() > max_length {
|
||||
messages.drain(max_length..);
|
||||
}
|
||||
*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
|
||||
///
|
||||
/// max_messages - max messages in list
|
||||
@ -141,15 +148,13 @@ pub fn read_messages(
|
||||
let data = if start_null {
|
||||
let mut data = skip_null(stream)?;
|
||||
|
||||
loop {
|
||||
let mut buf = vec![0; 1];
|
||||
stream.read_exact(&mut buf)?;
|
||||
let ch = buf[0];
|
||||
if ch == 0 {
|
||||
break
|
||||
}
|
||||
data.push(ch);
|
||||
}
|
||||
let mut buf = vec![0; 10];
|
||||
let len = stream.read(&mut buf)?;
|
||||
buf.truncate(len);
|
||||
|
||||
remove_trailing_null(&mut buf);
|
||||
data.append(&mut buf);
|
||||
|
||||
data
|
||||
} else {
|
||||
let mut data = vec![0; 10];
|
||||
@ -180,7 +185,8 @@ pub fn read_messages(
|
||||
let mut data = skip_null(stream)?;
|
||||
while data.len() < to_read {
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user