From 7b12493417c6668c12859b9e58c5f7e0c2b45439 Mon Sep 17 00:00:00 2001 From: Arceliar Date: Sun, 27 May 2018 12:56:33 -0500 Subject: [PATCH] panic if tcp startup fails, since otherwise a nil pointer occurs in multicast. make udp do the same thing. --- src/yggdrasil/debug.go | 14 ++++++++------ src/yggdrasil/udp.go | 7 ++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/yggdrasil/debug.go b/src/yggdrasil/debug.go index a86f222..40cc5c4 100644 --- a/src/yggdrasil/debug.go +++ b/src/yggdrasil/debug.go @@ -284,9 +284,10 @@ func (c *Core) DEBUG_init(bpub []byte, //////////////////////////////////////////////////////////////////////////////// func (c *Core) DEBUG_setupAndStartGlobalUDPInterface(addrport string) { - iface := udpInterface{} - iface.init(c, addrport) - c.udp = &iface + if err := c.udp.init(c, addrport); err != nil { + c.log.Println("Failed to start UDP interface:", err) + panic(err) + } } func (c *Core) DEBUG_getGlobalUDPAddr() *net.UDPAddr { @@ -337,9 +338,10 @@ func (c *Core) DEBUG_addSOCKSConn(socksaddr, peeraddr string) { //* func (c *Core) DEBUG_setupAndStartGlobalTCPInterface(addrport string) { - iface := tcpInterface{} - iface.init(c, addrport) - c.tcp = &iface + if err := c.tcp.init(c, addrport); err != nil { + c.log.Println("Failed to start TCP interface:", err) + panic(err) + } } func (c *Core) DEBUG_getGlobalTCPAddr() *net.TCPAddr { diff --git a/src/yggdrasil/udp.go b/src/yggdrasil/udp.go index 81f5d38..02fb9d6 100644 --- a/src/yggdrasil/udp.go +++ b/src/yggdrasil/udp.go @@ -65,18 +65,19 @@ type udpKeys struct { sig sigPubKey } -func (iface *udpInterface) init(core *Core, addr string) { +func (iface *udpInterface) init(core *Core, addr string) (err error) { iface.core = core udpAddr, err := net.ResolveUDPAddr("udp", addr) if err != nil { - panic(err) + return } iface.sock, err = net.ListenUDP("udp", udpAddr) if err != nil { - panic(err) + return } iface.conns = make(map[connAddr]*connInfo) go iface.reader() + return } func (iface *udpInterface) sendKeys(addr connAddr) {