diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index 4a688f287b..33b6041841 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -553,7 +553,8 @@ instance MsgDirectionI d => StrEncoding (CIFileStatus d) where instance StrEncoding ACIFileStatus where strEncode (AFS _ s) = strEncode s strP = - statusP <|> (AFS SMDSnd . CIFSInvalid . safeDecodeUtf8 <$> A.takeByteString) + (statusP <* A.endOfInput) -- endOfInput to make it fail on partial correct parse + <|> (AFS SMDSnd . CIFSInvalid . safeDecodeUtf8 <$> A.takeByteString) where statusP = A.takeTill (== ' ') >>= \case @@ -673,7 +674,8 @@ instance MsgDirectionI d => StrEncoding (CIStatus d) where instance StrEncoding ACIStatus where strEncode (ACIStatus _ s) = strEncode s strP = - statusP <|> (ACIStatus SMDSnd . CISInvalid . safeDecodeUtf8 <$> A.takeByteString) + (statusP <* A.endOfInput) -- endOfInput to make it fail on partial correct parse, e.g. "snd_rcvd ok complete" + <|> (ACIStatus SMDSnd . CISInvalid . safeDecodeUtf8 <$> A.takeByteString) where statusP = A.takeTill (== ' ') >>= \case