Fix: UDP socks recreate behavior (#355)
This commit is contained in:
parent
d1fb442bd5
commit
461e0a6873
1 changed files with 16 additions and 20 deletions
|
@ -75,41 +75,37 @@ func ReCreateSocks(port int) error {
|
|||
addr := genAddr(bindAddress, port, allowLan)
|
||||
|
||||
if socksListener != nil {
|
||||
if socksListener.Address() == addr {
|
||||
return nil
|
||||
if socksListener.Address() != addr {
|
||||
socksListener.Close()
|
||||
socksListener = nil
|
||||
}
|
||||
}
|
||||
|
||||
if socksUDPListener != nil {
|
||||
if socksUDPListener.Address() != addr {
|
||||
socksUDPListener.Close()
|
||||
socksUDPListener = nil
|
||||
}
|
||||
socksListener.Close()
|
||||
socksListener = nil
|
||||
}
|
||||
|
||||
if portIsZero(addr) {
|
||||
return nil
|
||||
}
|
||||
|
||||
var err error
|
||||
socksListener, err = socks.NewSocksProxy(addr)
|
||||
tcpListener, err := socks.NewSocksProxy(addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return reCreateSocksUDP(addr)
|
||||
}
|
||||
|
||||
func reCreateSocksUDP(addr string) error {
|
||||
if socksUDPListener != nil {
|
||||
if socksUDPListener.Address() == addr {
|
||||
return nil
|
||||
}
|
||||
socksUDPListener.Close()
|
||||
socksUDPListener = nil
|
||||
}
|
||||
|
||||
var err error
|
||||
socksUDPListener, err = socks.NewSocksUDPProxy(addr)
|
||||
udpListener, err := socks.NewSocksUDPProxy(addr)
|
||||
if err != nil {
|
||||
tcpListener.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
socksListener = tcpListener
|
||||
socksUDPListener = udpListener
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue