Browse Source

XHTTP client: Fix upload issue in "packet-up" mode inherited from SplitHTTP

Fixes https://github.com/XTLS/Xray-core/issues/3972
pull/4026/head
RPRX 5 days ago committed by GitHub
parent
commit
2d7b0e8cd4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 13
      transport/internet/splithttp/dialer.go

13
transport/internet/splithttp/dialer.go

@ -324,7 +324,8 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
// WithSizeLimit(0) will still allow single bytes to pass, and a lot of // WithSizeLimit(0) will still allow single bytes to pass, and a lot of
// code relies on this behavior. Subtract 1 so that together with // code relies on this behavior. Subtract 1 so that together with
// uploadWriter wrapper, exact size limits can be enforced // uploadWriter wrapper, exact size limits can be enforced
uploadPipeReader, uploadPipeWriter := pipe.New(pipe.WithSizeLimit(maxUploadSize - 1)) // uploadPipeReader, uploadPipeWriter := pipe.New(pipe.WithSizeLimit(maxUploadSize - 1))
uploadPipeReader, uploadPipeWriter := pipe.New(pipe.WithSizeLimit(maxUploadSize - buf.Size))
conn.writer = uploadWriter{ conn.writer = uploadWriter{
uploadPipeWriter, uploadPipeWriter,
@ -400,10 +401,12 @@ type uploadWriter struct {
} }
func (w uploadWriter) Write(b []byte) (int, error) { func (w uploadWriter) Write(b []byte) (int, error) {
capacity := int(w.maxLen - w.Len()) /*
if capacity > 0 && capacity < len(b) { capacity := int(w.maxLen - w.Len())
b = b[:capacity] if capacity > 0 && capacity < len(b) {
} b = b[:capacity]
}
*/
buffer := buf.New() buffer := buf.New()
n, err := buffer.Write(b) n, err := buffer.Write(b)

Loading…
Cancel
Save