grpc 1.30.1 → 1.40.0
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 +1195 -18269
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +38 -9
- data/include/grpc/grpc_security.h +291 -186
- data/include/grpc/grpc_security_constants.h +18 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +60 -31
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +75 -87
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/module.modulemap +14 -14
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +14 -13
- data/src/core/ext/filters/client_channel/backup_poller.cc +6 -5
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +2112 -2959
- data/src/core/ext/filters/client_channel/client_channel.h +514 -62
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -4
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +146 -0
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +46 -35
- data/src/core/ext/filters/client_channel/health/health_check_client.h +34 -33
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +39 -37
- data/src/core/ext/filters/client_channel/http_proxy.cc +42 -24
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +301 -267
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -40
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +34 -37
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -51
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +18 -24
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +15 -37
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +41 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +472 -145
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +787 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +700 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1372 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +11 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +80 -53
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -10
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +71 -78
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +11 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +14 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +495 -79
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +45 -36
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +40 -45
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -6
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +883 -71
- data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
- data/src/core/ext/filters/client_channel/resolver.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver.h +7 -15
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +49 -49
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +50 -303
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +26 -54
- data/src/core/ext/filters/client_channel/retry_filter.cc +2611 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +129 -7
- data/src/core/ext/filters/client_channel/server_address.h +75 -21
- data/src/core/ext/filters/client_channel/service_config.cc +27 -21
- data/src/core/ext/filters/client_channel/service_config.h +11 -7
- data/src/core/ext/filters/client_channel/service_config_call_data.h +60 -2
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +143 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +14 -12
- data/src/core/ext/filters/client_channel/service_config_parser.h +12 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +188 -236
- data/src/core/ext/filters/client_channel/subchannel.h +88 -113
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +18 -17
- data/src/core/ext/filters/deadline/deadline_filter.cc +94 -86
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +39 -29
- data/src/core/ext/filters/http/client_authority_filter.cc +9 -9
- data/src/core/ext/filters/http/http_filters_plugin.cc +8 -4
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +91 -50
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +30 -26
- data/src/core/ext/filters/max_age/max_age_filter.cc +50 -44
- data/src/core/ext/filters/message_size/message_size_filter.cc +72 -92
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +90 -34
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +22 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +23 -11
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +38 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -352
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -5
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +22 -20
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +67 -24
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +457 -447
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
- data/src/core/ext/transport/chttp2/transport/flow_control.h +34 -26
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +26 -25
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +21 -23
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +19 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +681 -765
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +17 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +57 -30
- data/src/core/ext/transport/chttp2/transport/parsing.cc +181 -180
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +154 -88
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1452 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +461 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1850 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +370 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1126 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +239 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +982 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +604 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +638 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +179 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +82 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +294 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +953 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3862 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +285 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +117 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +404 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1671 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +116 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +475 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +6 -9
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +6 -10
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +6 -10
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +6 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +6 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +438 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +65 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +7 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +106 -106
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +688 -499
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +12 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +133 -117
- data/src/core/ext/upb-generated/validate/validate.upb.h +881 -645
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +252 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +570 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +300 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +287 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +205 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +964 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +571 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +178 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +4124 -0
- data/src/core/ext/xds/xds_api.h +709 -0
- data/src/core/ext/xds/xds_bootstrap.cc +496 -0
- data/src/core/ext/xds/xds_bootstrap.h +115 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_channel_args.h +32 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +1056 -884
- data/src/core/ext/xds/xds_client.h +375 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +63 -19
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +52 -23
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +115 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +546 -0
- data/src/core/{ext/filters/client_channel → lib/address_utils}/parse_address.cc +129 -45
- data/src/core/lib/address_utils/parse_address.h +77 -0
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +138 -19
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +38 -7
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_args.cc +9 -8
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +18 -10
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channel_trace.cc +6 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +148 -99
- data/src/core/lib/channel/channelz.h +47 -24
- data/src/core/lib/channel/channelz_registry.cc +29 -12
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +11 -52
- data/src/core/lib/channel/handshaker.h +8 -25
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +9 -0
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +3 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log.cc +59 -17
- data/src/core/lib/gpr/log_linux.cc +23 -9
- data/src/core/lib/gpr/log_posix.cc +19 -7
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +5 -3
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +33 -31
- data/src/core/lib/gpr/string.h +9 -8
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/gprpp/manual_constructor.h +2 -2
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/orphanable.h +7 -11
- data/src/core/lib/gprpp/ref_counted.h +105 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +168 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +104 -43
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +25 -22
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +19 -15
- data/src/core/lib/http/parser.cc +63 -43
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +8 -10
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +21 -15
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +16 -13
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +6 -2
- data/src/core/lib/iomgr/endpoint.h +10 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +46 -23
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +185 -73
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +12 -10
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +6 -2
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +47 -41
- data/src/core/lib/iomgr/ev_epollex_linux.cc +92 -87
- data/src/core/lib/iomgr/ev_poll_posix.cc +41 -35
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +19 -7
- data/src/core/lib/iomgr/exec_ctx.h +20 -17
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +6 -6
- data/src/core/lib/iomgr/executor.cc +10 -9
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/iomgr.cc +3 -3
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -13
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +20 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +8 -26
- data/src/core/lib/iomgr/python_util.h +5 -5
- data/src/core/lib/iomgr/resolve_address.cc +12 -8
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +23 -27
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +12 -12
- data/src/core/lib/iomgr/resource_quota.cc +48 -42
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +18 -4
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +120 -77
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +13 -15
- data/src/core/lib/iomgr/tcp_client_custom.cc +17 -20
- data/src/core/lib/iomgr/tcp_client_posix.cc +48 -54
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +16 -14
- data/src/core/lib/iomgr/tcp_custom.cc +67 -48
- data/src/core/lib/iomgr/tcp_custom.h +14 -13
- data/src/core/lib/iomgr/tcp_posix.cc +118 -94
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +9 -10
- data/src/core/lib/iomgr/tcp_server.h +19 -16
- data/src/core/lib/iomgr/tcp_server_custom.cc +57 -58
- data/src/core/lib/iomgr/tcp_server_posix.cc +62 -61
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +16 -16
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +42 -41
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +39 -23
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +7 -6
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +24 -23
- data/src/core/lib/iomgr/timer_manager.cc +4 -4
- data/src/core/lib/iomgr/udp_server.cc +46 -45
- data/src/core/lib/iomgr/udp_server.h +6 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
- data/src/core/lib/iomgr/unix_sockets_posix.h +9 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +13 -3
- data/src/core/lib/json/json_reader.cc +33 -31
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +161 -0
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.cc +7 -7
- data/src/core/lib/security/credentials/credentials.h +12 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +417 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +82 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +500 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +121 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +60 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- 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 +95 -65
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +12 -9
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +78 -92
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +347 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +454 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +145 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -150
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +65 -185
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +33 -28
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +97 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +25 -12
- data/src/core/lib/security/security_connector/security_connector.cc +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +14 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -21
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +82 -33
- data/src/core/lib/security/security_connector/ssl_utils.h +29 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +380 -312
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +141 -79
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -19
- data/src/core/lib/security/transport/secure_endpoint.cc +13 -7
- data/src/core/lib/security/transport/security_handshaker.cc +81 -44
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -12
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +14 -15
- data/src/core/lib/security/util/json_util.h +2 -1
- data/src/core/lib/slice/slice.cc +57 -7
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +11 -13
- data/src/core/lib/slice/slice_internal.h +4 -2
- data/src/core/lib/surface/call.cc +164 -136
- data/src/core/lib/surface/call.h +15 -3
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +55 -63
- data/src/core/lib/surface/channel.h +24 -7
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +96 -96
- data/src/core/lib/surface/completion_queue.h +18 -17
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +46 -32
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +51 -58
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/server.cc +1181 -1365
- data/src/core/lib/surface/server.h +463 -70
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +40 -0
- data/src/core/lib/transport/authority_override.h +37 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +11 -11
- data/src/core/lib/transport/connectivity_state.cc +19 -14
- data/src/core/lib/transport/connectivity_state.h +26 -12
- data/src/core/lib/transport/error_utils.cc +33 -9
- data/src/core/lib/transport/error_utils.h +15 -3
- data/src/core/lib/transport/metadata.cc +16 -2
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.cc +76 -38
- data/src/core/lib/transport/metadata_batch.h +43 -21
- data/src/core/lib/transport/static_metadata.cc +296 -277
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +9 -6
- data/src/core/lib/transport/transport.h +26 -11
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +58 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +61 -20
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +47 -42
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +74 -53
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +17 -5
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
- data/src/core/tsi/ssl_transport_security.cc +199 -73
- data/src/core/tsi/ssl_transport_security.h +23 -12
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security_interface.h +6 -1
- data/src/ruby/bin/math_services_pb.rb +5 -5
- data/src/ruby/ext/grpc/extconf.rb +17 -4
- 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 +54 -10
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +46 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +87 -45
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- 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 +3 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +40 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +50 -16
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +42 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +21 -10
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- 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 +27 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +122 -41
- data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +97 -26
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +47 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +38 -39
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +274 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +61 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1949 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +80 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +147 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
- data/third_party/abseil-cpp/absl/status/status.cc +452 -0
- data/third_party/abseil-cpp/absl/status/status.h +878 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +7 -7
- data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +22 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +93 -61
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +33 -27
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +15 -8
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +2 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +41 -40
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +866 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +763 -721
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.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 +23 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- 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/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- 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/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +198 -37
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -5
- 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/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +122 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +56 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +116 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +231 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +584 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +43 -15
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- 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 +131 -53
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +110 -70
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +348 -423
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +217 -79
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +67 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +71 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +98 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +43 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +127 -41
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +11 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +746 -561
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +58 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +23 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +25 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +62 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +16 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +104 -51
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +467 -125
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +43 -24
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1456 -780
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +595 -441
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +336 -25
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +97 -53
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +202 -109
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +174 -30
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +504 -162
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +55 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +162 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +26 -73
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +47 -28
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +1070 -566
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +66 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +183 -76
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +169 -89
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +379 -140
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- 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/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +604 -511
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +2178 -0
- data/third_party/upb/upb/def.h +315 -0
- data/third_party/upb/upb/def.hpp +439 -0
- data/third_party/upb/upb/encode.c +311 -211
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/msg.c +215 -70
- data/third_party/upb/upb/msg.h +558 -14
- data/third_party/upb/upb/port_def.inc +105 -63
- data/third_party/upb/upb/port_undef.inc +10 -7
- data/third_party/upb/upb/reflection.c +408 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +73 -269
- data/third_party/upb/upb/table.int.h +25 -57
- data/third_party/upb/upb/text_encode.c +421 -0
- data/third_party/upb/upb/text_encode.h +38 -0
- data/third_party/upb/upb/upb.c +138 -135
- data/third_party/upb/upb/upb.h +119 -146
- data/third_party/upb/upb/upb.hpp +88 -0
- data/third_party/upb/upb/upb.int.h +29 -0
- data/third_party/xxhash/xxhash.h +5325 -0
- metadata +698 -181
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -938
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -834
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -348
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -342
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -88
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -309
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -55
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -36
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -33
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -39
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -50
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -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"
|
@@ -38,17 +40,17 @@
|
|
38
40
|
#include "src/core/lib/surface/validate_metadata.h"
|
39
41
|
#include "src/core/lib/transport/http2_errors.h"
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
+
#if __cplusplus > 201103L
|
44
|
+
#define GRPC_HPACK_CONSTEXPR_FN constexpr
|
45
|
+
#define GRPC_HPACK_CONSTEXPR_VALUE constexpr
|
46
|
+
#else
|
47
|
+
#define GRPC_HPACK_CONSTEXPR_FN
|
48
|
+
#define GRPC_HPACK_CONSTEXPR_VALUE const
|
49
|
+
#endif
|
50
|
+
|
51
|
+
namespace grpc_core {
|
43
52
|
|
44
|
-
|
45
|
-
NOT_BINARY,
|
46
|
-
BINARY_BEGIN,
|
47
|
-
B64_BYTE0,
|
48
|
-
B64_BYTE1,
|
49
|
-
B64_BYTE2,
|
50
|
-
B64_BYTE3
|
51
|
-
} binary_state;
|
53
|
+
DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
|
52
54
|
|
53
55
|
/* How parsing works:
|
54
56
|
|
@@ -64,173 +66,6 @@ typedef enum {
|
|
64
66
|
It's expected that most optimizing compilers will turn this code into
|
65
67
|
a set of indirect jumps, and so not waste stack space. */
|
66
68
|
|
67
|
-
/* forward declarations for parsing states */
|
68
|
-
static grpc_error* parse_begin(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
69
|
-
const uint8_t* end);
|
70
|
-
static grpc_error* parse_error(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
71
|
-
const uint8_t* end, grpc_error* error);
|
72
|
-
static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p,
|
73
|
-
const uint8_t* cur, const uint8_t* end);
|
74
|
-
static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
|
75
|
-
const uint8_t* cur, const uint8_t* end);
|
76
|
-
|
77
|
-
static grpc_error* parse_string_prefix(grpc_chttp2_hpack_parser* p,
|
78
|
-
const uint8_t* cur, const uint8_t* end);
|
79
|
-
static grpc_error* parse_key_string(grpc_chttp2_hpack_parser* p,
|
80
|
-
const uint8_t* cur, const uint8_t* end);
|
81
|
-
static grpc_error* parse_value_string_with_indexed_key(
|
82
|
-
grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end);
|
83
|
-
static grpc_error* parse_value_string_with_literal_key(
|
84
|
-
grpc_chttp2_hpack_parser* p, const uint8_t* cur, const uint8_t* end);
|
85
|
-
|
86
|
-
static grpc_error* parse_value0(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
87
|
-
const uint8_t* end);
|
88
|
-
static grpc_error* parse_value1(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
89
|
-
const uint8_t* end);
|
90
|
-
static grpc_error* parse_value2(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
91
|
-
const uint8_t* end);
|
92
|
-
static grpc_error* parse_value3(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
93
|
-
const uint8_t* end);
|
94
|
-
static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
95
|
-
const uint8_t* end);
|
96
|
-
static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
|
97
|
-
const uint8_t* cur, const uint8_t* end);
|
98
|
-
|
99
|
-
static grpc_error* parse_indexed_field(grpc_chttp2_hpack_parser* p,
|
100
|
-
const uint8_t* cur, const uint8_t* end);
|
101
|
-
static grpc_error* parse_indexed_field_x(grpc_chttp2_hpack_parser* p,
|
102
|
-
const uint8_t* cur,
|
103
|
-
const uint8_t* end);
|
104
|
-
static grpc_error* parse_lithdr_incidx(grpc_chttp2_hpack_parser* p,
|
105
|
-
const uint8_t* cur, const uint8_t* end);
|
106
|
-
static grpc_error* parse_lithdr_incidx_x(grpc_chttp2_hpack_parser* p,
|
107
|
-
const uint8_t* cur,
|
108
|
-
const uint8_t* end);
|
109
|
-
static grpc_error* parse_lithdr_incidx_v(grpc_chttp2_hpack_parser* p,
|
110
|
-
const uint8_t* cur,
|
111
|
-
const uint8_t* end);
|
112
|
-
static grpc_error* parse_lithdr_notidx(grpc_chttp2_hpack_parser* p,
|
113
|
-
const uint8_t* cur, const uint8_t* end);
|
114
|
-
static grpc_error* parse_lithdr_notidx_x(grpc_chttp2_hpack_parser* p,
|
115
|
-
const uint8_t* cur,
|
116
|
-
const uint8_t* end);
|
117
|
-
static grpc_error* parse_lithdr_notidx_v(grpc_chttp2_hpack_parser* p,
|
118
|
-
const uint8_t* cur,
|
119
|
-
const uint8_t* end);
|
120
|
-
static grpc_error* parse_lithdr_nvridx(grpc_chttp2_hpack_parser* p,
|
121
|
-
const uint8_t* cur, const uint8_t* end);
|
122
|
-
static grpc_error* parse_lithdr_nvridx_x(grpc_chttp2_hpack_parser* p,
|
123
|
-
const uint8_t* cur,
|
124
|
-
const uint8_t* end);
|
125
|
-
static grpc_error* parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser* p,
|
126
|
-
const uint8_t* cur,
|
127
|
-
const uint8_t* end);
|
128
|
-
static grpc_error* parse_max_tbl_size(grpc_chttp2_hpack_parser* p,
|
129
|
-
const uint8_t* cur, const uint8_t* end);
|
130
|
-
static grpc_error* parse_max_tbl_size_x(grpc_chttp2_hpack_parser* p,
|
131
|
-
const uint8_t* cur, const uint8_t* end);
|
132
|
-
|
133
|
-
/* we translate the first byte of a hpack field into one of these decoding
|
134
|
-
cases, then use a lookup table to jump directly to the appropriate parser.
|
135
|
-
|
136
|
-
_X => the integer index is all ones, meaning we need to do varint decoding
|
137
|
-
_V => the integer index is all zeros, meaning we need to decode an additional
|
138
|
-
string value */
|
139
|
-
typedef enum {
|
140
|
-
INDEXED_FIELD,
|
141
|
-
INDEXED_FIELD_X,
|
142
|
-
LITHDR_INCIDX,
|
143
|
-
LITHDR_INCIDX_X,
|
144
|
-
LITHDR_INCIDX_V,
|
145
|
-
LITHDR_NOTIDX,
|
146
|
-
LITHDR_NOTIDX_X,
|
147
|
-
LITHDR_NOTIDX_V,
|
148
|
-
LITHDR_NVRIDX,
|
149
|
-
LITHDR_NVRIDX_X,
|
150
|
-
LITHDR_NVRIDX_V,
|
151
|
-
MAX_TBL_SIZE,
|
152
|
-
MAX_TBL_SIZE_X,
|
153
|
-
ILLEGAL
|
154
|
-
} first_byte_type;
|
155
|
-
|
156
|
-
/* jump table of parse state functions -- order must match first_byte_type
|
157
|
-
above */
|
158
|
-
static const grpc_chttp2_hpack_parser_state first_byte_action[] = {
|
159
|
-
parse_indexed_field, parse_indexed_field_x, parse_lithdr_incidx,
|
160
|
-
parse_lithdr_incidx_x, parse_lithdr_incidx_v, parse_lithdr_notidx,
|
161
|
-
parse_lithdr_notidx_x, parse_lithdr_notidx_v, parse_lithdr_nvridx,
|
162
|
-
parse_lithdr_nvridx_x, parse_lithdr_nvridx_v, parse_max_tbl_size,
|
163
|
-
parse_max_tbl_size_x, parse_illegal_op};
|
164
|
-
|
165
|
-
/* indexes the first byte to a parse state function - generated by
|
166
|
-
gen_hpack_tables.c */
|
167
|
-
static const uint8_t first_byte_lut[256] = {
|
168
|
-
LITHDR_NOTIDX_V, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
|
169
|
-
LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
|
170
|
-
LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX,
|
171
|
-
LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX, LITHDR_NOTIDX_X,
|
172
|
-
LITHDR_NVRIDX_V, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
|
173
|
-
LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
|
174
|
-
LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX,
|
175
|
-
LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX, LITHDR_NVRIDX_X,
|
176
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
177
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
178
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
179
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
180
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
181
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
182
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE,
|
183
|
-
MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE, MAX_TBL_SIZE_X,
|
184
|
-
LITHDR_INCIDX_V, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
185
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
186
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
187
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
188
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
189
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
190
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
191
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
192
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
193
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
194
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
195
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
196
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
197
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
198
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX,
|
199
|
-
LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX, LITHDR_INCIDX_X,
|
200
|
-
ILLEGAL, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
201
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
202
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
203
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
204
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
205
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
206
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
207
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
208
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
209
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
210
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
211
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
212
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
213
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
214
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
215
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
216
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
217
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
218
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
219
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
220
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
221
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
222
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
223
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
224
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
225
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
226
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
227
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
228
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
229
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
230
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD,
|
231
|
-
INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD, INDEXED_FIELD_X,
|
232
|
-
};
|
233
|
-
|
234
69
|
/* state table for huffman decoding: given a state, gives an index/16 into
|
235
70
|
next_sub_tbl. Taking that index and adding the value of the nibble being
|
236
71
|
considered returns the next state.
|
@@ -604,28 +439,37 @@ static const int16_t emit_sub_tbl[249 * 16] = {
|
|
604
439
|
13, 22, 22, 22, 22, 256, 256, 256, 256,
|
605
440
|
};
|
606
441
|
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
442
|
+
namespace {
|
443
|
+
// The alphabet used for base64 encoding binary metadata.
|
444
|
+
static constexpr char kBase64Alphabet[] =
|
445
|
+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
446
|
+
|
447
|
+
// An inverted table: for each value in kBase64Alphabet, table contains the
|
448
|
+
// index with which it's stored, so we can quickly invert the encoding without
|
449
|
+
// any complicated runtime logic.
|
450
|
+
struct Base64InverseTable {
|
451
|
+
uint8_t table[256]{};
|
452
|
+
GRPC_HPACK_CONSTEXPR_FN Base64InverseTable() {
|
453
|
+
for (int i = 0; i < 256; i++) {
|
454
|
+
table[i] = 255;
|
455
|
+
}
|
456
|
+
for (const char* p = kBase64Alphabet; *p; p++) {
|
457
|
+
uint8_t idx = *p;
|
458
|
+
uint8_t ofs = p - kBase64Alphabet;
|
459
|
+
table[idx] = ofs;
|
460
|
+
}
|
461
|
+
}
|
626
462
|
};
|
627
463
|
|
628
|
-
static
|
464
|
+
static GRPC_HPACK_CONSTEXPR_VALUE Base64InverseTable kBase64InverseTable;
|
465
|
+
} // namespace
|
466
|
+
|
467
|
+
void HPackParser::FinishFrame() {
|
468
|
+
sink_ = Sink();
|
469
|
+
dynamic_table_updates_allowed_ = 2;
|
470
|
+
}
|
471
|
+
|
472
|
+
void GPR_ATTRIBUTE_NOINLINE HPackParser::LogHeader(grpc_mdelem md) {
|
629
473
|
char* k = grpc_slice_to_c_string(GRPC_MDKEY(md));
|
630
474
|
char* v = nullptr;
|
631
475
|
if (grpc_is_binary_header_internal(GRPC_MDKEY(md))) {
|
@@ -644,179 +488,270 @@ static void GPR_ATTRIBUTE_NOINLINE on_hdr_log(grpc_mdelem md) {
|
|
644
488
|
}
|
645
489
|
|
646
490
|
/* emission helpers */
|
647
|
-
template <
|
648
|
-
|
491
|
+
template <HPackParser::TableAction action>
|
492
|
+
grpc_error_handle HPackParser::FinishHeader(grpc_mdelem md) {
|
649
493
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
|
650
|
-
|
494
|
+
LogHeader(md);
|
651
495
|
}
|
652
|
-
if (
|
496
|
+
if (action == TableAction::kAddToTable) {
|
653
497
|
GPR_DEBUG_ASSERT(GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_INTERNED ||
|
654
498
|
GRPC_MDELEM_STORAGE(md) == GRPC_MDELEM_STORAGE_STATIC);
|
655
|
-
|
499
|
+
grpc_error_handle err = grpc_chttp2_hptbl_add(&table_, md);
|
656
500
|
if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
|
657
501
|
}
|
658
|
-
return
|
502
|
+
return sink_(md);
|
659
503
|
}
|
660
504
|
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
str->data.referenced = grpc_core::UnmanagedMemorySlice();
|
505
|
+
UnmanagedMemorySlice HPackParser::String::TakeExtern() {
|
506
|
+
UnmanagedMemorySlice s;
|
507
|
+
if (!copied_) {
|
508
|
+
GPR_DEBUG_ASSERT(!grpc_slice_is_interned(data_.referenced));
|
509
|
+
s = static_cast<UnmanagedMemorySlice&>(data_.referenced);
|
510
|
+
copied_ = true;
|
511
|
+
data_.referenced = UnmanagedMemorySlice();
|
669
512
|
} else {
|
670
|
-
s =
|
671
|
-
str->data.copied.length);
|
513
|
+
s = UnmanagedMemorySlice(data_.copied.str, data_.copied.length);
|
672
514
|
}
|
673
|
-
|
515
|
+
data_.copied.length = 0;
|
674
516
|
return s;
|
675
517
|
}
|
676
518
|
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
str->data.referenced = grpc_empty_slice();
|
519
|
+
ManagedMemorySlice HPackParser::String::TakeIntern() {
|
520
|
+
ManagedMemorySlice s;
|
521
|
+
if (!copied_) {
|
522
|
+
s = ManagedMemorySlice(&data_.referenced);
|
523
|
+
grpc_slice_unref_internal(data_.referenced);
|
524
|
+
copied_ = true;
|
525
|
+
data_.referenced = grpc_empty_slice();
|
685
526
|
} else {
|
686
|
-
s =
|
687
|
-
str->data.copied.length);
|
527
|
+
s = ManagedMemorySlice(data_.copied.str, data_.copied.length);
|
688
528
|
}
|
689
|
-
|
529
|
+
data_.copied.length = 0;
|
690
530
|
return s;
|
691
531
|
}
|
692
532
|
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
return p->state(p, cur, end);
|
533
|
+
grpc_error_handle HPackParser::parse_next(const uint8_t* cur,
|
534
|
+
const uint8_t* end) {
|
535
|
+
state_ = *next_state_++;
|
536
|
+
return (this->*state_)(cur, end);
|
698
537
|
}
|
699
538
|
|
700
539
|
/* begin parsing a header: all functionality is encoded into lookup tables
|
701
540
|
above */
|
702
|
-
|
703
|
-
|
541
|
+
grpc_error_handle HPackParser::parse_begin(const uint8_t* cur,
|
542
|
+
const uint8_t* end) {
|
704
543
|
if (cur == end) {
|
705
|
-
|
544
|
+
state_ = &HPackParser::parse_begin;
|
706
545
|
return GRPC_ERROR_NONE;
|
707
546
|
}
|
708
547
|
|
709
|
-
|
548
|
+
switch (*cur >> 4) {
|
549
|
+
// Literal header not indexed.
|
550
|
+
// First byte format: 0000xxxx
|
551
|
+
// Where xxxx:
|
552
|
+
// 0000 - literal key
|
553
|
+
// 1111 - indexed key, varint encoded index
|
554
|
+
// other - indexed key, inline encoded index
|
555
|
+
case 0:
|
556
|
+
switch (*cur & 0xf) {
|
557
|
+
case 0: // literal key
|
558
|
+
return parse_lithdr_notidx_v(cur, end);
|
559
|
+
case 0xf: // varint encoded key index
|
560
|
+
return parse_lithdr_notidx_x(cur, end);
|
561
|
+
default: // inline encoded key index
|
562
|
+
return parse_lithdr_notidx(cur, end);
|
563
|
+
}
|
564
|
+
// Literal header never indexed.
|
565
|
+
// First byte format: 0001xxxx
|
566
|
+
// Where xxxx:
|
567
|
+
// 0000 - literal key
|
568
|
+
// 1111 - indexed key, varint encoded index
|
569
|
+
// other - indexed key, inline encoded index
|
570
|
+
case 1:
|
571
|
+
switch (*cur & 0xf) {
|
572
|
+
case 0: // literal key
|
573
|
+
return parse_lithdr_nvridx_v(cur, end);
|
574
|
+
case 0xf: // varint encoded key index
|
575
|
+
return parse_lithdr_nvridx_x(cur, end);
|
576
|
+
default: // inline encoded key index
|
577
|
+
return parse_lithdr_nvridx(cur, end);
|
578
|
+
}
|
579
|
+
// Update max table size.
|
580
|
+
// First byte format: 001xxxxx
|
581
|
+
// Where xxxxx:
|
582
|
+
// 11111 - max size is varint encoded
|
583
|
+
// other - max size is stored inline
|
584
|
+
case 2:
|
585
|
+
// inline encoded max table size
|
586
|
+
return parse_max_tbl_size(cur, end);
|
587
|
+
case 3:
|
588
|
+
if (*cur == 0x3f) {
|
589
|
+
// varint encoded max table size
|
590
|
+
return parse_max_tbl_size_x(cur, end);
|
591
|
+
} else {
|
592
|
+
// inline encoded max table size
|
593
|
+
return parse_max_tbl_size(cur, end);
|
594
|
+
}
|
595
|
+
// Literal header with incremental indexing.
|
596
|
+
// First byte format: 01xxxxxx
|
597
|
+
// Where xxxxxx:
|
598
|
+
// 000000 - literal key
|
599
|
+
// 111111 - indexed key, varint encoded index
|
600
|
+
// other - indexed key, inline encoded index
|
601
|
+
case 4:
|
602
|
+
if (*cur == 0x40) {
|
603
|
+
// literal key
|
604
|
+
return parse_lithdr_incidx_v(cur, end);
|
605
|
+
}
|
606
|
+
ABSL_FALLTHROUGH_INTENDED;
|
607
|
+
case 5:
|
608
|
+
case 6:
|
609
|
+
// inline encoded key index
|
610
|
+
return parse_lithdr_incidx(cur, end);
|
611
|
+
case 7:
|
612
|
+
if (*cur == 0x7f) {
|
613
|
+
// varint encoded key index
|
614
|
+
return parse_lithdr_incidx_x(cur, end);
|
615
|
+
} else {
|
616
|
+
// inline encoded key index
|
617
|
+
return parse_lithdr_incidx(cur, end);
|
618
|
+
}
|
619
|
+
// Indexed Header Field Representation
|
620
|
+
// First byte format: 1xxxxxxx
|
621
|
+
// Where xxxxxxx:
|
622
|
+
// 0000000 - illegal
|
623
|
+
// 1111111 - varint encoded field index
|
624
|
+
// other - inline encoded field index
|
625
|
+
case 8:
|
626
|
+
if (*cur == 0x80) {
|
627
|
+
// illegal value.
|
628
|
+
return parse_illegal_op(cur, end);
|
629
|
+
}
|
630
|
+
ABSL_FALLTHROUGH_INTENDED;
|
631
|
+
case 9:
|
632
|
+
case 10:
|
633
|
+
case 11:
|
634
|
+
case 12:
|
635
|
+
case 13:
|
636
|
+
case 14:
|
637
|
+
// inline encoded field index
|
638
|
+
return parse_indexed_field(cur, end);
|
639
|
+
case 15:
|
640
|
+
if (*cur == 0xff) {
|
641
|
+
// varint encoded field index
|
642
|
+
return parse_indexed_field_x(cur, end);
|
643
|
+
} else {
|
644
|
+
// inline encoded field index
|
645
|
+
return parse_indexed_field(cur, end);
|
646
|
+
}
|
647
|
+
}
|
648
|
+
GPR_UNREACHABLE_CODE(abort());
|
710
649
|
}
|
711
650
|
|
712
651
|
/* stream dependency and prioritization data: we just skip it */
|
713
|
-
|
714
|
-
|
652
|
+
grpc_error_handle HPackParser::parse_stream_weight(const uint8_t* cur,
|
653
|
+
const uint8_t* end) {
|
715
654
|
if (cur == end) {
|
716
|
-
|
655
|
+
state_ = &HPackParser::parse_stream_weight;
|
717
656
|
return GRPC_ERROR_NONE;
|
718
657
|
}
|
719
658
|
|
720
|
-
return
|
659
|
+
return (this->*after_prioritization_)(cur + 1, end);
|
721
660
|
}
|
722
661
|
|
723
|
-
|
724
|
-
|
662
|
+
grpc_error_handle HPackParser::parse_stream_dep3(const uint8_t* cur,
|
663
|
+
const uint8_t* end) {
|
725
664
|
if (cur == end) {
|
726
|
-
|
665
|
+
state_ = &HPackParser::parse_stream_dep3;
|
727
666
|
return GRPC_ERROR_NONE;
|
728
667
|
}
|
729
668
|
|
730
|
-
return parse_stream_weight(
|
669
|
+
return parse_stream_weight(cur + 1, end);
|
731
670
|
}
|
732
671
|
|
733
|
-
|
734
|
-
|
672
|
+
grpc_error_handle HPackParser::parse_stream_dep2(const uint8_t* cur,
|
673
|
+
const uint8_t* end) {
|
735
674
|
if (cur == end) {
|
736
|
-
|
675
|
+
state_ = &HPackParser::parse_stream_dep2;
|
737
676
|
return GRPC_ERROR_NONE;
|
738
677
|
}
|
739
678
|
|
740
|
-
return parse_stream_dep3(
|
679
|
+
return parse_stream_dep3(cur + 1, end);
|
741
680
|
}
|
742
681
|
|
743
|
-
|
744
|
-
|
682
|
+
grpc_error_handle HPackParser::parse_stream_dep1(const uint8_t* cur,
|
683
|
+
const uint8_t* end) {
|
745
684
|
if (cur == end) {
|
746
|
-
|
685
|
+
state_ = &HPackParser::parse_stream_dep1;
|
747
686
|
return GRPC_ERROR_NONE;
|
748
687
|
}
|
749
688
|
|
750
|
-
return parse_stream_dep2(
|
689
|
+
return parse_stream_dep2(cur + 1, end);
|
751
690
|
}
|
752
691
|
|
753
|
-
|
754
|
-
|
692
|
+
grpc_error_handle HPackParser::parse_stream_dep0(const uint8_t* cur,
|
693
|
+
const uint8_t* end) {
|
755
694
|
if (cur == end) {
|
756
|
-
|
695
|
+
state_ = &HPackParser::parse_stream_dep0;
|
757
696
|
return GRPC_ERROR_NONE;
|
758
697
|
}
|
759
698
|
|
760
|
-
return parse_stream_dep1(
|
699
|
+
return parse_stream_dep1(cur + 1, end);
|
761
700
|
}
|
762
701
|
|
763
|
-
|
764
|
-
on_invalid_hpack_idx(grpc_chttp2_hpack_parser* p) {
|
702
|
+
grpc_error_handle HPackParser::InvalidHPackIndexError() {
|
765
703
|
return grpc_error_set_int(
|
766
704
|
grpc_error_set_int(
|
767
705
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid HPACK index received"),
|
768
|
-
GRPC_ERROR_INT_INDEX, static_cast<intptr_t>(
|
769
|
-
GRPC_ERROR_INT_SIZE, static_cast<intptr_t>(
|
706
|
+
GRPC_ERROR_INT_INDEX, static_cast<intptr_t>(index_)),
|
707
|
+
GRPC_ERROR_INT_SIZE, static_cast<intptr_t>(table_.num_ents));
|
770
708
|
}
|
771
709
|
|
772
710
|
/* emit an indexed field; jumps to begin the next field on completion */
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
grpc_mdelem md = grpc_chttp2_hptbl_lookup<true>(&p->table, p->index);
|
711
|
+
grpc_error_handle HPackParser::finish_indexed_field(const uint8_t* cur,
|
712
|
+
const uint8_t* end) {
|
713
|
+
grpc_mdelem md = grpc_chttp2_hptbl_lookup<true>(&table_, index_);
|
777
714
|
if (GPR_UNLIKELY(GRPC_MDISNULL(md))) {
|
778
|
-
return
|
715
|
+
return InvalidHPackIndexError();
|
779
716
|
}
|
780
717
|
GRPC_STATS_INC_HPACK_RECV_INDEXED();
|
781
|
-
|
718
|
+
grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(md);
|
782
719
|
if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) return err;
|
783
|
-
return parse_begin(
|
720
|
+
return parse_begin(cur, end);
|
784
721
|
}
|
785
722
|
|
786
723
|
/* parse an indexed field with index < 127 */
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
return finish_indexed_field(
|
724
|
+
grpc_error_handle HPackParser::parse_indexed_field(const uint8_t* cur,
|
725
|
+
const uint8_t* end) {
|
726
|
+
dynamic_table_updates_allowed_ = 0;
|
727
|
+
index_ = (*cur) & 0x7f;
|
728
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
729
|
+
return finish_indexed_field(cur + 1, end);
|
793
730
|
}
|
794
731
|
|
795
732
|
/* parse an indexed field with index >= 127 */
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
p->parsing.value = &p->index;
|
806
|
-
return parse_value0(p, cur + 1, end);
|
733
|
+
grpc_error_handle HPackParser::parse_indexed_field_x(const uint8_t* cur,
|
734
|
+
const uint8_t* end) {
|
735
|
+
static const State and_then[] = {&HPackParser::finish_indexed_field};
|
736
|
+
dynamic_table_updates_allowed_ = 0;
|
737
|
+
next_state_ = and_then;
|
738
|
+
index_ = 0x7f;
|
739
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
740
|
+
parsing_.value = &index_;
|
741
|
+
return parse_value0(cur + 1, end);
|
807
742
|
}
|
808
743
|
|
809
744
|
/* When finishing with a header, get the cached md element for this index.
|
810
745
|
This is set in parse_value_string(). We ensure (in debug mode) that the
|
811
746
|
cached metadata corresponds with the index we are examining. */
|
812
|
-
|
813
|
-
GPR_DEBUG_ASSERT(
|
814
|
-
GPR_DEBUG_ASSERT(static_cast<int64_t>(
|
815
|
-
grpc_mdelem md =
|
747
|
+
grpc_mdelem HPackParser::GetPrecomputedMDForIndex() {
|
748
|
+
GPR_DEBUG_ASSERT(md_for_index_.payload != 0);
|
749
|
+
GPR_DEBUG_ASSERT(static_cast<int64_t>(index_) == precomputed_md_index_);
|
750
|
+
grpc_mdelem md = md_for_index_;
|
816
751
|
GPR_DEBUG_ASSERT(!GRPC_MDISNULL(md)); /* handled in string parsing */
|
817
|
-
|
752
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
818
753
|
#ifndef NDEBUG
|
819
|
-
|
754
|
+
precomputed_md_index_ = -1;
|
820
755
|
#endif
|
821
756
|
return md;
|
822
757
|
}
|
@@ -828,355 +763,340 @@ static const grpc_core::ManagedMemorySlice& get_indexed_key(grpc_mdelem md) {
|
|
828
763
|
}
|
829
764
|
|
830
765
|
/* finish a literal header with incremental indexing */
|
831
|
-
|
832
|
-
|
833
|
-
const uint8_t* end) {
|
766
|
+
grpc_error_handle HPackParser::finish_lithdr_incidx(const uint8_t* cur,
|
767
|
+
const uint8_t* end) {
|
834
768
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX();
|
835
|
-
grpc_mdelem md =
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
return parse_begin(p, cur, end);
|
769
|
+
grpc_mdelem md = GetPrecomputedMDForIndex();
|
770
|
+
grpc_error_handle err = FinishHeader<TableAction::kAddToTable>(
|
771
|
+
grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeIntern()));
|
772
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
773
|
+
return parse_begin(cur, end);
|
841
774
|
}
|
842
775
|
|
843
776
|
/* finish a literal header with incremental indexing with no index */
|
844
|
-
|
845
|
-
|
846
|
-
const uint8_t* end) {
|
777
|
+
grpc_error_handle HPackParser::finish_lithdr_incidx_v(const uint8_t* cur,
|
778
|
+
const uint8_t* end) {
|
847
779
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V();
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
return parse_begin(p, cur, end);
|
780
|
+
grpc_error_handle err = FinishHeader<TableAction::kAddToTable>(
|
781
|
+
grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeIntern()));
|
782
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
783
|
+
return parse_begin(cur, end);
|
853
784
|
}
|
854
785
|
|
855
786
|
/* parse a literal header with incremental indexing; index < 63 */
|
856
|
-
|
857
|
-
|
858
|
-
static const
|
859
|
-
parse_value_string_with_indexed_key,
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
787
|
+
grpc_error_handle HPackParser::parse_lithdr_incidx(const uint8_t* cur,
|
788
|
+
const uint8_t* end) {
|
789
|
+
static const State and_then[] = {
|
790
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
791
|
+
&HPackParser::finish_lithdr_incidx};
|
792
|
+
dynamic_table_updates_allowed_ = 0;
|
793
|
+
next_state_ = and_then;
|
794
|
+
index_ = (*cur) & 0x3f;
|
795
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
796
|
+
return parse_string_prefix(cur + 1, end);
|
865
797
|
}
|
866
798
|
|
867
799
|
/* parse a literal header with incremental indexing; index >= 63 */
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
finish_lithdr_incidx};
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
return parse_value0(
|
800
|
+
grpc_error_handle HPackParser::parse_lithdr_incidx_x(const uint8_t* cur,
|
801
|
+
const uint8_t* end) {
|
802
|
+
static const State and_then[] = {
|
803
|
+
&HPackParser::parse_string_prefix,
|
804
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
805
|
+
&HPackParser::finish_lithdr_incidx};
|
806
|
+
dynamic_table_updates_allowed_ = 0;
|
807
|
+
next_state_ = and_then;
|
808
|
+
index_ = 0x3f;
|
809
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
810
|
+
parsing_.value = &index_;
|
811
|
+
return parse_value0(cur + 1, end);
|
880
812
|
}
|
881
813
|
|
882
814
|
/* parse a literal header with incremental indexing; index = 0 */
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
return parse_string_prefix(
|
815
|
+
grpc_error_handle HPackParser::parse_lithdr_incidx_v(const uint8_t* cur,
|
816
|
+
const uint8_t* end) {
|
817
|
+
static const State and_then[] = {
|
818
|
+
&HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
|
819
|
+
&HPackParser::parse_value_string_with_literal_key,
|
820
|
+
&HPackParser::finish_lithdr_incidx_v};
|
821
|
+
dynamic_table_updates_allowed_ = 0;
|
822
|
+
next_state_ = and_then;
|
823
|
+
return parse_string_prefix(cur + 1, end);
|
892
824
|
}
|
893
825
|
|
894
826
|
/* finish a literal header without incremental indexing */
|
895
|
-
|
896
|
-
|
897
|
-
const uint8_t* end) {
|
827
|
+
grpc_error_handle HPackParser::finish_lithdr_notidx(const uint8_t* cur,
|
828
|
+
const uint8_t* end) {
|
898
829
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX();
|
899
|
-
grpc_mdelem md =
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
return parse_begin(p, cur, end);
|
830
|
+
grpc_mdelem md = GetPrecomputedMDForIndex();
|
831
|
+
grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
|
832
|
+
grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeExtern()));
|
833
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
834
|
+
return parse_begin(cur, end);
|
905
835
|
}
|
906
836
|
|
907
837
|
/* finish a literal header without incremental indexing with index = 0 */
|
908
|
-
|
909
|
-
|
910
|
-
const uint8_t* end) {
|
838
|
+
grpc_error_handle HPackParser::finish_lithdr_notidx_v(const uint8_t* cur,
|
839
|
+
const uint8_t* end) {
|
911
840
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V();
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
return parse_begin(p, cur, end);
|
841
|
+
grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
|
842
|
+
grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeExtern()));
|
843
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
844
|
+
return parse_begin(cur, end);
|
917
845
|
}
|
918
846
|
|
919
847
|
/* parse a literal header without incremental indexing; index < 15 */
|
920
|
-
|
921
|
-
|
922
|
-
static const
|
923
|
-
parse_value_string_with_indexed_key,
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
848
|
+
grpc_error_handle HPackParser::parse_lithdr_notidx(const uint8_t* cur,
|
849
|
+
const uint8_t* end) {
|
850
|
+
static const State and_then[] = {
|
851
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
852
|
+
&HPackParser::finish_lithdr_notidx};
|
853
|
+
dynamic_table_updates_allowed_ = 0;
|
854
|
+
next_state_ = and_then;
|
855
|
+
index_ = (*cur) & 0xf;
|
856
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
857
|
+
return parse_string_prefix(cur + 1, end);
|
929
858
|
}
|
930
859
|
|
931
860
|
/* parse a literal header without incremental indexing; index >= 15 */
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
finish_lithdr_notidx};
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
return parse_value0(
|
861
|
+
grpc_error_handle HPackParser::parse_lithdr_notidx_x(const uint8_t* cur,
|
862
|
+
const uint8_t* end) {
|
863
|
+
static const State and_then[] = {
|
864
|
+
&HPackParser::parse_string_prefix,
|
865
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
866
|
+
&HPackParser::finish_lithdr_notidx};
|
867
|
+
dynamic_table_updates_allowed_ = 0;
|
868
|
+
next_state_ = and_then;
|
869
|
+
index_ = 0xf;
|
870
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
871
|
+
parsing_.value = &index_;
|
872
|
+
return parse_value0(cur + 1, end);
|
944
873
|
}
|
945
874
|
|
946
875
|
/* parse a literal header without incremental indexing; index == 0 */
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
return parse_string_prefix(
|
876
|
+
grpc_error_handle HPackParser::parse_lithdr_notidx_v(const uint8_t* cur,
|
877
|
+
const uint8_t* end) {
|
878
|
+
static const State and_then[] = {
|
879
|
+
&HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
|
880
|
+
&HPackParser::parse_value_string_with_literal_key,
|
881
|
+
&HPackParser::finish_lithdr_notidx_v};
|
882
|
+
dynamic_table_updates_allowed_ = 0;
|
883
|
+
next_state_ = and_then;
|
884
|
+
return parse_string_prefix(cur + 1, end);
|
956
885
|
}
|
957
886
|
|
958
887
|
/* finish a literal header that is never indexed */
|
959
|
-
|
960
|
-
|
961
|
-
const uint8_t* end) {
|
888
|
+
grpc_error_handle HPackParser::finish_lithdr_nvridx(const uint8_t* cur,
|
889
|
+
const uint8_t* end) {
|
962
890
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX();
|
963
|
-
grpc_mdelem md =
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
return parse_begin(p, cur, end);
|
891
|
+
grpc_mdelem md = GetPrecomputedMDForIndex();
|
892
|
+
grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
|
893
|
+
grpc_mdelem_from_slices(get_indexed_key(md), value_.TakeExtern()));
|
894
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
895
|
+
return parse_begin(cur, end);
|
969
896
|
}
|
970
897
|
|
971
898
|
/* finish a literal header that is never indexed with an extra value */
|
972
|
-
|
973
|
-
|
974
|
-
const uint8_t* end) {
|
899
|
+
grpc_error_handle HPackParser::finish_lithdr_nvridx_v(const uint8_t* cur,
|
900
|
+
const uint8_t* end) {
|
975
901
|
GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V();
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
return parse_begin(p, cur, end);
|
902
|
+
grpc_error_handle err = FinishHeader<TableAction::kOmitFromTable>(
|
903
|
+
grpc_mdelem_from_slices(key_.TakeIntern(), value_.TakeExtern()));
|
904
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
905
|
+
return parse_begin(cur, end);
|
981
906
|
}
|
982
907
|
|
983
908
|
/* parse a literal header that is never indexed; index < 15 */
|
984
|
-
|
985
|
-
|
986
|
-
static const
|
987
|
-
parse_value_string_with_indexed_key,
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
909
|
+
grpc_error_handle HPackParser::parse_lithdr_nvridx(const uint8_t* cur,
|
910
|
+
const uint8_t* end) {
|
911
|
+
static const State and_then[] = {
|
912
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
913
|
+
&HPackParser::finish_lithdr_nvridx};
|
914
|
+
dynamic_table_updates_allowed_ = 0;
|
915
|
+
next_state_ = and_then;
|
916
|
+
index_ = (*cur) & 0xf;
|
917
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
918
|
+
return parse_string_prefix(cur + 1, end);
|
993
919
|
}
|
994
920
|
|
995
921
|
/* parse a literal header that is never indexed; index >= 15 */
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
finish_lithdr_nvridx};
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
return parse_value0(
|
922
|
+
grpc_error_handle HPackParser::parse_lithdr_nvridx_x(const uint8_t* cur,
|
923
|
+
const uint8_t* end) {
|
924
|
+
static const State and_then[] = {
|
925
|
+
&HPackParser::parse_string_prefix,
|
926
|
+
&HPackParser::parse_value_string_with_indexed_key,
|
927
|
+
&HPackParser::finish_lithdr_nvridx};
|
928
|
+
dynamic_table_updates_allowed_ = 0;
|
929
|
+
next_state_ = and_then;
|
930
|
+
index_ = 0xf;
|
931
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
932
|
+
parsing_.value = &index_;
|
933
|
+
return parse_value0(cur + 1, end);
|
1008
934
|
}
|
1009
935
|
|
1010
936
|
/* parse a literal header that is never indexed; index == 0 */
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
return parse_string_prefix(
|
937
|
+
grpc_error_handle HPackParser::parse_lithdr_nvridx_v(const uint8_t* cur,
|
938
|
+
const uint8_t* end) {
|
939
|
+
static const State and_then[] = {
|
940
|
+
&HPackParser::parse_key_string, &HPackParser::parse_string_prefix,
|
941
|
+
&HPackParser::parse_value_string_with_literal_key,
|
942
|
+
&HPackParser::finish_lithdr_nvridx_v};
|
943
|
+
dynamic_table_updates_allowed_ = 0;
|
944
|
+
next_state_ = and_then;
|
945
|
+
return parse_string_prefix(cur + 1, end);
|
1020
946
|
}
|
1021
947
|
|
1022
948
|
/* finish parsing a max table size change */
|
1023
|
-
|
1024
|
-
|
949
|
+
grpc_error_handle HPackParser::finish_max_tbl_size(const uint8_t* cur,
|
950
|
+
const uint8_t* end) {
|
1025
951
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
|
1026
|
-
gpr_log(GPR_INFO, "MAX TABLE SIZE: %d",
|
952
|
+
gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", index_);
|
1027
953
|
}
|
1028
|
-
|
1029
|
-
grpc_chttp2_hptbl_set_current_table_size(&
|
1030
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1031
|
-
return parse_begin(
|
954
|
+
grpc_error_handle err =
|
955
|
+
grpc_chttp2_hptbl_set_current_table_size(&table_, index_);
|
956
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
957
|
+
return parse_begin(cur, end);
|
1032
958
|
}
|
1033
959
|
|
1034
960
|
/* parse a max table size change, max size < 15 */
|
1035
|
-
|
1036
|
-
|
1037
|
-
if (
|
961
|
+
grpc_error_handle HPackParser::parse_max_tbl_size(const uint8_t* cur,
|
962
|
+
const uint8_t* end) {
|
963
|
+
if (dynamic_table_updates_allowed_ == 0) {
|
1038
964
|
return parse_error(
|
1039
|
-
|
965
|
+
cur, end,
|
1040
966
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1041
967
|
"More than two max table size changes in a single frame"));
|
1042
968
|
}
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
return finish_max_tbl_size(
|
969
|
+
dynamic_table_updates_allowed_--;
|
970
|
+
index_ = (*cur) & 0x1f;
|
971
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
972
|
+
return finish_max_tbl_size(cur + 1, end);
|
1047
973
|
}
|
1048
974
|
|
1049
975
|
/* parse a max table size change, max size >= 15 */
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
finish_max_tbl_size};
|
1055
|
-
if (p->dynamic_table_update_allowed == 0) {
|
976
|
+
grpc_error_handle HPackParser::parse_max_tbl_size_x(const uint8_t* cur,
|
977
|
+
const uint8_t* end) {
|
978
|
+
static const State and_then[] = {&HPackParser::finish_max_tbl_size};
|
979
|
+
if (dynamic_table_updates_allowed_ == 0) {
|
1056
980
|
return parse_error(
|
1057
|
-
|
981
|
+
cur, end,
|
1058
982
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1059
983
|
"More than two max table size changes in a single frame"));
|
1060
984
|
}
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
return parse_value0(
|
985
|
+
dynamic_table_updates_allowed_--;
|
986
|
+
next_state_ = and_then;
|
987
|
+
index_ = 0x1f;
|
988
|
+
md_for_index_.payload = 0; /* Invalidate cached md when index changes. */
|
989
|
+
parsing_.value = &index_;
|
990
|
+
return parse_value0(cur + 1, end);
|
1067
991
|
}
|
1068
992
|
|
1069
993
|
/* a parse error: jam the parse state into parse_error, and return error */
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
994
|
+
grpc_error_handle HPackParser::parse_error(const uint8_t* /*cur*/,
|
995
|
+
const uint8_t* /*end*/,
|
996
|
+
grpc_error_handle err) {
|
1073
997
|
GPR_ASSERT(err != GRPC_ERROR_NONE);
|
1074
|
-
if (
|
1075
|
-
|
998
|
+
if (last_error_ == GRPC_ERROR_NONE) {
|
999
|
+
last_error_ = GRPC_ERROR_REF(err);
|
1076
1000
|
}
|
1077
|
-
|
1001
|
+
state_ = &HPackParser::still_parse_error;
|
1078
1002
|
return err;
|
1079
1003
|
}
|
1080
1004
|
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
return GRPC_ERROR_REF(p->last_error);
|
1005
|
+
grpc_error_handle HPackParser::still_parse_error(const uint8_t* /*cur*/,
|
1006
|
+
const uint8_t* /*end*/) {
|
1007
|
+
return GRPC_ERROR_REF(last_error_);
|
1085
1008
|
}
|
1086
1009
|
|
1087
|
-
|
1088
|
-
|
1010
|
+
grpc_error_handle HPackParser::parse_illegal_op(const uint8_t* cur,
|
1011
|
+
const uint8_t* end) {
|
1089
1012
|
GPR_ASSERT(cur != end);
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
gpr_free(msg);
|
1094
|
-
return parse_error(p, cur, end, err);
|
1013
|
+
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1014
|
+
absl::StrCat("Illegal hpack op code ", *cur).c_str());
|
1015
|
+
return parse_error(cur, end, err);
|
1095
1016
|
}
|
1096
1017
|
|
1097
|
-
/* parse the 1st byte of a varint into
|
1018
|
+
/* parse the 1st byte of a varint into parsing_.value
|
1098
1019
|
no overflow is possible */
|
1099
|
-
|
1100
|
-
|
1020
|
+
grpc_error_handle HPackParser::parse_value0(const uint8_t* cur,
|
1021
|
+
const uint8_t* end) {
|
1101
1022
|
if (cur == end) {
|
1102
|
-
|
1023
|
+
state_ = &HPackParser::parse_value0;
|
1103
1024
|
return GRPC_ERROR_NONE;
|
1104
1025
|
}
|
1105
1026
|
|
1106
|
-
*
|
1027
|
+
*parsing_.value += (*cur) & 0x7f;
|
1107
1028
|
|
1108
1029
|
if ((*cur) & 0x80) {
|
1109
|
-
return parse_value1(
|
1030
|
+
return parse_value1(cur + 1, end);
|
1110
1031
|
} else {
|
1111
|
-
return parse_next(
|
1032
|
+
return parse_next(cur + 1, end);
|
1112
1033
|
}
|
1113
1034
|
}
|
1114
1035
|
|
1115
|
-
/* parse the 2nd byte of a varint into
|
1036
|
+
/* parse the 2nd byte of a varint into parsing_.value
|
1116
1037
|
no overflow is possible */
|
1117
|
-
|
1118
|
-
|
1038
|
+
grpc_error_handle HPackParser::parse_value1(const uint8_t* cur,
|
1039
|
+
const uint8_t* end) {
|
1119
1040
|
if (cur == end) {
|
1120
|
-
|
1041
|
+
state_ = &HPackParser::parse_value1;
|
1121
1042
|
return GRPC_ERROR_NONE;
|
1122
1043
|
}
|
1123
1044
|
|
1124
|
-
*
|
1045
|
+
*parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 7;
|
1125
1046
|
|
1126
1047
|
if ((*cur) & 0x80) {
|
1127
|
-
return parse_value2(
|
1048
|
+
return parse_value2(cur + 1, end);
|
1128
1049
|
} else {
|
1129
|
-
return parse_next(
|
1050
|
+
return parse_next(cur + 1, end);
|
1130
1051
|
}
|
1131
1052
|
}
|
1132
1053
|
|
1133
|
-
/* parse the 3rd byte of a varint into
|
1054
|
+
/* parse the 3rd byte of a varint into parsing_.value
|
1134
1055
|
no overflow is possible */
|
1135
|
-
|
1136
|
-
|
1056
|
+
grpc_error_handle HPackParser::parse_value2(const uint8_t* cur,
|
1057
|
+
const uint8_t* end) {
|
1137
1058
|
if (cur == end) {
|
1138
|
-
|
1059
|
+
state_ = &HPackParser::parse_value2;
|
1139
1060
|
return GRPC_ERROR_NONE;
|
1140
1061
|
}
|
1141
1062
|
|
1142
|
-
*
|
1063
|
+
*parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 14;
|
1143
1064
|
|
1144
1065
|
if ((*cur) & 0x80) {
|
1145
|
-
return parse_value3(
|
1066
|
+
return parse_value3(cur + 1, end);
|
1146
1067
|
} else {
|
1147
|
-
return parse_next(
|
1068
|
+
return parse_next(cur + 1, end);
|
1148
1069
|
}
|
1149
1070
|
}
|
1150
1071
|
|
1151
|
-
/* parse the 4th byte of a varint into
|
1072
|
+
/* parse the 4th byte of a varint into parsing_.value
|
1152
1073
|
no overflow is possible */
|
1153
|
-
|
1154
|
-
|
1074
|
+
grpc_error_handle HPackParser::parse_value3(const uint8_t* cur,
|
1075
|
+
const uint8_t* end) {
|
1155
1076
|
if (cur == end) {
|
1156
|
-
|
1077
|
+
state_ = &HPackParser::parse_value3;
|
1157
1078
|
return GRPC_ERROR_NONE;
|
1158
1079
|
}
|
1159
1080
|
|
1160
|
-
*
|
1081
|
+
*parsing_.value += ((static_cast<uint32_t>(*cur)) & 0x7f) << 21;
|
1161
1082
|
|
1162
1083
|
if ((*cur) & 0x80) {
|
1163
|
-
return parse_value4(
|
1084
|
+
return parse_value4(cur + 1, end);
|
1164
1085
|
} else {
|
1165
|
-
return parse_next(
|
1086
|
+
return parse_next(cur + 1, end);
|
1166
1087
|
}
|
1167
1088
|
}
|
1168
1089
|
|
1169
|
-
/* parse the 5th byte of a varint into
|
1090
|
+
/* parse the 5th byte of a varint into parsing_.value
|
1170
1091
|
depending on the byte, we may overflow, and care must be taken */
|
1171
|
-
|
1172
|
-
|
1092
|
+
grpc_error_handle HPackParser::parse_value4(const uint8_t* cur,
|
1093
|
+
const uint8_t* end) {
|
1173
1094
|
uint8_t c;
|
1174
1095
|
uint32_t cur_value;
|
1175
1096
|
uint32_t add_value;
|
1176
|
-
char* msg;
|
1177
1097
|
|
1178
1098
|
if (cur == end) {
|
1179
|
-
|
1099
|
+
state_ = &HPackParser::parse_value4;
|
1180
1100
|
return GRPC_ERROR_NONE;
|
1181
1101
|
}
|
1182
1102
|
|
@@ -1185,368 +1105,366 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
|
|
1185
1105
|
goto error;
|
1186
1106
|
}
|
1187
1107
|
|
1188
|
-
cur_value = *
|
1108
|
+
cur_value = *parsing_.value;
|
1189
1109
|
add_value = (static_cast<uint32_t>(c)) << 28;
|
1190
1110
|
if (add_value > 0xffffffffu - cur_value) {
|
1191
1111
|
goto error;
|
1192
1112
|
}
|
1193
1113
|
|
1194
|
-
*
|
1114
|
+
*parsing_.value = cur_value + add_value;
|
1195
1115
|
|
1196
1116
|
if ((*cur) & 0x80) {
|
1197
|
-
return parse_value5up(
|
1117
|
+
return parse_value5up(cur + 1, end);
|
1198
1118
|
} else {
|
1199
|
-
return parse_next(
|
1119
|
+
return parse_next(cur + 1, end);
|
1200
1120
|
}
|
1201
1121
|
|
1202
1122
|
error:
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
return parse_error(
|
1123
|
+
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1124
|
+
absl::StrFormat(
|
1125
|
+
"integer overflow in hpack integer decoding: have 0x%08x, "
|
1126
|
+
"got byte 0x%02x on byte 5",
|
1127
|
+
*parsing_.value, *cur)
|
1128
|
+
.c_str());
|
1129
|
+
return parse_error(cur, end, err);
|
1210
1130
|
}
|
1211
1131
|
|
1212
1132
|
/* parse any trailing bytes in a varint: it's possible to append an arbitrary
|
1213
1133
|
number of 0x80's and not affect the value - a zero will terminate - and
|
1214
1134
|
anything else will overflow */
|
1215
|
-
|
1216
|
-
|
1135
|
+
grpc_error_handle HPackParser::parse_value5up(const uint8_t* cur,
|
1136
|
+
const uint8_t* end) {
|
1217
1137
|
while (cur != end && *cur == 0x80) {
|
1218
1138
|
++cur;
|
1219
1139
|
}
|
1220
1140
|
|
1221
1141
|
if (cur == end) {
|
1222
|
-
|
1142
|
+
state_ = &HPackParser::parse_value5up;
|
1223
1143
|
return GRPC_ERROR_NONE;
|
1224
1144
|
}
|
1225
1145
|
|
1226
1146
|
if (*cur == 0) {
|
1227
|
-
return parse_next(
|
1147
|
+
return parse_next(cur + 1, end);
|
1228
1148
|
}
|
1229
1149
|
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
return parse_error(p, cur, end, err);
|
1150
|
+
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1151
|
+
absl::StrFormat(
|
1152
|
+
"integer overflow in hpack integer decoding: have 0x%08x, "
|
1153
|
+
"got byte 0x%02x sometime after byte 5",
|
1154
|
+
*parsing_.value, *cur)
|
1155
|
+
.c_str());
|
1156
|
+
return parse_error(cur, end, err);
|
1238
1157
|
}
|
1239
1158
|
|
1240
1159
|
/* parse a string prefix */
|
1241
|
-
|
1242
|
-
|
1160
|
+
grpc_error_handle HPackParser::parse_string_prefix(const uint8_t* cur,
|
1161
|
+
const uint8_t* end) {
|
1243
1162
|
if (cur == end) {
|
1244
|
-
|
1163
|
+
state_ = &HPackParser::parse_string_prefix;
|
1245
1164
|
return GRPC_ERROR_NONE;
|
1246
1165
|
}
|
1247
1166
|
|
1248
|
-
|
1249
|
-
|
1250
|
-
if (
|
1251
|
-
|
1252
|
-
return parse_value0(
|
1167
|
+
strlen_ = (*cur) & 0x7f;
|
1168
|
+
huff_ = (*cur) >> 7;
|
1169
|
+
if (strlen_ == 0x7f) {
|
1170
|
+
parsing_.value = &strlen_;
|
1171
|
+
return parse_value0(cur + 1, end);
|
1253
1172
|
} else {
|
1254
|
-
return parse_next(
|
1173
|
+
return parse_next(cur + 1, end);
|
1255
1174
|
}
|
1256
1175
|
}
|
1257
1176
|
|
1258
1177
|
/* append some bytes to a string */
|
1259
|
-
|
1260
|
-
const uint8_t* data, size_t length) {
|
1178
|
+
void HPackParser::String::AppendBytes(const uint8_t* data, size_t length) {
|
1261
1179
|
if (length == 0) return;
|
1262
|
-
if (length +
|
1263
|
-
GPR_ASSERT(
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
gpr_realloc(str->data.copied.str, str->data.copied.capacity));
|
1180
|
+
if (length + data_.copied.length > data_.copied.capacity) {
|
1181
|
+
GPR_ASSERT(data_.copied.length + length <= UINT32_MAX);
|
1182
|
+
data_.copied.capacity = static_cast<uint32_t>(data_.copied.length + length);
|
1183
|
+
data_.copied.str = static_cast<char*>(
|
1184
|
+
gpr_realloc(data_.copied.str, data_.copied.capacity));
|
1268
1185
|
}
|
1269
|
-
memcpy(
|
1270
|
-
GPR_ASSERT(length <= UINT32_MAX -
|
1271
|
-
|
1186
|
+
memcpy(data_.copied.str + data_.copied.length, data, length);
|
1187
|
+
GPR_ASSERT(length <= UINT32_MAX - data_.copied.length);
|
1188
|
+
data_.copied.length += static_cast<uint32_t>(length);
|
1272
1189
|
}
|
1273
1190
|
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1191
|
+
grpc_error_handle HPackParser::AppendString(const uint8_t* cur,
|
1192
|
+
const uint8_t* end) {
|
1193
|
+
String* str = parsing_.str;
|
1277
1194
|
uint32_t bits;
|
1278
1195
|
uint8_t decoded[3];
|
1279
|
-
switch (
|
1280
|
-
case
|
1281
|
-
|
1196
|
+
switch (binary_) {
|
1197
|
+
case BinaryState::kNotBinary:
|
1198
|
+
str->AppendBytes(cur, static_cast<size_t>(end - cur));
|
1282
1199
|
return GRPC_ERROR_NONE;
|
1283
|
-
case
|
1200
|
+
case BinaryState::kBinaryBegin:
|
1284
1201
|
if (cur == end) {
|
1285
|
-
|
1202
|
+
binary_ = BinaryState::kBinaryBegin;
|
1286
1203
|
return GRPC_ERROR_NONE;
|
1287
1204
|
}
|
1288
1205
|
if (*cur == 0) {
|
1289
1206
|
/* 'true-binary' case */
|
1290
1207
|
++cur;
|
1291
|
-
|
1208
|
+
binary_ = BinaryState::kNotBinary;
|
1292
1209
|
GRPC_STATS_INC_HPACK_RECV_BINARY();
|
1293
|
-
|
1210
|
+
str->AppendBytes(cur, static_cast<size_t>(end - cur));
|
1294
1211
|
return GRPC_ERROR_NONE;
|
1295
1212
|
}
|
1296
1213
|
GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64();
|
1297
|
-
/* fallthrough */
|
1298
1214
|
b64_byte0:
|
1299
|
-
|
1215
|
+
ABSL_FALLTHROUGH_INTENDED;
|
1216
|
+
case BinaryState::kBase64Byte0:
|
1300
1217
|
if (cur == end) {
|
1301
|
-
|
1218
|
+
binary_ = BinaryState::kBase64Byte0;
|
1302
1219
|
return GRPC_ERROR_NONE;
|
1303
1220
|
}
|
1304
|
-
bits =
|
1221
|
+
bits = kBase64InverseTable.table[*cur];
|
1305
1222
|
++cur;
|
1306
|
-
if (bits == 255)
|
1223
|
+
if (bits == 255) {
|
1307
1224
|
return parse_error(
|
1308
|
-
|
1225
|
+
cur, end,
|
1309
1226
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
|
1310
|
-
else if (bits == 64)
|
1227
|
+
} else if (bits == 64) {
|
1311
1228
|
goto b64_byte0;
|
1312
|
-
|
1313
|
-
|
1229
|
+
}
|
1230
|
+
base64_buffer_ = bits << 18;
|
1314
1231
|
b64_byte1:
|
1315
|
-
|
1232
|
+
ABSL_FALLTHROUGH_INTENDED;
|
1233
|
+
case BinaryState::kBase64Byte1:
|
1316
1234
|
if (cur == end) {
|
1317
|
-
|
1235
|
+
binary_ = BinaryState::kBase64Byte1;
|
1318
1236
|
return GRPC_ERROR_NONE;
|
1319
1237
|
}
|
1320
|
-
bits =
|
1238
|
+
bits = kBase64InverseTable.table[*cur];
|
1321
1239
|
++cur;
|
1322
|
-
if (bits == 255)
|
1240
|
+
if (bits == 255) {
|
1323
1241
|
return parse_error(
|
1324
|
-
|
1242
|
+
cur, end,
|
1325
1243
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
|
1326
|
-
else if (bits == 64)
|
1244
|
+
} else if (bits == 64) {
|
1327
1245
|
goto b64_byte1;
|
1328
|
-
|
1329
|
-
|
1246
|
+
}
|
1247
|
+
base64_buffer_ |= bits << 12;
|
1330
1248
|
b64_byte2:
|
1331
|
-
|
1249
|
+
ABSL_FALLTHROUGH_INTENDED;
|
1250
|
+
case BinaryState::kBase64Byte2:
|
1332
1251
|
if (cur == end) {
|
1333
|
-
|
1252
|
+
binary_ = BinaryState::kBase64Byte2;
|
1334
1253
|
return GRPC_ERROR_NONE;
|
1335
1254
|
}
|
1336
|
-
bits =
|
1255
|
+
bits = kBase64InverseTable.table[*cur];
|
1337
1256
|
++cur;
|
1338
|
-
if (bits == 255)
|
1257
|
+
if (bits == 255) {
|
1339
1258
|
return parse_error(
|
1340
|
-
|
1259
|
+
cur, end,
|
1341
1260
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
|
1342
|
-
else if (bits == 64)
|
1261
|
+
} else if (bits == 64) {
|
1343
1262
|
goto b64_byte2;
|
1344
|
-
|
1345
|
-
|
1263
|
+
}
|
1264
|
+
base64_buffer_ |= bits << 6;
|
1346
1265
|
b64_byte3:
|
1347
|
-
|
1266
|
+
ABSL_FALLTHROUGH_INTENDED;
|
1267
|
+
case BinaryState::kBase64Byte3:
|
1348
1268
|
if (cur == end) {
|
1349
|
-
|
1269
|
+
binary_ = BinaryState::kBase64Byte3;
|
1350
1270
|
return GRPC_ERROR_NONE;
|
1351
1271
|
}
|
1352
|
-
bits =
|
1272
|
+
bits = kBase64InverseTable.table[*cur];
|
1353
1273
|
++cur;
|
1354
|
-
if (bits == 255)
|
1274
|
+
if (bits == 255) {
|
1355
1275
|
return parse_error(
|
1356
|
-
|
1276
|
+
cur, end,
|
1357
1277
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
|
1358
|
-
else if (bits == 64)
|
1278
|
+
} else if (bits == 64) {
|
1359
1279
|
goto b64_byte3;
|
1360
|
-
|
1361
|
-
|
1280
|
+
}
|
1281
|
+
base64_buffer_ |= bits;
|
1282
|
+
bits = base64_buffer_;
|
1362
1283
|
decoded[0] = static_cast<uint8_t>(bits >> 16);
|
1363
1284
|
decoded[1] = static_cast<uint8_t>(bits >> 8);
|
1364
1285
|
decoded[2] = static_cast<uint8_t>(bits);
|
1365
|
-
|
1286
|
+
str->AppendBytes(decoded, 3);
|
1366
1287
|
goto b64_byte0;
|
1367
1288
|
}
|
1368
1289
|
GPR_UNREACHABLE_CODE(return parse_error(
|
1369
|
-
|
1290
|
+
cur, end,
|
1370
1291
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here")));
|
1371
1292
|
}
|
1372
1293
|
|
1373
|
-
|
1374
|
-
|
1294
|
+
grpc_error_handle HPackParser::finish_str(const uint8_t* cur,
|
1295
|
+
const uint8_t* end) {
|
1375
1296
|
uint8_t decoded[2];
|
1376
1297
|
uint32_t bits;
|
1377
|
-
|
1378
|
-
switch (
|
1379
|
-
case
|
1298
|
+
String* str = parsing_.str;
|
1299
|
+
switch (binary_) {
|
1300
|
+
case BinaryState::kNotBinary:
|
1380
1301
|
break;
|
1381
|
-
case
|
1302
|
+
case BinaryState::kBinaryBegin:
|
1382
1303
|
break;
|
1383
|
-
case
|
1304
|
+
case BinaryState::kBase64Byte0:
|
1384
1305
|
break;
|
1385
|
-
case
|
1386
|
-
return parse_error(
|
1306
|
+
case BinaryState::kBase64Byte1:
|
1307
|
+
return parse_error(cur, end,
|
1387
1308
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1388
1309
|
"illegal base64 encoding")); /* illegal encoding */
|
1389
|
-
case
|
1390
|
-
bits =
|
1310
|
+
case BinaryState::kBase64Byte2:
|
1311
|
+
bits = base64_buffer_;
|
1391
1312
|
if (bits & 0xffff) {
|
1392
|
-
|
1393
|
-
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
return parse_error(p, cur, end, err);
|
1313
|
+
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1314
|
+
absl::StrFormat("trailing bits in base64 encoding: 0x%04x",
|
1315
|
+
bits & 0xffff)
|
1316
|
+
.c_str());
|
1317
|
+
return parse_error(cur, end, err);
|
1398
1318
|
}
|
1399
1319
|
decoded[0] = static_cast<uint8_t>(bits >> 16);
|
1400
|
-
|
1320
|
+
str->AppendBytes(decoded, 1);
|
1401
1321
|
break;
|
1402
|
-
case
|
1403
|
-
bits =
|
1322
|
+
case BinaryState::kBase64Byte3:
|
1323
|
+
bits = base64_buffer_;
|
1404
1324
|
if (bits & 0xff) {
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
return parse_error(p, cur, end, err);
|
1325
|
+
grpc_error_handle err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1326
|
+
absl::StrFormat("trailing bits in base64 encoding: 0x%02x",
|
1327
|
+
bits & 0xff)
|
1328
|
+
.c_str());
|
1329
|
+
return parse_error(cur, end, err);
|
1411
1330
|
}
|
1412
1331
|
decoded[0] = static_cast<uint8_t>(bits >> 16);
|
1413
1332
|
decoded[1] = static_cast<uint8_t>(bits >> 8);
|
1414
|
-
|
1333
|
+
str->AppendBytes(decoded, 2);
|
1415
1334
|
break;
|
1416
1335
|
}
|
1417
1336
|
return GRPC_ERROR_NONE;
|
1418
1337
|
}
|
1419
1338
|
|
1420
1339
|
/* decode a nibble from a huffman encoded stream */
|
1421
|
-
|
1422
|
-
int16_t emit = emit_sub_tbl[16 * emit_tbl[
|
1423
|
-
int16_t next = next_sub_tbl[16 * next_tbl[
|
1340
|
+
grpc_error_handle HPackParser::AppendHuffNibble(uint8_t nibble) {
|
1341
|
+
int16_t emit = emit_sub_tbl[16 * emit_tbl[huff_state_] + nibble];
|
1342
|
+
int16_t next = next_sub_tbl[16 * next_tbl[huff_state_] + nibble];
|
1424
1343
|
if (emit != -1) {
|
1425
1344
|
if (emit >= 0 && emit < 256) {
|
1426
1345
|
uint8_t c = static_cast<uint8_t>(emit);
|
1427
|
-
|
1346
|
+
grpc_error_handle err = AppendString(&c, (&c) + 1);
|
1428
1347
|
if (err != GRPC_ERROR_NONE) return err;
|
1429
1348
|
} else {
|
1430
1349
|
assert(emit == 256);
|
1431
1350
|
}
|
1432
1351
|
}
|
1433
|
-
|
1352
|
+
huff_state_ = next;
|
1434
1353
|
return GRPC_ERROR_NONE;
|
1435
1354
|
}
|
1436
1355
|
|
1437
1356
|
/* decode full bytes from a huffman encoded stream */
|
1438
|
-
|
1439
|
-
|
1357
|
+
grpc_error_handle HPackParser::AppendHuffBytes(const uint8_t* cur,
|
1358
|
+
const uint8_t* end) {
|
1440
1359
|
for (; cur != end; ++cur) {
|
1441
|
-
|
1442
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1443
|
-
err =
|
1444
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1360
|
+
grpc_error_handle err = AppendHuffNibble(*cur >> 4);
|
1361
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1362
|
+
err = AppendHuffNibble(*cur & 0xf);
|
1363
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1445
1364
|
}
|
1446
1365
|
return GRPC_ERROR_NONE;
|
1447
1366
|
}
|
1448
1367
|
|
1449
1368
|
/* decode some string bytes based on the current decoding mode
|
1450
1369
|
(huffman or not) */
|
1451
|
-
|
1452
|
-
|
1453
|
-
if (
|
1454
|
-
return
|
1370
|
+
grpc_error_handle HPackParser::AppendStrBytes(const uint8_t* cur,
|
1371
|
+
const uint8_t* end) {
|
1372
|
+
if (huff_) {
|
1373
|
+
return AppendHuffBytes(cur, end);
|
1455
1374
|
} else {
|
1456
|
-
return
|
1375
|
+
return AppendString(cur, end);
|
1457
1376
|
}
|
1458
1377
|
}
|
1459
1378
|
|
1460
1379
|
/* parse a string - tries to do large chunks at a time */
|
1461
|
-
|
1462
|
-
|
1463
|
-
size_t remaining =
|
1380
|
+
grpc_error_handle HPackParser::parse_string(const uint8_t* cur,
|
1381
|
+
const uint8_t* end) {
|
1382
|
+
size_t remaining = strlen_ - strgot_;
|
1464
1383
|
size_t given = static_cast<size_t>(end - cur);
|
1465
1384
|
if (remaining <= given) {
|
1466
|
-
|
1467
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1468
|
-
err = finish_str(
|
1469
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1470
|
-
return parse_next(
|
1385
|
+
grpc_error_handle err = AppendStrBytes(cur, cur + remaining);
|
1386
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1387
|
+
err = finish_str(cur + remaining, end);
|
1388
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1389
|
+
return parse_next(cur + remaining, end);
|
1471
1390
|
} else {
|
1472
|
-
|
1473
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1474
|
-
GPR_ASSERT(given <= UINT32_MAX -
|
1475
|
-
|
1476
|
-
|
1391
|
+
grpc_error_handle err = AppendStrBytes(cur, cur + given);
|
1392
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1393
|
+
GPR_ASSERT(given <= UINT32_MAX - strgot_);
|
1394
|
+
strgot_ += static_cast<uint32_t>(given);
|
1395
|
+
state_ = &HPackParser::parse_string;
|
1477
1396
|
return GRPC_ERROR_NONE;
|
1478
1397
|
}
|
1479
1398
|
}
|
1480
1399
|
|
1481
1400
|
/* begin parsing a string - performs setup, calls parse_string */
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
if (!
|
1487
|
-
static_cast<uint32_t>(end - cur) >=
|
1488
|
-
|
1401
|
+
grpc_error_handle HPackParser::begin_parse_string(const uint8_t* cur,
|
1402
|
+
const uint8_t* end,
|
1403
|
+
BinaryState binary,
|
1404
|
+
HPackParser::String* str) {
|
1405
|
+
if (!huff_ && binary == BinaryState::kNotBinary &&
|
1406
|
+
static_cast<uint32_t>(end - cur) >= strlen_ &&
|
1407
|
+
current_slice_refcount_ != nullptr) {
|
1489
1408
|
GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
|
1490
|
-
str->
|
1491
|
-
str->
|
1492
|
-
str->
|
1493
|
-
str->
|
1494
|
-
grpc_slice_ref_internal(str->
|
1495
|
-
return parse_next(
|
1409
|
+
str->copied_ = false;
|
1410
|
+
str->data_.referenced.refcount = current_slice_refcount_;
|
1411
|
+
str->data_.referenced.data.refcounted.bytes = const_cast<uint8_t*>(cur);
|
1412
|
+
str->data_.referenced.data.refcounted.length = strlen_;
|
1413
|
+
grpc_slice_ref_internal(str->data_.referenced);
|
1414
|
+
return parse_next(cur + strlen_, end);
|
1496
1415
|
}
|
1497
|
-
|
1498
|
-
str->
|
1499
|
-
str->
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
switch (
|
1504
|
-
case
|
1505
|
-
if (
|
1416
|
+
strgot_ = 0;
|
1417
|
+
str->copied_ = true;
|
1418
|
+
str->data_.copied.length = 0;
|
1419
|
+
parsing_.str = str;
|
1420
|
+
huff_state_ = 0;
|
1421
|
+
binary_ = binary;
|
1422
|
+
switch (binary_) {
|
1423
|
+
case BinaryState::kNotBinary:
|
1424
|
+
if (huff_) {
|
1506
1425
|
GRPC_STATS_INC_HPACK_RECV_HUFFMAN();
|
1507
1426
|
} else {
|
1508
1427
|
GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
|
1509
1428
|
}
|
1510
1429
|
break;
|
1511
|
-
case
|
1430
|
+
case BinaryState::kBinaryBegin:
|
1512
1431
|
/* stats incremented later: don't know true binary or not */
|
1513
1432
|
break;
|
1514
1433
|
default:
|
1515
1434
|
abort();
|
1516
1435
|
}
|
1517
|
-
return parse_string(
|
1436
|
+
return parse_string(cur, end);
|
1518
1437
|
}
|
1519
1438
|
|
1520
1439
|
/* parse the key string */
|
1521
|
-
|
1522
|
-
|
1523
|
-
return begin_parse_string(
|
1440
|
+
grpc_error_handle HPackParser::parse_key_string(const uint8_t* cur,
|
1441
|
+
const uint8_t* end) {
|
1442
|
+
return begin_parse_string(cur, end, BinaryState::kNotBinary, &key_);
|
1524
1443
|
}
|
1525
1444
|
|
1526
1445
|
/* check if a key represents a binary header or not */
|
1527
1446
|
|
1528
|
-
|
1447
|
+
bool HPackParser::IsBinaryLiteralHeader() {
|
1529
1448
|
/* We know that either argument here is a reference counter slice.
|
1530
1449
|
* 1. If it is a grpc_core::StaticSlice, the refcount is set to kNoopRefcount.
|
1531
|
-
* 2. If it's
|
1450
|
+
* 2. If it's key_.data.referenced, then key_.copied was set to false,
|
1532
1451
|
* which occurs in begin_parse_string() - where the refcount is set to
|
1533
|
-
*
|
1452
|
+
* current_slice_refcount_, which is not null. */
|
1534
1453
|
return grpc_is_refcounted_slice_binary_header(
|
1535
|
-
|
1536
|
-
|
1537
|
-
|
1454
|
+
key_.copied_ ? grpc_core::ExternallyManagedSlice(key_.data_.copied.str,
|
1455
|
+
key_.data_.copied.length)
|
1456
|
+
: key_.data_.referenced);
|
1538
1457
|
}
|
1539
1458
|
|
1540
1459
|
/* Cache the metadata for the given index during initial parsing. This avoids a
|
1541
1460
|
pointless recomputation of the metadata when finishing a header. We read the
|
1542
1461
|
cached value in get_precomputed_md_for_idx(). */
|
1543
|
-
|
1544
|
-
|
1545
|
-
GPR_DEBUG_ASSERT(
|
1546
|
-
|
1547
|
-
p->md_for_index = md;
|
1462
|
+
void HPackParser::SetPrecomputedMDIndex(grpc_mdelem md) {
|
1463
|
+
GPR_DEBUG_ASSERT(md_for_index_.payload == 0);
|
1464
|
+
GPR_DEBUG_ASSERT(precomputed_md_index_ == -1);
|
1465
|
+
md_for_index_ = md;
|
1548
1466
|
#ifndef NDEBUG
|
1549
|
-
|
1467
|
+
precomputed_md_index_ = index_;
|
1550
1468
|
#endif
|
1551
1469
|
}
|
1552
1470
|
|
@@ -1554,11 +1472,10 @@ static void set_precomputed_md_idx(grpc_chttp2_hpack_parser* p,
|
|
1554
1472
|
is a binary indexed header during string parsing. We'll need to revisit this
|
1555
1473
|
metadata when we're done parsing, so we cache the metadata for this index
|
1556
1474
|
here using set_precomputed_md_idx(). */
|
1557
|
-
|
1558
|
-
|
1559
|
-
grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&p->table, p->index);
|
1475
|
+
grpc_error_handle HPackParser::IsBinaryIndexedHeader(bool* is) {
|
1476
|
+
grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&table_, index_);
|
1560
1477
|
if (GPR_UNLIKELY(GRPC_MDISNULL(elem))) {
|
1561
|
-
return
|
1478
|
+
return InvalidHPackIndexError();
|
1562
1479
|
}
|
1563
1480
|
/* We know that GRPC_MDKEY(elem) points to a reference counted slice since:
|
1564
1481
|
* 1. elem was a result of grpc_chttp2_hptbl_lookup
|
@@ -1569,107 +1486,111 @@ static grpc_error* is_binary_indexed_header(grpc_chttp2_hpack_parser* p,
|
|
1569
1486
|
* interned.
|
1570
1487
|
* 4. Both static and interned element slices have non-null refcounts. */
|
1571
1488
|
*is = grpc_is_refcounted_slice_binary_header(GRPC_MDKEY(elem));
|
1572
|
-
|
1489
|
+
SetPrecomputedMDIndex(elem);
|
1573
1490
|
return GRPC_ERROR_NONE;
|
1574
1491
|
}
|
1575
1492
|
|
1576
1493
|
/* parse the value string */
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
return begin_parse_string(
|
1581
|
-
|
1494
|
+
grpc_error_handle HPackParser::parse_value_string(const uint8_t* cur,
|
1495
|
+
const uint8_t* end,
|
1496
|
+
bool is_binary) {
|
1497
|
+
return begin_parse_string(
|
1498
|
+
cur, end, is_binary ? BinaryState::kBinaryBegin : BinaryState::kNotBinary,
|
1499
|
+
&value_);
|
1582
1500
|
}
|
1583
1501
|
|
1584
|
-
|
1585
|
-
|
1502
|
+
grpc_error_handle HPackParser::parse_value_string_with_indexed_key(
|
1503
|
+
const uint8_t* cur, const uint8_t* end) {
|
1586
1504
|
bool is_binary = false;
|
1587
|
-
|
1588
|
-
if (err != GRPC_ERROR_NONE) return parse_error(
|
1589
|
-
return parse_value_string(
|
1505
|
+
grpc_error_handle err = IsBinaryIndexedHeader(&is_binary);
|
1506
|
+
if (err != GRPC_ERROR_NONE) return parse_error(cur, end, err);
|
1507
|
+
return parse_value_string(cur, end, is_binary);
|
1590
1508
|
}
|
1591
1509
|
|
1592
|
-
|
1593
|
-
|
1594
|
-
return parse_value_string(
|
1595
|
-
}
|
1596
|
-
|
1597
|
-
/* "Uninitialized" header parser to save us a branch in on_hdr(). */
|
1598
|
-
static grpc_error* on_header_uninitialized(void* /*user_data*/,
|
1599
|
-
grpc_mdelem md) {
|
1600
|
-
GRPC_MDELEM_UNREF(md);
|
1601
|
-
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("on_header callback not set");
|
1510
|
+
grpc_error_handle HPackParser::parse_value_string_with_literal_key(
|
1511
|
+
const uint8_t* cur, const uint8_t* end) {
|
1512
|
+
return parse_value_string(cur, end, IsBinaryLiteralHeader());
|
1602
1513
|
}
|
1603
1514
|
|
1604
1515
|
/* PUBLIC INTERFACE */
|
1605
1516
|
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1615
|
-
|
1616
|
-
p->value.data.copied.capacity = 0;
|
1617
|
-
p->value.data.copied.length = 0;
|
1517
|
+
HPackParser::HPackParser() {
|
1518
|
+
state_ = &HPackParser::parse_begin;
|
1519
|
+
key_.data_.referenced = grpc_empty_slice();
|
1520
|
+
key_.data_.copied.str = nullptr;
|
1521
|
+
key_.data_.copied.capacity = 0;
|
1522
|
+
key_.data_.copied.length = 0;
|
1523
|
+
value_.data_.referenced = grpc_empty_slice();
|
1524
|
+
value_.data_.copied.str = nullptr;
|
1525
|
+
value_.data_.copied.capacity = 0;
|
1526
|
+
value_.data_.copied.length = 0;
|
1618
1527
|
/* Cached metadata for the current index the parser is handling. This is set
|
1619
1528
|
to 0 initially, invalidated when the index changes, and invalidated when it
|
1620
1529
|
is read (by get_precomputed_md_for_idx()). It is set during string parsing,
|
1621
1530
|
by set_precomputed_md_idx() - which is called by parse_value_string().
|
1622
1531
|
The goal here is to avoid recomputing the metadata for the index when
|
1623
1532
|
finishing with a header as well as the initial parse. */
|
1624
|
-
|
1533
|
+
md_for_index_.payload = 0;
|
1625
1534
|
#ifndef NDEBUG
|
1626
1535
|
/* In debug mode, this ensures that the cached metadata we're reading is in
|
1627
1536
|
* fact correct for the index we are examining. */
|
1628
|
-
|
1537
|
+
precomputed_md_index_ = -1;
|
1629
1538
|
#endif
|
1630
|
-
|
1631
|
-
|
1539
|
+
dynamic_table_updates_allowed_ = 2;
|
1540
|
+
last_error_ = GRPC_ERROR_NONE;
|
1632
1541
|
}
|
1633
1542
|
|
1634
|
-
void
|
1635
|
-
|
1636
|
-
|
1543
|
+
void HPackParser::BeginFrame(Sink sink, Boundary boundary, Priority priority) {
|
1544
|
+
sink_ = std::move(sink);
|
1545
|
+
boundary_ = boundary;
|
1546
|
+
switch (priority) {
|
1547
|
+
case Priority::Included:
|
1548
|
+
after_prioritization_ = state_;
|
1549
|
+
state_ = &HPackParser::parse_stream_dep0;
|
1550
|
+
break;
|
1551
|
+
case Priority::None:
|
1552
|
+
break;
|
1553
|
+
}
|
1637
1554
|
}
|
1638
1555
|
|
1639
|
-
|
1640
|
-
grpc_chttp2_hptbl_destroy(&
|
1641
|
-
GRPC_ERROR_UNREF(
|
1642
|
-
grpc_slice_unref_internal(
|
1643
|
-
grpc_slice_unref_internal(
|
1644
|
-
gpr_free(
|
1645
|
-
gpr_free(
|
1556
|
+
HPackParser::~HPackParser() {
|
1557
|
+
grpc_chttp2_hptbl_destroy(&table_);
|
1558
|
+
GRPC_ERROR_UNREF(last_error_);
|
1559
|
+
grpc_slice_unref_internal(key_.data_.referenced);
|
1560
|
+
grpc_slice_unref_internal(value_.data_.referenced);
|
1561
|
+
gpr_free(key_.data_.copied.str);
|
1562
|
+
gpr_free(value_.data_.copied.str);
|
1646
1563
|
}
|
1647
1564
|
|
1648
|
-
|
1649
|
-
const grpc_slice& slice) {
|
1565
|
+
grpc_error_handle HPackParser::Parse(const grpc_slice& slice) {
|
1650
1566
|
/* max number of bytes to parse at a time... limits call stack depth on
|
1651
1567
|
* compilers without TCO */
|
1652
1568
|
#define MAX_PARSE_LENGTH 1024
|
1653
|
-
|
1569
|
+
current_slice_refcount_ = slice.refcount;
|
1654
1570
|
const uint8_t* start = GRPC_SLICE_START_PTR(slice);
|
1655
1571
|
const uint8_t* end = GRPC_SLICE_END_PTR(slice);
|
1656
|
-
|
1572
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1657
1573
|
while (start != end && error == GRPC_ERROR_NONE) {
|
1658
1574
|
const uint8_t* target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start);
|
1659
|
-
error =
|
1575
|
+
error = (this->*state_)(start, target);
|
1660
1576
|
start = target;
|
1661
1577
|
}
|
1662
|
-
|
1578
|
+
current_slice_refcount_ = nullptr;
|
1663
1579
|
return error;
|
1664
1580
|
}
|
1665
1581
|
|
1582
|
+
} // namespace grpc_core
|
1583
|
+
|
1584
|
+
// TODO(ctiller): this serves as an eviction notice for the remainder of this
|
1585
|
+
// file... it belongs elsewhere!
|
1586
|
+
|
1666
1587
|
typedef void (*maybe_complete_func_type)(grpc_chttp2_transport* t,
|
1667
1588
|
grpc_chttp2_stream* s);
|
1668
1589
|
static const maybe_complete_func_type maybe_complete_funcs[] = {
|
1669
1590
|
grpc_chttp2_maybe_complete_recv_initial_metadata,
|
1670
1591
|
grpc_chttp2_maybe_complete_recv_trailing_metadata};
|
1671
1592
|
|
1672
|
-
static void force_client_rst_stream(void* sp,
|
1593
|
+
static void force_client_rst_stream(void* sp, grpc_error_handle /*error*/) {
|
1673
1594
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
1674
1595
|
grpc_chttp2_transport* t = s->t;
|
1675
1596
|
if (!s->write_closed) {
|
@@ -1699,30 +1620,29 @@ static void parse_stream_compression_md(grpc_chttp2_transport* /*t*/,
|
|
1699
1620
|
}
|
1700
1621
|
}
|
1701
1622
|
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1623
|
+
grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
|
1624
|
+
grpc_chttp2_transport* t,
|
1625
|
+
grpc_chttp2_stream* s,
|
1626
|
+
const grpc_slice& slice,
|
1627
|
+
int is_last) {
|
1707
1628
|
GPR_TIMER_SCOPE("grpc_chttp2_header_parser_parse", 0);
|
1708
|
-
|
1709
|
-
static_cast<grpc_chttp2_hpack_parser*>(hpack_parser);
|
1629
|
+
auto* parser = static_cast<grpc_core::HPackParser*>(hpack_parser);
|
1710
1630
|
if (s != nullptr) {
|
1711
1631
|
s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
|
1712
1632
|
}
|
1713
|
-
|
1633
|
+
grpc_error_handle error = parser->Parse(slice);
|
1714
1634
|
if (error != GRPC_ERROR_NONE) {
|
1715
1635
|
return error;
|
1716
1636
|
}
|
1717
1637
|
if (is_last) {
|
1718
|
-
if (parser->is_boundary && parser->
|
1638
|
+
if (parser->is_boundary() && !parser->is_in_begin_state()) {
|
1719
1639
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1720
1640
|
"end of header frame not aligned with a hpack record boundary");
|
1721
1641
|
}
|
1722
1642
|
/* need to check for null stream: this can occur if we receive an invalid
|
1723
1643
|
stream id on a header */
|
1724
1644
|
if (s != nullptr) {
|
1725
|
-
if (parser->is_boundary) {
|
1645
|
+
if (parser->is_boundary()) {
|
1726
1646
|
if (s->header_frames_received == GPR_ARRAY_SIZE(s->metadata_buffer)) {
|
1727
1647
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1728
1648
|
"Too many trailer frames");
|
@@ -1737,7 +1657,7 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1737
1657
|
maybe_complete_funcs[s->header_frames_received](t, s);
|
1738
1658
|
s->header_frames_received++;
|
1739
1659
|
}
|
1740
|
-
if (parser->is_eof) {
|
1660
|
+
if (parser->is_eof()) {
|
1741
1661
|
if (t->is_client && !s->write_closed) {
|
1742
1662
|
/* server eof ==> complete closure; we may need to forcefully close
|
1743
1663
|
the stream. Wait until the combiner lock is ready to be released
|
@@ -1751,11 +1671,7 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1751
1671
|
grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE);
|
1752
1672
|
}
|
1753
1673
|
}
|
1754
|
-
parser->
|
1755
|
-
parser->on_header_user_data = nullptr;
|
1756
|
-
parser->is_boundary = 0xde;
|
1757
|
-
parser->is_eof = 0xde;
|
1758
|
-
parser->dynamic_table_update_allowed = 2;
|
1674
|
+
parser->FinishFrame();
|
1759
1675
|
}
|
1760
1676
|
return GRPC_ERROR_NONE;
|
1761
1677
|
}
|