mirror of
https://github.com/gissleh/irc.git
synced 2026-09-29 00:05:34 +00:00
event_packet: Fixed bug caused by the second trailing delimiter in a message like ((Remove :01 goofs!*))
This commit is contained in:
@@ -299,3 +299,36 @@ func TestClient(t *testing.T) {
|
||||
t.Logf("Log[%d] = %#+v", i, logLine)
|
||||
}
|
||||
}
|
||||
|
||||
// TestParenthesesBug tests that the bugfix causing `((Remove :01 goofs!*))` to be parsed as an empty message. It was
|
||||
// initially thought to be caused by the parentheses (like a hidden m_roleplay NPC attribution removal), hence the name
|
||||
// for this function.
|
||||
func TestParenthesesBug(t *testing.T) {
|
||||
gotMessage := true
|
||||
|
||||
client := irc.New(context.Background(), irc.Config{
|
||||
Nick: "Stuff",
|
||||
})
|
||||
|
||||
irc.Handle(func(event *irc.Event, client *irc.Client) {
|
||||
if event.Name() == "packet.privmsg" || event.Nick == "Dante" {
|
||||
gotMessage = true
|
||||
|
||||
if event.Text != "((Remove :01 goofs!*))" {
|
||||
t.Errorf("Expected: %#+v", "((Remove :01 goofs!*))")
|
||||
t.Errorf("Result: %#+v", event.Text)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
packet, err := irc.ParsePacket("@example/tag=32; :Dante!TheBeans@captain.purple.beans PRIVMSG Stuff :((Remove :01 goofs!*))")
|
||||
if err != nil {
|
||||
t.Error("Parse", err)
|
||||
}
|
||||
|
||||
client.EmitSync(context.Background(), packet)
|
||||
|
||||
if !gotMessage {
|
||||
t.Error("Message was not received")
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -2,6 +2,7 @@ package irc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@@ -63,7 +64,7 @@ func ParsePacket(line string) (Event, error) {
|
||||
}
|
||||
|
||||
// Parse body
|
||||
split := strings.Split(line, " :")
|
||||
split := strings.SplitN(line, " :", 2)
|
||||
tokens := strings.Split(split[0], " ")
|
||||
|
||||
if len(split) == 2 {
|
||||
@@ -73,6 +74,8 @@ func ParsePacket(line string) (Event, error) {
|
||||
event.verb = tokens[0]
|
||||
event.Args = tokens[1:]
|
||||
|
||||
fmt.Printf("%#+v\n", split)
|
||||
|
||||
// Parse CTCP
|
||||
if (event.verb == "PRIVMSG" || event.verb == "NOTICE") && strings.HasPrefix(event.Text, "\x01") {
|
||||
verbtext := strings.SplitN(strings.Replace(event.Text, "\x01", "", 2), " ", 2)
|
||||
|
||||
Reference in New Issue
Block a user