mirror of https://github.com/cbeuw/Cloak
Use pooled buffer for session closing frame
This commit is contained in:
parent
881f6e6f9d
commit
4f34e69006
|
|
@ -319,10 +319,10 @@ func (sesh *Session) Close() error {
|
||||||
}
|
}
|
||||||
// we send a notice frame telling remote to close the session
|
// we send a notice frame telling remote to close the session
|
||||||
|
|
||||||
padBuf := make([]byte, 256+frameHeaderLength+sesh.Obfuscator.maxOverhead)
|
buf := sesh.streamObfsBufPool.Get().(*[]byte)
|
||||||
common.CryptoRandRead(padBuf[:1])
|
common.CryptoRandRead((*buf)[:1])
|
||||||
padLen := int(padBuf[0]) + 1
|
padLen := int((*buf)[0]) + 1
|
||||||
payload := padBuf[frameHeaderLength : padLen+frameHeaderLength]
|
payload := (*buf)[frameHeaderLength : padLen+frameHeaderLength]
|
||||||
common.CryptoRandRead(payload)
|
common.CryptoRandRead(payload)
|
||||||
|
|
||||||
f := &Frame{
|
f := &Frame{
|
||||||
|
|
@ -331,11 +331,11 @@ func (sesh *Session) Close() error {
|
||||||
Closing: closingSession,
|
Closing: closingSession,
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
}
|
}
|
||||||
i, err := sesh.Obfs(f, padBuf, frameHeaderLength)
|
i, err := sesh.Obfs(f, *buf, frameHeaderLength)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = sesh.sb.send(padBuf[:i], new(uint32))
|
_, err = sesh.sb.send((*buf)[:i], new(uint32))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue