-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP2 loopback server WaitForCancellationAsync should validate error code sent #59313
Conversation
Tagging subscribers to this area: @dotnet/ncl Issue DetailsIssue #58235
|
@@ -973,7 +973,7 @@ public override async Task WaitForCancellationAsync(bool ignoreIncomingData = tr | |||
{ | |||
Assert.Equal(FrameType.RstStream, frame.Type); | |||
} | |||
} while (frame.Type != FrameType.RstStream); | |||
} while (frame.Type != FrameType.RstStream || (frame is RstStreamFrame rstStreamFrame && rstStreamFrame.ErrorCode != 0x8)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
} while (frame.Type != FrameType.RstStream || (frame is RstStreamFrame rstStreamFrame && rstStreamFrame.ErrorCode != 0x8)); | |
} while (frame.Type != FrameType.RstStream || (frame is RstStreamFrame rstStreamFrame && rstStreamFrame.ErrorCode != ProtocolErrors.CANCEL)); |
I think
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ErrorCode property is an int, so I casted the enum
@@ -973,7 +973,7 @@ public override async Task WaitForCancellationAsync(bool ignoreIncomingData = tr | |||
{ | |||
Assert.Equal(FrameType.RstStream, frame.Type); | |||
} | |||
} while (frame.Type != FrameType.RstStream); | |||
} while (frame.Type != FrameType.RstStream || (frame is RstStreamFrame rstStreamFrame && rstStreamFrame.ErrorCode != (int)ProtocolErrors.CANCEL)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should not receive any RstStream frame other than one containing the CANCEL.
As written, this will just ignore a RstStream that doesn't contain CANCEL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we should rather just assert that the error code is CANCEL, is that what you mean @geoffkizer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes.
Unrelated test failures:
|
Thanks for your PR @pedrobsaila! |
Fixes #58235