grpc 1.33.0.pre1 → 1.37.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1075 -2814
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +29 -2
- data/include/grpc/grpc_security.h +215 -175
- 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 +10 -3
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +24 -55
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- 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 +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2829 -1588
- data/src/core/ext/filters/client_channel/client_channel.h +0 -6
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +15 -4
- 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 +24 -142
- 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 +10 -7
- data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +7 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +9 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +5 -6
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
- 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 +115 -106
- 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 +1 -2
- 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/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 +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +55 -23
- 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 +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +370 -109
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +52 -24
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{eds_drop.cc → xds_cluster_impl.cc} +332 -108
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +22 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver.h +5 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +42 -58
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +444 -22
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- 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 +37 -30
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +342 -133
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +24 -38
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- 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 +9 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -4
- data/src/core/ext/filters/client_channel/service_config.cc +3 -1
- data/src/core/ext/filters/client_channel/service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +117 -207
- data/src/core/ext/filters/client_channel/subchannel.h +75 -113
- data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
- 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 +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +36 -33
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- 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 +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- 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 +29 -16
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +629 -211
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +50 -39
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +5 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +2 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- 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 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -28
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- 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 +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +119 -124
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +450 -284
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +24 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +62 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +69 -45
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +275 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +19 -19
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +80 -43
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +41 -41
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +172 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +53 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +188 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +48 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -14
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +34 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +151 -61
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +33 -29
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +138 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -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 +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +15 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +70 -37
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +257 -216
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +995 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- 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 +96 -98
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +378 -226
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +28 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +124 -53
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +9 -12
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +29 -24
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -33
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +51 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +179 -129
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -4
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -4
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -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 +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- 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 +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- 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 +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +54 -37
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +171 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- 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 +21 -6
- 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 +13 -0
- 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 +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- 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 +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +6 -6
- 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/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- 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 +7 -5
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +70 -8
- 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 +2378 -1183
- data/src/core/ext/xds/xds_api.h +373 -99
- data/src/core/ext/xds/xds_bootstrap.cc +250 -68
- data/src/core/ext/xds/xds_bootstrap.h +40 -13
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_client.cc +364 -182
- data/src/core/ext/xds/xds_client.h +47 -12
- data/src/core/ext/xds/xds_client_stats.cc +43 -5
- data/src/core/ext/xds/xds_client_stats.h +4 -4
- 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 +9 -8
- data/src/core/lib/channel/channel_stack.cc +12 -0
- data/src/core/lib/channel/channel_stack.h +7 -0
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +105 -18
- data/src/core/lib/channel/channelz.h +32 -4
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +4 -46
- data/src/core/lib/channel/handshaker.h +3 -20
- data/src/core/lib/channel/status_util.cc +12 -2
- 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/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats.h +2 -2
- 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 +19 -3
- data/src/core/lib/gpr/log_posix.cc +15 -1
- 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 +10 -2
- data/src/core/lib/gpr/string.cc +23 -22
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gpr/time_precise.cc +3 -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 +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +46 -51
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/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 +42 -48
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -12
- data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
- 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/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +3 -3
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -2
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +17 -12
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +11 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +23 -16
- data/src/core/lib/iomgr/ev_epollex_linux.cc +29 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.cc +7 -3
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- 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 +0 -1
- 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 +127 -43
- data/src/core/lib/iomgr/parse_address.h +32 -8
- 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 +1 -1
- data/src/core/lib/iomgr/python_util.h +4 -4
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/resource_quota.cc +5 -5
- data/src/core/lib/iomgr/sockaddr_utils.cc +131 -11
- data/src/core/lib/iomgr/sockaddr_utils.h +26 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +17 -16
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/tcp_uv.cc +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +5 -5
- data/src/core/lib/iomgr/timer_manager.cc +3 -3
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +32 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- 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 +12 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.h +167 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- 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/credentials.cc +7 -7
- data/src/core/lib/security/credentials/credentials.h +5 -4
- 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/google_default/google_default_credentials.cc +25 -18
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -4
- 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 +39 -46
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +30 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +13 -14
- 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 -150
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +57 -187
- 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 +209 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -3
- 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.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/security_connector.cc +4 -3
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -6
- data/src/core/lib/security/security_connector/ssl_utils.h +16 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +360 -279
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +105 -61
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- 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.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +11 -13
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +41 -32
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +31 -25
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +19 -20
- 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 +106 -53
- data/src/core/lib/surface/server.h +114 -20
- 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 +6 -4
- data/src/core/lib/transport/authority_override.h +7 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +9 -7
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +6 -2
- 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 +18 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- 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 +5 -3
- data/src/core/lib/transport/transport.h +8 -8
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +26 -8
- 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 +19 -25
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +43 -47
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +17 -5
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -2
- data/src/core/tsi/ssl_transport_security.cc +73 -56
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/extconf.rb +10 -2
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -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 +36 -14
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +70 -37
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +35 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
- 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 +5 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -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 +1 -1
- 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 +42 -25
- 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 +6 -2
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
- 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.h +55 -34
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
- 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 +4 -6
- data/third_party/abseil-cpp/absl/status/status.h +502 -113
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
- 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 +91 -112
- data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
- 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 +45 -23
- 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/internal/create_thread_identity.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +4 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
- data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
- 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/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 +728 -722
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- 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 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- 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/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/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{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/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- 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 +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +97 -39
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +155 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -29
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- 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 +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- 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 +25 -25
- 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 +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- 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_skey.c +6 -6
- 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/arm_arch.h +10 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +14 -6
- 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 +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- 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 +3 -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 +122 -34
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -99
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +546 -402
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +73 -17
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +49 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +87 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +18 -22
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +570 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +55 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +192 -56
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- 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 +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -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 +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- 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 +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +335 -75
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -1136
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -53
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -129
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -77
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -85
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -160
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -84
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -377
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -102
- data/src/core/lib/gprpp/map.h +0 -53
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -153
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -42
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -68
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -93
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -56
- data/src/core/lib/security/certificate_provider.h +0 -60
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -503
- data/third_party/upb/upb/port.c +0 -26
@@ -302,7 +302,7 @@ static grpc_error* message_size_init_call_elem(
|
|
302
302
|
static void message_size_destroy_call_elem(
|
303
303
|
grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
|
304
304
|
grpc_closure* /*ignored*/) {
|
305
|
-
call_data* calld = (
|
305
|
+
call_data* calld = static_cast<call_data*>(elem->call_data);
|
306
306
|
calld->~call_data();
|
307
307
|
}
|
308
308
|
|
@@ -192,7 +192,7 @@ static bool register_workaround_cronet_compression(
|
|
192
192
|
if (a == nullptr) {
|
193
193
|
return true;
|
194
194
|
}
|
195
|
-
if (grpc_channel_arg_get_bool(a, false)
|
195
|
+
if (!grpc_channel_arg_get_bool(a, false)) {
|
196
196
|
return true;
|
197
197
|
}
|
198
198
|
return grpc_channel_stack_builder_prepend_filter(
|
@@ -42,7 +42,7 @@ grpc_workaround_user_agent_md* grpc_parse_user_agent(grpc_mdelem md) {
|
|
42
42
|
user_agent_md->workaround_active[i] = ua_parser[i](md);
|
43
43
|
}
|
44
44
|
}
|
45
|
-
grpc_mdelem_set_user_data(md, destroy_user_agent_md,
|
45
|
+
grpc_mdelem_set_user_data(md, destroy_user_agent_md, user_agent_md);
|
46
46
|
|
47
47
|
return user_agent_md;
|
48
48
|
}
|
@@ -26,7 +26,7 @@ grpc_channel_args* grpc_default_authority_add_if_not_present(
|
|
26
26
|
grpc_channel_args_find(args, GRPC_ARG_DEFAULT_AUTHORITY) != nullptr;
|
27
27
|
grpc_arg new_args[1];
|
28
28
|
size_t num_new_args = 0;
|
29
|
-
|
29
|
+
std::string default_authority;
|
30
30
|
if (!has_default_authority) {
|
31
31
|
const grpc_arg* server_uri_arg =
|
32
32
|
grpc_channel_args_find(args, GRPC_ARG_SERVER_URI);
|
@@ -34,9 +34,9 @@ grpc_channel_args* grpc_default_authority_add_if_not_present(
|
|
34
34
|
GPR_ASSERT(server_uri_str != nullptr);
|
35
35
|
default_authority =
|
36
36
|
grpc_core::ResolverRegistry::GetDefaultAuthority(server_uri_str);
|
37
|
-
GPR_ASSERT(default_authority != nullptr);
|
38
37
|
new_args[num_new_args++] = grpc_channel_arg_string_create(
|
39
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
38
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
39
|
+
const_cast<char*>(default_authority.c_str()));
|
40
40
|
}
|
41
41
|
return grpc_channel_args_copy_and_add(args, new_args, num_new_args);
|
42
42
|
}
|
@@ -178,7 +178,7 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error* error) {
|
|
178
178
|
self->Ref().release(); // Ref held by OnTimeout()
|
179
179
|
grpc_chttp2_transport_start_reading(self->result_->transport,
|
180
180
|
args->read_buffer,
|
181
|
-
&self->on_receive_settings_);
|
181
|
+
&self->on_receive_settings_, nullptr);
|
182
182
|
GRPC_CLOSURE_INIT(&self->on_timeout_, OnTimeout, self,
|
183
183
|
grpc_schedule_on_exec_ctx);
|
184
184
|
grpc_timer_init(&self->timer_, self->args_.deadline, &self->on_timeout_);
|
@@ -220,7 +220,7 @@ void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error* error) {
|
|
220
220
|
self->Unref();
|
221
221
|
}
|
222
222
|
|
223
|
-
void Chttp2Connector::OnTimeout(void* arg, grpc_error* error) {
|
223
|
+
void Chttp2Connector::OnTimeout(void* arg, grpc_error* /*error*/) {
|
224
224
|
Chttp2Connector* self = static_cast<Chttp2Connector*>(arg);
|
225
225
|
{
|
226
226
|
MutexLock lock(&self->mu_);
|
@@ -30,7 +30,7 @@ namespace grpc_core {
|
|
30
30
|
class Chttp2Connector : public SubchannelConnector {
|
31
31
|
public:
|
32
32
|
Chttp2Connector();
|
33
|
-
~Chttp2Connector();
|
33
|
+
~Chttp2Connector() override;
|
34
34
|
|
35
35
|
void Connect(const Args& args, Result* result, grpc_closure* notify) override;
|
36
36
|
void Shutdown(grpc_error* error) override;
|
@@ -37,10 +37,11 @@ namespace grpc_core {
|
|
37
37
|
|
38
38
|
class Chttp2InsecureClientChannelFactory : public ClientChannelFactory {
|
39
39
|
public:
|
40
|
-
Subchannel
|
40
|
+
RefCountedPtr<Subchannel> CreateSubchannel(
|
41
|
+
const grpc_channel_args* args) override {
|
41
42
|
grpc_channel_args* new_args =
|
42
43
|
grpc_default_authority_add_if_not_present(args);
|
43
|
-
Subchannel
|
44
|
+
RefCountedPtr<Subchannel> s =
|
44
45
|
Subchannel::Create(MakeOrphanable<Chttp2Connector>(), new_args);
|
45
46
|
grpc_channel_args_destroy(new_args);
|
46
47
|
return s;
|
@@ -49,9 +50,13 @@ class Chttp2InsecureClientChannelFactory : public ClientChannelFactory {
|
|
49
50
|
|
50
51
|
namespace {
|
51
52
|
|
52
|
-
grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args
|
53
|
+
grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args,
|
54
|
+
grpc_error** error) {
|
53
55
|
if (target == nullptr) {
|
54
56
|
gpr_log(GPR_ERROR, "cannot create channel with NULL target name");
|
57
|
+
if (error != nullptr) {
|
58
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("channel target is NULL");
|
59
|
+
}
|
55
60
|
return nullptr;
|
56
61
|
}
|
57
62
|
// Add channel arg containing the server URI.
|
@@ -62,8 +67,8 @@ grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args) {
|
|
62
67
|
const char* to_remove[] = {GRPC_ARG_SERVER_URI};
|
63
68
|
grpc_channel_args* new_args =
|
64
69
|
grpc_channel_args_copy_and_add_and_remove(args, to_remove, 1, &arg, 1);
|
65
|
-
grpc_channel* channel =
|
66
|
-
|
70
|
+
grpc_channel* channel = grpc_channel_create(
|
71
|
+
target, new_args, GRPC_CLIENT_CHANNEL, nullptr, nullptr, error);
|
67
72
|
grpc_channel_args_destroy(new_args);
|
68
73
|
return channel;
|
69
74
|
}
|
@@ -101,12 +106,20 @@ grpc_channel* grpc_insecure_channel_create(const char* target,
|
|
101
106
|
const char* arg_to_remove = arg.key;
|
102
107
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
103
108
|
args, &arg_to_remove, 1, &arg, 1);
|
109
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
104
110
|
// Create channel.
|
105
|
-
grpc_channel* channel = grpc_core::CreateChannel(target, new_args);
|
111
|
+
grpc_channel* channel = grpc_core::CreateChannel(target, new_args, &error);
|
106
112
|
// Clean up.
|
107
113
|
grpc_channel_args_destroy(new_args);
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
114
|
+
if (channel == nullptr) {
|
115
|
+
intptr_t integer;
|
116
|
+
grpc_status_code status = GRPC_STATUS_INTERNAL;
|
117
|
+
if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
|
118
|
+
status = static_cast<grpc_status_code>(integer);
|
119
|
+
}
|
120
|
+
GRPC_ERROR_UNREF(error);
|
121
|
+
channel = grpc_lame_client_channel_create(
|
122
|
+
target, status, "Failed to create client channel");
|
123
|
+
}
|
124
|
+
return channel;
|
112
125
|
}
|
@@ -42,7 +42,8 @@ grpc_channel* grpc_insecure_channel_create_from_fd(
|
|
42
42
|
(target, fd, args));
|
43
43
|
|
44
44
|
grpc_arg default_authority_arg = grpc_channel_arg_string_create(
|
45
|
-
(
|
45
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
46
|
+
const_cast<char*>("test.authority"));
|
46
47
|
grpc_channel_args* final_args =
|
47
48
|
grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
|
48
49
|
|
@@ -55,17 +56,27 @@ grpc_channel* grpc_insecure_channel_create_from_fd(
|
|
55
56
|
grpc_transport* transport =
|
56
57
|
grpc_create_chttp2_transport(final_args, client, true);
|
57
58
|
GPR_ASSERT(transport);
|
58
|
-
|
59
|
-
|
59
|
+
grpc_error* error = nullptr;
|
60
|
+
grpc_channel* channel =
|
61
|
+
grpc_channel_create(target, final_args, GRPC_CLIENT_DIRECT_CHANNEL,
|
62
|
+
transport, nullptr, &error);
|
60
63
|
grpc_channel_args_destroy(final_args);
|
61
|
-
|
64
|
+
if (channel != nullptr) {
|
65
|
+
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
|
66
|
+
grpc_core::ExecCtx::Get()->Flush();
|
67
|
+
} else {
|
68
|
+
intptr_t integer;
|
69
|
+
grpc_status_code status = GRPC_STATUS_INTERNAL;
|
70
|
+
if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
|
71
|
+
status = static_cast<grpc_status_code>(integer);
|
72
|
+
}
|
73
|
+
GRPC_ERROR_UNREF(error);
|
74
|
+
grpc_transport_destroy(transport);
|
75
|
+
channel = grpc_lame_client_channel_create(
|
76
|
+
target, status, "Failed to create client channel");
|
77
|
+
}
|
62
78
|
|
63
|
-
|
64
|
-
|
65
|
-
return channel != nullptr ? channel
|
66
|
-
: grpc_lame_client_channel_create(
|
67
|
-
target, GRPC_STATUS_INTERNAL,
|
68
|
-
"Failed to create client channel");
|
79
|
+
return channel;
|
69
80
|
}
|
70
81
|
|
71
82
|
#else // !GPR_SUPPORT_CHANNELS_FROM_FD
|
@@ -43,14 +43,15 @@ namespace grpc_core {
|
|
43
43
|
|
44
44
|
class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
45
45
|
public:
|
46
|
-
Subchannel
|
46
|
+
RefCountedPtr<Subchannel> CreateSubchannel(
|
47
|
+
const grpc_channel_args* args) override {
|
47
48
|
grpc_channel_args* new_args = GetSecureNamingChannelArgs(args);
|
48
49
|
if (new_args == nullptr) {
|
49
50
|
gpr_log(GPR_ERROR,
|
50
51
|
"Failed to create channel args during subchannel creation.");
|
51
52
|
return nullptr;
|
52
53
|
}
|
53
|
-
Subchannel
|
54
|
+
RefCountedPtr<Subchannel> s =
|
54
55
|
Subchannel::Create(MakeOrphanable<Chttp2Connector>(), new_args);
|
55
56
|
grpc_channel_args_destroy(new_args);
|
56
57
|
return s;
|
@@ -78,9 +79,8 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
78
79
|
// First, check the authority override channel arg.
|
79
80
|
// Otherwise, get it from the server name used to construct the
|
80
81
|
// channel.
|
81
|
-
|
82
|
-
|
83
|
-
if (authority == nullptr) {
|
82
|
+
std::string authority(FindAuthorityOverrideInArgs(args));
|
83
|
+
if (authority.empty()) {
|
84
84
|
const char* server_uri_str =
|
85
85
|
grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
|
86
86
|
GPR_ASSERT(server_uri_str != nullptr);
|
@@ -92,7 +92,8 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
92
92
|
// If the channel args don't already contain GRPC_ARG_DEFAULT_AUTHORITY,
|
93
93
|
// add the arg, setting it to the value just obtained.
|
94
94
|
args_to_add[num_args_to_add++] = grpc_channel_arg_string_create(
|
95
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
95
|
+
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
96
|
+
const_cast<char*>(authority.c_str()));
|
96
97
|
}
|
97
98
|
grpc_channel_args* args_with_authority =
|
98
99
|
grpc_channel_args_copy_and_add(args, args_to_add, num_args_to_add);
|
@@ -101,12 +102,12 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
101
102
|
RefCountedPtr<grpc_channel_security_connector>
|
102
103
|
subchannel_security_connector =
|
103
104
|
channel_credentials->create_security_connector(
|
104
|
-
/*call_creds=*/nullptr, authority.
|
105
|
+
/*call_creds=*/nullptr, authority.c_str(), args_with_authority,
|
105
106
|
&new_args_from_connector);
|
106
107
|
if (subchannel_security_connector == nullptr) {
|
107
108
|
gpr_log(GPR_ERROR,
|
108
109
|
"Failed to create secure subchannel for secure name '%s'",
|
109
|
-
authority.
|
110
|
+
authority.c_str());
|
110
111
|
grpc_channel_args_destroy(args_with_authority);
|
111
112
|
return nullptr;
|
112
113
|
}
|
@@ -127,9 +128,13 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
127
128
|
|
128
129
|
namespace {
|
129
130
|
|
130
|
-
grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args
|
131
|
+
grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args,
|
132
|
+
grpc_error** error) {
|
131
133
|
if (target == nullptr) {
|
132
134
|
gpr_log(GPR_ERROR, "cannot create channel with NULL target name");
|
135
|
+
if (error != nullptr) {
|
136
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("channel target is NULL");
|
137
|
+
}
|
133
138
|
return nullptr;
|
134
139
|
}
|
135
140
|
// Add channel arg containing the server URI.
|
@@ -140,8 +145,8 @@ grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args) {
|
|
140
145
|
const char* to_remove[] = {GRPC_ARG_SERVER_URI};
|
141
146
|
grpc_channel_args* new_args =
|
142
147
|
grpc_channel_args_copy_and_add_and_remove(args, to_remove, 1, &arg, 1);
|
143
|
-
grpc_channel* channel =
|
144
|
-
|
148
|
+
grpc_channel* channel = grpc_channel_create(
|
149
|
+
target, new_args, GRPC_CLIENT_CHANNEL, nullptr, nullptr, error);
|
145
150
|
grpc_channel_args_destroy(new_args);
|
146
151
|
return channel;
|
147
152
|
}
|
@@ -176,6 +181,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds,
|
|
176
181
|
4, ((void*)creds, target, (void*)args, (void*)reserved));
|
177
182
|
GPR_ASSERT(reserved == nullptr);
|
178
183
|
grpc_channel* channel = nullptr;
|
184
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
179
185
|
if (creds != nullptr) {
|
180
186
|
// Add channel args containing the client channel factory and channel
|
181
187
|
// credentials.
|
@@ -189,12 +195,19 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds,
|
|
189
195
|
args, &arg_to_remove, 1, args_to_add, GPR_ARRAY_SIZE(args_to_add));
|
190
196
|
new_args = creds->update_arguments(new_args);
|
191
197
|
// Create channel.
|
192
|
-
channel = grpc_core::CreateChannel(target, new_args);
|
198
|
+
channel = grpc_core::CreateChannel(target, new_args, &error);
|
193
199
|
// Clean up.
|
194
200
|
grpc_channel_args_destroy(new_args);
|
195
201
|
}
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
202
|
+
if (channel == nullptr) {
|
203
|
+
intptr_t integer;
|
204
|
+
grpc_status_code status = GRPC_STATUS_INTERNAL;
|
205
|
+
if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
|
206
|
+
status = static_cast<grpc_status_code>(integer);
|
207
|
+
}
|
208
|
+
GRPC_ERROR_UNREF(error);
|
209
|
+
channel = grpc_lame_client_channel_create(
|
210
|
+
target, status, "Failed to create secure client channel");
|
211
|
+
}
|
212
|
+
return channel;
|
200
213
|
}
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include <string.h>
|
26
26
|
#include <vector>
|
27
27
|
|
28
|
+
#include "absl/strings/match.h"
|
28
29
|
#include "absl/strings/str_cat.h"
|
29
30
|
#include "absl/strings/str_format.h"
|
30
31
|
|
@@ -45,7 +46,9 @@
|
|
45
46
|
#include "src/core/lib/iomgr/endpoint.h"
|
46
47
|
#include "src/core/lib/iomgr/resolve_address.h"
|
47
48
|
#include "src/core/lib/iomgr/resource_quota.h"
|
49
|
+
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
48
50
|
#include "src/core/lib/iomgr/tcp_server.h"
|
51
|
+
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
49
52
|
#include "src/core/lib/slice/slice_internal.h"
|
50
53
|
#include "src/core/lib/surface/api_trace.h"
|
51
54
|
#include "src/core/lib/surface/server.h"
|
@@ -53,17 +56,24 @@
|
|
53
56
|
namespace grpc_core {
|
54
57
|
namespace {
|
55
58
|
|
59
|
+
const char kUnixUriPrefix[] = "unix:";
|
60
|
+
const char kUnixAbstractUriPrefix[] = "unix-abstract:";
|
61
|
+
|
56
62
|
class Chttp2ServerListener : public Server::ListenerInterface {
|
57
63
|
public:
|
58
|
-
static grpc_error* Create(Server* server,
|
59
|
-
grpc_channel_args* args,
|
64
|
+
static grpc_error* Create(Server* server, grpc_resolved_address* addr,
|
65
|
+
grpc_channel_args* args,
|
66
|
+
Chttp2ServerArgsModifier args_modifier,
|
67
|
+
int* port_num);
|
60
68
|
|
61
69
|
static grpc_error* CreateWithAcceptor(Server* server, const char* name,
|
62
|
-
grpc_channel_args* args
|
70
|
+
grpc_channel_args* args,
|
71
|
+
Chttp2ServerArgsModifier args_modifier);
|
63
72
|
|
64
73
|
// Do not instantiate directly. Use one of the factory methods above.
|
65
|
-
Chttp2ServerListener(Server* server, grpc_channel_args* args
|
66
|
-
|
74
|
+
Chttp2ServerListener(Server* server, grpc_channel_args* args,
|
75
|
+
Chttp2ServerArgsModifier args_modifier);
|
76
|
+
~Chttp2ServerListener() override;
|
67
77
|
|
68
78
|
void Start(Server* server,
|
69
79
|
const std::vector<grpc_pollset*>* pollsets) override;
|
@@ -77,58 +87,212 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
77
87
|
void Orphan() override;
|
78
88
|
|
79
89
|
private:
|
80
|
-
class
|
90
|
+
class ConfigFetcherWatcher
|
91
|
+
: public grpc_server_config_fetcher::WatcherInterface {
|
81
92
|
public:
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
93
|
+
explicit ConfigFetcherWatcher(RefCountedPtr<Chttp2ServerListener> listener)
|
94
|
+
: listener_(std::move(listener)) {}
|
95
|
+
|
96
|
+
void UpdateConnectionManager(
|
97
|
+
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
98
|
+
connection_manager) override;
|
87
99
|
|
88
|
-
|
100
|
+
void StopServing() override;
|
89
101
|
|
90
102
|
private:
|
91
|
-
|
92
|
-
static void OnReceiveSettings(void* arg, grpc_error* error);
|
93
|
-
static void OnHandshakeDone(void* arg, grpc_error* error);
|
94
|
-
|
95
|
-
Chttp2ServerListener* const listener_;
|
96
|
-
grpc_pollset* const accepting_pollset_;
|
97
|
-
grpc_tcp_server_acceptor* const acceptor_;
|
98
|
-
RefCountedPtr<HandshakeManager> handshake_mgr_;
|
99
|
-
// State for enforcing handshake timeout on receiving HTTP/2 settings.
|
100
|
-
grpc_chttp2_transport* transport_ = nullptr;
|
101
|
-
grpc_millis deadline_;
|
102
|
-
grpc_timer timer_;
|
103
|
-
grpc_closure on_timeout_;
|
104
|
-
grpc_closure on_receive_settings_;
|
105
|
-
grpc_pollset_set* const interested_parties_;
|
103
|
+
RefCountedPtr<Chttp2ServerListener> listener_;
|
106
104
|
};
|
107
105
|
|
106
|
+
class ActiveConnection : public InternallyRefCounted<ActiveConnection> {
|
107
|
+
public:
|
108
|
+
class HandshakingState : public InternallyRefCounted<HandshakingState> {
|
109
|
+
public:
|
110
|
+
HandshakingState(RefCountedPtr<ActiveConnection> connection_ref,
|
111
|
+
grpc_pollset* accepting_pollset,
|
112
|
+
grpc_tcp_server_acceptor* acceptor,
|
113
|
+
grpc_channel_args* args);
|
114
|
+
|
115
|
+
~HandshakingState() override;
|
116
|
+
|
117
|
+
void Orphan() override;
|
118
|
+
|
119
|
+
void Start(grpc_endpoint* endpoint, grpc_channel_args* args);
|
120
|
+
|
121
|
+
// Needed to be able to grab an external ref in ActiveConnection::Start()
|
122
|
+
using InternallyRefCounted<HandshakingState>::Ref;
|
123
|
+
|
124
|
+
private:
|
125
|
+
static void OnTimeout(void* arg, grpc_error* error);
|
126
|
+
static void OnReceiveSettings(void* arg, grpc_error* /* error */);
|
127
|
+
static void OnHandshakeDone(void* arg, grpc_error* error);
|
128
|
+
RefCountedPtr<ActiveConnection> const connection_;
|
129
|
+
grpc_pollset* const accepting_pollset_;
|
130
|
+
grpc_tcp_server_acceptor* const acceptor_;
|
131
|
+
RefCountedPtr<HandshakeManager> handshake_mgr_
|
132
|
+
ABSL_GUARDED_BY(&connection_->mu_);
|
133
|
+
// State for enforcing handshake timeout on receiving HTTP/2 settings.
|
134
|
+
grpc_millis const deadline_;
|
135
|
+
grpc_timer timer_ ABSL_GUARDED_BY(&connection_->mu_);
|
136
|
+
grpc_closure on_timeout_ ABSL_GUARDED_BY(&connection_->mu_);
|
137
|
+
grpc_closure on_receive_settings_ ABSL_GUARDED_BY(&connection_->mu_);
|
138
|
+
grpc_pollset_set* const interested_parties_;
|
139
|
+
};
|
140
|
+
|
141
|
+
ActiveConnection(grpc_pollset* accepting_pollset,
|
142
|
+
grpc_tcp_server_acceptor* acceptor,
|
143
|
+
grpc_channel_args* args);
|
144
|
+
~ActiveConnection() override;
|
145
|
+
|
146
|
+
void Orphan() override;
|
147
|
+
|
148
|
+
void SendGoAway();
|
149
|
+
|
150
|
+
void Start(RefCountedPtr<Chttp2ServerListener> listener,
|
151
|
+
grpc_endpoint* endpoint, grpc_channel_args* args);
|
152
|
+
|
153
|
+
// Needed to be able to grab an external ref in
|
154
|
+
// Chttp2ServerListener::OnAccept()
|
155
|
+
using InternallyRefCounted<ActiveConnection>::Ref;
|
156
|
+
|
157
|
+
private:
|
158
|
+
static void OnClose(void* arg, grpc_error* error);
|
159
|
+
|
160
|
+
RefCountedPtr<Chttp2ServerListener> listener_;
|
161
|
+
Mutex mu_ ABSL_ACQUIRED_AFTER(&listener_->mu_);
|
162
|
+
// Set by HandshakingState before the handshaking begins and reset when
|
163
|
+
// handshaking is done.
|
164
|
+
OrphanablePtr<HandshakingState> handshaking_state_ ABSL_GUARDED_BY(&mu_);
|
165
|
+
// Set by HandshakingState when handshaking is done and a valid transport is
|
166
|
+
// created.
|
167
|
+
grpc_chttp2_transport* transport_ ABSL_GUARDED_BY(&mu_) = nullptr;
|
168
|
+
grpc_closure on_close_;
|
169
|
+
bool shutdown_ ABSL_GUARDED_BY(&mu_) = false;
|
170
|
+
};
|
171
|
+
|
172
|
+
// To allow access to RefCounted<> like interface.
|
173
|
+
friend class RefCountedPtr<Chttp2ServerListener>;
|
174
|
+
|
175
|
+
// Should only be called once so as to start the TCP server.
|
176
|
+
void StartListening();
|
177
|
+
|
108
178
|
static void OnAccept(void* arg, grpc_endpoint* tcp,
|
109
179
|
grpc_pollset* accepting_pollset,
|
110
180
|
grpc_tcp_server_acceptor* acceptor);
|
111
181
|
|
112
|
-
RefCountedPtr<HandshakeManager> CreateHandshakeManager();
|
113
|
-
|
114
182
|
static void TcpServerShutdownComplete(void* arg, grpc_error* error);
|
115
183
|
|
116
184
|
static void DestroyListener(Server* /*server*/, void* arg,
|
117
185
|
grpc_closure* destroy_done);
|
118
186
|
|
187
|
+
// The interface required by RefCountedPtr<> has been manually implemented
|
188
|
+
// here to take a ref on tcp_server_ instead. Note that, the handshaker needs
|
189
|
+
// tcp_server_ to exist for the lifetime of the handshake since it's needed by
|
190
|
+
// acceptor. Sharing refs between the listener and tcp_server_ is just an
|
191
|
+
// optimization to avoid taking additional refs on the listener, since
|
192
|
+
// TcpServerShutdownComplete already holds a ref to the listener.
|
193
|
+
void IncrementRefCount() { grpc_tcp_server_ref(tcp_server_); }
|
194
|
+
void IncrementRefCount(const DebugLocation& /* location */,
|
195
|
+
const char* /* reason */) {
|
196
|
+
IncrementRefCount();
|
197
|
+
}
|
198
|
+
|
199
|
+
RefCountedPtr<Chttp2ServerListener> Ref() GRPC_MUST_USE_RESULT {
|
200
|
+
IncrementRefCount();
|
201
|
+
return RefCountedPtr<Chttp2ServerListener>(this);
|
202
|
+
}
|
203
|
+
RefCountedPtr<Chttp2ServerListener> Ref(const DebugLocation& /* location */,
|
204
|
+
const char* /* reason */)
|
205
|
+
GRPC_MUST_USE_RESULT {
|
206
|
+
return Ref();
|
207
|
+
}
|
208
|
+
|
209
|
+
void Unref() { grpc_tcp_server_unref(tcp_server_); }
|
210
|
+
void Unref(const DebugLocation& /* location */, const char* /* reason */) {
|
211
|
+
Unref();
|
212
|
+
}
|
213
|
+
|
119
214
|
Server* const server_;
|
120
|
-
grpc_channel_args* const args_;
|
121
215
|
grpc_tcp_server* tcp_server_;
|
216
|
+
grpc_resolved_address resolved_address_;
|
217
|
+
Chttp2ServerArgsModifier const args_modifier_;
|
218
|
+
ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
|
219
|
+
Mutex channel_args_mu_;
|
220
|
+
grpc_channel_args* args_ ABSL_GUARDED_BY(channel_args_mu_);
|
221
|
+
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
222
|
+
connection_manager_ ABSL_GUARDED_BY(channel_args_mu_);
|
122
223
|
Mutex mu_;
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
224
|
+
// Signals whether grpc_tcp_server_start() has been called.
|
225
|
+
bool started_ ABSL_GUARDED_BY(mu_) = false;
|
226
|
+
// Signals whether grpc_tcp_server_start() has completed.
|
227
|
+
CondVar started_cv_ ABSL_GUARDED_BY(mu_);
|
228
|
+
// Signals whether new requests/connections are to be accepted.
|
229
|
+
bool is_serving_ ABSL_GUARDED_BY(mu_) = false;
|
230
|
+
// Signals whether the application has triggered shutdown.
|
231
|
+
bool shutdown_ ABSL_GUARDED_BY(mu_) = false;
|
232
|
+
std::map<ActiveConnection*, OrphanablePtr<ActiveConnection>> connections_
|
233
|
+
ABSL_GUARDED_BY(mu_);
|
234
|
+
grpc_closure tcp_server_shutdown_complete_ ABSL_GUARDED_BY(mu_);
|
235
|
+
grpc_closure* on_destroy_done_ ABSL_GUARDED_BY(mu_) = nullptr;
|
127
236
|
RefCountedPtr<channelz::ListenSocketNode> channelz_listen_socket_;
|
128
237
|
};
|
129
238
|
|
130
239
|
//
|
131
|
-
// Chttp2ServerListener::
|
240
|
+
// Chttp2ServerListener::ConfigFetcherWatcher
|
241
|
+
//
|
242
|
+
|
243
|
+
void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
|
244
|
+
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
245
|
+
connection_manager) {
|
246
|
+
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
247
|
+
connection_manager_to_destroy;
|
248
|
+
{
|
249
|
+
MutexLock lock(&listener_->channel_args_mu_);
|
250
|
+
connection_manager_to_destroy = listener_->connection_manager_;
|
251
|
+
listener_->connection_manager_ = std::move(connection_manager);
|
252
|
+
}
|
253
|
+
{
|
254
|
+
MutexLock lock(&listener_->mu_);
|
255
|
+
if (listener_->shutdown_) {
|
256
|
+
return;
|
257
|
+
}
|
258
|
+
listener_->is_serving_ = true;
|
259
|
+
if (listener_->started_) return;
|
260
|
+
}
|
261
|
+
int port_temp;
|
262
|
+
grpc_error* error = grpc_tcp_server_add_port(
|
263
|
+
listener_->tcp_server_, &listener_->resolved_address_, &port_temp);
|
264
|
+
if (error != GRPC_ERROR_NONE) {
|
265
|
+
GRPC_ERROR_UNREF(error);
|
266
|
+
gpr_log(GPR_ERROR, "Error adding port to server: %s",
|
267
|
+
grpc_error_string(error));
|
268
|
+
// TODO(yashykt): We wouldn't need to assert here if we bound to the
|
269
|
+
// port earlier during AddPort.
|
270
|
+
GPR_ASSERT(0);
|
271
|
+
}
|
272
|
+
listener_->StartListening();
|
273
|
+
{
|
274
|
+
MutexLock lock(&listener_->mu_);
|
275
|
+
listener_->started_ = true;
|
276
|
+
listener_->started_cv_.SignalAll();
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
void Chttp2ServerListener::ConfigFetcherWatcher::StopServing() {
|
281
|
+
std::map<ActiveConnection*, OrphanablePtr<ActiveConnection>> connections;
|
282
|
+
{
|
283
|
+
MutexLock lock(&listener_->mu_);
|
284
|
+
listener_->is_serving_ = false;
|
285
|
+
connections = std::move(listener_->connections_);
|
286
|
+
}
|
287
|
+
// Send GOAWAYs on the transports so that they disconnected when existing RPCs
|
288
|
+
// finish.
|
289
|
+
for (auto& connection : connections) {
|
290
|
+
connection.first->SendGoAway();
|
291
|
+
}
|
292
|
+
}
|
293
|
+
|
294
|
+
//
|
295
|
+
// Chttp2ServerListener::ActiveConnection::HandshakingState
|
132
296
|
//
|
133
297
|
|
134
298
|
grpc_millis GetConnectionDeadline(const grpc_channel_args* args) {
|
@@ -138,73 +302,96 @@ grpc_millis GetConnectionDeadline(const grpc_channel_args* args) {
|
|
138
302
|
return ExecCtx::Get()->Now() + timeout_ms;
|
139
303
|
}
|
140
304
|
|
141
|
-
Chttp2ServerListener::
|
142
|
-
|
143
|
-
grpc_tcp_server_acceptor* acceptor,
|
144
|
-
|
145
|
-
|
146
|
-
: listener_(listener),
|
305
|
+
Chttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState(
|
306
|
+
RefCountedPtr<ActiveConnection> connection_ref,
|
307
|
+
grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
|
308
|
+
grpc_channel_args* args)
|
309
|
+
: connection_(std::move(connection_ref)),
|
147
310
|
accepting_pollset_(accepting_pollset),
|
148
311
|
acceptor_(acceptor),
|
149
|
-
handshake_mgr_(
|
312
|
+
handshake_mgr_(MakeRefCounted<HandshakeManager>()),
|
150
313
|
deadline_(GetConnectionDeadline(args)),
|
151
314
|
interested_parties_(grpc_pollset_set_create()) {
|
152
315
|
grpc_pollset_set_add_pollset(interested_parties_, accepting_pollset_);
|
153
316
|
HandshakerRegistry::AddHandshakers(HANDSHAKER_SERVER, args,
|
154
317
|
interested_parties_, handshake_mgr_.get());
|
155
|
-
handshake_mgr_->DoHandshake(endpoint, args, deadline_, acceptor_,
|
156
|
-
OnHandshakeDone, this);
|
157
318
|
}
|
158
319
|
|
159
|
-
Chttp2ServerListener::
|
160
|
-
if (transport_ != nullptr) {
|
161
|
-
GRPC_CHTTP2_UNREF_TRANSPORT(transport_, "receive settings timeout");
|
162
|
-
}
|
320
|
+
Chttp2ServerListener::ActiveConnection::HandshakingState::~HandshakingState() {
|
163
321
|
grpc_pollset_set_del_pollset(interested_parties_, accepting_pollset_);
|
164
322
|
grpc_pollset_set_destroy(interested_parties_);
|
165
323
|
}
|
166
324
|
|
167
|
-
void Chttp2ServerListener::
|
168
|
-
|
169
|
-
|
325
|
+
void Chttp2ServerListener::ActiveConnection::HandshakingState::Orphan() {
|
326
|
+
{
|
327
|
+
MutexLock lock(&connection_->mu_);
|
328
|
+
if (handshake_mgr_ != nullptr) {
|
329
|
+
handshake_mgr_->Shutdown(
|
330
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Listener stopped serving."));
|
331
|
+
}
|
332
|
+
}
|
333
|
+
Unref();
|
334
|
+
}
|
335
|
+
|
336
|
+
void Chttp2ServerListener::ActiveConnection::HandshakingState::Start(
|
337
|
+
grpc_endpoint* endpoint, grpc_channel_args* args) {
|
338
|
+
Ref().release(); // Held by OnHandshakeDone
|
339
|
+
RefCountedPtr<HandshakeManager> handshake_mgr;
|
340
|
+
{
|
341
|
+
MutexLock lock(&connection_->mu_);
|
342
|
+
if (handshake_mgr_ == nullptr) return;
|
343
|
+
handshake_mgr = handshake_mgr_;
|
344
|
+
}
|
345
|
+
handshake_mgr->DoHandshake(endpoint, args, deadline_, acceptor_,
|
346
|
+
OnHandshakeDone, this);
|
347
|
+
}
|
348
|
+
|
349
|
+
void Chttp2ServerListener::ActiveConnection::HandshakingState::OnTimeout(
|
350
|
+
void* arg, grpc_error* error) {
|
351
|
+
HandshakingState* self = static_cast<HandshakingState*>(arg);
|
170
352
|
// Note that we may be called with GRPC_ERROR_NONE when the timer fires
|
171
353
|
// or with an error indicating that the timer system is being shut down.
|
172
354
|
if (error != GRPC_ERROR_CANCELLED) {
|
173
355
|
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
174
356
|
op->disconnect_with_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
175
357
|
"Did not receive HTTP/2 settings before handshake timeout");
|
176
|
-
|
358
|
+
grpc_chttp2_transport* transport = nullptr;
|
359
|
+
{
|
360
|
+
MutexLock lock(&self->connection_->mu_);
|
361
|
+
transport = self->connection_->transport_;
|
362
|
+
}
|
363
|
+
grpc_transport_perform_op(&transport->base, op);
|
177
364
|
}
|
178
365
|
self->Unref();
|
179
366
|
}
|
180
367
|
|
181
|
-
void Chttp2ServerListener::
|
182
|
-
void* arg, grpc_error* error) {
|
183
|
-
|
184
|
-
|
185
|
-
grpc_timer_cancel(&self->timer_);
|
186
|
-
}
|
368
|
+
void Chttp2ServerListener::ActiveConnection::HandshakingState::
|
369
|
+
OnReceiveSettings(void* arg, grpc_error* /* error */) {
|
370
|
+
HandshakingState* self = static_cast<HandshakingState*>(arg);
|
371
|
+
grpc_timer_cancel(&self->timer_);
|
187
372
|
self->Unref();
|
188
373
|
}
|
189
374
|
|
190
|
-
void Chttp2ServerListener::
|
191
|
-
|
375
|
+
void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
|
376
|
+
void* arg, grpc_error* error) {
|
192
377
|
auto* args = static_cast<HandshakerArgs*>(arg);
|
193
|
-
|
378
|
+
HandshakingState* self = static_cast<HandshakingState*>(args->user_data);
|
379
|
+
OrphanablePtr<HandshakingState> handshaking_state_ref;
|
380
|
+
RefCountedPtr<HandshakeManager> handshake_mgr;
|
381
|
+
bool cleanup_connection = false;
|
382
|
+
bool free_resource_quota = false;
|
383
|
+
grpc_resource_user* resource_user =
|
384
|
+
self->connection_->listener_->server_->default_resource_user();
|
194
385
|
{
|
195
|
-
MutexLock
|
196
|
-
|
197
|
-
self->listener_->server_->default_resource_user();
|
198
|
-
if (error != GRPC_ERROR_NONE || self->listener_->shutdown_) {
|
386
|
+
MutexLock connection_lock(&self->connection_->mu_);
|
387
|
+
if (error != GRPC_ERROR_NONE || self->connection_->shutdown_) {
|
199
388
|
const char* error_str = grpc_error_string(error);
|
200
389
|
gpr_log(GPR_DEBUG, "Handshaking failed: %s", error_str);
|
201
|
-
|
202
|
-
|
203
|
-
GRPC_RESOURCE_QUOTA_CHANNEL_SIZE);
|
204
|
-
}
|
390
|
+
cleanup_connection = true;
|
391
|
+
free_resource_quota = true;
|
205
392
|
if (error == GRPC_ERROR_NONE && args->endpoint != nullptr) {
|
206
|
-
// We were shut down after handshaking completed
|
207
|
-
// destroy the endpoint here.
|
393
|
+
// We were shut down or stopped serving after handshaking completed
|
394
|
+
// successfully, so destroy the endpoint here.
|
208
395
|
// TODO(ctiller): It is currently necessary to shutdown endpoints
|
209
396
|
// before destroying them, even if we know that there are no
|
210
397
|
// pending read/write callbacks. This should be fixed, at which
|
@@ -222,44 +409,167 @@ void Chttp2ServerListener::ConnectionState::OnHandshakeDone(void* arg,
|
|
222
409
|
if (args->endpoint != nullptr) {
|
223
410
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
224
411
|
args->args, args->endpoint, false, resource_user);
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
412
|
+
grpc_error* channel_init_err =
|
413
|
+
self->connection_->listener_->server_->SetupTransport(
|
414
|
+
transport, self->accepting_pollset_, args->args,
|
415
|
+
grpc_chttp2_transport_get_socket_node(transport),
|
416
|
+
resource_user);
|
417
|
+
if (channel_init_err == GRPC_ERROR_NONE) {
|
418
|
+
// Use notify_on_receive_settings callback to enforce the
|
419
|
+
// handshake deadline.
|
420
|
+
// Note: The reinterpret_cast<>s here are safe, because
|
421
|
+
// grpc_chttp2_transport is a C-style extension of
|
422
|
+
// grpc_transport, so this is morally equivalent of a
|
423
|
+
// static_cast<> to a derived class.
|
424
|
+
// TODO(roth): Change to static_cast<> when we C++-ify the
|
425
|
+
// transport API.
|
426
|
+
self->connection_->transport_ =
|
427
|
+
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
428
|
+
GRPC_CHTTP2_REF_TRANSPORT(self->connection_->transport_,
|
429
|
+
"ActiveConnection"); // Held by connection_
|
430
|
+
self->Ref().release(); // Held by OnReceiveSettings().
|
431
|
+
GRPC_CLOSURE_INIT(&self->on_receive_settings_, OnReceiveSettings,
|
432
|
+
self, grpc_schedule_on_exec_ctx);
|
433
|
+
// If the listener has been configured with a config fetcher, we need
|
434
|
+
// to watch on the transport being closed so that we can an updated
|
435
|
+
// list of active connections.
|
436
|
+
grpc_closure* on_close = nullptr;
|
437
|
+
if (self->connection_->listener_->config_fetcher_watcher_ !=
|
438
|
+
nullptr) {
|
439
|
+
// Refs helds by OnClose()
|
440
|
+
self->connection_->Ref().release();
|
441
|
+
on_close = &self->connection_->on_close_;
|
442
|
+
} else {
|
443
|
+
// Remove the connection from the connections_ map since OnClose()
|
444
|
+
// will not be invoked when a config fetcher is set.
|
445
|
+
cleanup_connection = true;
|
446
|
+
}
|
447
|
+
grpc_chttp2_transport_start_reading(transport, args->read_buffer,
|
448
|
+
&self->on_receive_settings_,
|
449
|
+
on_close);
|
450
|
+
grpc_channel_args_destroy(args->args);
|
451
|
+
self->Ref().release(); // Held by OnTimeout().
|
452
|
+
GRPC_CLOSURE_INIT(&self->on_timeout_, OnTimeout, self,
|
453
|
+
grpc_schedule_on_exec_ctx);
|
454
|
+
grpc_timer_init(&self->timer_, self->deadline_, &self->on_timeout_);
|
455
|
+
} else {
|
456
|
+
// Failed to create channel from transport. Clean up.
|
457
|
+
gpr_log(GPR_ERROR, "Failed to create channel: %s",
|
458
|
+
grpc_error_string(channel_init_err));
|
459
|
+
GRPC_ERROR_UNREF(channel_init_err);
|
460
|
+
grpc_transport_destroy(transport);
|
461
|
+
grpc_slice_buffer_destroy_internal(args->read_buffer);
|
462
|
+
gpr_free(args->read_buffer);
|
463
|
+
cleanup_connection = true;
|
464
|
+
free_resource_quota = true;
|
465
|
+
grpc_channel_args_destroy(args->args);
|
254
466
|
}
|
467
|
+
} else {
|
468
|
+
cleanup_connection = true;
|
469
|
+
free_resource_quota = true;
|
255
470
|
}
|
256
471
|
}
|
257
|
-
|
258
|
-
|
472
|
+
// Since the handshake manager is done, the connection no longer needs to
|
473
|
+
// shutdown the handshake when the listener needs to stop serving.
|
474
|
+
// Avoid calling the destructor of HandshakeManager and HandshakingState
|
475
|
+
// from within the critical region.
|
476
|
+
handshake_mgr = std::move(self->handshake_mgr_);
|
477
|
+
handshaking_state_ref = std::move(self->connection_->handshaking_state_);
|
259
478
|
}
|
260
|
-
self->handshake_mgr_.reset();
|
261
479
|
gpr_free(self->acceptor_);
|
262
|
-
|
480
|
+
OrphanablePtr<ActiveConnection> connection;
|
481
|
+
if (free_resource_quota && resource_user != nullptr) {
|
482
|
+
grpc_resource_user_free(resource_user, GRPC_RESOURCE_QUOTA_CHANNEL_SIZE);
|
483
|
+
}
|
484
|
+
if (cleanup_connection) {
|
485
|
+
MutexLock listener_lock(&self->connection_->listener_->mu_);
|
486
|
+
auto it = self->connection_->listener_->connections_.find(
|
487
|
+
self->connection_.get());
|
488
|
+
if (it != self->connection_->listener_->connections_.end()) {
|
489
|
+
connection = std::move(it->second);
|
490
|
+
self->connection_->listener_->connections_.erase(it);
|
491
|
+
}
|
492
|
+
}
|
493
|
+
self->Unref();
|
494
|
+
}
|
495
|
+
|
496
|
+
//
|
497
|
+
// Chttp2ServerListener::ActiveConnection
|
498
|
+
//
|
499
|
+
|
500
|
+
Chttp2ServerListener::ActiveConnection::ActiveConnection(
|
501
|
+
grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
|
502
|
+
grpc_channel_args* args)
|
503
|
+
: handshaking_state_(MakeOrphanable<HandshakingState>(
|
504
|
+
Ref(), accepting_pollset, acceptor, args)) {
|
505
|
+
GRPC_CLOSURE_INIT(&on_close_, ActiveConnection::OnClose, this,
|
506
|
+
grpc_schedule_on_exec_ctx);
|
507
|
+
}
|
508
|
+
|
509
|
+
Chttp2ServerListener::ActiveConnection::~ActiveConnection() {
|
510
|
+
if (transport_ != nullptr) {
|
511
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(transport_, "ActiveConnection");
|
512
|
+
}
|
513
|
+
}
|
514
|
+
|
515
|
+
void Chttp2ServerListener::ActiveConnection::Orphan() {
|
516
|
+
OrphanablePtr<HandshakingState> handshaking_state;
|
517
|
+
{
|
518
|
+
MutexLock lock(&mu_);
|
519
|
+
shutdown_ = true;
|
520
|
+
// Reset handshaking_state_ since we have been orphaned by the listener
|
521
|
+
// signaling that the listener has stopped serving.
|
522
|
+
handshaking_state = std::move(handshaking_state_);
|
523
|
+
}
|
524
|
+
Unref();
|
525
|
+
}
|
526
|
+
|
527
|
+
void Chttp2ServerListener::ActiveConnection::SendGoAway() {
|
528
|
+
grpc_chttp2_transport* transport = nullptr;
|
529
|
+
{
|
530
|
+
MutexLock lock(&mu_);
|
531
|
+
transport = transport_;
|
532
|
+
}
|
533
|
+
if (transport != nullptr) {
|
534
|
+
grpc_transport_op* op = grpc_make_transport_op(nullptr);
|
535
|
+
op->goaway_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
536
|
+
"Server is stopping to serve requests.");
|
537
|
+
grpc_transport_perform_op(&transport->base, op);
|
538
|
+
}
|
539
|
+
}
|
540
|
+
|
541
|
+
void Chttp2ServerListener::ActiveConnection::Start(
|
542
|
+
RefCountedPtr<Chttp2ServerListener> listener, grpc_endpoint* endpoint,
|
543
|
+
grpc_channel_args* args) {
|
544
|
+
RefCountedPtr<HandshakingState> handshaking_state_ref;
|
545
|
+
listener_ = std::move(listener);
|
546
|
+
{
|
547
|
+
MutexLock lock(&mu_);
|
548
|
+
if (shutdown_) return;
|
549
|
+
// Hold a ref to HandshakingState to allow starting the handshake outside
|
550
|
+
// the critical region.
|
551
|
+
handshaking_state_ref = handshaking_state_->Ref();
|
552
|
+
}
|
553
|
+
handshaking_state_ref->Start(endpoint, args);
|
554
|
+
}
|
555
|
+
|
556
|
+
void Chttp2ServerListener::ActiveConnection::OnClose(void* arg,
|
557
|
+
grpc_error* /* error */) {
|
558
|
+
ActiveConnection* self = static_cast<ActiveConnection*>(arg);
|
559
|
+
OrphanablePtr<ActiveConnection> connection;
|
560
|
+
{
|
561
|
+
MutexLock listener_lock(&self->listener_->mu_);
|
562
|
+
MutexLock connection_lock(&self->mu_);
|
563
|
+
// The node was already deleted from the connections_ list if the connection
|
564
|
+
// is shutdown.
|
565
|
+
if (!self->shutdown_) {
|
566
|
+
auto it = self->listener_->connections_.find(self);
|
567
|
+
if (it != self->listener_->connections_.end()) {
|
568
|
+
connection = std::move(it->second);
|
569
|
+
self->listener_->connections_.erase(it);
|
570
|
+
}
|
571
|
+
}
|
572
|
+
}
|
263
573
|
self->Unref();
|
264
574
|
}
|
265
575
|
|
@@ -267,72 +577,45 @@ void Chttp2ServerListener::ConnectionState::OnHandshakeDone(void* arg,
|
|
267
577
|
// Chttp2ServerListener
|
268
578
|
//
|
269
579
|
|
270
|
-
grpc_error* Chttp2ServerListener::Create(Server* server,
|
580
|
+
grpc_error* Chttp2ServerListener::Create(Server* server,
|
581
|
+
grpc_resolved_address* addr,
|
271
582
|
grpc_channel_args* args,
|
583
|
+
Chttp2ServerArgsModifier args_modifier,
|
272
584
|
int* port_num) {
|
273
|
-
std::vector<grpc_error*> error_list;
|
274
|
-
grpc_resolved_addresses* resolved = nullptr;
|
275
585
|
Chttp2ServerListener* listener = nullptr;
|
276
586
|
// The bulk of this method is inside of a lambda to make cleanup
|
277
587
|
// easier without using goto.
|
278
588
|
grpc_error* error = [&]() {
|
279
|
-
*port_num = -1;
|
280
|
-
/* resolve address */
|
281
|
-
grpc_error* error = grpc_blocking_resolve_address(addr, "https", &resolved);
|
282
|
-
if (error != GRPC_ERROR_NONE) return error;
|
283
589
|
// Create Chttp2ServerListener.
|
284
|
-
listener = new Chttp2ServerListener(server, args);
|
590
|
+
listener = new Chttp2ServerListener(server, args, args_modifier);
|
285
591
|
error = grpc_tcp_server_create(&listener->tcp_server_shutdown_complete_,
|
286
592
|
args, &listener->tcp_server_);
|
287
593
|
if (error != GRPC_ERROR_NONE) return error;
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
if (*port_num == -1) {
|
296
|
-
*port_num = port_temp;
|
297
|
-
} else {
|
298
|
-
GPR_ASSERT(*port_num == port_temp);
|
299
|
-
}
|
300
|
-
}
|
301
|
-
}
|
302
|
-
if (error_list.size() == resolved->naddrs) {
|
303
|
-
std::string msg =
|
304
|
-
absl::StrFormat("No address added out of total %" PRIuPTR " resolved",
|
305
|
-
resolved->naddrs);
|
306
|
-
return GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
307
|
-
msg.c_str(), error_list.data(), error_list.size());
|
308
|
-
} else if (!error_list.empty()) {
|
309
|
-
std::string msg = absl::StrFormat(
|
310
|
-
"Only %" PRIuPTR " addresses added out of total %" PRIuPTR
|
311
|
-
" resolved",
|
312
|
-
resolved->naddrs - error_list.size(), resolved->naddrs);
|
313
|
-
error = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
314
|
-
msg.c_str(), error_list.data(), error_list.size());
|
315
|
-
gpr_log(GPR_INFO, "WARNING: %s", grpc_error_string(error));
|
316
|
-
GRPC_ERROR_UNREF(error);
|
317
|
-
/* we managed to bind some addresses: continue */
|
594
|
+
if (server->config_fetcher() != nullptr) {
|
595
|
+
listener->resolved_address_ = *addr;
|
596
|
+
// TODO(yashykt): Consider binding so as to be able to return the port
|
597
|
+
// number.
|
598
|
+
} else {
|
599
|
+
error = grpc_tcp_server_add_port(listener->tcp_server_, addr, port_num);
|
600
|
+
if (error != GRPC_ERROR_NONE) return error;
|
318
601
|
}
|
319
602
|
// Create channelz node.
|
320
603
|
if (grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_CHANNELZ,
|
321
604
|
GRPC_ENABLE_CHANNELZ_DEFAULT)) {
|
605
|
+
std::string string_address = grpc_sockaddr_to_uri(addr);
|
322
606
|
listener->channelz_listen_socket_ =
|
323
607
|
MakeRefCounted<channelz::ListenSocketNode>(
|
324
|
-
|
608
|
+
string_address.c_str(),
|
609
|
+
absl::StrFormat("chttp2 listener %s", string_address.c_str()));
|
325
610
|
}
|
326
|
-
|
611
|
+
// Register with the server only upon success
|
327
612
|
server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
|
328
613
|
return GRPC_ERROR_NONE;
|
329
614
|
}();
|
330
|
-
if (resolved != nullptr) {
|
331
|
-
grpc_resolved_addresses_destroy(resolved);
|
332
|
-
}
|
333
615
|
if (error != GRPC_ERROR_NONE) {
|
334
616
|
if (listener != nullptr) {
|
335
617
|
if (listener->tcp_server_ != nullptr) {
|
618
|
+
// listener is deleted when tcp_server_ is shutdown.
|
336
619
|
grpc_tcp_server_unref(listener->tcp_server_);
|
337
620
|
} else {
|
338
621
|
delete listener;
|
@@ -340,18 +623,15 @@ grpc_error* Chttp2ServerListener::Create(Server* server, const char* addr,
|
|
340
623
|
} else {
|
341
624
|
grpc_channel_args_destroy(args);
|
342
625
|
}
|
343
|
-
*port_num = 0;
|
344
|
-
}
|
345
|
-
for (grpc_error* error : error_list) {
|
346
|
-
GRPC_ERROR_UNREF(error);
|
347
626
|
}
|
348
627
|
return error;
|
349
628
|
}
|
350
629
|
|
351
|
-
grpc_error* Chttp2ServerListener::CreateWithAcceptor(
|
352
|
-
|
353
|
-
|
354
|
-
Chttp2ServerListener* listener =
|
630
|
+
grpc_error* Chttp2ServerListener::CreateWithAcceptor(
|
631
|
+
Server* server, const char* name, grpc_channel_args* args,
|
632
|
+
Chttp2ServerArgsModifier args_modifier) {
|
633
|
+
Chttp2ServerListener* listener =
|
634
|
+
new Chttp2ServerListener(server, args, args_modifier);
|
355
635
|
grpc_error* error = grpc_tcp_server_create(
|
356
636
|
&listener->tcp_server_shutdown_complete_, args, &listener->tcp_server_);
|
357
637
|
if (error != GRPC_ERROR_NONE) {
|
@@ -366,97 +646,170 @@ grpc_error* Chttp2ServerListener::CreateWithAcceptor(Server* server,
|
|
366
646
|
return GRPC_ERROR_NONE;
|
367
647
|
}
|
368
648
|
|
369
|
-
Chttp2ServerListener::Chttp2ServerListener(
|
370
|
-
|
371
|
-
|
649
|
+
Chttp2ServerListener::Chttp2ServerListener(
|
650
|
+
Server* server, grpc_channel_args* args,
|
651
|
+
Chttp2ServerArgsModifier args_modifier)
|
652
|
+
: server_(server), args_modifier_(args_modifier), args_(args) {
|
372
653
|
GRPC_CLOSURE_INIT(&tcp_server_shutdown_complete_, TcpServerShutdownComplete,
|
373
654
|
this, grpc_schedule_on_exec_ctx);
|
374
655
|
}
|
375
656
|
|
376
657
|
Chttp2ServerListener::~Chttp2ServerListener() {
|
658
|
+
// Flush queued work before destroying handshaker factory, since that
|
659
|
+
// may do a synchronous unref.
|
660
|
+
ExecCtx::Get()->Flush();
|
661
|
+
if (on_destroy_done_ != nullptr) {
|
662
|
+
ExecCtx::Run(DEBUG_LOCATION, on_destroy_done_, GRPC_ERROR_NONE);
|
663
|
+
ExecCtx::Get()->Flush();
|
664
|
+
}
|
377
665
|
grpc_channel_args_destroy(args_);
|
378
666
|
}
|
379
667
|
|
380
668
|
/* Server callback: start listening on our ports */
|
381
|
-
void Chttp2ServerListener::Start(
|
382
|
-
|
383
|
-
{
|
384
|
-
|
385
|
-
|
669
|
+
void Chttp2ServerListener::Start(
|
670
|
+
Server* /*server*/, const std::vector<grpc_pollset*>* /* pollsets */) {
|
671
|
+
if (server_->config_fetcher() != nullptr) {
|
672
|
+
grpc_channel_args* args = nullptr;
|
673
|
+
auto watcher = absl::make_unique<ConfigFetcherWatcher>(Ref());
|
674
|
+
config_fetcher_watcher_ = watcher.get();
|
675
|
+
{
|
676
|
+
MutexLock lock(&channel_args_mu_);
|
677
|
+
args = grpc_channel_args_copy(args_);
|
678
|
+
}
|
679
|
+
server_->config_fetcher()->StartWatch(
|
680
|
+
grpc_sockaddr_to_string(&resolved_address_, false), args,
|
681
|
+
std::move(watcher));
|
682
|
+
} else {
|
683
|
+
{
|
684
|
+
MutexLock lock(&mu_);
|
685
|
+
started_ = true;
|
686
|
+
is_serving_ = true;
|
687
|
+
}
|
688
|
+
StartListening();
|
386
689
|
}
|
387
|
-
grpc_tcp_server_start(tcp_server_, pollsets, OnAccept, this);
|
388
690
|
}
|
389
691
|
|
390
|
-
void Chttp2ServerListener::
|
391
|
-
|
392
|
-
on_destroy_done_ = on_destroy_done;
|
692
|
+
void Chttp2ServerListener::StartListening() {
|
693
|
+
grpc_tcp_server_start(tcp_server_, &server_->pollsets(), OnAccept, this);
|
393
694
|
}
|
394
695
|
|
395
|
-
|
696
|
+
void Chttp2ServerListener::SetOnDestroyDone(grpc_closure* on_destroy_done) {
|
396
697
|
MutexLock lock(&mu_);
|
397
|
-
|
398
|
-
grpc_resource_user* resource_user = server_->default_resource_user();
|
399
|
-
if (resource_user != nullptr &&
|
400
|
-
!grpc_resource_user_safe_alloc(resource_user,
|
401
|
-
GRPC_RESOURCE_QUOTA_CHANNEL_SIZE)) {
|
402
|
-
gpr_log(GPR_ERROR,
|
403
|
-
"Memory quota exhausted, rejecting connection, no handshaking.");
|
404
|
-
return nullptr;
|
405
|
-
}
|
406
|
-
auto handshake_mgr = MakeRefCounted<HandshakeManager>();
|
407
|
-
handshake_mgr->AddToPendingMgrList(&pending_handshake_mgrs_);
|
408
|
-
grpc_tcp_server_ref(tcp_server_); // Ref held by ConnectionState.
|
409
|
-
return handshake_mgr;
|
698
|
+
on_destroy_done_ = on_destroy_done;
|
410
699
|
}
|
411
700
|
|
412
701
|
void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
413
702
|
grpc_pollset* accepting_pollset,
|
414
703
|
grpc_tcp_server_acceptor* acceptor) {
|
415
704
|
Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
705
|
+
grpc_channel_args* args = nullptr;
|
706
|
+
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
707
|
+
connection_manager;
|
708
|
+
{
|
709
|
+
MutexLock lock(&self->channel_args_mu_);
|
710
|
+
args = grpc_channel_args_copy(self->args_);
|
711
|
+
connection_manager = self->connection_manager_;
|
712
|
+
}
|
713
|
+
auto endpoint_cleanup = [&](grpc_error* error) {
|
714
|
+
grpc_endpoint_shutdown(tcp, error);
|
420
715
|
grpc_endpoint_destroy(tcp);
|
421
716
|
gpr_free(acceptor);
|
422
|
-
|
717
|
+
};
|
718
|
+
if (self->server_->config_fetcher() != nullptr) {
|
719
|
+
if (connection_manager == nullptr) {
|
720
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
721
|
+
"No ConnectionManager configured. Closing connection.");
|
722
|
+
endpoint_cleanup(error);
|
723
|
+
grpc_channel_args_destroy(args);
|
724
|
+
return;
|
725
|
+
}
|
726
|
+
// TODO(yashykt): Maybe combine the following two arg modifiers into a
|
727
|
+
// single one.
|
728
|
+
absl::StatusOr<grpc_channel_args*> args_result =
|
729
|
+
connection_manager->UpdateChannelArgsForConnection(args, tcp);
|
730
|
+
if (!args_result.ok()) {
|
731
|
+
gpr_log(GPR_DEBUG, "Closing connection: %s",
|
732
|
+
args_result.status().ToString().c_str());
|
733
|
+
endpoint_cleanup(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
734
|
+
args_result.status().ToString().c_str()));
|
735
|
+
return;
|
736
|
+
}
|
737
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
738
|
+
args = self->args_modifier_(*args_result, &error);
|
739
|
+
if (error != GRPC_ERROR_NONE) {
|
740
|
+
gpr_log(GPR_DEBUG, "Closing connection: %s", grpc_error_string(error));
|
741
|
+
endpoint_cleanup(error);
|
742
|
+
grpc_channel_args_destroy(args);
|
743
|
+
return;
|
744
|
+
}
|
423
745
|
}
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
grpc_error* error) {
|
431
|
-
Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
|
432
|
-
/* ensure all threads have unlocked */
|
433
|
-
grpc_closure* destroy_done = nullptr;
|
746
|
+
auto connection =
|
747
|
+
MakeOrphanable<ActiveConnection>(accepting_pollset, acceptor, args);
|
748
|
+
// Hold a ref to connection to allow starting handshake outside the
|
749
|
+
// critical region
|
750
|
+
RefCountedPtr<ActiveConnection> connection_ref = connection->Ref();
|
751
|
+
RefCountedPtr<Chttp2ServerListener> listener_ref;
|
434
752
|
{
|
435
753
|
MutexLock lock(&self->mu_);
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
754
|
+
// Shutdown the the connection if listener's stopped serving.
|
755
|
+
if (!self->shutdown_ && self->is_serving_) {
|
756
|
+
grpc_resource_user* resource_user =
|
757
|
+
self->server_->default_resource_user();
|
758
|
+
if (resource_user != nullptr &&
|
759
|
+
!grpc_resource_user_safe_alloc(resource_user,
|
760
|
+
GRPC_RESOURCE_QUOTA_CHANNEL_SIZE)) {
|
761
|
+
gpr_log(
|
762
|
+
GPR_ERROR,
|
763
|
+
"Memory quota exhausted, rejecting connection, no handshaking.");
|
764
|
+
} else {
|
765
|
+
// This ref needs to be taken in the critical region after having made
|
766
|
+
// sure that the listener has not been Orphaned, so as to avoid
|
767
|
+
// heap-use-after-free issues where `Ref()` is invoked when the ref of
|
768
|
+
// tcp_server_ has already reached 0. (Ref() implementation of
|
769
|
+
// Chttp2ServerListener is grpc_tcp_server_ref().)
|
770
|
+
listener_ref = self->Ref();
|
771
|
+
self->connections_.emplace(connection.get(), std::move(connection));
|
772
|
+
}
|
440
773
|
}
|
441
|
-
self->channelz_listen_socket_.reset();
|
442
774
|
}
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
ExecCtx::Run(DEBUG_LOCATION, destroy_done, GRPC_ERROR_REF(error));
|
448
|
-
ExecCtx::Get()->Flush();
|
775
|
+
if (connection != nullptr) {
|
776
|
+
endpoint_cleanup(GRPC_ERROR_NONE);
|
777
|
+
} else {
|
778
|
+
connection_ref->Start(std::move(listener_ref), tcp, args);
|
449
779
|
}
|
780
|
+
grpc_channel_args_destroy(args);
|
781
|
+
}
|
782
|
+
|
783
|
+
void Chttp2ServerListener::TcpServerShutdownComplete(void* arg,
|
784
|
+
grpc_error* error) {
|
785
|
+
Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
|
786
|
+
self->channelz_listen_socket_.reset();
|
787
|
+
GRPC_ERROR_UNREF(error);
|
450
788
|
delete self;
|
451
789
|
}
|
452
790
|
|
453
791
|
/* Server callback: destroy the tcp listener (so we don't generate further
|
454
792
|
callbacks) */
|
455
793
|
void Chttp2ServerListener::Orphan() {
|
794
|
+
// Cancel the watch before shutting down so as to avoid holding a ref to the
|
795
|
+
// listener in the watcher.
|
796
|
+
if (config_fetcher_watcher_ != nullptr) {
|
797
|
+
server_->config_fetcher()->CancelWatch(config_fetcher_watcher_);
|
798
|
+
}
|
799
|
+
std::map<ActiveConnection*, OrphanablePtr<ActiveConnection>> connections;
|
456
800
|
grpc_tcp_server* tcp_server;
|
457
801
|
{
|
458
802
|
MutexLock lock(&mu_);
|
459
803
|
shutdown_ = true;
|
804
|
+
is_serving_ = false;
|
805
|
+
// Orphan the connections so that they can start cleaning up.
|
806
|
+
connections = std::move(connections_);
|
807
|
+
// If the listener is currently set to be serving but has not been started
|
808
|
+
// yet, it means that `grpc_tcp_server_start` is in progress. Wait for the
|
809
|
+
// operation to finish to avoid causing races.
|
810
|
+
while (is_serving_ && !started_) {
|
811
|
+
started_cv_.Wait(&mu_);
|
812
|
+
}
|
460
813
|
tcp_server = tcp_server_;
|
461
814
|
}
|
462
815
|
grpc_tcp_server_shutdown_listeners(tcp_server);
|
@@ -470,12 +823,77 @@ void Chttp2ServerListener::Orphan() {
|
|
470
823
|
//
|
471
824
|
|
472
825
|
grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
|
473
|
-
grpc_channel_args* args,
|
826
|
+
grpc_channel_args* args,
|
827
|
+
Chttp2ServerArgsModifier args_modifier,
|
828
|
+
int* port_num) {
|
474
829
|
if (strncmp(addr, "external:", 9) == 0) {
|
475
|
-
return grpc_core::Chttp2ServerListener::CreateWithAcceptor(
|
476
|
-
|
830
|
+
return grpc_core::Chttp2ServerListener::CreateWithAcceptor(
|
831
|
+
server, addr, args, args_modifier);
|
832
|
+
}
|
833
|
+
*port_num = -1;
|
834
|
+
grpc_resolved_addresses* resolved = nullptr;
|
835
|
+
std::vector<grpc_error*> error_list;
|
836
|
+
// Using lambda to avoid use of goto.
|
837
|
+
grpc_error* error = [&]() {
|
838
|
+
if (absl::StartsWith(addr, kUnixUriPrefix)) {
|
839
|
+
error = grpc_resolve_unix_domain_address(
|
840
|
+
addr + sizeof(kUnixUriPrefix) - 1, &resolved);
|
841
|
+
} else if (absl::StartsWith(addr, kUnixAbstractUriPrefix)) {
|
842
|
+
error = grpc_resolve_unix_abstract_domain_address(
|
843
|
+
addr + sizeof(kUnixAbstractUriPrefix) - 1, &resolved);
|
844
|
+
} else {
|
845
|
+
error = grpc_blocking_resolve_address(addr, "https", &resolved);
|
846
|
+
}
|
847
|
+
if (error != GRPC_ERROR_NONE) return error;
|
848
|
+
// Create a listener for each resolved address.
|
849
|
+
for (size_t i = 0; i < resolved->naddrs; i++) {
|
850
|
+
// If address has a wildcard port (0), use the same port as a previous
|
851
|
+
// listener.
|
852
|
+
if (*port_num != -1 && grpc_sockaddr_get_port(&resolved->addrs[i]) == 0) {
|
853
|
+
grpc_sockaddr_set_port(&resolved->addrs[i], *port_num);
|
854
|
+
}
|
855
|
+
int port_temp = -1;
|
856
|
+
error = grpc_core::Chttp2ServerListener::Create(
|
857
|
+
server, &resolved->addrs[i], grpc_channel_args_copy(args),
|
858
|
+
args_modifier, &port_temp);
|
859
|
+
if (error != GRPC_ERROR_NONE) {
|
860
|
+
error_list.push_back(error);
|
861
|
+
} else {
|
862
|
+
if (*port_num == -1) {
|
863
|
+
*port_num = port_temp;
|
864
|
+
} else {
|
865
|
+
GPR_ASSERT(*port_num == port_temp);
|
866
|
+
}
|
867
|
+
}
|
868
|
+
}
|
869
|
+
if (error_list.size() == resolved->naddrs) {
|
870
|
+
std::string msg =
|
871
|
+
absl::StrFormat("No address added out of total %" PRIuPTR " resolved",
|
872
|
+
resolved->naddrs);
|
873
|
+
return GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
874
|
+
msg.c_str(), error_list.data(), error_list.size());
|
875
|
+
} else if (!error_list.empty()) {
|
876
|
+
std::string msg = absl::StrFormat(
|
877
|
+
"Only %" PRIuPTR " addresses added out of total %" PRIuPTR
|
878
|
+
" resolved",
|
879
|
+
resolved->naddrs - error_list.size(), resolved->naddrs);
|
880
|
+
error = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
881
|
+
msg.c_str(), error_list.data(), error_list.size());
|
882
|
+
gpr_log(GPR_INFO, "WARNING: %s", grpc_error_string(error));
|
883
|
+
GRPC_ERROR_UNREF(error);
|
884
|
+
// we managed to bind some addresses: continue without error
|
885
|
+
}
|
886
|
+
return GRPC_ERROR_NONE;
|
887
|
+
}(); // lambda end
|
888
|
+
for (grpc_error* error : error_list) {
|
889
|
+
GRPC_ERROR_UNREF(error);
|
477
890
|
}
|
478
|
-
|
891
|
+
grpc_channel_args_destroy(args);
|
892
|
+
if (resolved != nullptr) {
|
893
|
+
grpc_resolved_addresses_destroy(resolved);
|
894
|
+
}
|
895
|
+
if (error != GRPC_ERROR_NONE) *port_num = 0;
|
896
|
+
return error;
|
479
897
|
}
|
480
898
|
|
481
899
|
} // namespace grpc_core
|