mirror of
https://github.com/v2fly/v2ray-core.git
synced 2026-05-11 15:09:07 -04:00
refactor multibuffer
This commit is contained in:
@@ -185,8 +185,7 @@ func (s *Server) handleConnect(ctx context.Context, request *http.Request, reade
|
||||
}
|
||||
|
||||
if reader.Buffered() > 0 {
|
||||
var payload buf.MultiBuffer
|
||||
_, err := payload.ReadFrom(&io.LimitedReader{R: reader, N: int64(reader.Buffered())})
|
||||
payload, err := buf.ReadFrom(io.LimitReader(reader, int64(reader.Buffered())))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -92,8 +92,7 @@ func (v *ChunkReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
|
||||
return nil, newError("invalid auth")
|
||||
}
|
||||
|
||||
var mb buf.MultiBuffer
|
||||
common.Must2(mb.Write(payload))
|
||||
mb := buf.MergeBytes(nil, payload)
|
||||
|
||||
return mb, nil
|
||||
}
|
||||
@@ -117,7 +116,7 @@ func (w *ChunkWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
|
||||
defer buf.ReleaseMulti(mb)
|
||||
|
||||
for {
|
||||
payloadLen, _ := mb.Read(w.buffer[2+AuthSize:])
|
||||
mb, payloadLen, _ := buf.SplitBytes(mb, w.buffer[2+AuthSize:])
|
||||
binary.BigEndian.PutUint16(w.buffer, uint16(payloadLen))
|
||||
w.auth.Authenticate(w.buffer[2+AuthSize:2+AuthSize+payloadLen], w.buffer[2:])
|
||||
if err := buf.WriteAllBytes(w.writer, w.buffer[:2+AuthSize+payloadLen]); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user