-
Notifications
You must be signed in to change notification settings - Fork 92
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
h3spec #112
h3spec #112
Conversation
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.
You're amazing!
h3/src/connection.rs
Outdated
if grease { | ||
//= ci/compliance/specs/rfc9114.txt#7.2.4.1 |
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.
I recommend linking to the page on rfc editor so it's easier to click the link and read the section
//= ci/compliance/specs/rfc9114.txt#7.2.4.1 | |
//= https://www.rfc-editor.org/rfc/rfc9114#section-7.2.4.1 |
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.
My bad. Will fix this real quick.
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.
My bad. Will fix this real quick.
Ok thanks.
//# their receipt MUST be treated as a connection error of type | ||
//# H3_SETTINGS_ERROR. |
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.
I would consider quoting the whole paragraph to give context:
//# their receipt MUST be treated as a connection error of type | |
//# H3_SETTINGS_ERROR. | |
//# Setting identifiers that were defined in [HTTP/2] where there is no | |
//# corresponding HTTP/3 setting have also been reserved | |
//# (Section 11.2.2). These reserved settings MUST NOT be sent, and | |
//# their receipt MUST be treated as a connection error of type | |
//# H3_SETTINGS_ERROR. |
Hi @seanmonstar ,
Also there are some Quic failures. And there are many similar |
It could be the h3spec is using requirements from an old version of the spec... In that case, is there a way to ignore some? Another option is to make your commits that fix various cases a separate PR, and we can merge that sooner, since they're straight improvements, while we figure out how to make the rest of h3spec happy. |
We had to ignore a few test cases in s2n-quic, so it's doable: https://github.com/aws/s2n-quic/blob/dce3fd056f9a263d6fd97de932c9864d73a7e92f/.github/workflows/qns.yml#L556 |
The failing tests now getting ignored. The |
h3/src/error.rs
Outdated
pub struct Code(u64); | ||
pub struct Code { | ||
code: u64, | ||
level: ErrorLevel, |
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.
I'd probably make the error level a concept of the Error
, and not the Code
(I'd expect the code to be mostly only a number). Though, I'm also open to hearing why it should be part of Code
directly...
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.
I did this to be able to define a specific ErrorLevel
for a specific Code
.
But maybe a impl From<Code> for ErrorLevel
would also do it?
Then the ErrorLevel
could be part of the Application
like Code
and Reason
.
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.
After having reviewed the rest, I now lean even more that Code
should just be the number. I noticed all the constants in this PR needed to make them connection error level codes, whereas the spec just defines them separate. The code combined with a context turns it into a connection or stream level error.
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.
Hi, sorry for the late response.
I moved the ErrorLevel
away from the Code
struct.
h3/src/error.rs
Outdated
@@ -232,7 +254,6 @@ impl Error { | |||
matches!(&self.inner.kind, Kind::HeaderTooBig { .. }) | |||
} | |||
|
|||
#[cfg(feature = "test_helpers")] |
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.
It'd be good to keep this as an "unstable" method. The Kind
is not meant to be matched on outside of h3
(and the tests), since we might change it at anytime.
Hi,
i solved #110.
Some tests are failing. I will see if i can fix those.