grpc 1.28.0 → 1.37.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 +1734 -22357
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +31 -9
- data/include/grpc/grpc_security.h +274 -180
- data/include/grpc/grpc_security_constants.h +4 -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 +32 -30
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +36 -90
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/module.modulemap +24 -39
- 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 +16 -12
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +3845 -2414
- data/src/core/ext/filters/client_channel/client_channel.h +1 -7
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- 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 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +133 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +191 -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 +25 -30
- data/src/core/ext/filters/client_channel/health/health_check_client.h +7 -7
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +15 -16
- data/src/core/ext/filters/client_channel/http_proxy.cc +44 -34
- data/src/core/ext/filters/client_channel/lb_policy.cc +28 -20
- data/src/core/ext/filters/client_channel/lb_policy.h +50 -38
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -11
- 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/grpclb.cc +481 -510
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- 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 +6 -41
- 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 +3 -2
- 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 +24 -18
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +922 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -46
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +520 -134
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
- 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 +795 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +18 -8
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
- data/src/core/ext/filters/client_channel/resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver.h +10 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +111 -110
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -34
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +15 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -123
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +642 -184
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +10 -3
- 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 +61 -61
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +102 -108
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -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 +829 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +55 -52
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +47 -93
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +30 -26
- 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 +132 -13
- data/src/core/ext/filters/client_channel/server_address.h +80 -32
- data/src/core/ext/filters/client_channel/service_config.cc +114 -149
- data/src/core/ext/filters/client_channel/service_config.h +33 -100
- data/src/core/ext/filters/client_channel/service_config_call_data.h +86 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +89 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +92 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +211 -230
- data/src/core/ext/filters/client_channel/subchannel.h +116 -118
- 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 +1 -1
- data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +495 -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 +29 -34
- data/src/core/ext/filters/http/client_authority_filter.cc +10 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +34 -15
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +38 -34
- data/src/core/ext/filters/message_size/message_size_filter.cc +64 -90
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
- 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 +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
- 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 +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -49
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -355
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +65 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +343 -347
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +13 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +14 -13
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +30 -17
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +38 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +30 -28
- data/src/core/ext/transport/inproc/inproc_transport.cc +106 -33
- 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 +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -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 +453 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1801 -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 +334 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1066 -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 +182 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +755 -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/socket_option.upb.c +34 -0
- 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 +42 -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/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 +130 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +557 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +159 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +623 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -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 +178 -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 +65 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +941 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3790 -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 +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +362 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1488 -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 +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +458 -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} +7 -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/v3/ads.upb.c +25 -0
- 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/service/endpoint/v3/eds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
- 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} +7 -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} +7 -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 +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -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 +64 -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} +3 -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/v3/semantic_version.upb.c +30 -0
- 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 +107 -106
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +691 -496
- 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 +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +71 -0
- 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 +71 -70
- data/src/core/ext/upb-generated/validate/validate.upb.h +732 -586
- 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 +38 -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 +251 -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 +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -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 +543 -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 +272 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -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 +231 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +85 -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/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 +68 -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/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 +195 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +193 -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/udp_listener_config.upbdefs.c +59 -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 +101 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +944 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +290 -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 +120 -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 +76 -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 +505 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -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 +170 -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 +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.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 +73 -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 +310 -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 +3791 -0
- data/src/core/ext/xds/xds_api.h +671 -0
- data/src/core/ext/xds/xds_bootstrap.cc +555 -0
- data/src/core/ext/xds/xds_bootstrap.h +120 -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/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +983 -773
- data/src/core/ext/xds/xds_client.h +365 -0
- data/src/core/ext/xds/xds_client_stats.cc +159 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +80 -40
- 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 +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +532 -0
- data/src/core/lib/channel/channel_args.cc +24 -22
- data/src/core/lib/channel/channel_args.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +27 -13
- 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 +137 -97
- data/src/core/lib/channel/channelz.h +47 -26
- data/src/core/lib/channel/channelz_registry.cc +34 -15
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +15 -59
- data/src/core/lib/channel/handshaker.h +7 -22
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +14 -5
- data/src/core/lib/channel/status_util.h +5 -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/message_compress.cc +5 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +5 -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/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 +1 -1
- data/src/core/lib/gpr/spinlock.h +12 -5
- data/src/core/lib/gpr/string.cc +33 -55
- data/src/core/lib/gpr/string.h +9 -24
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +5 -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 +16 -12
- data/src/core/lib/gpr/time_posix.cc +1 -1
- 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/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/atomic.h +9 -9
- 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 +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +173 -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/sync.h +129 -40
- 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/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +16 -14
- data/src/core/lib/http/httpcli.h +4 -6
- data/src/core/lib/http/httpcli_security_connector.cc +13 -13
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +23 -22
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -4
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +8 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +38 -14
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +23 -21
- data/src/core/lib/iomgr/error.h +1 -2
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +359 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +46 -43
- data/src/core/lib/iomgr/ev_epollex_linux.cc +46 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +18 -15
- data/src/core/lib/iomgr/ev_posix.cc +5 -6
- data/src/core/lib/iomgr/exec_ctx.cc +7 -3
- data/src/core/lib/iomgr/exec_ctx.h +26 -10
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -21
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +322 -0
- data/src/core/lib/iomgr/parse_address.h +77 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +11 -11
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +2 -21
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +11 -16
- data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +39 -38
- data/src/core/lib/iomgr/sockaddr_utils.cc +161 -44
- data/src/core/lib/iomgr/sockaddr_utils.h +40 -19
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +103 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- 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 +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -37
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +56 -36
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +48 -29
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +39 -45
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/tcp_uv.cc +5 -4
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +20 -20
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +3 -3
- data/src/core/lib/iomgr/udp_server.cc +33 -38
- 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 +8 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +15 -4
- data/src/core/lib/json/json_reader.cc +33 -30
- 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 +15 -13
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -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 +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +7 -91
- data/src/core/lib/security/credentials/credentials.h +18 -66
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -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 +497 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -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 +58 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- 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 +90 -67
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -4
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +13 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- 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 +109 -97
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- 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 +346 -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 +399 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -140
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
- 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 +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -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 +22 -7
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -32
- 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 +87 -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 +3 -2
- 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 +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +6 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +42 -40
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +100 -27
- data/src/core/lib/security/security_connector/ssl_utils.h +37 -31
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +394 -284
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +108 -42
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
- data/src/core/lib/security/transport/security_handshaker.cc +36 -8
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +45 -5
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +13 -16
- data/src/core/lib/slice/slice_internal.h +17 -2
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +95 -88
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +86 -72
- data/src/core/lib/surface/channel.h +54 -7
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +64 -63
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +45 -29
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/lame_client.cc +47 -54
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/server.cc +1309 -1300
- data/src/core/lib/surface/server.h +469 -45
- data/src/core/lib/surface/validate_metadata.h +3 -0
- 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.h +10 -5
- data/src/core/lib/transport/connectivity_state.cc +23 -17
- data/src/core/lib/transport/connectivity_state.h +31 -15
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +7 -1
- data/src/core/lib/transport/metadata.cc +19 -5
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.cc +27 -0
- data/src/core/lib/transport/metadata_batch.h +20 -7
- data/src/core/lib/transport/static_metadata.cc +296 -277
- data/src/core/lib/transport/static_metadata.h +81 -74
- data/src/core/lib/transport/status_conversion.cc +6 -14
- 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 +7 -6
- data/src/core/lib/transport/transport.h +24 -10
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +60 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +65 -12
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +49 -38
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +98 -48
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -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 +27 -20
- 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.h +0 -2
- 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 -4
- data/src/core/tsi/ssl_transport_security.cc +226 -105
- data/src/core/tsi/ssl_transport_security.h +28 -16
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +9 -4
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +15 -4
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_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 +44 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +83 -44
- 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/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +61 -11
- 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/debug_message_spec.rb +134 -0
- 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/generic/service_spec.rb +2 -0
- 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 +7 -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 +29 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- 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 +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -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 +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- 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/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- 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/thread_annotations.h +94 -39
- 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 +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- 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 +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- 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 +48 -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 +1945 -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 +196 -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 +89 -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 +248 -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 +149 -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 +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- 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/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -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 +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- 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 +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -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 +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -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 +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- 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_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- 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/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 +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -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 +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -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 +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +953 -0
- data/third_party/abseil-cpp/absl/time/format.cc +160 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +309 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1583 -0
- 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 +861 -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 +759 -707
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
- 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 +6 -13
- 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 +5 -3
- 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 +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -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 +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- 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/derive_key.c +1 -1
- 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/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- 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 +18 -7
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +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 +19 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- 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 +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -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/aes_nohw.c +1 -1
- 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 +5 -2
- 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/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +34 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- 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 +149 -211
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +301 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +69 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +162 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -121
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +73 -40
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +122 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +217 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +532 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/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/deterministic.c +6 -10
- 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 +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
- 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/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_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +21 -37
- 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_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +89 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -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 +62 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +67 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +38 -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 +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -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 +2 -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 +5 -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 +2 -2
- 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 +126 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- 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 +54 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +662 -556
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -7
- 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 +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +25 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -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 +82 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +11 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +85 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- 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/rand.h +6 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +359 -120
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +33 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1140 -755
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +181 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +43 -45
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +32 -10
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +160 -80
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +131 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +50 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +636 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +187 -68
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +71 -90
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -73
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- 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 +5443 -0
- metadata +686 -160
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
- 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 -65
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
- 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 -347
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
- 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 -104
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
- 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 -34
- 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 -54
- 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/core/address.upb.c +0 -111
- 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/base.upb.c +0 -292
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
- 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/grpc_service.upb.c +0 -196
- 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 -168
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
- 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 -132
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
- 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.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
- 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 -88
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
- 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/lds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
- 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 -144
- 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 -42
- 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/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
- 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 -793
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
- 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 -227
- 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 -296
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
- 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 -52
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
- 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 -87
- 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 -38
- 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 -49
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
- 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 -88
- 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/gprpp/map.h +0 -59
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- 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/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- 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/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -24,10 +24,24 @@
|
|
24
24
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
|
26
26
|
#include "src/core/lib/iomgr/error.h"
|
27
|
+
#include "src/core/lib/surface/server.h"
|
28
|
+
|
29
|
+
namespace grpc_core {
|
30
|
+
|
31
|
+
// A function to modify channel args for a listening addr:port. Note that this
|
32
|
+
// is used to create a security connector for listeners when the servers are
|
33
|
+
// configured with a config fetcher. Not invoked if there is no config fetcher
|
34
|
+
// added to the server. Takes ownership of the args. Caller takes ownership of
|
35
|
+
// returned args. On failure, the error parameter will be set.
|
36
|
+
using Chttp2ServerArgsModifier =
|
37
|
+
std::function<grpc_channel_args*(grpc_channel_args*, grpc_error**)>;
|
27
38
|
|
28
39
|
/// Adds a port to \a server. Sets \a port_num to the port number.
|
29
40
|
/// Takes ownership of \a args.
|
30
|
-
grpc_error*
|
31
|
-
|
41
|
+
grpc_error* Chttp2ServerAddPort(
|
42
|
+
Server* server, const char* addr, grpc_channel_args* args,
|
43
|
+
Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
|
44
|
+
|
45
|
+
} // namespace grpc_core
|
32
46
|
|
33
47
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H */
|
@@ -27,14 +27,24 @@
|
|
27
27
|
#include "src/core/lib/surface/api_trace.h"
|
28
28
|
#include "src/core/lib/surface/server.h"
|
29
29
|
|
30
|
+
namespace {
|
31
|
+
|
32
|
+
grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
|
33
|
+
grpc_error** /*error*/) {
|
34
|
+
return args;
|
35
|
+
}
|
36
|
+
|
37
|
+
} // namespace
|
38
|
+
|
30
39
|
int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
|
31
40
|
grpc_core::ExecCtx exec_ctx;
|
32
41
|
int port_num = 0;
|
33
42
|
GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
|
34
43
|
(server, addr));
|
35
|
-
grpc_error* err =
|
36
|
-
server, addr,
|
37
|
-
grpc_channel_args_copy(
|
44
|
+
grpc_error* err = grpc_core::Chttp2ServerAddPort(
|
45
|
+
server->core_server.get(), addr,
|
46
|
+
grpc_channel_args_copy(server->core_server->channel_args()),
|
47
|
+
ModifyArgsForConnection, &port_num);
|
38
48
|
if (err != GRPC_ERROR_NONE) {
|
39
49
|
const char* msg = grpc_error_string(err);
|
40
50
|
gpr_log(GPR_ERROR, "%s", msg);
|
@@ -24,8 +24,9 @@
|
|
24
24
|
|
25
25
|
#ifdef GPR_SUPPORT_CHANNELS_FROM_FD
|
26
26
|
|
27
|
+
#include "absl/strings/str_cat.h"
|
28
|
+
|
27
29
|
#include <grpc/support/alloc.h>
|
28
|
-
#include <grpc/support/string_util.h>
|
29
30
|
|
30
31
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
31
32
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -40,29 +41,29 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
40
41
|
GPR_ASSERT(reserved == nullptr);
|
41
42
|
|
42
43
|
grpc_core::ExecCtx exec_ctx;
|
43
|
-
|
44
|
-
gpr_asprintf(&name, "fd:%d", fd);
|
45
|
-
|
46
|
-
grpc_endpoint* server_endpoint =
|
47
|
-
grpc_tcp_create(grpc_fd_create(fd, name, true),
|
48
|
-
grpc_server_get_channel_args(server), name);
|
44
|
+
grpc_core::Server* core_server = server->core_server.get();
|
49
45
|
|
50
|
-
|
46
|
+
const grpc_channel_args* server_args = core_server->channel_args();
|
47
|
+
std::string name = absl::StrCat("fd:", fd);
|
48
|
+
grpc_endpoint* server_endpoint = grpc_tcp_create(
|
49
|
+
grpc_fd_create(fd, name.c_str(), true), server_args, name.c_str());
|
51
50
|
|
52
|
-
const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
|
53
51
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
54
52
|
server_args, server_endpoint, false /* is_client */);
|
55
53
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
54
|
+
grpc_error* error =
|
55
|
+
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
|
56
|
+
if (error == GRPC_ERROR_NONE) {
|
57
|
+
for (grpc_pollset* pollset : core_server->pollsets()) {
|
58
|
+
grpc_endpoint_add_to_pollset(server_endpoint, pollset);
|
59
|
+
}
|
60
|
+
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
|
61
|
+
} else {
|
62
|
+
gpr_log(GPR_ERROR, "Failed to create channel: %s",
|
63
|
+
grpc_error_string(error));
|
64
|
+
GRPC_ERROR_UNREF(error);
|
65
|
+
grpc_transport_destroy(transport);
|
62
66
|
}
|
63
|
-
|
64
|
-
grpc_server_setup_transport(server, transport, nullptr, server_args, nullptr);
|
65
|
-
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
|
66
67
|
}
|
67
68
|
|
68
69
|
#else // !GPR_SUPPORT_CHANNELS_FROM_FD
|
@@ -18,13 +18,13 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include <grpc/grpc.h>
|
22
|
-
|
23
21
|
#include <string.h>
|
24
22
|
|
23
|
+
#include "absl/strings/str_cat.h"
|
24
|
+
|
25
|
+
#include <grpc/grpc.h>
|
25
26
|
#include <grpc/support/alloc.h>
|
26
27
|
#include <grpc/support/log.h>
|
27
|
-
#include <grpc/support/string_util.h>
|
28
28
|
|
29
29
|
#include "src/core/ext/transport/chttp2/server/chttp2_server.h"
|
30
30
|
|
@@ -37,6 +37,35 @@
|
|
37
37
|
#include "src/core/lib/surface/api_trace.h"
|
38
38
|
#include "src/core/lib/surface/server.h"
|
39
39
|
|
40
|
+
namespace {
|
41
|
+
|
42
|
+
grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
|
43
|
+
grpc_error** error) {
|
44
|
+
grpc_server_credentials* server_credentials =
|
45
|
+
grpc_find_server_credentials_in_args(args);
|
46
|
+
if (server_credentials == nullptr) {
|
47
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
48
|
+
"Could not find server credentials");
|
49
|
+
return args;
|
50
|
+
}
|
51
|
+
auto security_connector = server_credentials->create_security_connector(args);
|
52
|
+
if (security_connector == nullptr) {
|
53
|
+
*error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
54
|
+
absl::StrCat("Unable to create secure server with credentials of type ",
|
55
|
+
server_credentials->type())
|
56
|
+
.c_str());
|
57
|
+
return args;
|
58
|
+
}
|
59
|
+
grpc_arg arg_to_add =
|
60
|
+
grpc_security_connector_to_arg(security_connector.get());
|
61
|
+
grpc_channel_args* new_args =
|
62
|
+
grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
|
63
|
+
grpc_channel_args_destroy(args);
|
64
|
+
return new_args;
|
65
|
+
}
|
66
|
+
|
67
|
+
} // namespace
|
68
|
+
|
40
69
|
int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
41
70
|
grpc_server_credentials* creds) {
|
42
71
|
grpc_core::ExecCtx exec_ctx;
|
@@ -54,28 +83,43 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
|
54
83
|
"No credentials specified for secure server port (creds==NULL)");
|
55
84
|
goto done;
|
56
85
|
}
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
86
|
+
// TODO(yashykt): Ideally, we would not want to have different behavior here
|
87
|
+
// based on whether a config fetcher is configured or not. Currently, we have
|
88
|
+
// a feature for SSL credentials reloading with an application callback that
|
89
|
+
// assumes that there is a single security connector. If we delay the creation
|
90
|
+
// of the security connector to after the creation of the listener(s), we
|
91
|
+
// would have potentially multiple security connectors which breaks the
|
92
|
+
// assumption for SSL creds reloading. When the API for SSL creds reloading is
|
93
|
+
// rewritten, we would be able to make this workaround go away by removing
|
94
|
+
// that assumption. As an immediate drawback of this workaround, config
|
95
|
+
// fetchers need to be registered before adding ports to the server.
|
96
|
+
if (server->core_server->config_fetcher() != nullptr) {
|
97
|
+
// Create channel args.
|
98
|
+
grpc_arg arg_to_add = grpc_server_credentials_to_arg(creds);
|
99
|
+
args = grpc_channel_args_copy_and_add(server->core_server->channel_args(),
|
100
|
+
&arg_to_add, 1);
|
101
|
+
} else {
|
102
|
+
sc = creds->create_security_connector(nullptr);
|
103
|
+
if (sc == nullptr) {
|
104
|
+
err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
105
|
+
absl::StrCat(
|
106
|
+
"Unable to create secure server with credentials of type ",
|
107
|
+
creds->type())
|
108
|
+
.c_str());
|
109
|
+
goto done;
|
110
|
+
}
|
111
|
+
grpc_arg args_to_add[2];
|
112
|
+
args_to_add[0] = grpc_server_credentials_to_arg(creds);
|
113
|
+
args_to_add[1] = grpc_security_connector_to_arg(sc.get());
|
114
|
+
args = grpc_channel_args_copy_and_add(server->core_server->channel_args(),
|
115
|
+
args_to_add,
|
116
|
+
GPR_ARRAY_SIZE(args_to_add));
|
66
117
|
}
|
67
|
-
// Create channel args.
|
68
|
-
grpc_arg args_to_add[2];
|
69
|
-
args_to_add[0] = grpc_server_credentials_to_arg(creds);
|
70
|
-
args_to_add[1] = grpc_security_connector_to_arg(sc.get());
|
71
|
-
args =
|
72
|
-
grpc_channel_args_copy_and_add(grpc_server_get_channel_args(server),
|
73
|
-
args_to_add, GPR_ARRAY_SIZE(args_to_add));
|
74
118
|
// Add server port.
|
75
|
-
err =
|
119
|
+
err = grpc_core::Chttp2ServerAddPort(server->core_server.get(), addr, args,
|
120
|
+
ModifyArgsForConnection, &port_num);
|
76
121
|
done:
|
77
122
|
sc.reset(DEBUG_LOCATION, "server");
|
78
|
-
|
79
123
|
if (err != GRPC_ERROR_NONE) {
|
80
124
|
const char* msg = grpc_error_string(err);
|
81
125
|
gpr_log(GPR_ERROR, "%s", msg);
|
@@ -66,16 +66,16 @@ static bool input_is_valid(const uint8_t* input_ptr, size_t length) {
|
|
66
66
|
return true;
|
67
67
|
}
|
68
68
|
|
69
|
-
#define COMPOSE_OUTPUT_BYTE_0(input_ptr)
|
70
|
-
(uint8_t)((decode_table[input_ptr[0]] << 2) | \
|
71
|
-
(decode_table[input_ptr[1]] >> 4))
|
69
|
+
#define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
|
70
|
+
(uint8_t)((decode_table[(input_ptr)[0]] << 2) | \
|
71
|
+
(decode_table[(input_ptr)[1]] >> 4))
|
72
72
|
|
73
|
-
#define COMPOSE_OUTPUT_BYTE_1(input_ptr)
|
74
|
-
(uint8_t)((decode_table[input_ptr[1]] << 4) | \
|
75
|
-
(decode_table[input_ptr[2]] >> 2))
|
73
|
+
#define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
|
74
|
+
(uint8_t)((decode_table[(input_ptr)[1]] << 4) | \
|
75
|
+
(decode_table[(input_ptr)[2]] >> 2))
|
76
76
|
|
77
77
|
#define COMPOSE_OUTPUT_BYTE_2(input_ptr) \
|
78
|
-
(uint8_t)((decode_table[input_ptr[2]] << 6) | decode_table[input_ptr[3]])
|
78
|
+
(uint8_t)((decode_table[(input_ptr)[2]] << 6) | decode_table[(input_ptr)[3]])
|
79
79
|
|
80
80
|
// By RFC 4648, if the length of the encoded string without padding is 4n+r,
|
81
81
|
// the length of decoded string is: 1) 3n if r = 0, 2) 3n + 1 if r = 2, 3, or
|
@@ -28,11 +28,10 @@
|
|
28
28
|
static const char alphabet[] =
|
29
29
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
30
30
|
|
31
|
-
|
31
|
+
struct b64_huff_sym {
|
32
32
|
uint16_t bits;
|
33
33
|
uint8_t length;
|
34
|
-
}
|
35
|
-
|
34
|
+
};
|
36
35
|
static const b64_huff_sym huff_alphabet[64] = {
|
37
36
|
{0x21, 6}, {0x5d, 7}, {0x5e, 7}, {0x5f, 7}, {0x60, 7}, {0x61, 7},
|
38
37
|
{0x62, 7}, {0x63, 7}, {0x64, 7}, {0x65, 7}, {0x66, 7}, {0x67, 7},
|
@@ -136,12 +135,11 @@ grpc_slice grpc_chttp2_huffman_compress(const grpc_slice& input) {
|
|
136
135
|
return output;
|
137
136
|
}
|
138
137
|
|
139
|
-
|
138
|
+
struct huff_out {
|
140
139
|
uint32_t temp;
|
141
140
|
uint32_t temp_length;
|
142
141
|
uint8_t* out;
|
143
|
-
}
|
144
|
-
|
142
|
+
};
|
145
143
|
static void enc_flush_some(huff_out* out) {
|
146
144
|
while (out->temp_length > 8) {
|
147
145
|
out->temp_length -= 8;
|
@@ -1,37 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
21
19
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
22
20
|
|
23
|
-
#include
|
24
|
-
#include <limits.h>
|
25
|
-
#include <math.h>
|
26
|
-
#include <stdio.h>
|
27
|
-
#include <string.h>
|
21
|
+
#include "absl/strings/str_format.h"
|
28
22
|
|
29
23
|
#include <grpc/slice_buffer.h>
|
30
24
|
#include <grpc/support/alloc.h>
|
31
25
|
#include <grpc/support/log.h>
|
26
|
+
#include <grpc/support/port_platform.h>
|
32
27
|
#include <grpc/support/string_util.h>
|
33
|
-
|
34
|
-
#include
|
28
|
+
#include <inttypes.h>
|
29
|
+
#include <limits.h>
|
30
|
+
#include <math.h>
|
31
|
+
#include <stdio.h>
|
32
|
+
#include <string.h>
|
35
33
|
|
36
34
|
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
37
35
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
@@ -71,7 +69,6 @@
|
|
71
69
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
72
70
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
73
71
|
|
74
|
-
#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
75
72
|
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
76
73
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
77
74
|
#define DEFAULT_MAX_PING_STRIKES 2
|
@@ -91,8 +88,6 @@ static bool g_default_client_keepalive_permit_without_calls =
|
|
91
88
|
static bool g_default_server_keepalive_permit_without_calls =
|
92
89
|
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
|
93
90
|
|
94
|
-
static int g_default_min_sent_ping_interval_without_data_ms =
|
95
|
-
DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
|
96
91
|
static int g_default_min_recv_ping_interval_without_data_ms =
|
97
92
|
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
|
98
93
|
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
@@ -100,10 +95,11 @@ static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
|
|
100
95
|
|
101
96
|
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
|
102
97
|
grpc_core::TraceFlag grpc_http_trace(false, "http");
|
98
|
+
grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
103
99
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
104
100
|
"chttp2_refcount");
|
105
101
|
|
106
|
-
|
102
|
+
// forward declarations of various callbacks that we'll build closures around
|
107
103
|
static void write_action_begin_locked(void* t, grpc_error* error);
|
108
104
|
static void write_action(void* t, grpc_error* error);
|
109
105
|
static void write_action_end(void* t, grpc_error* error);
|
@@ -115,24 +111,25 @@ static void continue_read_action_locked(grpc_chttp2_transport* t);
|
|
115
111
|
|
116
112
|
static void complete_fetch(void* gs, grpc_error* error);
|
117
113
|
static void complete_fetch_locked(void* gs, grpc_error* error);
|
118
|
-
|
114
|
+
// Set a transport level setting, and push it to our peer
|
119
115
|
static void queue_setting_update(grpc_chttp2_transport* t,
|
120
116
|
grpc_chttp2_setting_id id, uint32_t value);
|
121
117
|
|
122
118
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
123
119
|
grpc_error* error);
|
124
120
|
|
125
|
-
|
121
|
+
// Start new streams that have been created if we can
|
126
122
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
127
123
|
|
128
124
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
129
125
|
grpc_connectivity_state state,
|
126
|
+
const absl::Status& status,
|
130
127
|
const char* reason);
|
131
128
|
|
132
|
-
static void benign_reclaimer(void*
|
133
|
-
static void destructive_reclaimer(void*
|
134
|
-
static void benign_reclaimer_locked(void*
|
135
|
-
static void destructive_reclaimer_locked(void*
|
129
|
+
static void benign_reclaimer(void* arg, grpc_error* error);
|
130
|
+
static void destructive_reclaimer(void* arg, grpc_error* error);
|
131
|
+
static void benign_reclaimer_locked(void* arg, grpc_error* error);
|
132
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error* error);
|
136
133
|
|
137
134
|
static void post_benign_reclaimer(grpc_chttp2_transport* t);
|
138
135
|
static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
@@ -140,7 +137,6 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
|
140
137
|
static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
|
141
138
|
static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
|
142
139
|
|
143
|
-
static void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
|
144
140
|
static void start_bdp_ping(void* tp, grpc_error* error);
|
145
141
|
static void finish_bdp_ping(void* tp, grpc_error* error);
|
146
142
|
static void start_bdp_ping_locked(void* tp, grpc_error* error);
|
@@ -150,11 +146,10 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error);
|
|
150
146
|
|
151
147
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error);
|
152
148
|
static void send_ping_locked(grpc_chttp2_transport* t,
|
153
|
-
grpc_closure* on_initiate,
|
154
|
-
grpc_closure* on_complete);
|
149
|
+
grpc_closure* on_initiate, grpc_closure* on_ack);
|
155
150
|
static void retry_initiate_ping_locked(void* tp, grpc_error* error);
|
156
151
|
|
157
|
-
|
152
|
+
// keepalive-relevant functions
|
158
153
|
static void init_keepalive_ping(void* arg, grpc_error* error);
|
159
154
|
static void init_keepalive_ping_locked(void* arg, grpc_error* error);
|
160
155
|
static void start_keepalive_ping(void* arg, grpc_error* error);
|
@@ -170,9 +165,29 @@ static void reset_byte_stream(void* arg, grpc_error* error);
|
|
170
165
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
171
166
|
bool g_flow_control_enabled = true;
|
172
167
|
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
namespace grpc_core {
|
169
|
+
|
170
|
+
namespace {
|
171
|
+
TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
|
172
|
+
TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
|
173
|
+
nullptr;
|
174
|
+
} // namespace
|
175
|
+
|
176
|
+
void TestOnlySetGlobalHttp2TransportInitCallback(
|
177
|
+
TestOnlyGlobalHttp2TransportInitCallback callback) {
|
178
|
+
test_only_init_callback = callback;
|
179
|
+
}
|
180
|
+
|
181
|
+
void TestOnlySetGlobalHttp2TransportDestructCallback(
|
182
|
+
TestOnlyGlobalHttp2TransportDestructCallback callback) {
|
183
|
+
test_only_destruct_callback = callback;
|
184
|
+
}
|
185
|
+
|
186
|
+
} // namespace grpc_core
|
187
|
+
|
188
|
+
//
|
189
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
190
|
+
//
|
176
191
|
|
177
192
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
193
|
size_t i;
|
@@ -226,12 +241,14 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
241
|
|
227
242
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
243
|
gpr_free(ping_acks);
|
229
|
-
|
244
|
+
if (grpc_core::test_only_destruct_callback != nullptr) {
|
245
|
+
grpc_core::test_only_destruct_callback();
|
246
|
+
}
|
230
247
|
}
|
231
248
|
|
232
249
|
static const grpc_transport_vtable* get_vtable(void);
|
233
250
|
|
234
|
-
|
251
|
+
// Returns whether bdp is enabled
|
235
252
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
253
|
const grpc_channel_args* channel_args,
|
237
254
|
bool is_client) {
|
@@ -273,15 +290,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
290
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
291
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
292
|
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
|
276
|
-
} else if (0 ==
|
277
|
-
strcmp(channel_args->args[i].key,
|
278
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
279
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
280
|
-
grpc_channel_arg_get_integer(
|
281
|
-
&channel_args->args[i],
|
282
|
-
grpc_integer_options{
|
283
|
-
g_default_min_sent_ping_interval_without_data_ms, 0,
|
284
|
-
INT_MAX});
|
285
293
|
} else if (0 ==
|
286
294
|
strcmp(channel_args->args[i].key,
|
287
295
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
@@ -378,12 +386,12 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
386
|
}
|
379
387
|
}
|
380
388
|
if (channelz_enabled) {
|
381
|
-
// TODO(ncteisen): add an API to endpoint to query for local addr, and pass
|
382
|
-
// it in here, so SocketNode knows its own address.
|
383
389
|
t->channelz_socket =
|
384
390
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
386
|
-
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string)
|
391
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
392
|
+
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
|
393
|
+
grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
|
394
|
+
channel_args));
|
387
395
|
}
|
388
396
|
return enable_bdp;
|
389
397
|
}
|
@@ -412,8 +420,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
420
|
|
413
421
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
422
|
t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
|
415
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
416
|
-
g_default_min_sent_ping_interval_without_data_ms;
|
417
423
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
424
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
425
|
g_default_min_recv_ping_interval_without_data_ms;
|
@@ -429,8 +435,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
435
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
436
|
&t->init_keepalive_ping_locked);
|
431
437
|
} else {
|
432
|
-
|
433
|
-
|
438
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
439
|
+
// inflight keeaplive timers
|
434
440
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
441
|
}
|
436
442
|
}
|
@@ -438,7 +444,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
438
444
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
445
|
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
|
440
446
|
grpc_resource_user* resource_user)
|
441
|
-
: refs(1,
|
447
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
448
|
+
? "chttp2_refcount"
|
449
|
+
: nullptr),
|
442
450
|
ep(ep),
|
443
451
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
452
|
resource_user(resource_user),
|
@@ -451,11 +459,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
459
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
460
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
461
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
462
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
463
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
464
|
+
// large enough that the exponential growth should happen nicely when it's
|
465
|
+
// needed.
|
466
|
+
// TODO(ctiller): tune this
|
459
467
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
468
|
|
461
469
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -466,7 +474,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
466
474
|
}
|
467
475
|
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
476
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
477
|
+
// copy in initial settings to all setting sets
|
470
478
|
size_t i;
|
471
479
|
int j;
|
472
480
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -477,7 +485,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
477
485
|
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
486
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
487
|
|
480
|
-
|
488
|
+
// configure http2 the way we like it
|
481
489
|
if (is_client) {
|
482
490
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
491
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -503,7 +511,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
511
|
enable_bdp = false;
|
504
512
|
}
|
505
513
|
|
506
|
-
|
514
|
+
// No pings allowed before receiving a header or data frame.
|
507
515
|
ping_state.pings_before_data_required = 0;
|
508
516
|
ping_state.is_delayed_ping_timer_set = false;
|
509
517
|
ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
|
@@ -514,14 +522,16 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
514
522
|
init_keepalive_pings_if_enabled(this);
|
515
523
|
|
516
524
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
525
|
+
bdp_ping_blocked = true;
|
519
526
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
527
|
nullptr);
|
521
528
|
}
|
522
529
|
|
523
530
|
grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
|
524
531
|
post_benign_reclaimer(this);
|
532
|
+
if (grpc_core::test_only_init_callback != nullptr) {
|
533
|
+
grpc_core::test_only_init_callback();
|
534
|
+
}
|
525
535
|
}
|
526
536
|
|
527
537
|
static void destroy_transport_locked(void* tp, grpc_error* /*error*/) {
|
@@ -562,7 +572,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
572
|
}
|
563
573
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
574
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
575
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
576
|
+
"close_transport");
|
566
577
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
578
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
579
|
}
|
@@ -579,11 +590,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
590
|
break;
|
580
591
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
592
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
593
|
+
// keepalive timers are not set in these two states
|
583
594
|
break;
|
584
595
|
}
|
585
596
|
|
586
|
-
|
597
|
+
// flush writable stream list to avoid dangling references
|
587
598
|
grpc_chttp2_stream* s;
|
588
599
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
600
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,9 +604,14 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
604
|
}
|
594
605
|
if (t->notify_on_receive_settings != nullptr) {
|
595
606
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
607
|
+
GRPC_ERROR_REF(error));
|
597
608
|
t->notify_on_receive_settings = nullptr;
|
598
609
|
}
|
610
|
+
if (t->notify_on_close != nullptr) {
|
611
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
|
612
|
+
GRPC_ERROR_REF(error));
|
613
|
+
t->notify_on_close = nullptr;
|
614
|
+
}
|
599
615
|
GRPC_ERROR_UNREF(error);
|
600
616
|
}
|
601
617
|
|
@@ -616,9 +632,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
632
|
#endif
|
617
633
|
|
618
634
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
635
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
636
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
637
|
+
// actively reading
|
622
638
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
639
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
640
|
}
|
@@ -633,7 +649,7 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
633
649
|
metadata_buffer{grpc_chttp2_incoming_metadata_buffer(arena),
|
634
650
|
grpc_chttp2_incoming_metadata_buffer(arena)} {
|
635
651
|
if (server_data) {
|
636
|
-
id = static_cast<uint32_t>((
|
652
|
+
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
637
653
|
*t->accepting_stream = this;
|
638
654
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
639
655
|
post_destructive_reclaimer(t);
|
@@ -677,9 +693,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
677
693
|
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
694
|
}
|
679
695
|
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
|
-
|
683
696
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
697
|
if (GPR_UNLIKELY(included[i])) {
|
685
698
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
@@ -769,14 +782,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
769
782
|
GPR_ASSERT(t->accepting_stream == nullptr);
|
770
783
|
t->accepting_stream = &accepting;
|
771
784
|
t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
|
772
|
-
|
785
|
+
reinterpret_cast<void*>(id));
|
773
786
|
t->accepting_stream = nullptr;
|
774
787
|
return accepting;
|
775
788
|
}
|
776
789
|
|
777
|
-
|
778
|
-
|
779
|
-
|
790
|
+
//
|
791
|
+
// OUTPUT PROCESSING
|
792
|
+
//
|
780
793
|
|
781
794
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
795
|
switch (st) {
|
@@ -794,15 +807,15 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
807
|
grpc_chttp2_write_state st, const char* reason) {
|
795
808
|
GRPC_CHTTP2_IF_TRACING(
|
796
809
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
810
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
811
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
812
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
813
|
+
// If the state is being reset back to idle, it means a write was just
|
814
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
815
|
+
//
|
816
|
+
// This is also our chance to close the transport if the transport was marked
|
817
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
818
|
+
// from peer while we had some pending writes)
|
806
819
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
820
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
808
821
|
if (t->close_transport_on_writes_finished != nullptr) {
|
@@ -864,6 +877,9 @@ static void inc_initiate_write_reason(
|
|
864
877
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
878
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
879
|
break;
|
880
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
881
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
882
|
+
break;
|
867
883
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
884
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
885
|
break;
|
@@ -889,22 +905,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
905
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
906
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
907
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
909
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
910
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
911
|
+
// closures (some of which are potentially initiating more writes on the
|
912
|
+
// transport) are executed on the t->combiner.
|
913
|
+
//
|
914
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
915
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
916
|
+
// that gathers all the relevant bytes (which are at various places in the
|
917
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
918
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
919
|
+
// multiple write operations.
|
920
|
+
//
|
921
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
922
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
923
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
924
|
t->combiner->FinallyRun(
|
909
925
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
926
|
write_action_begin_locked, t, nullptr),
|
@@ -956,9 +972,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
972
|
write_action(t, GRPC_ERROR_NONE);
|
957
973
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
974
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
975
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
976
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
977
|
+
// been able to flush qbuf, we can resume reading.
|
962
978
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
979
|
GPR_INFO,
|
964
980
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -993,8 +1009,8 @@ static void write_action_end(void* tp, grpc_error* error) {
|
|
993
1009
|
GRPC_ERROR_REF(error));
|
994
1010
|
}
|
995
1011
|
|
996
|
-
|
997
|
-
|
1012
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
1013
|
+
// sendmsg
|
998
1014
|
static void write_action_end_locked(void* tp, grpc_error* error) {
|
999
1015
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
1016
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
@@ -1057,7 +1073,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1057
1073
|
}
|
1058
1074
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1075
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1076
|
+
t->dirtied_local_settings = true;
|
1061
1077
|
}
|
1062
1078
|
}
|
1063
1079
|
|
@@ -1080,16 +1096,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1096
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1097
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1098
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1099
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1100
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1101
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1102
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1087
1103
|
goaway_error, grpc_error_string(t->goaway_error));
|
1088
1104
|
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1105
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1106
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1107
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1108
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1109
|
+
// for new connections on that channel.
|
1093
1110
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1111
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
1112
|
grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
|
@@ -1097,21 +1114,25 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1097
1114
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1098
1115
|
"data equal to \"too_many_pings\"");
|
1099
1116
|
double current_keepalive_time_ms = static_cast<double>(t->keepalive_time);
|
1117
|
+
constexpr int max_keepalive_time_ms =
|
1118
|
+
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1100
1119
|
t->keepalive_time =
|
1101
|
-
current_keepalive_time_ms >
|
1120
|
+
current_keepalive_time_ms > static_cast<double>(max_keepalive_time_ms)
|
1102
1121
|
? GRPC_MILLIS_INF_FUTURE
|
1103
1122
|
: static_cast<grpc_millis>(current_keepalive_time_ms *
|
1104
1123
|
KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1124
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1125
|
+
absl::Cord(std::to_string(t->keepalive_time)));
|
1105
1126
|
}
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1127
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1128
|
+
// received.
|
1129
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1130
|
+
"got_goaway");
|
1110
1131
|
}
|
1111
1132
|
|
1112
1133
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1113
1134
|
grpc_chttp2_stream* s;
|
1114
|
-
|
1135
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1115
1136
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1116
1137
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1117
1138
|
grpc_chttp2_cancel_stream(
|
@@ -1122,14 +1143,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1122
1143
|
}
|
1123
1144
|
return;
|
1124
1145
|
}
|
1125
|
-
|
1126
|
-
|
1146
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1147
|
+
// * concurrency
|
1127
1148
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1128
1149
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1129
1150
|
t->settings[GRPC_PEER_SETTINGS]
|
1130
1151
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1131
1152
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1132
|
-
|
1153
|
+
// safe since we can't (legally) be parsing this stream yet
|
1133
1154
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1134
1155
|
GPR_INFO,
|
1135
1156
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1141,6 +1162,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1141
1162
|
|
1142
1163
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1143
1164
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1165
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1166
|
+
"Transport Stream IDs exhausted"),
|
1144
1167
|
"no_more_stream_ids");
|
1145
1168
|
}
|
1146
1169
|
|
@@ -1149,7 +1172,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1149
1172
|
grpc_chttp2_mark_stream_writable(t, s);
|
1150
1173
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1151
1174
|
}
|
1152
|
-
|
1175
|
+
// cancel out streams that will never be started
|
1153
1176
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1154
1177
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1155
1178
|
grpc_chttp2_cancel_stream(
|
@@ -1161,12 +1184,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1161
1184
|
}
|
1162
1185
|
}
|
1163
1186
|
|
1164
|
-
|
1165
|
-
we should not complete this closure until we can prove that the write got
|
1166
|
-
scheduled
|
1187
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1188
|
+
// we should not complete this closure until we can prove that the write got
|
1189
|
+
// scheduled
|
1167
1190
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1168
|
-
|
1169
|
-
bits being used for flags defined above)
|
1191
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1192
|
+
// bits being used for flags defined above)
|
1170
1193
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1171
1194
|
|
1172
1195
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1210,7 +1233,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1210
1233
|
"Error in HTTP transport completing operation");
|
1211
1234
|
closure->error_data.error = grpc_error_set_str(
|
1212
1235
|
closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1213
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1236
|
+
grpc_slice_from_copied_string(t->peer_string.c_str()));
|
1214
1237
|
}
|
1215
1238
|
closure->error_data.error =
|
1216
1239
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1258,7 +1281,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1258
1281
|
grpc_chttp2_stream* s) {
|
1259
1282
|
for (;;) {
|
1260
1283
|
if (s->fetching_send_message == nullptr) {
|
1261
|
-
|
1284
|
+
// Stream was cancelled before message fetch completed
|
1262
1285
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1263
1286
|
return; /* early out */
|
1264
1287
|
}
|
@@ -1354,10 +1377,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1354
1377
|
s->context = op->payload->context;
|
1355
1378
|
s->traced = op->is_traced;
|
1356
1379
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1357
|
-
|
1358
|
-
|
1359
|
-
op->on_complete);
|
1360
|
-
gpr_free(str);
|
1380
|
+
gpr_log(GPR_INFO, "perform_stream_op_locked: %s; on_complete = %p",
|
1381
|
+
grpc_transport_stream_op_batch_string(op).c_str(), op->on_complete);
|
1361
1382
|
if (op->send_initial_metadata) {
|
1362
1383
|
log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
|
1363
1384
|
s->id, t->is_client, true);
|
@@ -1390,7 +1411,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1411
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1391
1412
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1392
1413
|
|
1393
|
-
|
1414
|
+
// Identify stream compression
|
1394
1415
|
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1395
1416
|
.content_encoding == nullptr ||
|
1396
1417
|
grpc_stream_compression_method_parse(
|
@@ -1409,68 +1430,48 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1409
1430
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1410
1431
|
s->send_initial_metadata =
|
1411
1432
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1412
|
-
const size_t metadata_size =
|
1413
|
-
grpc_metadata_batch_size(s->send_initial_metadata);
|
1414
|
-
const size_t metadata_peer_limit =
|
1415
|
-
t->settings[GRPC_PEER_SETTINGS]
|
1416
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
1417
1433
|
if (t->is_client) {
|
1418
1434
|
s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
|
1419
1435
|
}
|
1420
|
-
if (
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
static_cast<intptr_t>(metadata_size)),
|
1430
|
-
GRPC_ERROR_INT_LIMIT,
|
1431
|
-
static_cast<intptr_t>(metadata_peer_limit)),
|
1432
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
1433
|
-
} else {
|
1434
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1435
|
-
s->seen_error = true;
|
1436
|
-
}
|
1437
|
-
if (!s->write_closed) {
|
1438
|
-
if (t->is_client) {
|
1439
|
-
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1440
|
-
GPR_ASSERT(s->id == 0);
|
1441
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1442
|
-
maybe_start_some_streams(t);
|
1443
|
-
} else {
|
1444
|
-
grpc_chttp2_cancel_stream(
|
1445
|
-
t, s,
|
1446
|
-
grpc_error_set_int(
|
1447
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1448
|
-
"Transport closed", &t->closed_with_error, 1),
|
1449
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1450
|
-
}
|
1436
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1437
|
+
s->seen_error = true;
|
1438
|
+
}
|
1439
|
+
if (!s->write_closed) {
|
1440
|
+
if (t->is_client) {
|
1441
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1442
|
+
GPR_ASSERT(s->id == 0);
|
1443
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1444
|
+
maybe_start_some_streams(t);
|
1451
1445
|
} else {
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1459
|
-
}
|
1446
|
+
grpc_chttp2_cancel_stream(
|
1447
|
+
t, s,
|
1448
|
+
grpc_error_set_int(
|
1449
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1450
|
+
"Transport closed", &t->closed_with_error, 1),
|
1451
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1460
1452
|
}
|
1461
1453
|
} else {
|
1462
|
-
s->
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1454
|
+
GPR_ASSERT(s->id != 0);
|
1455
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1456
|
+
if (!(op->send_message &&
|
1457
|
+
(op->payload->send_message.send_message->flags() &
|
1458
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1459
|
+
grpc_chttp2_initiate_write(
|
1460
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1461
|
+
}
|
1469
1462
|
}
|
1463
|
+
} else {
|
1464
|
+
s->send_initial_metadata = nullptr;
|
1465
|
+
grpc_chttp2_complete_closure_step(
|
1466
|
+
t, s, &s->send_initial_metadata_finished,
|
1467
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1468
|
+
"Attempt to send initial metadata after stream was closed",
|
1469
|
+
&s->write_closed_error, 1),
|
1470
|
+
"send_initial_metadata_finished");
|
1470
1471
|
}
|
1471
1472
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1472
1473
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1473
|
-
(gpr_atm)t->peer_string);
|
1474
|
+
(gpr_atm)t->peer_string.c_str());
|
1474
1475
|
}
|
1475
1476
|
}
|
1476
1477
|
|
@@ -1526,47 +1527,29 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1526
1527
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1527
1528
|
s->send_trailing_metadata =
|
1528
1529
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1530
|
+
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1531
|
s->write_buffering = false;
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
t, s,
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
}
|
1552
|
-
if (s->write_closed) {
|
1553
|
-
s->send_trailing_metadata = nullptr;
|
1554
|
-
grpc_chttp2_complete_closure_step(
|
1555
|
-
t, s, &s->send_trailing_metadata_finished,
|
1556
|
-
grpc_metadata_batch_is_empty(
|
1557
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1558
|
-
? GRPC_ERROR_NONE
|
1559
|
-
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1560
|
-
"Attempt to send trailing metadata after "
|
1561
|
-
"stream was closed"),
|
1562
|
-
"send_trailing_metadata_finished");
|
1563
|
-
} else if (s->id != 0) {
|
1564
|
-
/* TODO(ctiller): check if there's flow control for any outstanding
|
1565
|
-
bytes before going writable */
|
1566
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1567
|
-
grpc_chttp2_initiate_write(
|
1568
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1569
|
-
}
|
1532
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1533
|
+
s->seen_error = true;
|
1534
|
+
}
|
1535
|
+
if (s->write_closed) {
|
1536
|
+
s->send_trailing_metadata = nullptr;
|
1537
|
+
s->sent_trailing_metadata_op = nullptr;
|
1538
|
+
grpc_chttp2_complete_closure_step(
|
1539
|
+
t, s, &s->send_trailing_metadata_finished,
|
1540
|
+
grpc_metadata_batch_is_empty(
|
1541
|
+
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1542
|
+
? GRPC_ERROR_NONE
|
1543
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1544
|
+
"Attempt to send trailing metadata after "
|
1545
|
+
"stream was closed"),
|
1546
|
+
"send_trailing_metadata_finished");
|
1547
|
+
} else if (s->id != 0) {
|
1548
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1549
|
+
// bytes before going writable
|
1550
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1551
|
+
grpc_chttp2_initiate_write(
|
1552
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
1553
|
}
|
1571
1554
|
}
|
1572
1555
|
|
@@ -1581,7 +1564,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1581
1564
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1582
1565
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1583
1566
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1584
|
-
(gpr_atm)t->peer_string);
|
1567
|
+
(gpr_atm)t->peer_string.c_str());
|
1585
1568
|
}
|
1586
1569
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1587
1570
|
}
|
@@ -1652,9 +1635,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1652
1635
|
}
|
1653
1636
|
|
1654
1637
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1655
|
-
|
1656
|
-
|
1657
|
-
gpr_free(str);
|
1638
|
+
gpr_log(GPR_INFO, "perform_stream_op[s=%p]: %s", s,
|
1639
|
+
grpc_transport_stream_op_batch_string(op).c_str());
|
1658
1640
|
}
|
1659
1641
|
|
1660
1642
|
GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
|
@@ -1665,8 +1647,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1665
1647
|
}
|
1666
1648
|
|
1667
1649
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
|
1668
|
-
|
1669
|
-
|
1650
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1651
|
+
// and maybe they hold resources that need to be freed
|
1670
1652
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1671
1653
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1672
1654
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1692,11 +1674,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1692
1674
|
GRPC_ERROR_NONE);
|
1693
1675
|
}
|
1694
1676
|
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1699
|
-
*/
|
1677
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1678
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1679
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1700
1680
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1701
1681
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1702
1682
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1710,7 +1690,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1710
1690
|
}
|
1711
1691
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1712
1692
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1713
|
-
|
1693
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1714
1694
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1715
1695
|
start_keepalive_ping_locked, t, nullptr),
|
1716
1696
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1752,9 +1732,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1752
1732
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1753
1733
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1754
1734
|
if (pq->inflight_id != id) {
|
1755
|
-
|
1756
|
-
|
1757
|
-
gpr_free(from);
|
1735
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1736
|
+
t->peer_string.c_str(), id);
|
1758
1737
|
return;
|
1759
1738
|
}
|
1760
1739
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1765,8 +1744,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1765
1744
|
}
|
1766
1745
|
|
1767
1746
|
static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
|
1768
|
-
|
1769
|
-
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string,
|
1747
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1748
|
+
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1770
1749
|
grpc_error_string(error));
|
1771
1750
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1772
1751
|
grpc_http2_error_code http_error;
|
@@ -1787,7 +1766,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1787
1766
|
grpc_error_set_int(
|
1788
1767
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1789
1768
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1790
|
-
|
1769
|
+
// The transport will be closed after the write is done
|
1791
1770
|
close_transport_locked(
|
1792
1771
|
t, grpc_error_set_int(
|
1793
1772
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1795,6 +1774,15 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1795
1774
|
}
|
1796
1775
|
}
|
1797
1776
|
|
1777
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
1778
|
+
if (!t->is_client) {
|
1779
|
+
t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
|
1780
|
+
t->ping_recv_state.ping_strikes = 0;
|
1781
|
+
}
|
1782
|
+
t->ping_state.pings_before_data_required =
|
1783
|
+
t->ping_policy.max_pings_without_data;
|
1784
|
+
}
|
1785
|
+
|
1798
1786
|
static void perform_transport_op_locked(void* stream_op,
|
1799
1787
|
grpc_error* /*error_ignored*/) {
|
1800
1788
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
@@ -1843,9 +1831,8 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1843
1831
|
static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
1844
1832
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
1845
1833
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1846
|
-
|
1847
|
-
|
1848
|
-
gpr_free(msg);
|
1834
|
+
gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", t,
|
1835
|
+
grpc_transport_op_string(op).c_str());
|
1849
1836
|
}
|
1850
1837
|
op->handler_private.extra_arg = gt;
|
1851
1838
|
GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
|
@@ -1854,9 +1841,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1854
1841
|
GRPC_ERROR_NONE);
|
1855
1842
|
}
|
1856
1843
|
|
1857
|
-
|
1858
|
-
|
1859
|
-
|
1844
|
+
//
|
1845
|
+
// INPUT PROCESSING - GENERAL
|
1846
|
+
//
|
1860
1847
|
|
1861
1848
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1862
1849
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1976,8 +1963,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1976
1963
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1977
1964
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1978
1965
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1979
|
-
|
1980
|
-
|
1966
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1967
|
+
// maybe decompress the next 5 bytes in the stream.
|
1981
1968
|
if (s->stream_decompression_method ==
|
1982
1969
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1983
1970
|
grpc_slice_buffer_move_first(
|
@@ -2061,6 +2048,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2061
2048
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2062
2049
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2063
2050
|
}
|
2051
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2052
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2064
2053
|
|
2065
2054
|
GRPC_ERROR_UNREF(error);
|
2066
2055
|
|
@@ -2099,12 +2088,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2099
2088
|
if (status != GRPC_STATUS_OK) {
|
2100
2089
|
s->seen_error = true;
|
2101
2090
|
}
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2091
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2092
|
+
// last chance replacement: we've received trailing metadata,
|
2093
|
+
// but something more important has become available to signal
|
2094
|
+
// to the upper layers - drop what we've got, and then publish
|
2095
|
+
// what we want - which is safe because we haven't told anyone
|
2096
|
+
// about the metadata yet
|
2108
2097
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2109
2098
|
s->recv_trailing_metadata_finished != nullptr) {
|
2110
2099
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
@@ -2141,7 +2130,7 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2141
2130
|
}
|
2142
2131
|
|
2143
2132
|
static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
2144
|
-
const char*
|
2133
|
+
const char* main_error_msg) {
|
2145
2134
|
grpc_error* refs[3];
|
2146
2135
|
size_t nrefs = 0;
|
2147
2136
|
add_error(s->read_closed_error, refs, &nrefs);
|
@@ -2149,7 +2138,7 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2149
2138
|
add_error(extra_error, refs, &nrefs);
|
2150
2139
|
grpc_error* error = GRPC_ERROR_NONE;
|
2151
2140
|
if (nrefs > 0) {
|
2152
|
-
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2141
|
+
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2153
2142
|
refs, nrefs);
|
2154
2143
|
}
|
2155
2144
|
GRPC_ERROR_UNREF(extra_error);
|
@@ -2179,6 +2168,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2179
2168
|
"send_initial_metadata_finished");
|
2180
2169
|
|
2181
2170
|
s->send_trailing_metadata = nullptr;
|
2171
|
+
s->sent_trailing_metadata_op = nullptr;
|
2182
2172
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2183
2173
|
GRPC_ERROR_REF(error),
|
2184
2174
|
"send_trailing_metadata_finished");
|
@@ -2195,9 +2185,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2195
2185
|
grpc_chttp2_stream* s, int close_reads,
|
2196
2186
|
int close_writes, grpc_error* error) {
|
2197
2187
|
if (s->read_closed && s->write_closed) {
|
2198
|
-
|
2188
|
+
// already closed, but we should still fake the status if needed.
|
2189
|
+
grpc_error* overall_error = removal_error(error, s, "Stream removed");
|
2190
|
+
if (overall_error != GRPC_ERROR_NONE) {
|
2191
|
+
grpc_chttp2_fake_status(t, s, overall_error);
|
2192
|
+
}
|
2199
2193
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2200
|
-
GRPC_ERROR_UNREF(error);
|
2201
2194
|
return;
|
2202
2195
|
}
|
2203
2196
|
bool closed_read = false;
|
@@ -2219,7 +2212,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2219
2212
|
if (s->id != 0) {
|
2220
2213
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2221
2214
|
} else {
|
2222
|
-
|
2215
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2223
2216
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2224
2217
|
}
|
2225
2218
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2258,12 +2251,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2258
2251
|
|
2259
2252
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2260
2253
|
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
|
2254
|
+
// Hand roll a header block.
|
2255
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2256
|
+
// elegant solution.
|
2257
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2258
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2259
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2267
2260
|
if (!s->sent_initial_metadata) {
|
2268
2261
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2269
2262
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2392,6 +2385,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2392
2385
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2393
2386
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2394
2387
|
grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
|
2388
|
+
grpc_chttp2_reset_ping_clock(t);
|
2395
2389
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2396
2390
|
&s->stats.outgoing);
|
2397
2391
|
|
@@ -2399,10 +2393,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2399
2393
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
|
2400
2394
|
}
|
2401
2395
|
|
2402
|
-
|
2396
|
+
struct cancel_stream_cb_args {
|
2403
2397
|
grpc_error* error;
|
2404
2398
|
grpc_chttp2_transport* t;
|
2405
|
-
}
|
2399
|
+
};
|
2406
2400
|
|
2407
2401
|
static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
2408
2402
|
cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
|
@@ -2423,9 +2417,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2423
2417
|
GRPC_ERROR_UNREF(error);
|
2424
2418
|
}
|
2425
2419
|
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2420
|
+
//
|
2421
|
+
// INPUT PROCESSING - PARSING
|
2422
|
+
//
|
2429
2423
|
|
2430
2424
|
template <class F>
|
2431
2425
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2483,7 +2477,8 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2483
2477
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2484
2478
|
"Trying to connect an http1.x server"),
|
2485
2479
|
GRPC_ERROR_INT_HTTP_STATUS, response.status),
|
2486
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
2480
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
2481
|
+
grpc_http2_status_to_grpc_status(response.status));
|
2487
2482
|
}
|
2488
2483
|
GRPC_ERROR_UNREF(parse_error);
|
2489
2484
|
|
@@ -2521,11 +2516,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2521
2516
|
grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2522
2517
|
GRPC_ERROR_NONE};
|
2523
2518
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2524
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
|
2525
|
-
if (bdp_est) {
|
2526
|
-
bdp_est->AddIncomingBytes(
|
2527
|
-
static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
|
2528
|
-
}
|
2529
2519
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2530
2520
|
}
|
2531
2521
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2559,8 +2549,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2559
2549
|
"Transport closed", &t->closed_with_error, 1);
|
2560
2550
|
}
|
2561
2551
|
if (error != GRPC_ERROR_NONE) {
|
2562
|
-
|
2563
|
-
|
2552
|
+
// If a goaway frame was received, this might be the reason why the read
|
2553
|
+
// failed. Add this info to the error
|
2564
2554
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2565
2555
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2566
2556
|
}
|
@@ -2569,7 +2559,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2569
2559
|
t->endpoint_reading = 0;
|
2570
2560
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2571
2561
|
keep_reading = true;
|
2572
|
-
|
2562
|
+
// Since we have read a byte, reset the keepalive timer
|
2573
2563
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2574
2564
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2575
2565
|
}
|
@@ -2604,7 +2594,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2604
2594
|
|
2605
2595
|
// t is reffed prior to calling the first time, and once the callback chain
|
2606
2596
|
// that kicks off finishes, it's unreffed
|
2607
|
-
|
2597
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2608
2598
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2609
2599
|
send_ping_locked(
|
2610
2600
|
t,
|
@@ -2612,6 +2602,7 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2612
2602
|
grpc_schedule_on_exec_ctx),
|
2613
2603
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2614
2604
|
grpc_schedule_on_exec_ctx));
|
2605
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2615
2606
|
}
|
2616
2607
|
|
2617
2608
|
static void start_bdp_ping(void* tp, grpc_error* error) {
|
@@ -2624,13 +2615,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
|
|
2624
2615
|
static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
2625
2616
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2626
2617
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2627
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2618
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2628
2619
|
grpc_error_string(error));
|
2629
2620
|
}
|
2630
2621
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2631
2622
|
return;
|
2632
2623
|
}
|
2633
|
-
|
2624
|
+
// Reset the keepalive ping timer
|
2634
2625
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2635
2626
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2636
2627
|
}
|
@@ -2648,7 +2639,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
|
|
2648
2639
|
static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
2649
2640
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2650
2641
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2651
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2642
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2652
2643
|
grpc_error_string(error));
|
2653
2644
|
}
|
2654
2645
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2656,8 +2647,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2656
2647
|
return;
|
2657
2648
|
}
|
2658
2649
|
if (!t->bdp_ping_started) {
|
2659
|
-
|
2660
|
-
|
2650
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2651
|
+
// finish_bdp_ping_locked to be run later.
|
2661
2652
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2662
2653
|
finish_bdp_ping_locked, t, nullptr),
|
2663
2654
|
GRPC_ERROR_REF(error));
|
@@ -2691,7 +2682,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2691
2682
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2692
2683
|
return;
|
2693
2684
|
}
|
2694
|
-
|
2685
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2686
|
+
// Block the bdp ping till we receive more data.
|
2687
|
+
t->bdp_ping_blocked = true;
|
2688
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2689
|
+
} else {
|
2690
|
+
schedule_bdp_ping_locked(t);
|
2691
|
+
}
|
2695
2692
|
}
|
2696
2693
|
|
2697
2694
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2740,14 +2737,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2740
2737
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2741
2738
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2742
2739
|
&args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
|
2743
|
-
} else if (0 ==
|
2744
|
-
strcmp(
|
2745
|
-
args->args[i].key,
|
2746
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
2747
|
-
g_default_min_sent_ping_interval_without_data_ms =
|
2748
|
-
grpc_channel_arg_get_integer(
|
2749
|
-
&args->args[i],
|
2750
|
-
{g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
|
2751
2740
|
} else if (0 ==
|
2752
2741
|
strcmp(
|
2753
2742
|
args->args[i].key,
|
@@ -2790,7 +2779,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2790
2779
|
&t->init_keepalive_ping_locked);
|
2791
2780
|
}
|
2792
2781
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2793
|
-
|
2782
|
+
// The keepalive ping timer may be cancelled by bdp
|
2794
2783
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2795
2784
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2796
2785
|
grpc_schedule_on_exec_ctx);
|
@@ -2816,8 +2805,9 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2816
2805
|
if (t->channelz_socket != nullptr) {
|
2817
2806
|
t->channelz_socket->RecordKeepaliveSent();
|
2818
2807
|
}
|
2819
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)
|
2820
|
-
|
2808
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2809
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2810
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2821
2811
|
}
|
2822
2812
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2823
2813
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2839,12 +2829,13 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2839
2829
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2840
2830
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2841
2831
|
if (error == GRPC_ERROR_NONE) {
|
2842
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)
|
2843
|
-
|
2832
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2833
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2834
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2844
2835
|
}
|
2845
2836
|
if (!t->keepalive_ping_started) {
|
2846
|
-
|
2847
|
-
|
2837
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2838
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2848
2839
|
t->combiner->Run(
|
2849
2840
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2850
2841
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2877,8 +2868,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2877
2868
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2878
2869
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2879
2870
|
if (error == GRPC_ERROR_NONE) {
|
2880
|
-
gpr_log(
|
2881
|
-
t->peer_string);
|
2871
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2872
|
+
t->peer_string.c_str());
|
2882
2873
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2883
2874
|
close_transport_locked(
|
2884
2875
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2887,8 +2878,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2887
2878
|
GRPC_STATUS_UNAVAILABLE));
|
2888
2879
|
}
|
2889
2880
|
} else {
|
2890
|
-
|
2891
|
-
|
2881
|
+
// The watchdog timer should have been cancelled by
|
2882
|
+
// finish_keepalive_ping_locked.
|
2892
2883
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2893
2884
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2894
2885
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2897,21 +2888,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2897
2888
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2898
2889
|
}
|
2899
2890
|
|
2900
|
-
|
2901
|
-
|
2902
|
-
|
2891
|
+
//
|
2892
|
+
// CALLBACK LOOP
|
2893
|
+
//
|
2903
2894
|
|
2904
2895
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2905
2896
|
grpc_connectivity_state state,
|
2897
|
+
const absl::Status& status,
|
2906
2898
|
const char* reason) {
|
2907
2899
|
GRPC_CHTTP2_IF_TRACING(
|
2908
2900
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2909
|
-
t->state_tracker.SetState(state, reason);
|
2901
|
+
t->state_tracker.SetState(state, status, reason);
|
2910
2902
|
}
|
2911
2903
|
|
2912
|
-
|
2913
|
-
|
2914
|
-
|
2904
|
+
//
|
2905
|
+
// POLLSET STUFF
|
2906
|
+
//
|
2915
2907
|
|
2916
2908
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2917
2909
|
grpc_pollset* pollset) {
|
@@ -2925,9 +2917,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2925
2917
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2926
2918
|
}
|
2927
2919
|
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2920
|
+
//
|
2921
|
+
// BYTE STREAM
|
2922
|
+
//
|
2931
2923
|
|
2932
2924
|
static void reset_byte_stream(void* arg, grpc_error* error) {
|
2933
2925
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
@@ -3015,7 +3007,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3015
3007
|
s->data_parser.parsing_frame = nullptr;
|
3016
3008
|
}
|
3017
3009
|
} else {
|
3018
|
-
|
3010
|
+
// Should never reach here.
|
3019
3011
|
GPR_ASSERT(false);
|
3020
3012
|
}
|
3021
3013
|
} else {
|
@@ -3144,9 +3136,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
|
|
3144
3136
|
|
3145
3137
|
} // namespace grpc_core
|
3146
3138
|
|
3147
|
-
|
3148
|
-
|
3149
|
-
|
3139
|
+
//
|
3140
|
+
// RESOURCE QUOTAS
|
3141
|
+
//
|
3150
3142
|
|
3151
3143
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3152
3144
|
if (!t->benign_reclaimer_registered) {
|
@@ -3181,11 +3173,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3181
3173
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3182
3174
|
if (error == GRPC_ERROR_NONE &&
|
3183
3175
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3184
|
-
|
3185
|
-
|
3176
|
+
// Channel with no active streams: send a goaway to try and make it
|
3177
|
+
// disconnect cleanly
|
3186
3178
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3187
3179
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3188
|
-
t->peer_string);
|
3180
|
+
t->peer_string.c_str());
|
3189
3181
|
}
|
3190
3182
|
send_goaway(t,
|
3191
3183
|
grpc_error_set_int(
|
@@ -3196,7 +3188,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3196
3188
|
gpr_log(GPR_INFO,
|
3197
3189
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3198
3190
|
" streams",
|
3199
|
-
t->peer_string
|
3191
|
+
t->peer_string.c_str(),
|
3192
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3200
3193
|
}
|
3201
3194
|
t->benign_reclaimer_registered = false;
|
3202
3195
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -3221,8 +3214,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3221
3214
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3222
3215
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3223
3216
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3224
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3225
|
-
s->id);
|
3217
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3218
|
+
t->peer_string.c_str(), s->id);
|
3226
3219
|
}
|
3227
3220
|
grpc_chttp2_cancel_stream(
|
3228
3221
|
t, s,
|
@@ -3230,10 +3223,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3230
3223
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3231
3224
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3232
3225
|
if (n > 1) {
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3226
|
+
// Since we cancel one stream per destructive reclamation, if
|
3227
|
+
// there are more streams left, we can immediately post a new
|
3228
|
+
// reclaimer in case the resource quota needs to free more
|
3229
|
+
// memory
|
3237
3230
|
post_destructive_reclaimer(t);
|
3238
3231
|
}
|
3239
3232
|
}
|
@@ -3244,9 +3237,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3244
3237
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3245
3238
|
}
|
3246
3239
|
|
3247
|
-
|
3248
|
-
|
3249
|
-
|
3240
|
+
//
|
3241
|
+
// MONITORING
|
3242
|
+
//
|
3250
3243
|
|
3251
3244
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3252
3245
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3283,6 +3276,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3283
3276
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3284
3277
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3285
3278
|
return "APPLICATION_PING";
|
3279
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3280
|
+
return "BDP_PING";
|
3286
3281
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3287
3282
|
return "KEEPALIVE_PING";
|
3288
3283
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|
@@ -3329,7 +3324,7 @@ grpc_transport* grpc_create_chttp2_transport(
|
|
3329
3324
|
|
3330
3325
|
void grpc_chttp2_transport_start_reading(
|
3331
3326
|
grpc_transport* transport, grpc_slice_buffer* read_buffer,
|
3332
|
-
grpc_closure* notify_on_receive_settings) {
|
3327
|
+
grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
|
3333
3328
|
grpc_chttp2_transport* t =
|
3334
3329
|
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
3335
3330
|
GRPC_CHTTP2_REF_TRANSPORT(
|
@@ -3339,6 +3334,7 @@ void grpc_chttp2_transport_start_reading(
|
|
3339
3334
|
gpr_free(read_buffer);
|
3340
3335
|
}
|
3341
3336
|
t->notify_on_receive_settings = notify_on_receive_settings;
|
3337
|
+
t->notify_on_close = notify_on_close;
|
3342
3338
|
t->combiner->Run(
|
3343
3339
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
3344
3340
|
GRPC_ERROR_NONE);
|