mark stream completed when CancelWrite is called after receiving STOP_SENDING (#4605)

* garbage collect stream when CancelWrite is called after receiving STOP_SENDING

* review comments

* Hold lock while checking isNewlyCompleted

---------

Co-authored-by: Marco Munizaga <git@marcopolo.io>
This commit is contained in:
sukun 2024-08-02 01:37:06 +05:30 committed by GitHub
parent 047cc90f42
commit 8d821f4bc8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 1 deletions

View file

@ -909,6 +909,20 @@ var _ = Describe("Send Stream", func() {
})
})
It("discards the stream when CancelWrite is called after receiving STOP_SENDING", func() {
mockSender.EXPECT().queueControlFrame(&wire.ResetStreamFrame{
StreamID: streamID,
ErrorCode: 101,
})
str.handleStopSendingFrame(&wire.StopSendingFrame{
StreamID: streamID,
ErrorCode: 101,
})
mockSender.EXPECT().onStreamCompleted(gomock.Any())
str.CancelWrite(101)
})
It("unblocks Write", func() {
mockSender.EXPECT().onHasStreamData(streamID, str)
mockSender.EXPECT().queueControlFrame(gomock.Any())