From 885609309cb58c9e43627c57227846f8c562bda1 Mon Sep 17 00:00:00 2001 From: Sam Grimee Date: Tue, 14 Jan 2014 12:59:52 +0100 Subject: [PATCH] Continue reading incoming data until enough rcvd This fixes the case of a large packet being received, the current code stops processing as soon as >12 bytes are received, --- worker/inpack.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/worker/inpack.go b/worker/inpack.go index a460c10..50ff23a 100644 --- a/worker/inpack.go +++ b/worker/inpack.go @@ -91,6 +91,10 @@ func decodeInPack(data []byte) (inpack *inPack, l int, err error) { return } dl := int(binary.BigEndian.Uint32(data[8:12])) + if len(data) < (dl + minPacketLength) { + err = fmt.Errorf("Not enough data: %V", data) + return + } dt := data[minPacketLength : dl+minPacketLength] if len(dt) != int(dl) { // length not equal err = fmt.Errorf("Invalid data: %V", data)