mirror of https://github.com/cbeuw/Cloak
Optimise AddRecordLayer
This commit is contained in:
parent
e9243a2e9f
commit
e4b45a55e3
|
|
@ -18,13 +18,19 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func AddRecordLayer(input []byte, typ byte, ver uint16) []byte {
|
func AddRecordLayer(input []byte, typ byte, ver uint16) []byte {
|
||||||
length := make([]byte, 2)
|
msgLen := len(input)
|
||||||
binary.BigEndian.PutUint16(length, uint16(len(input)))
|
var ret []byte
|
||||||
ret := make([]byte, 5+len(input))
|
if cap(input) > msgLen+recordLayerLength {
|
||||||
|
ret = input[:msgLen+recordLayerLength]
|
||||||
|
} else {
|
||||||
|
ret = make([]byte, msgLen+recordLayerLength)
|
||||||
|
}
|
||||||
|
copy(ret[recordLayerLength:], input)
|
||||||
ret[0] = typ
|
ret[0] = typ
|
||||||
binary.BigEndian.PutUint16(ret[1:3], ver)
|
ret[1] = byte(ver >> 8)
|
||||||
copy(ret[3:5], length)
|
ret[2] = byte(ver)
|
||||||
copy(ret[5:], input)
|
ret[3] = byte(msgLen >> 8)
|
||||||
|
ret[4] = byte(msgLen)
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue