http3: fix memory leak in stream state tracking (#4523)

* fix(http3): handle streamStateSendAndReceiveClosed in onStreamStateChange

Signed-off-by: George MacRorie <me@georgemac.com>

* refactor(http3): adjust stateTrackingStream to operate over streamClearer and errorSetter

* test(http3): remove duplicate test case

* chore(http3): rename test spies to be mocks

---------

Signed-off-by: George MacRorie <me@georgemac.com>
This commit is contained in:
George
2024-05-19 03:15:32 +01:00
committed by GitHub
parent f3cecf952e
commit e2fbf3cdcd
5 changed files with 259 additions and 128 deletions

View File

@@ -27,21 +27,19 @@ func newDatagrammer(sendDatagram func([]byte) error) *datagrammer {
}
}
func (d *datagrammer) SetReceiveError(err error) (isDone bool) {
func (d *datagrammer) SetReceiveError(err error) {
d.mx.Lock()
defer d.mx.Unlock()
d.receiveErr = err
d.signalHasData()
return d.sendErr != nil
}
func (d *datagrammer) SetSendError(err error) (isDone bool) {
func (d *datagrammer) SetSendError(err error) {
d.mx.Lock()
defer d.mx.Unlock()
d.sendErr = err
return d.receiveErr != nil
}
func (d *datagrammer) Send(b []byte) error {