mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-02-20 23:47:21 -05:00
It is important to use a detached context when creating shared transport connections that will outlive the initializing connection. Otherwise, once the original initializing connection is cancelled, the transport connection will be cancelled as well. This issue will be addressed in v5 by providing a transport session storage that also reduce the usage of globalDialerMap and other global variables.
This commit is contained in:
parent
d7e1d004bf
commit
861d6be19a
@ -4,6 +4,7 @@ package grpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
core "github.com/v2fly/v2ray-core/v4"
|
||||
gonet "net"
|
||||
"sync"
|
||||
"time"
|
||||
@ -100,7 +101,8 @@ func getGrpcClient(ctx context.Context, dest net.Destination, dialOption grpc.Di
|
||||
return nil, err
|
||||
}
|
||||
address := net.ParseAddress(rawHost)
|
||||
return internet.DialSystem(ctx, net.TCPDestination(address, port), nil)
|
||||
detachedContext := core.ToBackgroundDetachedContext(ctx)
|
||||
return internet.DialSystem(detachedContext, net.TCPDestination(address, port), nil)
|
||||
}),
|
||||
)
|
||||
globalDialerMap[dest] = conn
|
||||
|
@ -5,6 +5,7 @@ package http
|
||||
import (
|
||||
"context"
|
||||
gotls "crypto/tls"
|
||||
core "github.com/v2fly/v2ray-core/v4"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"sync"
|
||||
@ -51,7 +52,8 @@ func getHTTPClient(ctx context.Context, dest net.Destination, tlsSettings *tls.C
|
||||
}
|
||||
address := net.ParseAddress(rawHost)
|
||||
|
||||
pconn, err := internet.DialSystem(ctx, net.TCPDestination(address, port), nil)
|
||||
detachedContext := core.ToBackgroundDetachedContext(ctx)
|
||||
pconn, err := internet.DialSystem(detachedContext, net.TCPDestination(address, port), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user