diff --git a/bin/darkirc/src/irc/client.rs b/bin/darkirc/src/irc/client.rs index c0548d9f5..de658c0e3 100644 --- a/bin/darkirc/src/irc/client.rs +++ b/bin/darkirc/src/irc/client.rs @@ -40,7 +40,7 @@ use smol::{ }; use super::{ - server::{IrcServer, MAX_NICK_LEN}, + server::{IrcServer, MAX_MSG_LEN, MAX_NICK_LEN}, NickServ, Privmsg, SERVER_NAME, }; @@ -413,6 +413,9 @@ impl Client { let channel = args.split_ascii_whitespace().next().unwrap().to_string(); let msg_offset = args.find(':').unwrap() + 1; let (_, msg) = args.split_at(msg_offset); + + // Truncate messages longer than MAX_MSG_LEN + let msg = if msg.len() > MAX_MSG_LEN { msg.split_at(MAX_MSG_LEN).0 } else { msg }; let mut privmsg = Privmsg { channel, nick: self.nickname.read().await.to_string(), msg: msg.to_string() }; diff --git a/bin/darkirc/src/irc/server.rs b/bin/darkirc/src/irc/server.rs index 27613bdf8..23b28a095 100644 --- a/bin/darkirc/src/irc/server.rs +++ b/bin/darkirc/src/irc/server.rs @@ -48,6 +48,9 @@ use crate::{ /// Max channel/nick length pub const MAX_NICK_LEN: usize = 24; +/// Max message length +pub const MAX_MSG_LEN: usize = 512; + /// IRC server instance pub struct IrcServer { /// DarkIrc instance