grpc 1.45.0 → 1.47.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 +69 -110
- data/include/grpc/event_engine/event_engine.h +42 -7
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +223 -113
- data/src/core/ext/filters/client_channel/client_channel.h +28 -6
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +138 -582
- data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +98 -112
- data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +277 -195
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +158 -101
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +46 -20
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +117 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +142 -63
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +37 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +300 -291
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +226 -300
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +73 -220
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +182 -79
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +60 -5
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +161 -165
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +123 -366
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +87 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -31
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -361
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +102 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -19
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +205 -45
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +14 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +13 -15
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +28 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +62 -15
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +10 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +5 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +125 -109
- data/src/core/ext/xds/xds_client.h +13 -5
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -4
- data/src/core/ext/xds/xds_listener.cc +20 -10
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +19 -23
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +71 -6
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +12 -3
- data/src/core/lib/channel/channel_args.cc +179 -81
- data/src/core/lib/channel/channel_args.h +242 -11
- data/src/core/lib/channel/channel_args_preconditioning.cc +5 -11
- data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +51 -8
- data/src/core/lib/channel/channel_stack_builder.cc +9 -84
- data/src/core/lib/channel/channel_stack_builder.h +35 -26
- data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +848 -260
- data/src/core/lib/channel/promise_based_filter.h +215 -68
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression_internal.cc +46 -17
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +12 -2
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/{ext/filters/max_age/max_age_filter.h → lib/event_engine/trace.cc} +3 -11
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/tls.h +4 -5
- data/src/core/lib/gprpp/bitset.h +17 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/match.h +75 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +25 -5
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +20 -0
- data/src/core/lib/gprpp/time.h +7 -2
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +30 -2
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +6 -7
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +7 -11
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +0 -1
- data/src/core/lib/iomgr/{event_engine/pollset.h → iomgr_fwd.h} +9 -9
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -8
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +14 -7
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +77 -37
- data/src/core/lib/iomgr/tcp_server_posix.cc +50 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +13 -4
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +148 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +103 -0
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.cc +19 -31
- data/src/core/lib/resource_quota/api.h +5 -2
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- data/src/core/lib/resource_quota/resource_quota.h +16 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +5 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +19 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -9
- data/src/core/lib/security/credentials/credentials.h +29 -39
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +18 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +4 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +28 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +22 -10
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +12 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +47 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +34 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +66 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +57 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +10 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +26 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +213 -133
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +11 -9
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -0
- data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_buffer_api.cc} +11 -12
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1052 -917
- data/src/core/lib/surface/call.h +16 -16
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +181 -243
- data/src/core/lib/surface/channel.h +94 -57
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +3 -5
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +72 -70
- data/src/core/lib/surface/server.h +40 -11
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/byte_stream.cc +6 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +142 -269
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -17
- data/src/core/lib/transport/transport.h +48 -7
- data/src/core/lib/transport/transport_impl.h +14 -3
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +13 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +2 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +100 -72
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/promise.h +0 -51
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/http/httpcli.h"
|
22
22
|
|
23
|
+
#include <limits.h>
|
23
24
|
#include <string.h>
|
24
25
|
|
25
26
|
#include <string>
|
@@ -46,6 +47,7 @@
|
|
46
47
|
#include "src/core/lib/resource_quota/api.h"
|
47
48
|
#include "src/core/lib/slice/slice_internal.h"
|
48
49
|
#include "src/core/lib/transport/error_utils.h"
|
50
|
+
#include "src/core/lib/transport/tcp_connect_handshaker.h"
|
49
51
|
|
50
52
|
namespace grpc_core {
|
51
53
|
|
@@ -53,6 +55,7 @@ namespace {
|
|
53
55
|
|
54
56
|
grpc_httpcli_get_override g_get_override;
|
55
57
|
grpc_httpcli_post_override g_post_override;
|
58
|
+
grpc_httpcli_put_override g_put_override;
|
56
59
|
void (*g_test_only_on_handshake_done_intercept)(HttpRequest* req);
|
57
60
|
|
58
61
|
} // namespace
|
@@ -107,10 +110,36 @@ OrphanablePtr<HttpRequest> HttpRequest::Post(
|
|
107
110
|
std::move(channel_creds));
|
108
111
|
}
|
109
112
|
|
113
|
+
OrphanablePtr<HttpRequest> HttpRequest::Put(
|
114
|
+
URI uri, const grpc_channel_args* channel_args,
|
115
|
+
grpc_polling_entity* pollent, const grpc_http_request* request,
|
116
|
+
Timestamp deadline, grpc_closure* on_done, grpc_http_response* response,
|
117
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds) {
|
118
|
+
absl::optional<std::function<void()>> test_only_generate_response;
|
119
|
+
if (g_put_override != nullptr) {
|
120
|
+
test_only_generate_response = [request, uri, deadline, on_done,
|
121
|
+
response]() {
|
122
|
+
g_put_override(request, uri.authority().c_str(), uri.path().c_str(),
|
123
|
+
request->body, request->body_length, deadline, on_done,
|
124
|
+
response);
|
125
|
+
};
|
126
|
+
}
|
127
|
+
std::string name =
|
128
|
+
absl::StrFormat("HTTP:PUT:%s:%s", uri.authority(), uri.path());
|
129
|
+
const grpc_slice request_text = grpc_httpcli_format_put_request(
|
130
|
+
request, uri.authority().c_str(), uri.path().c_str());
|
131
|
+
return MakeOrphanable<HttpRequest>(
|
132
|
+
std::move(uri), request_text, response, deadline, channel_args, on_done,
|
133
|
+
pollent, name.c_str(), std::move(test_only_generate_response),
|
134
|
+
std::move(channel_creds));
|
135
|
+
}
|
136
|
+
|
110
137
|
void HttpRequest::SetOverride(grpc_httpcli_get_override get,
|
111
|
-
grpc_httpcli_post_override post
|
138
|
+
grpc_httpcli_post_override post,
|
139
|
+
grpc_httpcli_put_override put) {
|
112
140
|
g_get_override = get;
|
113
141
|
g_post_override = post;
|
142
|
+
g_put_override = put;
|
114
143
|
}
|
115
144
|
|
116
145
|
void HttpRequest::TestOnlySetOnHandshakeDoneIntercept(
|
@@ -129,7 +158,8 @@ HttpRequest::HttpRequest(
|
|
129
158
|
deadline_(deadline),
|
130
159
|
channel_args_(CoreConfiguration::Get()
|
131
160
|
.channel_args_preconditioning()
|
132
|
-
.PreconditionChannelArgs(channel_args)
|
161
|
+
.PreconditionChannelArgs(channel_args)
|
162
|
+
.ToC()),
|
133
163
|
channel_creds_(std::move(channel_creds)),
|
134
164
|
on_done_(on_done),
|
135
165
|
resource_quota_(ResourceQuotaFromChannelArgs(channel_args_)),
|
@@ -150,10 +180,6 @@ HttpRequest::HttpRequest(
|
|
150
180
|
grpc_schedule_on_exec_ctx);
|
151
181
|
GPR_ASSERT(pollent);
|
152
182
|
grpc_polling_entity_add_to_pollset_set(pollent, pollset_set_);
|
153
|
-
// Create the DNS resolver. We'll start resolving when Start is called.
|
154
|
-
dns_request_ = GetDNSResolver()->ResolveName(
|
155
|
-
uri_.authority(), uri_.scheme(), pollset_set_,
|
156
|
-
absl::bind_front(&HttpRequest::OnResolved, this));
|
157
183
|
}
|
158
184
|
|
159
185
|
HttpRequest::~HttpRequest() {
|
@@ -177,7 +203,9 @@ void HttpRequest::Start() {
|
|
177
203
|
return;
|
178
204
|
}
|
179
205
|
Ref().release(); // ref held by pending DNS resolution
|
180
|
-
|
206
|
+
dns_request_handle_ = GetDNSResolver()->ResolveName(
|
207
|
+
uri_.authority(), uri_.scheme(), pollset_set_,
|
208
|
+
absl::bind_front(&HttpRequest::OnResolved, this));
|
181
209
|
}
|
182
210
|
|
183
211
|
void HttpRequest::Orphan() {
|
@@ -185,21 +213,17 @@ void HttpRequest::Orphan() {
|
|
185
213
|
MutexLock lock(&mu_);
|
186
214
|
GPR_ASSERT(!cancelled_);
|
187
215
|
cancelled_ = true;
|
188
|
-
|
189
|
-
if (
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
// TODO(apolcyn): fix this to cancel the TCP connection attempt when
|
195
|
-
// an API to do so exists.
|
196
|
-
Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
197
|
-
"HTTP request cancelled during TCP connection establishment",
|
198
|
-
&overall_error_, 1));
|
216
|
+
// cancel potentially pending DNS resolution.
|
217
|
+
if (dns_request_handle_.has_value() &&
|
218
|
+
GetDNSResolver()->Cancel(dns_request_handle_.value())) {
|
219
|
+
Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
220
|
+
"cancelled during DNS resolution"));
|
221
|
+
Unref();
|
199
222
|
}
|
200
223
|
if (handshake_mgr_ != nullptr) {
|
224
|
+
// Shutdown will cancel any ongoing tcp connect.
|
201
225
|
handshake_mgr_->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
202
|
-
"HTTP request cancelled during
|
226
|
+
"HTTP request cancelled during handshake"));
|
203
227
|
}
|
204
228
|
if (own_endpoint_ && ep_ != nullptr) {
|
205
229
|
grpc_endpoint_shutdown(
|
@@ -215,10 +239,12 @@ void HttpRequest::AppendError(grpc_error_handle error) {
|
|
215
239
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
|
216
240
|
}
|
217
241
|
const grpc_resolved_address* addr = &addresses_[next_address_ - 1];
|
218
|
-
|
242
|
+
auto addr_text = grpc_sockaddr_to_uri(addr);
|
219
243
|
overall_error_ = grpc_error_add_child(
|
220
244
|
overall_error_,
|
221
|
-
grpc_error_set_str(
|
245
|
+
grpc_error_set_str(
|
246
|
+
error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
247
|
+
addr_text.ok() ? addr_text.value() : addr_text.status().ToString()));
|
222
248
|
}
|
223
249
|
|
224
250
|
void HttpRequest::OnReadInternal(grpc_error_handle error) {
|
@@ -260,7 +286,8 @@ void HttpRequest::StartWrite() {
|
|
260
286
|
grpc_slice_ref_internal(request_text_);
|
261
287
|
grpc_slice_buffer_add(&outgoing_, request_text_);
|
262
288
|
Ref().release(); // ref held by pending write
|
263
|
-
grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr
|
289
|
+
grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr,
|
290
|
+
/*max_frame_size=*/INT_MAX);
|
264
291
|
}
|
265
292
|
|
266
293
|
void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
|
@@ -274,8 +301,7 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
|
|
274
301
|
MutexLock lock(&req->mu_);
|
275
302
|
req->own_endpoint_ = true;
|
276
303
|
if (error != GRPC_ERROR_NONE) {
|
277
|
-
|
278
|
-
grpc_error_std_string(error).c_str());
|
304
|
+
req->handshake_mgr_.reset();
|
279
305
|
req->NextAddress(GRPC_ERROR_REF(error));
|
280
306
|
return;
|
281
307
|
}
|
@@ -284,69 +310,55 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
|
|
284
310
|
grpc_slice_buffer_destroy_internal(args->read_buffer);
|
285
311
|
gpr_free(args->read_buffer);
|
286
312
|
req->ep_ = args->endpoint;
|
313
|
+
req->handshake_mgr_.reset();
|
287
314
|
if (req->cancelled_) {
|
288
315
|
req->NextAddress(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
289
|
-
"HTTP request cancelled during
|
316
|
+
"HTTP request cancelled during handshake"));
|
290
317
|
return;
|
291
318
|
}
|
292
319
|
req->StartWrite();
|
293
320
|
}
|
294
321
|
|
295
|
-
void HttpRequest::
|
296
|
-
RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
|
297
|
-
MutexLock lock(&req->mu_);
|
298
|
-
req->connecting_ = false;
|
299
|
-
req->own_endpoint_ = true;
|
300
|
-
if (req->cancelled_) {
|
301
|
-
// since we were cancelled while connecting, Finish has already
|
302
|
-
// been called.
|
303
|
-
return;
|
304
|
-
}
|
305
|
-
if (!req->ep_) {
|
306
|
-
req->NextAddress(GRPC_ERROR_REF(error));
|
307
|
-
return;
|
308
|
-
}
|
309
|
-
// TODO(yihuaz): treating nullptr channel_creds_ as insecure is
|
310
|
-
// a hack used to support the port server client (a test utility) in
|
311
|
-
// unsecure builds (when no definition of grpc_insecure_credentials_create
|
312
|
-
// exists). We can remove this hack and unconditionally assume a valid
|
313
|
-
// channel_creds_ object after unsecure builds are deleted, in
|
314
|
-
// https://github.com/grpc/grpc/pull/25586.
|
315
|
-
if (req->channel_creds_ == nullptr) {
|
316
|
-
gpr_log(GPR_DEBUG,
|
317
|
-
"HTTP request skipping handshake because creds are null");
|
318
|
-
req->StartWrite();
|
319
|
-
return;
|
320
|
-
}
|
322
|
+
void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
|
321
323
|
// Create the security connector using the credentials and target name.
|
322
324
|
grpc_channel_args* new_args_from_connector = nullptr;
|
323
325
|
RefCountedPtr<grpc_channel_security_connector> sc =
|
324
|
-
|
325
|
-
nullptr /*call_creds*/,
|
326
|
-
|
326
|
+
channel_creds_->create_security_connector(
|
327
|
+
nullptr /*call_creds*/, uri_.authority().c_str(), channel_args_,
|
328
|
+
&new_args_from_connector);
|
327
329
|
if (sc == nullptr) {
|
328
|
-
|
329
|
-
"failed to create security connector", &
|
330
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
331
|
+
"failed to create security connector", &overall_error_, 1));
|
330
332
|
return;
|
331
333
|
}
|
332
|
-
|
333
|
-
|
334
|
+
absl::StatusOr<std::string> address = grpc_sockaddr_to_uri(addr);
|
335
|
+
if (!address.ok()) {
|
336
|
+
Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
337
|
+
"Failed to extract URI from address", &overall_error_, 1));
|
338
|
+
return;
|
339
|
+
}
|
340
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add = {
|
341
|
+
grpc_security_connector_to_arg(sc.get()),
|
342
|
+
grpc_channel_arg_string_create(
|
343
|
+
const_cast<char*>(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS),
|
344
|
+
const_cast<char*>(address.value().c_str())),
|
345
|
+
};
|
346
|
+
const grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
334
347
|
new_args_from_connector != nullptr ? new_args_from_connector
|
335
|
-
:
|
336
|
-
|
348
|
+
: channel_args_,
|
349
|
+
args_to_add.data(), args_to_add.size());
|
337
350
|
grpc_channel_args_destroy(new_args_from_connector);
|
338
351
|
// Start the handshake
|
339
|
-
|
352
|
+
handshake_mgr_ = MakeRefCounted<HandshakeManager>();
|
340
353
|
CoreConfiguration::Get().handshaker_registry().AddHandshakers(
|
341
|
-
HANDSHAKER_CLIENT, new_args,
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
/*user_data=*/req.get());
|
354
|
+
HANDSHAKER_CLIENT, new_args, pollset_set_, handshake_mgr_.get());
|
355
|
+
Ref().release(); // ref held by pending handshake
|
356
|
+
grpc_endpoint* ep = ep_;
|
357
|
+
ep_ = nullptr;
|
358
|
+
own_endpoint_ = false;
|
359
|
+
handshake_mgr_->DoHandshake(ep, new_args, deadline_,
|
360
|
+
/*acceptor=*/nullptr, OnHandshakeDone,
|
361
|
+
/*user_data=*/this);
|
350
362
|
sc.reset(DEBUG_LOCATION, "httpcli");
|
351
363
|
grpc_channel_args_destroy(new_args);
|
352
364
|
}
|
@@ -366,28 +378,23 @@ void HttpRequest::NextAddress(grpc_error_handle error) {
|
|
366
378
|
return;
|
367
379
|
}
|
368
380
|
const grpc_resolved_address* addr = &addresses_[next_address_++];
|
369
|
-
|
370
|
-
connecting_ = true;
|
371
|
-
own_endpoint_ = false;
|
372
|
-
Ref().release(); // ref held by pending connect
|
373
|
-
grpc_tcp_client_connect(&connected_, &ep_, pollset_set_, channel_args_, addr,
|
374
|
-
deadline_);
|
381
|
+
DoHandshake(addr);
|
375
382
|
}
|
376
383
|
|
377
384
|
void HttpRequest::OnResolved(
|
378
385
|
absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or) {
|
379
386
|
RefCountedPtr<HttpRequest> unreffer(this);
|
380
387
|
MutexLock lock(&mu_);
|
381
|
-
|
382
|
-
if (!addresses_or.ok()) {
|
383
|
-
Finish(absl_status_to_grpc_error(addresses_or.status()));
|
384
|
-
return;
|
385
|
-
}
|
388
|
+
dns_request_handle_.reset();
|
386
389
|
if (cancelled_) {
|
387
390
|
Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
388
391
|
"cancelled during DNS resolution"));
|
389
392
|
return;
|
390
393
|
}
|
394
|
+
if (!addresses_or.ok()) {
|
395
|
+
Finish(absl_status_to_grpc_error(addresses_or.status()));
|
396
|
+
return;
|
397
|
+
}
|
391
398
|
addresses_ = std::move(*addresses_or);
|
392
399
|
next_address_ = 0;
|
393
400
|
NextAddress(GRPC_ERROR_NONE);
|
data/src/core/lib/http/httpcli.h
CHANGED
@@ -25,7 +25,6 @@
|
|
25
25
|
|
26
26
|
#include <grpc/support/time.h>
|
27
27
|
|
28
|
-
#include "src/core/lib/channel/handshaker.h"
|
29
28
|
#include "src/core/lib/gprpp/orphanable.h"
|
30
29
|
#include "src/core/lib/http/parser.h"
|
31
30
|
#include "src/core/lib/iomgr/endpoint.h"
|
@@ -35,6 +34,7 @@
|
|
35
34
|
#include "src/core/lib/iomgr/resolve_address.h"
|
36
35
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
37
36
|
#include "src/core/lib/security/credentials/credentials.h"
|
37
|
+
#include "src/core/lib/transport/handshaker.h"
|
38
38
|
#include "src/core/lib/uri/uri_parser.h"
|
39
39
|
|
40
40
|
/* User agent this library reports */
|
@@ -50,6 +50,10 @@ typedef int (*grpc_httpcli_post_override)(
|
|
50
50
|
const grpc_http_request* request, const char* host, const char* path,
|
51
51
|
const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
|
52
52
|
grpc_closure* on_complete, grpc_http_response* response);
|
53
|
+
typedef int (*grpc_httpcli_put_override)(
|
54
|
+
const grpc_http_request* request, const char* host, const char* path,
|
55
|
+
const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
|
56
|
+
grpc_closure* on_complete, grpc_http_response* response);
|
53
57
|
|
54
58
|
namespace grpc_core {
|
55
59
|
|
@@ -112,6 +116,32 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
112
116
|
RefCountedPtr<grpc_channel_credentials> channel_creds)
|
113
117
|
GRPC_MUST_USE_RESULT;
|
114
118
|
|
119
|
+
// Asynchronously perform a HTTP PUT.
|
120
|
+
// 'uri' is the target to make the request to. The scheme field is used to
|
121
|
+
// determine the port number. The authority field is the target host. The
|
122
|
+
// path field determines the path of the request. No other fields are used.
|
123
|
+
// 'args' are optional channel args for the request.
|
124
|
+
// 'pollent' indicates a grpc_polling_entity that is interested in the result
|
125
|
+
// of the post - work on this entity may be used to progress the post
|
126
|
+
// operation
|
127
|
+
// 'request' contains request parameters - these are caller owned and can be
|
128
|
+
// destroyed once the call returns
|
129
|
+
// 'deadline' contains a deadline for the request (or gpr_inf_future)
|
130
|
+
// 'on_done' is a callback to report results to
|
131
|
+
// 'channel_creds' are used to configurably secure the connection.
|
132
|
+
// For insecure requests, use grpc_insecure_credentials_create.
|
133
|
+
// For secure requests, use CreateHttpRequestSSLCredentials().
|
134
|
+
// nullptr is treated as insecure credentials.
|
135
|
+
// TODO(apolcyn): disallow nullptr as a value after unsecure builds
|
136
|
+
// are removed.
|
137
|
+
// Does not support ?var1=val1&var2=val2 in the path.
|
138
|
+
static OrphanablePtr<HttpRequest> Put(
|
139
|
+
URI uri, const grpc_channel_args* args, grpc_polling_entity* pollent,
|
140
|
+
const grpc_http_request* request, Timestamp deadline,
|
141
|
+
grpc_closure* on_done, grpc_http_response* response,
|
142
|
+
RefCountedPtr<grpc_channel_credentials> channel_creds)
|
143
|
+
GRPC_MUST_USE_RESULT;
|
144
|
+
|
115
145
|
HttpRequest(URI uri, const grpc_slice& request_text,
|
116
146
|
grpc_http_response* response, Timestamp deadline,
|
117
147
|
const grpc_channel_args* channel_args, grpc_closure* on_done,
|
@@ -126,7 +156,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
126
156
|
void Orphan() override;
|
127
157
|
|
128
158
|
static void SetOverride(grpc_httpcli_get_override get,
|
129
|
-
grpc_httpcli_post_override post
|
159
|
+
grpc_httpcli_post_override post,
|
160
|
+
grpc_httpcli_put_override put);
|
130
161
|
|
131
162
|
static void TestOnlySetOnHandshakeDoneIntercept(
|
132
163
|
void (*intercept)(HttpRequest* req));
|
@@ -141,7 +172,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
141
172
|
|
142
173
|
void DoRead() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
|
143
174
|
Ref().release(); // ref held by pending read
|
144
|
-
grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true
|
175
|
+
grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true,
|
176
|
+
/*min_progress_size=*/1);
|
145
177
|
}
|
146
178
|
|
147
179
|
static void OnRead(void* user_data, grpc_error_handle error) {
|
@@ -179,7 +211,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
179
211
|
|
180
212
|
static void OnHandshakeDone(void* arg, grpc_error_handle error);
|
181
213
|
|
182
|
-
|
214
|
+
void DoHandshake(const grpc_resolved_address* addr)
|
215
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
183
216
|
|
184
217
|
void NextAddress(grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
185
218
|
|
@@ -195,7 +228,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
195
228
|
grpc_closure continue_on_read_after_schedule_on_exec_ctx_;
|
196
229
|
grpc_closure done_write_;
|
197
230
|
grpc_closure continue_done_write_after_schedule_on_exec_ctx_;
|
198
|
-
grpc_closure connected_;
|
199
231
|
grpc_endpoint* ep_ = nullptr;
|
200
232
|
grpc_closure* on_done_;
|
201
233
|
ResourceQuotaRefPtr resource_quota_;
|
@@ -206,7 +238,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
206
238
|
RefCountedPtr<HandshakeManager> handshake_mgr_ ABSL_GUARDED_BY(mu_);
|
207
239
|
bool own_endpoint_ ABSL_GUARDED_BY(mu_) = true;
|
208
240
|
bool cancelled_ ABSL_GUARDED_BY(mu_) = false;
|
209
|
-
bool connecting_ ABSL_GUARDED_BY(mu_) = false;
|
210
241
|
grpc_http_parser parser_ ABSL_GUARDED_BY(mu_);
|
211
242
|
std::vector<grpc_resolved_address> addresses_ ABSL_GUARDED_BY(mu_);
|
212
243
|
size_t next_address_ ABSL_GUARDED_BY(mu_) = 0;
|
@@ -215,7 +246,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
|
|
215
246
|
grpc_slice_buffer incoming_ ABSL_GUARDED_BY(mu_);
|
216
247
|
grpc_slice_buffer outgoing_ ABSL_GUARDED_BY(mu_);
|
217
248
|
grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
|
218
|
-
|
249
|
+
absl::optional<DNSResolver::TaskHandle> dns_request_handle_
|
250
|
+
ABSL_GUARDED_BY(mu_) = DNSResolver::kNullHandle;
|
219
251
|
};
|
220
252
|
|
221
253
|
} // namespace grpc_core
|
@@ -48,7 +48,7 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
48
48
|
public:
|
49
49
|
explicit grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
|
50
50
|
: grpc_channel_security_connector(
|
51
|
-
/*url_scheme=*/
|
51
|
+
/*url_scheme=*/{},
|
52
52
|
/*channel_creds=*/nullptr,
|
53
53
|
/*request_metadata_creds=*/nullptr),
|
54
54
|
secure_peer_name_(secure_peer_name) {}
|
@@ -77,7 +77,8 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
77
77
|
tsi_handshaker* handshaker = nullptr;
|
78
78
|
if (handshaker_factory_ != nullptr) {
|
79
79
|
tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
|
80
|
-
handshaker_factory_, secure_peer_name_,
|
80
|
+
handshaker_factory_, secure_peer_name_, /*network_bio_buf_size=*/0,
|
81
|
+
/*ssl_bio_buf_size=*/0, &handshaker);
|
81
82
|
if (result != TSI_OK) {
|
82
83
|
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
|
83
84
|
tsi_result_to_string(result));
|
@@ -152,9 +153,6 @@ httpcli_ssl_channel_security_connector_create(
|
|
152
153
|
|
153
154
|
class HttpRequestSSLCredentials : public grpc_channel_credentials {
|
154
155
|
public:
|
155
|
-
HttpRequestSSLCredentials() : grpc_channel_credentials("HttpRequestSSL") {}
|
156
|
-
~HttpRequestSSLCredentials() override {}
|
157
|
-
|
158
156
|
RefCountedPtr<grpc_channel_security_connector> create_security_connector(
|
159
157
|
RefCountedPtr<grpc_call_credentials> /*call_creds*/, const char* target,
|
160
158
|
const grpc_channel_args* args,
|
@@ -180,8 +178,9 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
|
|
180
178
|
return Ref();
|
181
179
|
}
|
182
180
|
|
183
|
-
|
184
|
-
|
181
|
+
UniqueTypeName type() const override {
|
182
|
+
static UniqueTypeName::Factory kFactory("HttpRequestSSL");
|
183
|
+
return kFactory.Create();
|
185
184
|
}
|
186
185
|
|
187
186
|
private:
|
data/src/core/lib/http/parser.cc
CHANGED
@@ -177,6 +177,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
177
177
|
uint8_t* cur = beg;
|
178
178
|
uint8_t* end = beg + parser->cur_line_length;
|
179
179
|
size_t* hdr_count = nullptr;
|
180
|
+
size_t size = 0;
|
180
181
|
grpc_http_header** hdrs = nullptr;
|
181
182
|
grpc_http_header hdr = {nullptr, nullptr};
|
182
183
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
@@ -205,13 +206,20 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
205
206
|
cur++;
|
206
207
|
}
|
207
208
|
GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length);
|
208
|
-
|
209
|
-
|
209
|
+
size = static_cast<size_t>(end - cur) - parser->cur_line_end_length;
|
210
|
+
if ((size != 0) && (cur[size - 1] == '\r')) {
|
211
|
+
size--;
|
212
|
+
}
|
213
|
+
hdr.value = buf2str(cur, size);
|
210
214
|
|
211
215
|
switch (parser->type) {
|
212
216
|
case GRPC_HTTP_RESPONSE:
|
213
217
|
hdr_count = &parser->http.response->hdr_count;
|
214
218
|
hdrs = &parser->http.response->hdrs;
|
219
|
+
if ((strcmp(hdr.key, "Transfer-Encoding") == 0) &&
|
220
|
+
(strcmp(hdr.value, "chunked") == 0)) {
|
221
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
|
222
|
+
}
|
215
223
|
break;
|
216
224
|
case GRPC_HTTP_REQUEST:
|
217
225
|
hdr_count = &parser->http.request->hdr_count;
|
@@ -245,17 +253,24 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
245
253
|
parser->state = GRPC_HTTP_HEADERS;
|
246
254
|
break;
|
247
255
|
case GRPC_HTTP_HEADERS:
|
256
|
+
case GRPC_HTTP_TRAILERS:
|
248
257
|
if (parser->cur_line_length == parser->cur_line_end_length) {
|
249
|
-
parser->state
|
250
|
-
|
258
|
+
if (parser->state == GRPC_HTTP_HEADERS) {
|
259
|
+
parser->state = GRPC_HTTP_BODY;
|
260
|
+
*found_body_start = true;
|
261
|
+
} else {
|
262
|
+
parser->state = GRPC_HTTP_END;
|
263
|
+
}
|
251
264
|
break;
|
252
|
-
}
|
253
|
-
|
254
|
-
|
255
|
-
|
265
|
+
} else {
|
266
|
+
err = add_header(parser);
|
267
|
+
if (err != GRPC_ERROR_NONE) {
|
268
|
+
return err;
|
269
|
+
}
|
256
270
|
}
|
257
271
|
break;
|
258
272
|
case GRPC_HTTP_BODY:
|
273
|
+
case GRPC_HTTP_END:
|
259
274
|
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
260
275
|
"Should never reach here"));
|
261
276
|
}
|
@@ -269,6 +284,59 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
269
284
|
char** body = nullptr;
|
270
285
|
|
271
286
|
if (parser->type == GRPC_HTTP_RESPONSE) {
|
287
|
+
switch (parser->http.response->chunked_state) {
|
288
|
+
case GRPC_HTTP_CHUNKED_LENGTH:
|
289
|
+
if ((byte == '\r') || (byte == ';')) {
|
290
|
+
parser->http.response->chunked_state =
|
291
|
+
GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF;
|
292
|
+
} else if ((byte >= '0') && (byte <= '9')) {
|
293
|
+
parser->http.response->chunk_length *= 16;
|
294
|
+
parser->http.response->chunk_length += byte - '0';
|
295
|
+
} else if ((byte >= 'a') && (byte <= 'f')) {
|
296
|
+
parser->http.response->chunk_length *= 16;
|
297
|
+
parser->http.response->chunk_length += byte - 'a' + 10;
|
298
|
+
} else if ((byte >= 'A') && (byte <= 'F')) {
|
299
|
+
parser->http.response->chunk_length *= 16;
|
300
|
+
parser->http.response->chunk_length += byte - 'A' + 10;
|
301
|
+
} else {
|
302
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
303
|
+
"Expected chunk size in hexadecimal");
|
304
|
+
}
|
305
|
+
return GRPC_ERROR_NONE;
|
306
|
+
case GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF:
|
307
|
+
if (byte == '\n') {
|
308
|
+
if (parser->http.response->chunk_length == 0) {
|
309
|
+
parser->state = GRPC_HTTP_TRAILERS;
|
310
|
+
} else {
|
311
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_BODY;
|
312
|
+
}
|
313
|
+
}
|
314
|
+
return GRPC_ERROR_NONE;
|
315
|
+
case GRPC_HTTP_CHUNKED_BODY:
|
316
|
+
if (parser->http.response->chunk_length == 0) {
|
317
|
+
if (byte != '\r') {
|
318
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
319
|
+
"Expected '\\r\\n' after chunk body");
|
320
|
+
}
|
321
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_CONSUME_LF;
|
322
|
+
parser->http.response->chunk_length = 0;
|
323
|
+
return GRPC_ERROR_NONE;
|
324
|
+
} else {
|
325
|
+
parser->http.response->chunk_length--;
|
326
|
+
/* fallback to the normal body appending code below */
|
327
|
+
}
|
328
|
+
break;
|
329
|
+
case GRPC_HTTP_CHUNKED_CONSUME_LF:
|
330
|
+
if (byte != '\n') {
|
331
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
332
|
+
"Expected '\\r\\n' after chunk body");
|
333
|
+
}
|
334
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
|
335
|
+
return GRPC_ERROR_NONE;
|
336
|
+
case GRPC_HTTP_CHUNKED_PLAIN:
|
337
|
+
/* avoiding warning; just fallback to normal codepath */
|
338
|
+
break;
|
339
|
+
}
|
272
340
|
body_length = &parser->http.response->body_length;
|
273
341
|
body = &parser->http.response->body;
|
274
342
|
} else if (parser->type == GRPC_HTTP_REQUEST) {
|
@@ -318,6 +386,7 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
|
|
318
386
|
switch (parser->state) {
|
319
387
|
case GRPC_HTTP_FIRST_LINE:
|
320
388
|
case GRPC_HTTP_HEADERS:
|
389
|
+
case GRPC_HTTP_TRAILERS:
|
321
390
|
if (parser->cur_line_length >= GRPC_HTTP_PARSER_MAX_HEADER_LENGTH) {
|
322
391
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http1_trace)) {
|
323
392
|
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
|
@@ -334,6 +403,8 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
|
|
334
403
|
return GRPC_ERROR_NONE;
|
335
404
|
case GRPC_HTTP_BODY:
|
336
405
|
return addbyte_body(parser, byte);
|
406
|
+
case GRPC_HTTP_END:
|
407
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unexpected byte after end");
|
337
408
|
}
|
338
409
|
GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
|
339
410
|
}
|
@@ -385,7 +456,7 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
|
|
385
456
|
}
|
386
457
|
|
387
458
|
grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) {
|
388
|
-
if (parser->state != GRPC_HTTP_BODY) {
|
459
|
+
if ((parser->state != GRPC_HTTP_BODY) && (parser->state != GRPC_HTTP_END)) {
|
389
460
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers");
|
390
461
|
}
|
391
462
|
return GRPC_ERROR_NONE;
|
data/src/core/lib/http/parser.h
CHANGED
@@ -38,9 +38,19 @@ typedef struct grpc_http_header {
|
|
38
38
|
typedef enum {
|
39
39
|
GRPC_HTTP_FIRST_LINE,
|
40
40
|
GRPC_HTTP_HEADERS,
|
41
|
-
GRPC_HTTP_BODY
|
41
|
+
GRPC_HTTP_BODY,
|
42
|
+
GRPC_HTTP_TRAILERS,
|
43
|
+
GRPC_HTTP_END,
|
42
44
|
} grpc_http_parser_state;
|
43
45
|
|
46
|
+
typedef enum {
|
47
|
+
GRPC_HTTP_CHUNKED_PLAIN,
|
48
|
+
GRPC_HTTP_CHUNKED_LENGTH,
|
49
|
+
GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF,
|
50
|
+
GRPC_HTTP_CHUNKED_BODY,
|
51
|
+
GRPC_HTTP_CHUNKED_CONSUME_LF,
|
52
|
+
} grpc_http_parser_chunked_state;
|
53
|
+
|
44
54
|
typedef enum {
|
45
55
|
GRPC_HTTP_HTTP10,
|
46
56
|
GRPC_HTTP_HTTP11,
|
@@ -77,6 +87,9 @@ typedef struct grpc_http_response {
|
|
77
87
|
grpc_http_header* hdrs = nullptr;
|
78
88
|
/* Body: length and contents; contents are NOT null-terminated */
|
79
89
|
size_t body_length = 0;
|
90
|
+
/* State of the chunked parser. Only valid for the response. */
|
91
|
+
grpc_http_parser_chunked_state chunked_state = GRPC_HTTP_CHUNKED_PLAIN;
|
92
|
+
size_t chunk_length = 0;
|
80
93
|
char* body = nullptr;
|
81
94
|
} grpc_http_response;
|
82
95
|
|
@@ -23,13 +23,13 @@
|
|
23
23
|
grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
|
24
24
|
|
25
25
|
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
26
|
-
grpc_closure* cb, bool urgent) {
|
27
|
-
ep->vtable->read(ep, slices, cb, urgent);
|
26
|
+
grpc_closure* cb, bool urgent, int min_progress_size) {
|
27
|
+
ep->vtable->read(ep, slices, cb, urgent, min_progress_size);
|
28
28
|
}
|
29
29
|
|
30
30
|
void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
31
|
-
grpc_closure* cb, void* arg) {
|
32
|
-
ep->vtable->write(ep, slices, cb, arg);
|
31
|
+
grpc_closure* cb, void* arg, int max_frame_size) {
|
32
|
+
ep->vtable->write(ep, slices, cb, arg, max_frame_size);
|
33
33
|
}
|
34
34
|
|
35
35
|
void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
|