From 9e08d84af7d975ef540a67b54ecc9b3c0e4d084c Mon Sep 17 00:00:00 2001 From: raven Date: Mon, 20 Oct 2025 18:03:38 -0500 Subject: tolerate EOF in object parsing --- proto/protocol.go | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'proto') diff --git a/proto/protocol.go b/proto/protocol.go index b59cd70..7a21235 100644 --- a/proto/protocol.go +++ b/proto/protocol.go @@ -4,6 +4,7 @@ import ( "bufio" "strings" "errors" + "io" ) type Object struct { @@ -34,6 +35,9 @@ func ReadLiteral(b *bufio.Reader) (string, error) { var sb strings.Builder for { c, _, err := b.ReadRune() + if errors.Is(err, io.EOF) { + break + } if strings.IndexRune(",;\n", c) != -1 { b.UnreadRune() break @@ -53,6 +57,9 @@ func ReadIdentifier(b *bufio.Reader) (string, error) { var sb strings.Builder for { c, _, err := b.ReadRune() + if errors.Is(err, io.EOF) && sb.Len() > 0 { + break + } if strings.IndexRune("?!*<>:\\,#@~;\n\t ", c) != -1 { b.UnreadRune() break @@ -111,6 +118,9 @@ func ReadObject(b *bufio.Reader) (Object, error) { } o.Fields[key] = value c, _, err = b.ReadRune(); + if errors.Is(err, io.EOF) { + break + } if c == ';' || c == '\n' { b.UnreadRune() break -- cgit v1.2.3