diff --git a/channels/irc/src/main.rs b/channels/irc/src/main.rs index 27aae5d..ee94e89 100644 --- a/channels/irc/src/main.rs +++ b/channels/irc/src/main.rs @@ -139,12 +139,7 @@ impl AsyncWriter for TlsWriter { line: &str, ) -> std::pin::Pin> + '_>> { let data = format!("{line}\r\n"); - Box::pin(async move { - self.inner.write_all(data.as_bytes()).await?; - // Unconfirmed reports that some servers require - // multiple lines to be in separate packets - self.inner.flush().await - }) + Box::pin(async move { self.inner.write_all(data.as_bytes()).await }) } } @@ -158,12 +153,7 @@ impl AsyncWriter for PlainWriter { line: &str, ) -> std::pin::Pin> + '_>> { let data = format!("{line}\r\n"); - Box::pin(async move { - self.inner.write_all(data.as_bytes()).await?; - // Unconfirmed reports that some servers require - // multiple lines to be in separate packets - self.inner.flush().await - }) + Box::pin(async move { self.inner.write_all(data.as_bytes()).await }) } } @@ -235,8 +225,6 @@ impl State { } async fn send_privmsg(&mut self, target: &str, msg: &str) -> io::Result<()> { - // Send PRIVMSG, which is used for both private and channel messages. - // Splits into multiple fragments if necessary. // IRC max line = 512 bytes including CRLF. The server prepends // our prefix when relaying: ":nick!~user@host PRIVMSG target :msg\r\n" // User is often ~nick (nick_len + 1). Host is up to 63 bytes. @@ -258,11 +246,7 @@ impl State { // Find last char boundary at or before max_msg let mut i = max_msg; while i > 0 && !remaining.is_char_boundary(i) { i -= 1; } - // To avoid splitting mid-word, see if there was a space recently - let mut j = i; - while j > 0 && j > i-10 && remaining.as_bytes()[j] != b' ' { j -= 1; } - if remaining.as_bytes()[j] == b' ' { j } - else if i == 0 { max_msg } else { i } + if i == 0 { max_msg } else { i } }; let (chunk, rest) = remaining.split_at(split_at); self.send_raw(&format!("PRIVMSG {target} :{chunk}")).await?;