aboutsummaryrefslogtreecommitdiffstats
path: root/ethwire/messaging.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethwire/messaging.go')
-rw-r--r--ethwire/messaging.go19
1 files changed, 7 insertions, 12 deletions
diff --git a/ethwire/messaging.go b/ethwire/messaging.go
index 99f6be8db..4f4393a9d 100644
--- a/ethwire/messaging.go
+++ b/ethwire/messaging.go
@@ -109,29 +109,24 @@ func ReadMessages(conn net.Conn) (msgs []*Msg, err error) {
}
}
- if n == 0 {
+ if n == 0 && len(buff) == 0 {
continue
}
+ buff = append(buff, b[:n]...)
if msgLength == 0 {
// Check if the received 4 first bytes are the magic token
- if bytes.Compare(MagicToken, b[:4]) != 0 {
- return nil, fmt.Errorf("MagicToken mismatch. Received %v", b[:4])
+ if bytes.Compare(MagicToken, buff[:4]) != 0 {
+ return nil, fmt.Errorf("MagicToken mismatch. Received %v", buff[:4])
}
- // Remove the token
- b = b[4:]
// Read the length of the message
- msgLength = int(ethutil.BytesToNumber(b[:4]))
-
- // Remove the length
- b = b[4:]
+ msgLength = int(ethutil.BytesToNumber(buff[4:8]))
- n -= 8
+ // Remove the token and length
+ buff = buff[8:]
}
- buff = append(buff, b[:n]...)
-
if len(buff) >= msgLength {
messages = append(messages, buff[:msgLength])
buff = buff[msgLength:]