Trim empty bytes from the pre-allocated buffer
This commit is contained in:
parent
e0472ea6f0
commit
75fc554525
|
@ -1,7 +1,7 @@
|
||||||
channels = ["#main", "#circe"]
|
channels = ["#main", "#circe"]
|
||||||
host = "192.168.1.28"
|
host = "karx.xyz"
|
||||||
mode = "+B"
|
mode = "+B"
|
||||||
nickname = "circe"
|
nickname = "circe"
|
||||||
port = 6667
|
port = 6697
|
||||||
username = "circe"
|
username = "circe"
|
||||||
|
ssl = true
|
||||||
|
|
10
src/lib.rs
10
src/lib.rs
|
@ -119,6 +119,7 @@ impl Client {
|
||||||
self.write_command(commands::Command::PONG(code.to_string()))?;
|
self.write_command(commands::Command::PONG(code.to_string()))?;
|
||||||
}
|
}
|
||||||
commands::Command::OTHER(line) => {
|
commands::Command::OTHER(line) => {
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
println!("{}", line);
|
println!("{}", line);
|
||||||
if line.contains("001") {
|
if line.contains("001") {
|
||||||
break;
|
break;
|
||||||
|
@ -146,7 +147,11 @@ impl Client {
|
||||||
Err(_) => return None,
|
Err(_) => return None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Some(String::from_utf8_lossy(&buffer).into())
|
let res = String::from_utf8_lossy(&buffer);
|
||||||
|
|
||||||
|
// The trimming is required because if the message is less than 512 bytes it will be
|
||||||
|
// padded with a bunch of 0u8 because of the pre-allocated buffer
|
||||||
|
Some(res.trim().trim_matches(char::from(0)).trim().into())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Read data coming from the IRC as a [`commands::Command`].
|
/// Read data coming from the IRC as a [`commands::Command`].
|
||||||
|
@ -167,6 +172,9 @@ impl Client {
|
||||||
/// Returns error if there are no new messages. This should not be taken as an actual error, because nothing went wrong.
|
/// Returns error if there are no new messages. This should not be taken as an actual error, because nothing went wrong.
|
||||||
pub fn read(&mut self) -> Result<commands::Command, ()> {
|
pub fn read(&mut self) -> Result<commands::Command, ()> {
|
||||||
if let Some(string) = self.read_string() {
|
if let Some(string) = self.read_string() {
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
|
println!("{:#?}", string);
|
||||||
|
|
||||||
let command = commands::Command::from_str(&string);
|
let command = commands::Command::from_str(&string);
|
||||||
|
|
||||||
if let commands::Command::PONG(command) = command {
|
if let commands::Command::PONG(command) = command {
|
||||||
|
|
Loading…
Reference in a new issue