fix: socket异常退出捕获,停止信号退出循环读取
This commit is contained in:
@@ -27,7 +27,7 @@ func (c *ConnTCP) New() (*ConnTCP, error) {
|
|||||||
proto = "tcp6"
|
proto = "tcp6"
|
||||||
c.Addr = fmt.Sprintf("[%s]", c.Addr)
|
c.Addr = fmt.Sprintf("[%s]", c.Addr)
|
||||||
}
|
}
|
||||||
address := fmt.Sprintf("%s:%d", c.Addr, c.Port)
|
address := net.JoinHostPort(c.Addr, fmt.Sprint(c.Port))
|
||||||
|
|
||||||
// 默认等待5s
|
// 默认等待5s
|
||||||
if c.DialTimeOut == 0 {
|
if c.DialTimeOut == 0 {
|
||||||
|
|||||||
@@ -57,8 +57,14 @@ func (s *SocketTCP) Resolve(callback func(conn *net.Conn, err error)) {
|
|||||||
callback(nil, fmt.Errorf("tcp service not created"))
|
callback(nil, fmt.Errorf("tcp service not created"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
listener := *s.Listener
|
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
callback(nil, fmt.Errorf("tcp service panic err"))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
listener := *s.Listener
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-s.StopChan:
|
case <-s.StopChan:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ func (c *ConnUDP) New() (*ConnUDP, error) {
|
|||||||
proto = "udp6"
|
proto = "udp6"
|
||||||
c.Addr = fmt.Sprintf("[%s]", c.Addr)
|
c.Addr = fmt.Sprintf("[%s]", c.Addr)
|
||||||
}
|
}
|
||||||
address := fmt.Sprintf("%s:%d", c.Addr, c.Port)
|
address := net.JoinHostPort(c.Addr, fmt.Sprint(c.Port))
|
||||||
|
|
||||||
// 默认等待5s
|
// 默认等待5s
|
||||||
if c.DialTimeOut == 0 {
|
if c.DialTimeOut == 0 {
|
||||||
|
|||||||
@@ -56,10 +56,17 @@ func (s *SocketUDP) Resolve(callback func(*net.UDPConn, error)) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
callback(nil, fmt.Errorf("udp service panic err"))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-s.StopChan:
|
case <-s.StopChan:
|
||||||
callback(nil, fmt.Errorf("udp service not created"))
|
callback(nil, fmt.Errorf("udp service not created"))
|
||||||
|
return
|
||||||
default:
|
default:
|
||||||
callback(s.Conn, nil)
|
callback(s.Conn, nil)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user