grpc 1.30.0 → 1.31.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +560 -619
- data/include/grpc/grpc_security.h +8 -0
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +108 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +90 -30
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -21,9 +21,11 @@
|
|
21
21
|
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
|
22
22
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
23
23
|
|
24
|
+
#include "absl/strings/str_cat.h"
|
25
|
+
#include "absl/strings/str_format.h"
|
26
|
+
|
24
27
|
#include <grpc/support/alloc.h>
|
25
28
|
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
27
29
|
|
28
30
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
29
31
|
#include "src/core/lib/gprpp/memory.h"
|
@@ -69,12 +71,10 @@ void grpc_chttp2_add_rst_stream_to_next_write(
|
|
69
71
|
grpc_error* grpc_chttp2_rst_stream_parser_begin_frame(
|
70
72
|
grpc_chttp2_rst_stream_parser* parser, uint32_t length, uint8_t flags) {
|
71
73
|
if (length != 4) {
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
gpr_free(msg);
|
77
|
-
return err;
|
74
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
75
|
+
absl::StrFormat("invalid rst_stream: length=%d, flags=%02x", length,
|
76
|
+
flags)
|
77
|
+
.c_str());
|
78
78
|
}
|
79
79
|
parser->byte = 0;
|
80
80
|
return GRPC_ERROR_NONE;
|
@@ -106,13 +106,12 @@ grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser,
|
|
106
106
|
((static_cast<uint32_t>(p->reason_bytes[3])));
|
107
107
|
grpc_error* error = GRPC_ERROR_NONE;
|
108
108
|
if (reason != GRPC_HTTP2_NO_ERROR || s->metadata_buffer[1].size == 0) {
|
109
|
-
char* message;
|
110
|
-
gpr_asprintf(&message, "Received RST_STREAM with error code %d", reason);
|
111
109
|
error = grpc_error_set_int(
|
112
|
-
grpc_error_set_str(
|
113
|
-
|
114
|
-
|
115
|
-
|
110
|
+
grpc_error_set_str(
|
111
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("RST_STREAM"),
|
112
|
+
GRPC_ERROR_STR_GRPC_MESSAGE,
|
113
|
+
grpc_slice_from_cpp_string(absl::StrCat(
|
114
|
+
"Received RST_STREAM with error code ", reason))),
|
116
115
|
GRPC_ERROR_INT_HTTP2_ERROR, static_cast<intptr_t>(reason));
|
117
116
|
}
|
118
117
|
grpc_chttp2_mark_stream_closed(t, s, true, true, error);
|
@@ -23,9 +23,10 @@
|
|
23
23
|
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include "absl/strings/str_format.h"
|
27
|
+
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
28
|
-
#include <grpc/support/string_util.h>
|
29
30
|
|
30
31
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
31
32
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
@@ -117,7 +118,6 @@ grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
|
|
117
118
|
static_cast<grpc_chttp2_settings_parser*>(p);
|
118
119
|
const uint8_t* cur = GRPC_SLICE_START_PTR(slice);
|
119
120
|
const uint8_t* end = GRPC_SLICE_END_PTR(slice);
|
120
|
-
char* msg;
|
121
121
|
grpc_chttp2_setting_id id;
|
122
122
|
|
123
123
|
if (parser->is_ack) {
|
@@ -208,11 +208,10 @@ grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
|
|
208
208
|
t->last_new_stream_id, sp->error_value,
|
209
209
|
grpc_slice_from_static_string("HTTP2 settings error"),
|
210
210
|
&t->qbuf);
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
return err;
|
211
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
212
|
+
absl::StrFormat("invalid value %u passed for %s",
|
213
|
+
parser->value, sp->name)
|
214
|
+
.c_str());
|
216
215
|
}
|
217
216
|
}
|
218
217
|
if (id == GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE &&
|
@@ -21,9 +21,11 @@
|
|
21
21
|
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
|
22
22
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
23
23
|
|
24
|
+
#include "absl/strings/str_cat.h"
|
25
|
+
#include "absl/strings/str_format.h"
|
26
|
+
|
24
27
|
#include <grpc/support/alloc.h>
|
25
28
|
#include <grpc/support/log.h>
|
26
|
-
#include <grpc/support/string_util.h>
|
27
29
|
|
28
30
|
grpc_slice grpc_chttp2_window_update_create(
|
29
31
|
uint32_t id, uint32_t window_update, grpc_transport_one_way_stats* stats) {
|
@@ -54,12 +56,10 @@ grpc_slice grpc_chttp2_window_update_create(
|
|
54
56
|
grpc_error* grpc_chttp2_window_update_parser_begin_frame(
|
55
57
|
grpc_chttp2_window_update_parser* parser, uint32_t length, uint8_t flags) {
|
56
58
|
if (flags || length != 4) {
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
gpr_free(msg);
|
62
|
-
return err;
|
59
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
60
|
+
absl::StrFormat("invalid window update: length=%d, flags=%02x", length,
|
61
|
+
flags)
|
62
|
+
.c_str());
|
63
63
|
}
|
64
64
|
parser->byte = 0;
|
65
65
|
parser->amount = 0;
|
@@ -91,11 +91,8 @@ grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
|
|
91
91
|
// top bit is reserved and must be ignored.
|
92
92
|
uint32_t received_update = p->amount & 0x7fffffffu;
|
93
93
|
if (received_update == 0) {
|
94
|
-
|
95
|
-
|
96
|
-
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
97
|
-
gpr_free(msg);
|
98
|
-
return err;
|
94
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
95
|
+
absl::StrCat("invalid window update bytes: ", p->amount).c_str());
|
99
96
|
}
|
100
97
|
GPR_ASSERT(is_last);
|
101
98
|
|
@@ -25,9 +25,11 @@
|
|
25
25
|
#include <stddef.h>
|
26
26
|
#include <string.h>
|
27
27
|
|
28
|
+
#include "absl/strings/str_cat.h"
|
29
|
+
#include "absl/strings/str_format.h"
|
30
|
+
|
28
31
|
#include <grpc/support/alloc.h>
|
29
32
|
#include <grpc/support/log.h>
|
30
|
-
#include <grpc/support/string_util.h>
|
31
33
|
|
32
34
|
#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
|
33
35
|
#include "src/core/lib/debug/stats.h"
|
@@ -1087,10 +1089,8 @@ static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p,
|
|
1087
1089
|
static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
|
1088
1090
|
const uint8_t* cur, const uint8_t* end) {
|
1089
1091
|
GPR_ASSERT(cur != end);
|
1090
|
-
|
1091
|
-
|
1092
|
-
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
1093
|
-
gpr_free(msg);
|
1092
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1093
|
+
absl::StrCat("Illegal hpack op code ", *cur).c_str());
|
1094
1094
|
return parse_error(p, cur, end, err);
|
1095
1095
|
}
|
1096
1096
|
|
@@ -1173,7 +1173,6 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
|
1173
1173
|
uint8_t c;
|
1174
1174
|
uint32_t cur_value;
|
1175
1175
|
uint32_t add_value;
|
1176
|
-
char* msg;
|
1177
1176
|
|
1178
1177
|
if (cur == end) {
|
1179
1178
|
p->state = parse_value4;
|
@@ -1200,12 +1199,12 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
|
1200
1199
|
}
|
1201
1200
|
|
1202
1201
|
error:
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1202
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1203
|
+
absl::StrFormat(
|
1204
|
+
"integer overflow in hpack integer decoding: have 0x%08x, "
|
1205
|
+
"got byte 0x%02x on byte 5",
|
1206
|
+
*p->parsing.value, *cur)
|
1207
|
+
.c_str());
|
1209
1208
|
return parse_error(p, cur, end, err);
|
1210
1209
|
}
|
1211
1210
|
|
@@ -1227,13 +1226,12 @@ static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
|
|
1227
1226
|
return parse_next(p, cur + 1, end);
|
1228
1227
|
}
|
1229
1228
|
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
gpr_free(msg);
|
1229
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1230
|
+
absl::StrFormat(
|
1231
|
+
"integer overflow in hpack integer decoding: have 0x%08x, "
|
1232
|
+
"got byte 0x%02x sometime after byte 5",
|
1233
|
+
*p->parsing.value, *cur)
|
1234
|
+
.c_str());
|
1237
1235
|
return parse_error(p, cur, end, err);
|
1238
1236
|
}
|
1239
1237
|
|
@@ -1389,11 +1387,10 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
|
1389
1387
|
case B64_BYTE2:
|
1390
1388
|
bits = p->base64_buffer;
|
1391
1389
|
if (bits & 0xffff) {
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
gpr_free(msg);
|
1390
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1391
|
+
absl::StrFormat("trailing bits in base64 encoding: 0x%04x",
|
1392
|
+
bits & 0xffff)
|
1393
|
+
.c_str());
|
1397
1394
|
return parse_error(p, cur, end, err);
|
1398
1395
|
}
|
1399
1396
|
decoded[0] = static_cast<uint8_t>(bits >> 16);
|
@@ -1402,11 +1399,10 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
|
1402
1399
|
case B64_BYTE3:
|
1403
1400
|
bits = p->base64_buffer;
|
1404
1401
|
if (bits & 0xff) {
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
gpr_free(msg);
|
1402
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1403
|
+
absl::StrFormat("trailing bits in base64 encoding: 0x%02x",
|
1404
|
+
bits & 0xff)
|
1405
|
+
.c_str());
|
1410
1406
|
return parse_error(p, cur, end, err);
|
1411
1407
|
}
|
1412
1408
|
decoded[0] = static_cast<uint8_t>(bits >> 16);
|
@@ -23,9 +23,10 @@
|
|
23
23
|
#include <assert.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include "absl/strings/str_format.h"
|
27
|
+
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
28
|
-
#include <grpc/support/string_util.h>
|
29
30
|
|
30
31
|
#include "src/core/lib/debug/trace.h"
|
31
32
|
#include "src/core/lib/gpr/murmur_hash.h"
|
@@ -119,13 +120,11 @@ grpc_error* grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl* tbl,
|
|
119
120
|
return GRPC_ERROR_NONE;
|
120
121
|
}
|
121
122
|
if (bytes > tbl->max_bytes) {
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
gpr_free(msg);
|
128
|
-
return err;
|
123
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
124
|
+
absl::StrFormat(
|
125
|
+
"Attempt to make hpack table %d bytes when max is %d bytes", bytes,
|
126
|
+
tbl->max_bytes)
|
127
|
+
.c_str());
|
129
128
|
}
|
130
129
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
131
130
|
gpr_log(GPR_INFO, "Update hpack parser table size to %d", bytes);
|
@@ -153,15 +152,12 @@ grpc_error* grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, grpc_mdelem md) {
|
|
153
152
|
GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD;
|
154
153
|
|
155
154
|
if (tbl->current_table_bytes > tbl->max_bytes) {
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
163
|
-
gpr_free(msg);
|
164
|
-
return err;
|
155
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
156
|
+
absl::StrFormat(
|
157
|
+
"HPACK max table size reduced to %d but not reflected by hpack "
|
158
|
+
"stream (still at %d)",
|
159
|
+
tbl->max_bytes, tbl->current_table_bytes)
|
160
|
+
.c_str());
|
165
161
|
}
|
166
162
|
|
167
163
|
/* we can't add elements bigger than the max table size */
|
@@ -527,6 +527,13 @@ struct grpc_chttp2_stream {
|
|
527
527
|
grpc_metadata_batch* send_initial_metadata = nullptr;
|
528
528
|
grpc_closure* send_initial_metadata_finished = nullptr;
|
529
529
|
grpc_metadata_batch* send_trailing_metadata = nullptr;
|
530
|
+
// TODO(yashykt): Find a better name for the below field and others in this
|
531
|
+
// struct to betteer distinguish inputs, return values, and
|
532
|
+
// internal state.
|
533
|
+
// sent_trailing_metadata_op allows the transport to fill in to the upper
|
534
|
+
// layer whether this stream was able to send its trailing metadata (used for
|
535
|
+
// detecting cancellation on the server-side)..
|
536
|
+
bool* sent_trailing_metadata_op = nullptr;
|
530
537
|
grpc_closure* send_trailing_metadata_finished = nullptr;
|
531
538
|
|
532
539
|
grpc_core::OrphanablePtr<grpc_core::ByteStream> fetching_send_message;
|
@@ -836,6 +843,12 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id);
|
|
836
843
|
"too_many_pings" followed by immediately closing the connection. */
|
837
844
|
void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t);
|
838
845
|
|
846
|
+
/** Resets ping clock. Should be called when flushing window updates,
|
847
|
+
* initial/trailing metadata or data frames. For a server, it resets the number
|
848
|
+
* of ping strikes and the last_ping_recv_time. For a ping sender, it resets
|
849
|
+
* pings_before_data_required. */
|
850
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t);
|
851
|
+
|
839
852
|
/** add a ref to the stream and add it to the writable list;
|
840
853
|
ref will be dropped in writing.c */
|
841
854
|
void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
|
@@ -22,9 +22,11 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include "absl/strings/str_cat.h"
|
26
|
+
#include "absl/strings/str_format.h"
|
27
|
+
|
25
28
|
#include <grpc/support/alloc.h>
|
26
29
|
#include <grpc/support/log.h>
|
27
|
-
#include <grpc/support/string_util.h>
|
28
30
|
|
29
31
|
#include "src/core/lib/profiling/timers.h"
|
30
32
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
@@ -85,18 +87,15 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
85
87
|
case GRPC_DTS_CLIENT_PREFIX_23:
|
86
88
|
while (cur != end && t->deframe_state != GRPC_DTS_FH_0) {
|
87
89
|
if (*cur != GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
98
|
-
gpr_free(msg);
|
99
|
-
return err;
|
90
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
91
|
+
absl::StrFormat(
|
92
|
+
"Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
|
93
|
+
"at byte %d",
|
94
|
+
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
|
95
|
+
static_cast<int>(static_cast<uint8_t>(
|
96
|
+
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state])),
|
97
|
+
*cur, static_cast<int>(*cur), t->deframe_state)
|
98
|
+
.c_str());
|
100
99
|
}
|
101
100
|
++cur;
|
102
101
|
t->deframe_state = static_cast<grpc_chttp2_deframe_transport_state>(
|
@@ -194,14 +193,12 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
194
193
|
t->incoming_frame_size >
|
195
194
|
t->settings[GRPC_ACKED_SETTINGS]
|
196
195
|
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
gpr_free(msg);
|
204
|
-
return err;
|
196
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
197
|
+
absl::StrFormat("Frame size %d is larger than max frame size %d",
|
198
|
+
t->incoming_frame_size,
|
199
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
200
|
+
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE])
|
201
|
+
.c_str());
|
205
202
|
}
|
206
203
|
if (++cur == end) {
|
207
204
|
return GRPC_ERROR_NONE;
|
@@ -255,34 +252,27 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
|
|
255
252
|
static grpc_error* init_frame_parser(grpc_chttp2_transport* t) {
|
256
253
|
if (t->is_first_frame &&
|
257
254
|
t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
gpr_free(msg);
|
264
|
-
return err;
|
255
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
256
|
+
absl::StrCat(
|
257
|
+
"Expected SETTINGS frame as the first frame, got frame type ",
|
258
|
+
t->incoming_frame_type)
|
259
|
+
.c_str());
|
265
260
|
}
|
266
261
|
t->is_first_frame = false;
|
267
262
|
if (t->expect_continuation_stream_id != 0) {
|
268
263
|
if (t->incoming_frame_type != GRPC_CHTTP2_FRAME_CONTINUATION) {
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
gpr_free(msg);
|
274
|
-
return err;
|
264
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
265
|
+
absl::StrFormat("Expected CONTINUATION frame, got frame type %02x",
|
266
|
+
t->incoming_frame_type)
|
267
|
+
.c_str());
|
275
268
|
}
|
276
269
|
if (t->expect_continuation_stream_id != t->incoming_stream_id) {
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
284
|
-
gpr_free(msg);
|
285
|
-
return err;
|
270
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
271
|
+
absl::StrFormat(
|
272
|
+
"Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
|
273
|
+
"grpc_chttp2_stream %08x",
|
274
|
+
t->expect_continuation_stream_id, t->incoming_stream_id)
|
275
|
+
.c_str());
|
286
276
|
}
|
287
277
|
return init_header_frame_parser(t, 1);
|
288
278
|
}
|
@@ -242,7 +242,7 @@ class WriteContext {
|
|
242
242
|
grpc_slice_buffer_add(
|
243
243
|
&t_->outbuf, grpc_chttp2_window_update_create(0, transport_announce,
|
244
244
|
&throwaway_stats));
|
245
|
-
|
245
|
+
grpc_chttp2_reset_ping_clock(t_);
|
246
246
|
}
|
247
247
|
}
|
248
248
|
|
@@ -287,15 +287,6 @@ class WriteContext {
|
|
287
287
|
return s;
|
288
288
|
}
|
289
289
|
|
290
|
-
void ResetPingClock() {
|
291
|
-
if (!t_->is_client) {
|
292
|
-
t_->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
|
293
|
-
t_->ping_recv_state.ping_strikes = 0;
|
294
|
-
}
|
295
|
-
t_->ping_state.pings_before_data_required =
|
296
|
-
t_->ping_policy.max_pings_without_data;
|
297
|
-
}
|
298
|
-
|
299
290
|
void IncInitialMetadataWrites() { ++initial_metadata_writes_; }
|
300
291
|
void IncWindowUpdateWrites() { ++flow_control_writes_; }
|
301
292
|
void IncMessageWrites() { ++message_writes_; }
|
@@ -474,7 +465,7 @@ class StreamWriteContext {
|
|
474
465
|
};
|
475
466
|
grpc_chttp2_encode_header(&t_->hpack_compressor, nullptr, 0,
|
476
467
|
s_->send_initial_metadata, &hopt, &t_->outbuf);
|
477
|
-
|
468
|
+
grpc_chttp2_reset_ping_clock(t_);
|
478
469
|
write_context_->IncInitialMetadataWrites();
|
479
470
|
}
|
480
471
|
|
@@ -501,7 +492,7 @@ class StreamWriteContext {
|
|
501
492
|
grpc_slice_buffer_add(
|
502
493
|
&t_->outbuf, grpc_chttp2_window_update_create(s_->id, stream_announce,
|
503
494
|
&s_->stats.outgoing));
|
504
|
-
|
495
|
+
grpc_chttp2_reset_ping_clock(t_);
|
505
496
|
write_context_->IncWindowUpdateWrites();
|
506
497
|
}
|
507
498
|
|
@@ -543,7 +534,7 @@ class StreamWriteContext {
|
|
543
534
|
}
|
544
535
|
}
|
545
536
|
}
|
546
|
-
|
537
|
+
grpc_chttp2_reset_ping_clock(t_);
|
547
538
|
if (data_send_context.is_last_frame()) {
|
548
539
|
SentLastFrame();
|
549
540
|
}
|
@@ -584,7 +575,7 @@ class StreamWriteContext {
|
|
584
575
|
s_->send_trailing_metadata, &hopt, &t_->outbuf);
|
585
576
|
}
|
586
577
|
write_context_->IncTrailingMetadataWrites();
|
587
|
-
|
578
|
+
grpc_chttp2_reset_ping_clock(t_);
|
588
579
|
SentLastFrame();
|
589
580
|
|
590
581
|
write_context_->NoteScheduledResults();
|
@@ -615,6 +606,10 @@ class StreamWriteContext {
|
|
615
606
|
|
616
607
|
void SentLastFrame() {
|
617
608
|
s_->send_trailing_metadata = nullptr;
|
609
|
+
if (s_->sent_trailing_metadata_op) {
|
610
|
+
*s_->sent_trailing_metadata_op = true;
|
611
|
+
s_->sent_trailing_metadata_op = nullptr;
|
612
|
+
}
|
618
613
|
s_->sent_trailing_metadata = true;
|
619
614
|
s_->eos_sent = true;
|
620
615
|
|