mirror of
https://github.com/daeuniverse/dae.git
synced 2025-07-09 07:19:17 +07:00
feat: allow group override global node connectivity check (#623)
Co-authored-by: mzz2017 <2017@duck.com>
This commit is contained in:
@ -19,6 +19,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/daeuniverse/dae/common"
|
||||
|
||||
@ -452,6 +453,18 @@ func (d *Dialer) aliveBackground() {
|
||||
}
|
||||
}
|
||||
}()
|
||||
var unused int
|
||||
for _, opt := range CheckOpts {
|
||||
if len(d.mustGetCollection(opt.networkType).AliveDialerSetSet) == 0 {
|
||||
unused++
|
||||
}
|
||||
}
|
||||
if unused == len(CheckOpts) {
|
||||
d.Log.WithField("dialer", d.Property().Name).
|
||||
WithField("p", unsafe.Pointer(d)).
|
||||
Traceln("cleaned up due to unused")
|
||||
return
|
||||
}
|
||||
var wg sync.WaitGroup
|
||||
for range d.checkCh {
|
||||
for _, opt := range CheckOpts {
|
||||
|
@ -10,7 +10,10 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/daeuniverse/dae/common"
|
||||
"github.com/daeuniverse/dae/config"
|
||||
D "github.com/daeuniverse/outbound/dialer"
|
||||
"github.com/daeuniverse/outbound/netproxy"
|
||||
"github.com/sirupsen/logrus"
|
||||
@ -60,6 +63,21 @@ type Property struct {
|
||||
|
||||
type AliveDialerSetSet map[*AliveDialerSet]int
|
||||
|
||||
func NewGlobalOption(global *config.Global, log *logrus.Logger) *GlobalOption {
|
||||
return &GlobalOption{
|
||||
ExtraOption: D.ExtraOption{
|
||||
AllowInsecure: global.AllowInsecure,
|
||||
TlsImplementation: global.TlsImplementation,
|
||||
UtlsImitate: global.UtlsImitate},
|
||||
Log: log,
|
||||
TcpCheckOptionRaw: TcpCheckOptionRaw{Raw: global.TcpCheckUrl, Log: log, ResolverNetwork: common.MagicNetwork("udp", global.SoMarkFromDae, global.Mptcp), Method: global.TcpCheckHttpMethod},
|
||||
CheckDnsOptionRaw: CheckDnsOptionRaw{Raw: global.UdpCheckDns, ResolverNetwork: common.MagicNetwork("udp", global.SoMarkFromDae, global.Mptcp), Somark: global.SoMarkFromDae},
|
||||
CheckInterval: global.CheckInterval,
|
||||
CheckTolerance: global.CheckTolerance,
|
||||
CheckDnsTcp: true,
|
||||
}
|
||||
}
|
||||
|
||||
// NewDialer is for register in general.
|
||||
func NewDialer(dialer netproxy.Dialer, option *GlobalOption, iOption InstanceOption, property *Property) *Dialer {
|
||||
var collections [6]*collection
|
||||
@ -80,9 +98,16 @@ func NewDialer(dialer netproxy.Dialer, option *GlobalOption, iOption InstanceOpt
|
||||
ctx: ctx,
|
||||
cancel: cancel,
|
||||
}
|
||||
option.Log.WithField("dialer", d.Property().Name).
|
||||
WithField("p", unsafe.Pointer(d)).
|
||||
Traceln("NewDialer")
|
||||
return d
|
||||
}
|
||||
|
||||
func (d *Dialer) Clone() *Dialer {
|
||||
return NewDialer(d.Dialer, d.GlobalOption, d.InstanceOption, d.property)
|
||||
}
|
||||
|
||||
func (d *Dialer) Close() error {
|
||||
d.cancel()
|
||||
d.tickerMu.Lock()
|
||||
|
Reference in New Issue
Block a user