From 5bd323c1afdd669cdd4f206f5cc372a276edebaa Mon Sep 17 00:00:00 2001 From: Claire Blackshaw Date: Wed, 22 Feb 2017 14:26:41 +0000 Subject: [PATCH 1/3] Was getting false positive on : so changed code to ensure it was finding space+prefix --- message.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/message.go b/message.go index ff398eb..13b8d7a 100644 --- a/message.go +++ b/message.go @@ -205,11 +205,7 @@ func ParseMessage(raw string) (m *Message) { // Skip space after command j++ - // Find prefix for trailer - i = indexByte(raw[j:], prefix) - - if i < 0 { - + if raw[j] == prefix { // There is no trailing argument! m.Params = strings.Split(raw[j:], string(space)) @@ -217,8 +213,9 @@ func ParseMessage(raw string) (m *Message) { return m } + // Find prefix for trailer // Compensate for index on substring - i = i + j + i = strings.Index(raw[j:], " :") + j + 1 // Check if we need to parse arguments. if i > j { From 65d4b34ad9489bbf591281c8f16129417ad99203 Mon Sep 17 00:00:00 2001 From: Claire Blackshaw Date: Wed, 22 Feb 2017 15:19:05 +0000 Subject: [PATCH 2/3] Fixed stupid trailing bug --- message.go | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/message.go b/message.go index 13b8d7a..2589b1c 100644 --- a/message.go +++ b/message.go @@ -202,35 +202,28 @@ func ParseMessage(raw string) (m *Message) { return m } - // Skip space after command - j++ - - if raw[j] == prefix { - // There is no trailing argument! - m.Params = strings.Split(raw[j:], string(space)) - - // We're done here! - return m - } - // Find prefix for trailer - // Compensate for index on substring - i = strings.Index(raw[j:], " :") + j + 1 - - // Check if we need to parse arguments. - if i > j { - m.Params = strings.Split(raw[j:i-1], string(space)) + i = strings.Index(raw[j:], " :") + if i > 0 { + i += j + m.Trailing = raw[i+2:] + + // We need to re-encode the trailing argument even if it was empty. + if len(m.Trailing) <= 0 { + m.EmptyTrailing = true + } + } else { + i = len(raw) } - m.Trailing = raw[i+1:] - - // We need to re-encode the trailing argument even if it was empty. - if len(m.Trailing) <= 0 { - m.EmptyTrailing = true + // Parse Parameters + if i > j { + m.Params = strings.Split(strings.Trim(raw[j:i], " "), string(space)) + } else { + m.Params = []string{} } return m - } // Len calculates the length of the string representation of this message. From 1ace76fde8e402c73f5d4ee4176ed9239a415e2b Mon Sep 17 00:00:00 2001 From: Claire Blackshaw Date: Wed, 22 Feb 2017 15:23:30 +0000 Subject: [PATCH 3/3] Fixed failing tests --- message.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/message.go b/message.go index 68e1567..8ae0dca 100644 --- a/message.go +++ b/message.go @@ -204,7 +204,7 @@ func ParseMessage(raw string) (m *Message) { // Find prefix for trailer i = strings.Index(raw[j:], " :") - if i > 0 { + if i >= 0 { i += j m.Trailing = raw[i+2:] @@ -219,8 +219,6 @@ func ParseMessage(raw string) (m *Message) { // Parse Parameters if i > j { m.Params = strings.Split(strings.Trim(raw[j:i], " "), string(space)) - } else { - m.Params = []string{} } return m