@@ -31,6 +31,9 @@ type Tunnel struct {
3131 // UDP session timeout.
3232 udpTimeout * atomic.Duration
3333
34+ // UDP disabled flag.
35+ udpDisabled * atomic.Bool
36+
3437 // Internal proxy.Dialer for Tunnel.
3538 dialerMu sync.RWMutex
3639 dialer proxy.Dialer
@@ -44,12 +47,13 @@ type Tunnel struct {
4447
4548func New (dialer proxy.Dialer , manager * statistic.Manager ) * Tunnel {
4649 return & Tunnel {
47- tcpQueue : make (chan adapter.TCPConn ),
48- udpQueue : make (chan adapter.UDPConn ),
49- udpTimeout : atomic .NewDuration (udpSessionTimeout ),
50- dialer : dialer ,
51- manager : manager ,
52- procCancel : func () { /* nop */ },
50+ tcpQueue : make (chan adapter.TCPConn ),
51+ udpQueue : make (chan adapter.UDPConn ),
52+ udpTimeout : atomic .NewDuration (udpSessionTimeout ),
53+ udpDisabled : atomic .NewBool (false ),
54+ dialer : dialer ,
55+ manager : manager ,
56+ procCancel : func () { /* nop */ },
5357 }
5458}
5559
@@ -114,3 +118,7 @@ func (t *Tunnel) SetDialer(dialer proxy.Dialer) {
114118func (t * Tunnel ) SetUDPTimeout (timeout time.Duration ) {
115119 t .udpTimeout .Store (timeout )
116120}
121+
122+ func (t * Tunnel ) SetUDPDisabled (disabled bool ) {
123+ t .udpDisabled .Store (disabled )
124+ }
0 commit comments