From 5b1b70cc9617a7a5c577edac304912c27274902c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Sat, 23 May 2026 22:30:38 +0800 Subject: [PATCH] ptr --- transport/internet/splithttp/dialer.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/transport/internet/splithttp/dialer.go b/transport/internet/splithttp/dialer.go index 13539269..e86736ac 100644 --- a/transport/internet/splithttp/dialer.go +++ b/transport/internet/splithttp/dialer.go @@ -439,19 +439,17 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me var closed atomic.Int32 reader, writer := io.Pipe() - initXmuxClient := xmuxClient - initXmuxClient2 := xmuxClient2 conn := splitConn{ writer: writer, onClose: func() { if closed.Add(1) > 1 { return } - if initXmuxClient != nil { - initXmuxClient.OpenUsage.Add(-1) + if xmuxClient != nil { + xmuxClient.OpenUsage.Add(-1) } - if initXmuxClient2 != nil && initXmuxClient2 != initXmuxClient { - initXmuxClient2.OpenUsage.Add(-1) + if xmuxClient2 != nil && xmuxClient2 != xmuxClient { + xmuxClient2.OpenUsage.Add(-1) } }, } @@ -520,6 +518,8 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me } doSplit := atomic.Bool{} + dynamicHTTPClient := httpClient + dynamicXmuxClient := xmuxClient for doSplit.Store(true); doSplit.Load(); { var chunk buf.MultiBuffer remainder, chunk = buf.SplitSize(remainder, maxUploadSize) @@ -544,13 +544,13 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me lastWrite = time.Now() - if xmuxClient != nil && (xmuxClient.LeftRequests.Add(-1) <= 0 || - (xmuxClient.UnreusableAt != time.Time{} && lastWrite.After(xmuxClient.UnreusableAt))) { - httpClient, xmuxClient = getHTTPClient(ctx, dest, streamSettings) + if dynamicXmuxClient != nil && (dynamicXmuxClient.LeftRequests.Add(-1) <= 0 || + (dynamicXmuxClient.UnreusableAt != time.Time{} && lastWrite.After(dynamicXmuxClient.UnreusableAt))) { + dynamicHTTPClient, dynamicXmuxClient = getHTTPClient(ctx, dest, streamSettings) } - go func() { - err := httpClient.PostPacket( + go func(hClient DialerClient) { + err := hClient.PostPacket( ctx, requestURL.String(), sessionId, @@ -563,9 +563,9 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me uploadPipeReader.Interrupt() doSplit.Store(false) } - }() + }(dynamicHTTPClient) - if _, ok := httpClient.(*DefaultDialerClient); ok { + if _, ok := dynamicHTTPClient.(*DefaultDialerClient); ok { <-wroteRequest.Wait() } }