diff options
author | louiz’ <louiz@louiz.org> | 2016-06-15 12:19:19 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2016-06-15 15:50:45 +0200 |
commit | 4b1c580bb9bc03d656e59d702c72c3e793a1bbe0 (patch) | |
tree | a0e6c78955d1a06f54d39f55f16d280cd8e80a21 /src | |
parent | 6235fb2d0326b18a9e013ae13dfb1fd0577ffd9f (diff) | |
download | biboumi-4b1c580bb9bc03d656e59d702c72c3e793a1bbe0.tar.gz biboumi-4b1c580bb9bc03d656e59d702c72c3e793a1bbe0.tar.bz2 biboumi-4b1c580bb9bc03d656e59d702c72c3e793a1bbe0.tar.xz biboumi-4b1c580bb9bc03d656e59d702c72c3e793a1bbe0.zip |
cut messages at 512 bytes, taking into account the UTF-8 codepoints
ref #3067
Diffstat (limited to 'src')
-rw-r--r-- | src/irc/irc_client.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp index 2cf0840..1d56361 100644 --- a/src/irc/irc_client.cpp +++ b/src/irc/irc_client.cpp @@ -388,6 +388,8 @@ void IrcClient::send_message(IrcMessage&& message) res += " " + arg; } res += "\r\n"; + log_debug("Effective size: ", res.size()); + log_debug(res); this->send_data(std::move(res)); } @@ -458,8 +460,7 @@ bool IrcClient::send_channel_message(const std::string& chan_name, const std::st } // Cut the message body into 512-bytes parts, because the whole command // must fit into 512 bytes. - // Count the ':' at the start of the text, and two spaces - const auto line_size = 512 - ::strlen("PRIVMSG") - chan_name.length() - 3; + const auto line_size = 500 - ::strlen("PRIVMSG ") - chan_name.length() - ::strlen(" :\r\n"); const auto lines = cut(body, line_size); for (const auto& line: lines) this->send_message(IrcMessage("PRIVMSG", {chan_name, line})); |