grpc 1.41.1 → 1.42.0.pre1
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 +55 -43
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- 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/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +78 -66
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -34,7 +34,6 @@
|
|
34
34
|
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
|
35
35
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
36
36
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
|
37
|
-
#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
|
38
37
|
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
|
39
38
|
#include "src/core/lib/channel/channelz.h"
|
40
39
|
#include "src/core/lib/compression/stream_compression.h"
|
@@ -43,6 +42,7 @@
|
|
43
42
|
#include "src/core/lib/iomgr/endpoint.h"
|
44
43
|
#include "src/core/lib/iomgr/timer.h"
|
45
44
|
#include "src/core/lib/transport/connectivity_state.h"
|
45
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
46
46
|
#include "src/core/lib/transport/transport_impl.h"
|
47
47
|
|
48
48
|
namespace grpc_core {
|
@@ -589,7 +589,8 @@ struct grpc_chttp2_stream {
|
|
589
589
|
grpc_published_metadata_method published_metadata[2] = {};
|
590
590
|
bool final_metadata_requested = false;
|
591
591
|
|
592
|
-
|
592
|
+
grpc_metadata_batch initial_metadata_buffer;
|
593
|
+
grpc_metadata_batch trailing_metadata_buffer;
|
593
594
|
|
594
595
|
grpc_slice_buffer frame_storage; /* protected by t combiner */
|
595
596
|
|
@@ -766,7 +767,7 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
766
767
|
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
767
768
|
uint32_t goaway_error,
|
768
769
|
uint32_t last_stream_id,
|
769
|
-
|
770
|
+
absl::string_view goaway_text);
|
770
771
|
|
771
772
|
void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t);
|
772
773
|
|
@@ -324,13 +324,26 @@ static HPackParser::Boundary hpack_boundary_type(grpc_chttp2_transport* t,
|
|
324
324
|
}
|
325
325
|
}
|
326
326
|
|
327
|
+
static HPackParser::LogInfo hpack_parser_log_info(
|
328
|
+
grpc_chttp2_transport* t, HPackParser::LogInfo::Type type) {
|
329
|
+
return HPackParser::LogInfo{
|
330
|
+
t->incoming_stream_id,
|
331
|
+
type,
|
332
|
+
t->is_client,
|
333
|
+
};
|
334
|
+
}
|
335
|
+
|
327
336
|
static grpc_error_handle init_header_skip_frame_parser(
|
328
337
|
grpc_chttp2_transport* t, HPackParser::Priority priority_type) {
|
329
338
|
bool is_eoh = t->expect_continuation_stream_id != 0;
|
330
339
|
t->parser = grpc_chttp2_header_parser_parse;
|
331
340
|
t->parser_data = &t->hpack_parser;
|
332
|
-
t->hpack_parser.BeginFrame(
|
333
|
-
|
341
|
+
t->hpack_parser.BeginFrame(
|
342
|
+
nullptr,
|
343
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
344
|
+
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
|
345
|
+
hpack_boundary_type(t, is_eoh), priority_type,
|
346
|
+
hpack_parser_log_info(t, HPackParser::LogInfo::kDontKnow));
|
334
347
|
return GRPC_ERROR_NONE;
|
335
348
|
}
|
336
349
|
|
@@ -342,7 +355,7 @@ static grpc_error_handle init_non_header_skip_frame_parser(
|
|
342
355
|
|
343
356
|
void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
|
344
357
|
if (t->parser == grpc_chttp2_header_parser_parse) {
|
345
|
-
t->hpack_parser.
|
358
|
+
t->hpack_parser.StopBufferingFrame();
|
346
359
|
} else {
|
347
360
|
t->parser = skip_parser;
|
348
361
|
}
|
@@ -409,170 +422,6 @@ error_handler:
|
|
409
422
|
}
|
410
423
|
}
|
411
424
|
|
412
|
-
static void free_timeout(void* p) { gpr_free(p); }
|
413
|
-
|
414
|
-
static bool md_key_cmp(grpc_mdelem md, const grpc_slice& reference) {
|
415
|
-
GPR_DEBUG_ASSERT(grpc_slice_is_interned(GRPC_MDKEY(md)));
|
416
|
-
return GRPC_MDKEY(md).refcount == reference.refcount;
|
417
|
-
}
|
418
|
-
|
419
|
-
static void GPR_ATTRIBUTE_NOINLINE on_initial_header_log(
|
420
|
-
grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_mdelem md) {
|
421
|
-
char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
|
422
|
-
char* value =
|
423
|
-
grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
424
|
-
gpr_log(GPR_INFO, "HTTP:%d:HDR:%s: %s: %s", s->id,
|
425
|
-
t->is_client ? "CLI" : "SVR", key, value);
|
426
|
-
gpr_free(key);
|
427
|
-
gpr_free(value);
|
428
|
-
}
|
429
|
-
|
430
|
-
static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
|
431
|
-
handle_timeout(grpc_chttp2_stream* s, grpc_mdelem md) {
|
432
|
-
grpc_millis* cached_timeout =
|
433
|
-
static_cast<grpc_millis*>(grpc_mdelem_get_user_data(md, free_timeout));
|
434
|
-
grpc_millis timeout;
|
435
|
-
if (cached_timeout != nullptr) {
|
436
|
-
timeout = *cached_timeout;
|
437
|
-
} else {
|
438
|
-
if (GPR_UNLIKELY(!grpc_http2_decode_timeout(GRPC_MDVALUE(md), &timeout))) {
|
439
|
-
char* val = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
440
|
-
gpr_log(GPR_ERROR, "Ignoring bad timeout value '%s'", val);
|
441
|
-
gpr_free(val);
|
442
|
-
timeout = GRPC_MILLIS_INF_FUTURE;
|
443
|
-
}
|
444
|
-
if (GRPC_MDELEM_IS_INTERNED(md)) {
|
445
|
-
/* store the result */
|
446
|
-
cached_timeout =
|
447
|
-
static_cast<grpc_millis*>(gpr_malloc(sizeof(grpc_millis)));
|
448
|
-
*cached_timeout = timeout;
|
449
|
-
grpc_mdelem_set_user_data(md, free_timeout, cached_timeout);
|
450
|
-
}
|
451
|
-
}
|
452
|
-
if (timeout != GRPC_MILLIS_INF_FUTURE) {
|
453
|
-
grpc_chttp2_incoming_metadata_buffer_set_deadline(
|
454
|
-
&s->metadata_buffer[0], grpc_core::ExecCtx::Get()->Now() + timeout);
|
455
|
-
}
|
456
|
-
GRPC_MDELEM_UNREF(md);
|
457
|
-
return GRPC_ERROR_NONE;
|
458
|
-
}
|
459
|
-
|
460
|
-
static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
|
461
|
-
handle_metadata_size_limit_exceeded(grpc_chttp2_transport* t,
|
462
|
-
grpc_chttp2_stream* s, grpc_mdelem md,
|
463
|
-
size_t new_size,
|
464
|
-
size_t metadata_size_limit) {
|
465
|
-
gpr_log(GPR_DEBUG,
|
466
|
-
"received initial metadata size exceeds limit (%" PRIuPTR
|
467
|
-
" vs. %" PRIuPTR
|
468
|
-
"). GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.",
|
469
|
-
new_size, metadata_size_limit);
|
470
|
-
grpc_chttp2_cancel_stream(
|
471
|
-
t, s,
|
472
|
-
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
473
|
-
"received initial metadata size exceeds limit"),
|
474
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
475
|
-
GRPC_STATUS_RESOURCE_EXHAUSTED));
|
476
|
-
grpc_chttp2_parsing_become_skip_parser(t);
|
477
|
-
s->seen_error = true;
|
478
|
-
GRPC_MDELEM_UNREF(md);
|
479
|
-
return GRPC_ERROR_NONE;
|
480
|
-
}
|
481
|
-
|
482
|
-
static grpc_error_handle GPR_ATTRIBUTE_NOINLINE
|
483
|
-
handle_metadata_add_failure(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
484
|
-
grpc_mdelem md, grpc_error_handle error) {
|
485
|
-
grpc_chttp2_cancel_stream(t, s, error);
|
486
|
-
grpc_chttp2_parsing_become_skip_parser(t);
|
487
|
-
s->seen_error = true;
|
488
|
-
GRPC_MDELEM_UNREF(md);
|
489
|
-
return GRPC_ERROR_NONE;
|
490
|
-
}
|
491
|
-
|
492
|
-
static grpc_error_handle on_initial_header(void* tp, grpc_mdelem md) {
|
493
|
-
GPR_TIMER_SCOPE("on_initial_header", 0);
|
494
|
-
|
495
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
496
|
-
grpc_chttp2_stream* s = t->incoming_stream;
|
497
|
-
GPR_DEBUG_ASSERT(s != nullptr);
|
498
|
-
|
499
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
500
|
-
on_initial_header_log(t, s, md);
|
501
|
-
}
|
502
|
-
|
503
|
-
if (md_key_cmp(md, GRPC_MDSTR_GRPC_TIMEOUT)) {
|
504
|
-
return handle_timeout(s, md);
|
505
|
-
}
|
506
|
-
|
507
|
-
const size_t new_size = s->metadata_buffer[0].size + GRPC_MDELEM_LENGTH(md);
|
508
|
-
const size_t metadata_size_limit =
|
509
|
-
t->settings[GRPC_ACKED_SETTINGS]
|
510
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
511
|
-
if (GPR_UNLIKELY(new_size > metadata_size_limit)) {
|
512
|
-
return handle_metadata_size_limit_exceeded(t, s, md, new_size,
|
513
|
-
metadata_size_limit);
|
514
|
-
} else {
|
515
|
-
grpc_error_handle error =
|
516
|
-
grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md);
|
517
|
-
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
518
|
-
return handle_metadata_add_failure(t, s, md, error);
|
519
|
-
}
|
520
|
-
}
|
521
|
-
// Not timeout-related metadata, and no error occurred.
|
522
|
-
return GRPC_ERROR_NONE;
|
523
|
-
}
|
524
|
-
|
525
|
-
static grpc_error_handle on_trailing_header(void* tp, grpc_mdelem md) {
|
526
|
-
GPR_TIMER_SCOPE("on_trailing_header", 0);
|
527
|
-
|
528
|
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
529
|
-
grpc_chttp2_stream* s = t->incoming_stream;
|
530
|
-
GPR_DEBUG_ASSERT(s != nullptr);
|
531
|
-
|
532
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
533
|
-
char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
|
534
|
-
char* value =
|
535
|
-
grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
536
|
-
gpr_log(GPR_INFO, "HTTP:%d:TRL:%s: %s: %s", s->id,
|
537
|
-
t->is_client ? "CLI" : "SVR", key, value);
|
538
|
-
gpr_free(key);
|
539
|
-
gpr_free(value);
|
540
|
-
}
|
541
|
-
|
542
|
-
const size_t new_size = s->metadata_buffer[1].size + GRPC_MDELEM_LENGTH(md);
|
543
|
-
const size_t metadata_size_limit =
|
544
|
-
t->settings[GRPC_ACKED_SETTINGS]
|
545
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
546
|
-
if (new_size > metadata_size_limit) {
|
547
|
-
gpr_log(GPR_DEBUG,
|
548
|
-
"received trailing metadata size exceeds limit (%" PRIuPTR
|
549
|
-
" vs. %" PRIuPTR
|
550
|
-
"). Please note that the status is also included in the trailing "
|
551
|
-
"metadata and a large status message can also trigger this. "
|
552
|
-
"GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.",
|
553
|
-
new_size, metadata_size_limit);
|
554
|
-
grpc_chttp2_cancel_stream(
|
555
|
-
t, s,
|
556
|
-
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
557
|
-
"received trailing metadata size exceeds limit"),
|
558
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
559
|
-
GRPC_STATUS_RESOURCE_EXHAUSTED));
|
560
|
-
grpc_chttp2_parsing_become_skip_parser(t);
|
561
|
-
s->seen_error = true;
|
562
|
-
GRPC_MDELEM_UNREF(md);
|
563
|
-
} else {
|
564
|
-
grpc_error_handle error =
|
565
|
-
grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md);
|
566
|
-
if (error != GRPC_ERROR_NONE) {
|
567
|
-
grpc_chttp2_cancel_stream(t, s, error);
|
568
|
-
grpc_chttp2_parsing_become_skip_parser(t);
|
569
|
-
s->seen_error = true;
|
570
|
-
GRPC_MDELEM_UNREF(md);
|
571
|
-
}
|
572
|
-
}
|
573
|
-
return GRPC_ERROR_NONE;
|
574
|
-
}
|
575
|
-
|
576
425
|
static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
577
426
|
int is_continuation) {
|
578
427
|
const bool is_eoh =
|
@@ -664,7 +513,8 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
664
513
|
if (t->header_eof) {
|
665
514
|
s->eos_received = true;
|
666
515
|
}
|
667
|
-
|
516
|
+
grpc_metadata_batch* incoming_metadata_buffer = nullptr;
|
517
|
+
HPackParser::LogInfo::Type frame_type = HPackParser::LogInfo::kDontKnow;
|
668
518
|
switch (s->header_frames_received) {
|
669
519
|
case 0:
|
670
520
|
if (t->is_client && t->header_eof) {
|
@@ -672,22 +522,29 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
|
|
672
522
|
if (s->trailing_metadata_available != nullptr) {
|
673
523
|
*s->trailing_metadata_available = true;
|
674
524
|
}
|
675
|
-
|
525
|
+
incoming_metadata_buffer = &s->trailing_metadata_buffer;
|
526
|
+
frame_type = HPackParser::LogInfo::kTrailers;
|
676
527
|
} else {
|
677
528
|
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "parsing initial_metadata"));
|
678
|
-
|
529
|
+
incoming_metadata_buffer = &s->initial_metadata_buffer;
|
530
|
+
frame_type = HPackParser::LogInfo::kHeaders;
|
679
531
|
}
|
680
532
|
break;
|
681
533
|
case 1:
|
682
534
|
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "parsing trailing_metadata"));
|
683
|
-
|
535
|
+
incoming_metadata_buffer = &s->trailing_metadata_buffer;
|
536
|
+
frame_type = HPackParser::LogInfo::kTrailers;
|
684
537
|
break;
|
685
538
|
case 2:
|
686
539
|
gpr_log(GPR_ERROR, "too many header frames received");
|
687
540
|
return init_header_skip_frame_parser(t, priority_type);
|
688
541
|
}
|
689
|
-
t->hpack_parser.BeginFrame(
|
690
|
-
|
542
|
+
t->hpack_parser.BeginFrame(
|
543
|
+
incoming_metadata_buffer,
|
544
|
+
t->settings[GRPC_ACKED_SETTINGS]
|
545
|
+
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE],
|
546
|
+
hpack_boundary_type(t, is_eoh), priority_type,
|
547
|
+
hpack_parser_log_info(t, frame_type));
|
691
548
|
return GRPC_ERROR_NONE;
|
692
549
|
}
|
693
550
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_POPULARITY_COUNT_H
|
16
16
|
#define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_POPULARITY_COUNT_H
|
17
17
|
|
18
|
-
#include <grpc/
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
20
|
namespace grpc_core {
|
21
21
|
|
@@ -177,11 +177,12 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
177
177
|
t->settings[GRPC_ACKED_SETTINGS]
|
178
178
|
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
|
179
179
|
t->flow_control->remote_window(),
|
180
|
-
static_cast<uint32_t>
|
181
|
-
0,
|
180
|
+
static_cast<uint32_t>(std::max(
|
181
|
+
int64_t(0),
|
182
182
|
s->flow_control->remote_window_delta() +
|
183
|
-
(
|
184
|
-
|
183
|
+
static_cast<int64_t>(
|
184
|
+
t->settings[GRPC_PEER_SETTINGS]
|
185
|
+
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]))),
|
185
186
|
s->flow_control->remote_window_delta());
|
186
187
|
}
|
187
188
|
}
|
@@ -193,7 +194,8 @@ static uint32_t target_write_size(grpc_chttp2_transport* /*t*/) {
|
|
193
194
|
|
194
195
|
// Returns true if initial_metadata contains only default headers.
|
195
196
|
static bool is_default_initial_metadata(grpc_metadata_batch* initial_metadata) {
|
196
|
-
return initial_metadata->
|
197
|
+
return initial_metadata->default_count() ==
|
198
|
+
initial_metadata->non_deadline_count();
|
197
199
|
}
|
198
200
|
|
199
201
|
namespace {
|
@@ -325,27 +327,30 @@ class DataSendContext {
|
|
325
327
|
sending_bytes_before_(s_->sending_bytes) {}
|
326
328
|
|
327
329
|
uint32_t stream_remote_window() const {
|
328
|
-
return static_cast<uint32_t>
|
329
|
-
0,
|
330
|
-
|
331
|
-
|
330
|
+
return static_cast<uint32_t>(std::max(
|
331
|
+
int64_t(0),
|
332
|
+
s_->flow_control->remote_window_delta() +
|
333
|
+
static_cast<int64_t>(
|
334
|
+
t_->settings[GRPC_PEER_SETTINGS]
|
335
|
+
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE])));
|
332
336
|
}
|
333
337
|
|
334
338
|
uint32_t max_outgoing() const {
|
335
|
-
return static_cast<uint32_t>
|
339
|
+
return static_cast<uint32_t>(std::min(
|
336
340
|
t_->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
|
337
|
-
|
341
|
+
static_cast<uint32_t>(std::min(int64_t(stream_remote_window()),
|
342
|
+
t_->flow_control->remote_window()))));
|
338
343
|
}
|
339
344
|
|
340
345
|
bool AnyOutgoing() const { return max_outgoing() > 0; }
|
341
346
|
|
342
347
|
void FlushUncompressedBytes() {
|
343
|
-
uint32_t send_bytes = static_cast<uint32_t>
|
344
|
-
max_outgoing(), s_->flow_controlled_buffer.length);
|
348
|
+
uint32_t send_bytes = static_cast<uint32_t>(
|
349
|
+
std::min(size_t(max_outgoing()), s_->flow_controlled_buffer.length));
|
345
350
|
is_last_frame_ = send_bytes == s_->flow_controlled_buffer.length &&
|
346
351
|
s_->fetching_send_message == nullptr &&
|
347
352
|
s_->send_trailing_metadata != nullptr &&
|
348
|
-
|
353
|
+
s_->send_trailing_metadata->empty();
|
349
354
|
grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, send_bytes,
|
350
355
|
is_last_frame_, &s_->stats.outgoing, &t_->outbuf);
|
351
356
|
s_->flow_control->SentData(send_bytes);
|
@@ -356,8 +361,8 @@ class DataSendContext {
|
|
356
361
|
GPR_DEBUG_ASSERT(s_->stream_compression_method !=
|
357
362
|
GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS);
|
358
363
|
|
359
|
-
uint32_t send_bytes = static_cast<uint32_t>
|
360
|
-
max_outgoing(), s_->compressed_data_buffer.length);
|
364
|
+
uint32_t send_bytes = static_cast<uint32_t>(
|
365
|
+
std::min(size_t(max_outgoing()), s_->compressed_data_buffer.length));
|
361
366
|
bool is_last_data_frame =
|
362
367
|
(send_bytes == s_->compressed_data_buffer.length &&
|
363
368
|
s_->flow_controlled_buffer.length == 0 &&
|
@@ -380,7 +385,7 @@ class DataSendContext {
|
|
380
385
|
}
|
381
386
|
is_last_frame_ = is_last_data_frame &&
|
382
387
|
s_->send_trailing_metadata != nullptr &&
|
383
|
-
|
388
|
+
s_->send_trailing_metadata->empty();
|
384
389
|
grpc_chttp2_encode_data(s_->id, &s_->compressed_data_buffer, send_bytes,
|
385
390
|
is_last_frame_, &s_->stats.outgoing, &t_->outbuf);
|
386
391
|
s_->flow_control->SentData(send_bytes);
|
@@ -561,7 +566,7 @@ class StreamWriteContext {
|
|
561
566
|
if (compressed_data_buffer_len() != 0) return;
|
562
567
|
|
563
568
|
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "sending trailing_metadata"));
|
564
|
-
if (
|
569
|
+
if (s_->send_trailing_metadata->empty()) {
|
565
570
|
grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, 0, true,
|
566
571
|
&s_->stats.outgoing, &t_->outbuf);
|
567
572
|
} else {
|
@@ -600,15 +605,17 @@ class StreamWriteContext {
|
|
600
605
|
gpr_log(GPR_INFO, "not sending initial_metadata (Trailers-Only)"));
|
601
606
|
// When sending Trailers-Only, we need to move the :status and
|
602
607
|
// content-type headers to the trailers.
|
603
|
-
if (s_->send_initial_metadata->
|
608
|
+
if (s_->send_initial_metadata->legacy_index()->named.status != nullptr) {
|
604
609
|
extra_headers_for_trailing_metadata_
|
605
610
|
[num_extra_headers_for_trailing_metadata_++] =
|
606
|
-
&s_->send_initial_metadata->
|
611
|
+
&s_->send_initial_metadata->legacy_index()->named.status->md;
|
607
612
|
}
|
608
|
-
if (s_->send_initial_metadata->
|
613
|
+
if (s_->send_initial_metadata->legacy_index()->named.content_type !=
|
614
|
+
nullptr) {
|
609
615
|
extra_headers_for_trailing_metadata_
|
610
616
|
[num_extra_headers_for_trailing_metadata_++] =
|
611
|
-
&s_->send_initial_metadata->
|
617
|
+
&s_->send_initial_metadata->legacy_index()
|
618
|
+
->named.content_type->md;
|
612
619
|
}
|
613
620
|
}
|
614
621
|
|