From 4998f0b548eb00ad92ed696f7e34cb746d5b4293 Mon Sep 17 00:00:00 2001 From: Robert Gerus Date: Wed, 23 Dec 2015 20:57:31 +0100 Subject: [PATCH] Last change was overcomplicated. --- irc/irc.go | 27 +++++++-------------------- irc/message.go | 5 +++++ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/irc/irc.go b/irc/irc.go index b4505af..cbcc337 100644 --- a/irc/irc.go +++ b/irc/irc.go @@ -11,7 +11,6 @@ import ( "net" "sync" "time" - "unicode/utf8" "github.com/arachnist/dyncfg" ) @@ -40,27 +39,15 @@ type Connection struct { func (c *Connection) Sender(msg Message) { c.l.Lock() defer c.l.Unlock() + c.writer.WriteString(msg.String() + endline) + log.Println(c.network, "-->", msg.String()) + c.writer.Flush() if msg.WireLen() > maxLength { - currLen := 0 - for i, ch := range msg.String() { - currLen += utf8.RuneLen(ch) - if currLen > maxLength { - c.writer.WriteString(msg.String()[:i] + endline) - log.Println(c.network, "-->", msg.String()) - c.writer.Flush() - // eh, it is a bit naive to assume that we won't explode again… - if msg.Command == "PRIVMSG" { // we don't care otherwise - newMsg := msg - newMsg.Trailing = "Message truncated" - go c.Sender(newMsg) - } - return - } + if msg.Command == "PRIVMSG" { // we don't care otherwise + newMsg := msg + newMsg.Trailing = "Message truncated" + go c.Sender(newMsg) } - } else { - c.writer.WriteString(msg.String() + endline) - log.Println(c.network, "-->", msg.String()) - c.writer.Flush() } } diff --git a/irc/message.go b/irc/message.go index e1d448b..8d98ae8 100644 --- a/irc/message.go +++ b/irc/message.go @@ -288,6 +288,11 @@ func (m *Message) Bytes() []byte { buffer.WriteString(m.Trailing) } + // We need the limit the buffer length. + if buffer.Len() > (maxLength) { + buffer.Truncate(maxLength) + } + return buffer.Bytes() }