diff --git a/server/imserver/WSPListener.go b/server/imserver/WSPListener.go index 741ea338..212c4e77 100644 --- a/server/imserver/WSPListener.go +++ b/server/imserver/WSPListener.go @@ -85,12 +85,14 @@ func (this *WSPListener_) socketRead(conn net.Conn) { for { prevOffset = offset this.decodePacket(&recvBuf, &offset, recvBufLen) - if prevOffset > offset || offset > recvBufLen { + if prevOffset >= offset || offset >= recvBufLen { break } } if offset > 0 && offset < recvBufLen { + copy(recvBuf[:], + recvBuf[offset:recvBufLen - offset]) } recvBufLen -= offset