From 4f34e690060d6797849e37413b9cdfeb839f80a3 Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Thu, 24 Dec 2020 13:42:22 +0000 Subject: [PATCH] Use pooled buffer for session closing frame --- internal/multiplex/session.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/multiplex/session.go b/internal/multiplex/session.go index b918107..159172e 100644 --- a/internal/multiplex/session.go +++ b/internal/multiplex/session.go @@ -319,10 +319,10 @@ func (sesh *Session) Close() error { } // we send a notice frame telling remote to close the session - padBuf := make([]byte, 256+frameHeaderLength+sesh.Obfuscator.maxOverhead) - common.CryptoRandRead(padBuf[:1]) - padLen := int(padBuf[0]) + 1 - payload := padBuf[frameHeaderLength : padLen+frameHeaderLength] + buf := sesh.streamObfsBufPool.Get().(*[]byte) + common.CryptoRandRead((*buf)[:1]) + padLen := int((*buf)[0]) + 1 + payload := (*buf)[frameHeaderLength : padLen+frameHeaderLength] common.CryptoRandRead(payload) f := &Frame{ @@ -331,11 +331,11 @@ func (sesh *Session) Close() error { Closing: closingSession, Payload: payload, } - i, err := sesh.Obfs(f, padBuf, frameHeaderLength) + i, err := sesh.Obfs(f, *buf, frameHeaderLength) if err != nil { return err } - _, err = sesh.sb.send(padBuf[:i], new(uint32)) + _, err = sesh.sb.send((*buf)[:i], new(uint32)) if err != nil { return err }