diff --git a/pkg/network/compress.go b/pkg/network/compress.go index 7b6d6c3d0..ddde5e9d7 100644 --- a/pkg/network/compress.go +++ b/pkg/network/compress.go @@ -1,33 +1,29 @@ package network import ( - "bytes" - "io" - "github.com/pierrec/lz4" ) // compress compresses bytes using lz4. func compress(source []byte) ([]byte, error) { - dest := new(bytes.Buffer) - w := lz4.NewWriter(dest) - _, err := io.Copy(w, bytes.NewReader(source)) + dest := make([]byte, lz4.CompressBlockBound(len(source))) + size, err := lz4.CompressBlock(source, dest, nil) if err != nil { return nil, err } - if w.Close() != nil { - return nil, err - } - return dest.Bytes(), nil + return dest[:size], nil } // decompress decompresses bytes using lz4. func decompress(source []byte) ([]byte, error) { - dest := new(bytes.Buffer) - r := lz4.NewReader(bytes.NewReader(source)) - _, err := io.Copy(dest, r) + maxSize := len(source) * 255 + if maxSize > PayloadMaxSize { + maxSize = PayloadMaxSize + } + dest := make([]byte, maxSize) + size, err := lz4.UncompressBlock(source, dest) if err != nil { return nil, err } - return dest.Bytes(), nil + return dest[:size], nil }