Explorar o código

fix reading in udp conn

Darien Raymond %!s(int64=7) %!d(string=hai) anos
pai
achega
46dbbfff8c
Modificáronse 1 ficheiros con 7 adicións e 4 borrados
  1. 7 4
      app/proxyman/inbound/worker.go

+ 7 - 4
app/proxyman/inbound/worker.go

@@ -131,8 +131,13 @@ func (c *udpConn) ReadMultiBuffer() (buf.MultiBuffer, error) {
 	select {
 	case in := <-c.input:
 		payload.Append(in)
-	case <-c.done.Wait():
-		return nil, io.EOF
+	default:
+		select {
+		case in := <-c.input:
+			payload.Append(in)
+		case <-c.done.Wait():
+			return nil, io.EOF
+		}
 	}
 
 L:
@@ -140,8 +145,6 @@ L:
 		select {
 		case in := <-c.input:
 			payload.Append(in)
-		case <-c.done.Wait():
-			break L
 		default:
 			break L
 		}