From b4bd367fdf0b4ad369e47b60e3b3f1c182ad227d Mon Sep 17 00:00:00 2001 From: AlexStocks Date: Fri, 24 Apr 2020 15:36:30 +0800 Subject: [PATCH] Imp: new udp session --- server.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/server.go b/server.go index 3fcc08a7..0825fe7d 100644 --- a/server.go +++ b/server.go @@ -280,15 +280,23 @@ func (s *server) runTcpEventLoop(newSession NewSessionCallback) { } func (s *server) runUDPEventLoop(newSession NewSessionCallback) { - var ( - ss Session - ) + s.wg.Add(1) + go func() { + defer s.wg.Done() + var ( + err error + conn *net.UDPConn + ss Session + ) - ss = newUDPSession(s.pktListener.(*net.UDPConn), s) - if err := newSession(ss); err != nil { - panic(err.Error()) - } - ss.(*session).run() + conn = s.pktListener.(*net.UDPConn) + ss = newUDPSession(conn, s) + if err = newSession(ss); err != nil { + conn.Close() + panic(err.Error()) + } + ss.(*session).run() + }() } type wsHandler struct {