mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2026-01-05 23:35:48 +08:00
修复UDP服务端口变化时导致的死循环
This commit is contained in:
@@ -24,6 +24,8 @@ type UDPListener struct {
|
||||
connTicker *utils.Ticker
|
||||
|
||||
reverseProxy *serverconfigs.ReverseProxyConfig
|
||||
|
||||
isClosed bool
|
||||
}
|
||||
|
||||
func (this *UDPListener) Serve() error {
|
||||
@@ -46,7 +48,18 @@ func (this *UDPListener) Serve() error {
|
||||
|
||||
var buffer = make([]byte, 4*1024)
|
||||
for {
|
||||
n, addr, _ := this.Listener.ReadFrom(buffer)
|
||||
if this.isClosed {
|
||||
return nil
|
||||
}
|
||||
|
||||
n, addr, err := this.Listener.ReadFrom(buffer)
|
||||
if err != nil {
|
||||
if this.isClosed {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
if n > 0 {
|
||||
this.connLocker.Lock()
|
||||
conn, ok := this.connMap[addr.String()]
|
||||
@@ -76,6 +89,8 @@ func (this *UDPListener) Serve() error {
|
||||
}
|
||||
|
||||
func (this *UDPListener) Close() error {
|
||||
this.isClosed = true
|
||||
|
||||
if this.connTicker != nil {
|
||||
this.connTicker.Stop()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user