From 9f99efad030bb8f145956afcc67f79992be6429c Mon Sep 17 00:00:00 2001 From: Neil Twigg Date: Thu, 16 Mar 2023 17:39:26 +0000 Subject: [PATCH] Use pooled buffer for flushing encrypted message blocks --- server/filestore.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/server/filestore.go b/server/filestore.go index d2067141..b4f75957 100644 --- a/server/filestore.go +++ b/server/filestore.go @@ -3993,16 +3993,17 @@ func (mb *msgBlock) flushPendingMsgsLocked() (*LostStreamData, error) { // Check if we need to encrypt. if mb.bek != nil && lob > 0 { - const rsz = 32 * 1024 // 32k - var rdst [rsz]byte - var dst []byte - if lob > rsz { - dst = make([]byte, lob) - } else { - dst = rdst[:lob] - } // Need to leave original alone. + var dst []byte + if lob <= defaultLargeBlockSize { + dst = getMsgBlockBuf(lob)[:lob] + } else { + dst = make([]byte, lob) + } mb.bek.XORKeyStream(dst, buf) + if cap(buf) <= defaultLargeBlockSize { + recycleMsgBlockBuf(buf) + } buf = dst }