Fix(socks5): fully udp associate support (#233)
This commit is contained in:
@ -13,9 +13,10 @@ import (
|
||||
var (
|
||||
allowLan = false
|
||||
|
||||
socksListener *socks.SockListener
|
||||
httpListener *http.HttpListener
|
||||
redirListener *redir.RedirListener
|
||||
socksListener *socks.SockListener
|
||||
socksUDPListener *socks.SockUDPListener
|
||||
httpListener *http.HttpListener
|
||||
redirListener *redir.RedirListener
|
||||
)
|
||||
|
||||
type listener interface {
|
||||
@ -82,6 +83,30 @@ func ReCreateSocks(port int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
return reCreateSocksUDP(port)
|
||||
}
|
||||
|
||||
func reCreateSocksUDP(port int) error {
|
||||
addr := genAddr(port, allowLan)
|
||||
|
||||
if socksUDPListener != nil {
|
||||
if socksUDPListener.Address() == addr {
|
||||
return nil
|
||||
}
|
||||
socksUDPListener.Close()
|
||||
socksUDPListener = nil
|
||||
}
|
||||
|
||||
if portIsZero(addr) {
|
||||
return nil
|
||||
}
|
||||
|
||||
var err error
|
||||
socksUDPListener, err = socks.NewSocksUDPProxy(addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user