Hook to replace DOHL dialer

This commit is contained in:
世界
2021-09-01 09:37:40 +08:00
parent 16d96aa54d
commit e316cd4c66
3 changed files with 41 additions and 2 deletions
+11 -1
View File
@@ -11,7 +11,10 @@ import (
"github.com/xtls/xray-core/features/outbound"
)
var effectiveSystemDialer SystemDialer = &DefaultSystemDialer{}
var (
effectiveSystemDialer SystemDialer = &DefaultSystemDialer{}
effectiveSystemDNSDialer SystemDialer = &DefaultSystemDialer{}
)
type SystemDialer interface {
Dial(ctx context.Context, source net.Address, destination net.Destination, sockopt *SocketConfig) (net.Conn, error)
@@ -176,6 +179,13 @@ func UseAlternativeSystemDialer(dialer SystemDialer) {
effectiveSystemDialer = dialer
}
func UseAlternativeSystemDNSDialer(dialer SystemDialer) {
if dialer == nil {
effectiveSystemDNSDialer = &DefaultSystemDialer{}
}
effectiveSystemDNSDialer = dialer
}
// RegisterDialerController adds a controller to the effective system dialer.
// The controller can be used to operate on file descriptors before they are put into use.
// It only works when effective dialer is the default dialer.