http3: fix race condition when creating state tracking stream (#4493)

This commit is contained in:
Marten Seemann
2024-05-05 21:34:55 +08:00
committed by GitHub
parent 83eeb9cc66
commit 5aac43549b

View File

@@ -120,10 +120,11 @@ func (c *connection) acceptStream(ctx context.Context) (quic.Stream, *datagramme
}
datagrams := newDatagrammer(func(b []byte) error { return c.sendDatagram(str.StreamID(), b) })
if c.perspective == protocol.PerspectiveServer {
strID := str.StreamID()
c.streamMx.Lock()
c.streams[str.StreamID()] = datagrams
c.streams[strID] = datagrams
c.streamMx.Unlock()
str = newStateTrackingStream(str, func(s streamState, e error) { c.onStreamStateChange(str.StreamID(), s, e) })
str = newStateTrackingStream(str, func(s streamState, e error) { c.onStreamStateChange(strID, s, e) })
}
return str, datagrams, nil
}