http3: keep datagram receive loop running on datagram for unknown stream (#5136)

This commit is contained in:
Marten Seemann
2025-05-10 20:41:47 +08:00
committed by GitHub
parent 3f97a011a7
commit 6f8460a821
2 changed files with 4 additions and 4 deletions

View File

@@ -308,11 +308,10 @@ func (c *connection) receiveDatagrams() error {
streamID := protocol.StreamID(4 * quarterStreamID) streamID := protocol.StreamID(4 * quarterStreamID)
c.streamMx.Lock() c.streamMx.Lock()
dg, ok := c.streams[streamID] dg, ok := c.streams[streamID]
c.streamMx.Unlock()
if !ok { if !ok {
c.streamMx.Unlock() continue
return nil
} }
c.streamMx.Unlock()
dg.enqueue(b[n:]) dg.enqueue(b[n:])
} }
} }

View File

@@ -392,6 +392,7 @@ var _ = Describe("Connection", func() {
close(delivered) close(delivered)
return b, nil return b, nil
}) })
qconn.EXPECT().ReceiveDatagram(gomock.Any()).Return(nil, errors.New("test done"))
go func() { go func() {
defer GinkgoRecover() defer GinkgoRecover()
conn.handleUnidirectionalStreams(nil) conn.handleUnidirectionalStreams(nil)