Implement error checking on listeners
Some checks failed
Trunk / release build / Build Windows/Linux-static/MacOS/*BSD-static/Android (push) Has been cancelled

Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
This commit is contained in:
Vasyl Gello 2025-02-08 14:13:39 +02:00
parent 83bc9a2eec
commit 8ad1962f64

View file

@ -39,7 +39,8 @@ type node struct {
core *core.Core core *core.Core
multicast *multicast.Multicast multicast *multicast.Multicast
admin *admin.AdminSocket admin *admin.AdminSocket
socks5Listener net.Listener socks5Tcp net.Listener
socks5Unix net.Listener
} }
type UDPSession struct { type UDPSession struct {
@ -306,10 +307,19 @@ func main() {
server := socks5.NewServer(socksOptions...) server := socks5.NewServer(socksOptions...)
if strings.Contains(*socks, ":") { if strings.Contains(*socks, ":") {
logger.Infof("Starting SOCKS server on %s", *socks) logger.Infof("Starting SOCKS server on %s", *socks)
go server.ListenAndServe("tcp", *socks) // nolint:errcheck n.socks5Tcp, err = net.Listen("tcp", *socks)
if err != nil {
panic(err)
}
go func() {
err := server.Serve(n.socks5Tcp)
if err != nil {
panic(err)
}
}()
} else { } else {
logger.Infof("Starting SOCKS server with socket file %s", *socks) logger.Infof("Starting SOCKS server with socket file %s", *socks)
n.socks5Listener, err = net.Listen("unix", *socks) n.socks5Unix, err = net.Listen("unix", *socks)
if err != nil { if err != nil {
// If address in use, try connecting to // If address in use, try connecting to
// the socket to see if other yggstack // the socket to see if other yggstack
@ -330,7 +340,12 @@ func main() {
panic(err) panic(err)
} }
} }
go server.Serve(n.socks5Listener) // nolint:errcheck go func() {
err := server.Serve(n.socks5Unix)
if err != nil {
panic(err)
}
}()
} }
} }
} }
@ -519,10 +534,14 @@ func main() {
// Shut down the node. // Shut down the node.
_ = n.admin.Stop() _ = n.admin.Stop()
_ = n.multicast.Stop() _ = n.multicast.Stop()
if n.socks5Listener != nil { if n.socks5Unix != nil {
_ = n.socks5Listener.Close() _ = n.socks5Unix.Close()
_ = os.RemoveAll(*socks) _ = os.RemoveAll(*socks)
logger.Infof("Stopped UNIX socket listener") logger.Infof("Stopped SOCKS5 UNIX socket listener")
}
if n.socks5Tcp != nil {
_ = n.socks5Tcp.Close()
logger.Infof("Stopped SOCKS5 TCP listener")
} }
n.core.Stop() n.core.Stop()
} }