Skip to content

quiche: update QUICHE to 4f552f349b8df000af24bc6cfa0b78fdc2467fef#19013

Merged
alyssawilk merged 4 commits intoenvoyproxy:mainfrom
danzh2010:updatetar19
Nov 17, 2021
Merged

quiche: update QUICHE to 4f552f349b8df000af24bc6cfa0b78fdc2467fef#19013
alyssawilk merged 4 commits intoenvoyproxy:mainfrom
danzh2010:updatetar19

Conversation

@danzh2010
Copy link
Copy Markdown
Contributor

Update QUICHE from 0b75841d5 to 4f552f349
https://github.com/google/quiche/compare/0b75841d5..4f552f349

$ git log 0b75841d5..4f552f349 --date=short --no-merges --format="%ad %al %s"

2021-11-15 wub Deprecate --gfe2_reloadable_flag_quic_bbr_start_new_aggregation_epoch_after_a_full_round
2021-11-15 wub Deprecate --gfe2_reloadable_flag_quic_bbr2_check_cwnd_limited_before_aggregation_epoch.
2021-11-15 fayang Make QUIC_BUG of "Trying to start blackhole detection without no bytes in flight" server side only.
2021-11-15 bnc Deprecate --gfe2_reloadable_flag_quic_reject_invalid_chars_in_field_value.
2021-11-15 quiche-dev Consolidates half_closed_local tracking. This is preparation for a refactoring of stream close events.
2021-11-12 quiche-dev Fixes stream unregistration in OgHttp2Session::CloseStream().
2021-11-12 quiche-dev Adds unit tests demonstrating bugs in existing oghttp2 handling of stream close events.
2021-11-12 wub Change QuicCryptoServerConfig::ParseSourceAddressToken from taking a 'SourceAddressTokens*' to a 'SourceAddressTokens&'.  The function dereferences this pointer without checking for nullptr, changing it to reference prevents caller from passing in a nullptr.
2021-11-12 wub Add a regression test for b/206077990.
2021-11-12 quiche-dev Factors out `MaybeSendBufferedData()`, and moves the functionality into `SendQueuedFrames()`.
2021-11-12 fayang Set chrome_value false for gfe2_reloadable_flag_quic_add_cached_network_parameters_to_address_token.
2021-11-12 quiche-dev Add missing nullptr check.
2021-11-11 wub Add retry_token, resumption_attempted and early_data_attempted to quic::ParsedClientHello.
2021-11-11 quiche-dev Another small fix from debugging: only mark a request stream ready to write if it includes a body.
2021-11-11 quiche-dev Fixes frame length calculations to use the actual serialized length.
2021-11-10 dschinazi Add support for draft-ietf-quic-version-negotiation-05
2021-11-10 vasilvv Make sure WebTransport over HTTP/3 is enabled on the client even when SETTINGS_ENABLE_CONNECT_PROTOCOL is not present.
2021-11-09 dschinazi Refactor QUIC version downgrade prevention, part 2
2021-11-09 dschinazi Refactor QUIC version downgrade prevention
2021-11-09 dschinazi Fix a QuicConnection connection close log
2021-11-08 danzh Internal change
2021-11-08 fayang Internal change
2021-11-08 fayang In QUIC, do not check amplification limit if there is pending timer credit. This would guarantee CRYPTO frame be retransmitted because of 1) PTO fires 2) bundled with outgoing ACKs.
2021-11-05 fayang Set gfe2_reloadable_flag_quic_verify_request_headers_2 chrome_value to true.
2021-11-05 wub Allow QuicToyClient to provide a client certificate to the server, if requested.
2021-11-04 quiche-dev Automated g4 rollback of changelist 386316152.
2021-11-04 danzh Validate QUIC request/response headers against invalid token and disallowed headers. Add empty string to disallow-list. Split --gfe2_reloadable_flag_quic_verify_request_headers into 2 flags: --gfe2_reloadable_flag_quic_verify_request_headers_2 to validate QUIC request/response headers against invalid request with ratio monitoring; mark H2 request with empty string header as invalid earlier in H2 stack. --gfe2_reloadable_flag_quic_act_upon_invalid_header return error response upon any invalid QUIC request header.
2021-11-04 quiche-dev Call visitor_.OnInvalidFrame() for oghttp2 header errors.
2021-11-04 wub Add CachedNetworkParameters to address token for IETF QUIC, and - min_rtt received from a validated token will be used to set the initial rtt, if connection option 'TRTT' is set. - Enable bandwidth resumption for IETF QUIC when connection options BWRE or BWMX exists.
2021-11-03 renjietang Add connection option to trigger path degrading on 1 PTO.
2021-11-03 quiche-dev Add default return statements to switch statements to appease GCC.
2021-11-03 quiche-dev Wrap OgHttp2Session callbacks with a latched_error_ check.
2021-11-03 quiche-dev Add mock methods to MockSpdyFramerVisitor.
2021-11-02 quiche-dev Change Http2VisitorInterface::OnInvalidFrame() to accept an InvalidFrameError enum.
2021-11-02 vasilvv Perform header-based draft version negotiation in WebTransport over HTTP/3.
2021-11-02 haoyuewang Use absl::optional<StatelessResetToken> in place of a separate boolean and token on QuicConnection::PathState.
2021-11-02 dschinazi Internal change
2021-11-02 wub Add mTLS support for IETF QUIC.
2021-11-02 wub Internal change
2021-11-02 vasilvv Internal change
2021-11-02 haoyuewang Update quic::IsAppleMobile to quic::IsAppleClient for better coverage of Apple related QUIC reverse path validation crash: 1) Added coverage for iOS Youtube (from cr/406134264) & iMM (from Sherlog) user agents. 2) Added coverage for Mac traffic.

Risk Level: low
Testing: existing H3 tests passed

https://github.com/google/quiche/compare/0b75841d5..4f552f349

$ git log 0b75841d5..4f552f349 --date=short --no-merges --format="%ad %al %s"

2021-11-15 wub Deprecate --gfe2_reloadable_flag_quic_bbr_start_new_aggregation_epoch_after_a_full_round
2021-11-15 wub Deprecate --gfe2_reloadable_flag_quic_bbr2_check_cwnd_limited_before_aggregation_epoch.
2021-11-15 fayang Make QUIC_BUG of "Trying to start blackhole detection without no bytes in flight" server side only.
2021-11-15 bnc Deprecate --gfe2_reloadable_flag_quic_reject_invalid_chars_in_field_value.
2021-11-15 quiche-dev Consolidates half_closed_local tracking. This is preparation for a refactoring of stream close events.
2021-11-12 quiche-dev Fixes stream unregistration in OgHttp2Session::CloseStream().
2021-11-12 quiche-dev Adds unit tests demonstrating bugs in existing oghttp2 handling of stream close events.
2021-11-12 wub Change QuicCryptoServerConfig::ParseSourceAddressToken from taking a 'SourceAddressTokens*' to a 'SourceAddressTokens&'.  The function dereferences this pointer without checking for nullptr, changing it to reference prevents caller from passing in a nullptr.
2021-11-12 wub Add a regression test for b/206077990.
2021-11-12 quiche-dev Factors out `MaybeSendBufferedData()`, and moves the functionality into `SendQueuedFrames()`.
2021-11-12 fayang Set chrome_value false for gfe2_reloadable_flag_quic_add_cached_network_parameters_to_address_token.
2021-11-12 quiche-dev Add missing nullptr check.
2021-11-11 wub Add retry_token, resumption_attempted and early_data_attempted to quic::ParsedClientHello.
2021-11-11 quiche-dev Another small fix from debugging: only mark a request stream ready to write if it includes a body.
2021-11-11 quiche-dev Fixes frame length calculations to use the actual serialized length.
2021-11-10 dschinazi Add support for draft-ietf-quic-version-negotiation-05
2021-11-10 vasilvv Make sure WebTransport over HTTP/3 is enabled on the client even when SETTINGS_ENABLE_CONNECT_PROTOCOL is not present.
2021-11-09 dschinazi Refactor QUIC version downgrade prevention, part 2
2021-11-09 dschinazi Refactor QUIC version downgrade prevention
2021-11-09 dschinazi Fix a QuicConnection connection close log
2021-11-08 danzh Internal change
2021-11-08 fayang Internal change
2021-11-08 fayang In QUIC, do not check amplification limit if there is pending timer credit. This would guarantee CRYPTO frame be retransmitted because of 1) PTO fires 2) bundled with outgoing ACKs.
2021-11-05 fayang Set gfe2_reloadable_flag_quic_verify_request_headers_2 chrome_value to true.
2021-11-05 wub Allow QuicToyClient to provide a client certificate to the server, if requested.
2021-11-04 quiche-dev Automated g4 rollback of changelist 386316152.
2021-11-04 danzh Validate QUIC request/response headers against invalid token and disallowed headers. Add empty string to disallow-list. Split --gfe2_reloadable_flag_quic_verify_request_headers into 2 flags: --gfe2_reloadable_flag_quic_verify_request_headers_2 to validate QUIC request/response headers against invalid request with ratio monitoring; mark H2 request with empty string header as invalid earlier in H2 stack. --gfe2_reloadable_flag_quic_act_upon_invalid_header return error response upon any invalid QUIC request header.
2021-11-04 quiche-dev Call visitor_.OnInvalidFrame() for oghttp2 header errors.
2021-11-04 wub Add CachedNetworkParameters to address token for IETF QUIC, and - min_rtt received from a validated token will be used to set the initial rtt, if connection option 'TRTT' is set. - Enable bandwidth resumption for IETF QUIC when connection options BWRE or BWMX exists.
2021-11-03 renjietang Add connection option to trigger path degrading on 1 PTO.
2021-11-03 quiche-dev Add default return statements to switch statements to appease GCC.
2021-11-03 quiche-dev Wrap OgHttp2Session callbacks with a latched_error_ check.
2021-11-03 quiche-dev Add mock methods to MockSpdyFramerVisitor.
2021-11-02 quiche-dev Change Http2VisitorInterface::OnInvalidFrame() to accept an InvalidFrameError enum.
2021-11-02 vasilvv Perform header-based draft version negotiation in WebTransport over HTTP/3.
2021-11-02 haoyuewang Use absl::optional<StatelessResetToken> in place of a separate boolean and token on QuicConnection::PathState.
2021-11-02 dschinazi Internal change
2021-11-02 wub Add mTLS support for IETF QUIC.
2021-11-02 wub Internal change
2021-11-02 vasilvv Internal change
2021-11-02 haoyuewang Update quic::IsAppleMobile to quic::IsAppleClient for better coverage of Apple related QUIC reverse path validation crash: 1) Added coverage for iOS Youtube (from cr/406134264) & iMM (from Sherlog) user agents. 2) Added coverage for Mac traffic.

Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Nov 16, 2021
@repokitteh-read-only
Copy link
Copy Markdown

CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to (bazel/.*repos.*\.bzl)|(bazel/dependency_imports\.bzl)|(api/bazel/.*\.bzl)|(.*/requirements\.txt)|(.*\.patch).
envoyproxy/dependency-shepherds assignee is @moderation

🐱

Caused by: #19013 was opened by danzh2010.

see: more, trace.

@rojkov
Copy link
Copy Markdown
Member

rojkov commented Nov 16, 2021

/assign @RyanTheOptimist

Copy link
Copy Markdown
Contributor

@RyanTheOptimist RyanTheOptimist left a comment

Choose a reason for hiding this comment

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

Looks good modulo the windows compile failure:

bazel-out\x64_windows-opt\bin\external\envoy\bazel\foreign_cc\nghttp2\include\nghttp2/nghttp2.h(930): error C2065: 'nghttp2_data_source_read_callback': undeclared identifier
bazel-out\x64_windows-opt\bin\external\envoy\bazel\foreign_cc\nghttp2\include\nghttp2/nghttp2.h(930): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
bazel-out\x64_windows-opt\bin\external\envoy\bazel\foreign_cc\nghttp2\include\nghttp2/nghttp2.h(930): error C2513: 'int': no variable declared before '='
bazel-out\x64_windows-opt\bin\external\envoy\bazel\foreign_cc\nghttp2\include\nghttp2/nghttp2.h(930): fatal error C1903: unable to recover from previous error(s); stopping compilation

I think Biren looked into exactly this error recently, fwiw.

name = "com_github_google_quiche",
genrule_cmd_file = "@envoy//bazel/external:quiche.genrule_cmd",
build_file = "@envoy//bazel/external:quiche.BUILD",
patches = ["@envoy//bazel/external:quiche.patch"],
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Oh, NICE!!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't think this is going to work. Are there some patch hunks that are failing to apply?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Unfortunately, I have to bring it back.

Signed-off-by: Dan Zhang <danzh@google.com>
@danzh2010
Copy link
Copy Markdown
Contributor Author

@DavidSchinazi

@moderation
Copy link
Copy Markdown
Contributor

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Nov 16, 2021
#include "absl/types/span.h"
#include "http2/adapter/data_source.h"
#include "http2/adapter/http2_protocol.h"
#include "http2/adapter/http2_visitor_interface.h"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We're planning to back-port these patches to QUICHE, right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This was added in QUICHE so I needed to adjust the patch lines here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nod but I mean all of the diffs in this file. For example, are we planning to back-port the ssize_t typdef, the NO_ERROR and the default returns?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

+1, why not simply ban use of ssize_t in QUICHE via a presubmit?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

IIRC, it's used by nghttp somewhere that oghttp has to overload (or some such).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Yeah, nghttp2 uses ssize_t. Envoy actually has a similar workaround in envoy/common/platform.h.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm working on back-porting the fixes in the patch file. Some of these patches will be unnecessary in the next QUICHE update.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Awesome, that's great to hear!

params->version = FakeVersionLabel;
params->supported_versions.push_back(FakeVersionLabel);
params->supported_versions.push_back(FakeVersionLabel2);
params->legacy_version_information = quic::TransportParameters::LegacyVersionInformation();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Oh, interesting. I'm slightly surprised that this is required because I thought it was optional. But I guess it's going to be optional eventually, just not yet?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It is optional indeed. But this test uses this field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

legacy_version_information is absl::optional but our code (currently) requires it to be present - we'll remove it at a later date. @danzh2010's change is the correct one here.

@danzh2010
Copy link
Copy Markdown
Contributor Author

/retest

@repokitteh-read-only
Copy link
Copy Markdown

Retrying Azure Pipelines:
Check envoy-presubmit isn't fully completed, but will still attempt retrying.
Retried failed jobs in: envoy-presubmit

🐱

Caused by: a #19013 (comment) was created by @danzh2010.

see: more, trace.

Signed-off-by: Dan Zhang <danzh@google.com>
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Nov 16, 2021
@danzh2010
Copy link
Copy Markdown
Contributor Author

@envoyproxy/dependency-shepherds

@danzh2010
Copy link
Copy Markdown
Contributor Author

@moderation, need your another stamp on new commits.

@danzh2010
Copy link
Copy Markdown
Contributor Author

/assign @envoyproxy/dependency-shepherds

@repokitteh-read-only
Copy link
Copy Markdown

@envoyproxy/dependency-shepherds cannot be assigned to this issue.

🐱

Caused by: a #19013 (comment) was created by @danzh2010.

see: more, trace.

@moderation
Copy link
Copy Markdown
Contributor

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Nov 17, 2021
@danzh2010
Copy link
Copy Markdown
Contributor Author

@RyanTheOptimist, mind taking another look?

Copy link
Copy Markdown
Contributor

@RyanTheOptimist RyanTheOptimist left a comment

Choose a reason for hiding this comment

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

LGTM!

@RyanTheOptimist
Copy link
Copy Markdown
Contributor

/assign @alyssawilk

@RyanTheOptimist
Copy link
Copy Markdown
Contributor

@alyssawilk for Sr Maintainer review

@alyssawilk alyssawilk merged commit 1eb1841 into envoyproxy:main Nov 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants