Skip to content

Fixing bug with END_STREAM if header has continuations #22626

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

Merged
merged 1 commit into from
Apr 23, 2020

Conversation

bocon13
Copy link
Contributor

@bocon13 bocon13 commented Apr 9, 2020

The HEADER frame should get the END_STREAM flag per the HTTP/2 spec.

fixes #21436

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Apr 9, 2020

CLA Check
The committers are authorized under a signed CLA.

@bocon13
Copy link
Contributor Author

bocon13 commented Apr 13, 2020

I've finished all of the expected changes on my side. Can you please rerun the whole test suite so that I can see if there are any other issues to fix?

Thanks!

Copy link
Member

@yashykt yashykt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the minor change, looks good to me. Thanks for doing this!

- The HEADER frame should get the END_STREAM flag per the HTTP/2 spec;
  the old code put END_STREAM on the last CONTINUATION frame.
- Removing deprecated parameter, is_last_in_stream, from finish_frame();
  it has been superseded by the is_end_of_stream member of the framer_state
  struct.
- Adding some gRPC frame validation tests to hpack_encoder_test.cc,
  and explicting checking that the END_STREAM flag is not on the
  CONTINUATION frame.

fixes grpc#21436
@bocon13
Copy link
Contributor Author

bocon13 commented Apr 13, 2020

@yashykt no problem and thanks for the review!

Regarding the failing checks, it looks to me to the ObjC iOS tests are unrelated timeouts, and the Interop ALTS tests are unrelated Docker build errors.

One of the RBE ASAN C/C++ errors was related, and should be solved by removing the code you requested. I'm not really sure about the other one:
//test/cpp/qps:json_run_localhost_cpp_generic_async_streaming_qps_unconstrained_1cq_insecure@poller=epollex

My most recent commit has squashed everything into 1 commit and rebased to latest master.

Copy link
Member

@yashykt yashykt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@bocon13
Copy link
Contributor Author

bocon13 commented Apr 15, 2020

@yashykt @ericgribkoff thanks for all of the help and reviews!

Can we also backport this to 1.28? I'm new here, and couldn't find the criteria for being included in the support branch. Please let me know if there's anything that you need me to do.

Thanks!

@yashykt
Copy link
Member

yashykt commented Apr 23, 2020

Issues : #18892

@yashykt yashykt merged commit b8e34c8 into grpc:master Apr 23, 2020
@yashykt
Copy link
Member

yashykt commented Apr 23, 2020

Thanks for the fix! @bocon13 if you can open a similar PR for v1.28.x, we can merge it for you

@bocon13
Copy link
Contributor Author

bocon13 commented Apr 23, 2020

Awesome! Thanks, @yashykt, for merging it!

I've submitted two PRs to backport the fix to the 1.28 and the newly created 1.29 branches.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang/core release notes: yes Indicates if PR needs to be in release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

hpack_encoder.cc sets END_STREAM flag on CONTINUATION frame
4 participants