■ ■ ■ ■ ■ ■
transport/vless/vision.go
| skipped 285 lines |
286 | 286 | | l, _ := rand.Int(rand.Reader, big.NewInt(256)) |
287 | 287 | | paddingLen = int(l.Int64()) |
288 | 288 | | } |
289 | | - | newBuffer := buf.New() |
| 289 | + | var bufferLen int |
| 290 | + | if c.writeUUID { |
| 291 | + | bufferLen += 16 |
| 292 | + | } |
| 293 | + | bufferLen += 5 |
| 294 | + | if buffer != nil { |
| 295 | + | bufferLen += buffer.Len() |
| 296 | + | } |
| 297 | + | bufferLen += paddingLen |
| 298 | + | newBuffer := buf.NewSize(bufferLen) |
290 | 299 | | if c.writeUUID { |
291 | | - | newBuffer.Write(c.userUUID[:]) |
| 300 | + | common.Must1(newBuffer.Write(c.userUUID[:])) |
292 | 301 | | c.writeUUID = false |
293 | 302 | | } |
294 | | - | newBuffer.Write([]byte{command, byte(contentLen >> 8), byte(contentLen), byte(paddingLen >> 8), byte(paddingLen)}) |
| 303 | + | common.Must1(newBuffer.Write([]byte{command, byte(contentLen >> 8), byte(contentLen), byte(paddingLen >> 8), byte(paddingLen)})) |
295 | 304 | | if buffer != nil { |
296 | | - | newBuffer.Write(buffer.Bytes()) |
| 305 | + | common.Must1(newBuffer.Write(buffer.Bytes())) |
297 | 306 | | buffer.Release() |
298 | 307 | | } |
299 | 308 | | newBuffer.Extend(paddingLen) |
| skipped 58 lines |