From e0e6166cdfa0ce8ec82e92acc658cca888bb091e Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Wed, 24 Mar 2021 12:18:46 +0000 Subject: [PATCH] fix feed sniff reader --- src/parser/feed.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/parser/feed.go b/src/parser/feed.go index 1339a78..ff7eb56 100644 --- a/src/parser/feed.go +++ b/src/parser/feed.go @@ -44,8 +44,15 @@ func sniff(lookup string) (string, processor) { func Parse(r io.Reader) (*Feed, error) { lookup := make([]byte, 1024) - if _, err := r.Read(lookup); err != nil { - return nil, fmt.Errorf("Failed to read input: %s", err) + n, err := io.ReadFull(r, lookup) + switch { + case err != nil: + return nil, err + case err == io.ErrUnexpectedEOF: + lookup = lookup[:n] + r = bytes.NewReader(lookup) + default: + r = io.MultiReader(bytes.NewReader(lookup), r) } _, callback := sniff(string(lookup)) @@ -53,7 +60,7 @@ func Parse(r io.Reader) (*Feed, error) { return nil, UnknownFormat } - feed, err := callback(io.MultiReader(bytes.NewReader(lookup), r)) + feed, err := callback(r) if feed != nil { feed.cleanup() }