grpc 1.31.0.pre2 → 1.34.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1030 -16151
- data/include/grpc/grpc.h +1 -7
- data/include/grpc/grpc_security.h +196 -186
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +9 -7
- data/include/grpc/impl/codegen/port_platform.h +28 -56
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +243 -188
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +36 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +10 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +178 -162
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- 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/pick_first/pick_first.cc +23 -17
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +79 -30
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -9
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -34
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +208 -130
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +299 -328
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +21 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +661 -58
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +18 -61
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +50 -48
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +7 -11
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +44 -21
- data/src/core/ext/filters/client_channel/service_config.cc +18 -13
- data/src/core/ext/filters/client_channel/service_config.h +8 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +82 -38
- data/src/core/ext/filters/client_channel/subchannel.h +18 -6
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +36 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -311
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -31
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -7
- data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
- 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 +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -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 +558 -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 +133 -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 +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -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 +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -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 +55 -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 +110 -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 +190 -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 +185 -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 +62 -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/route/v3/route.upbdefs.c +97 -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 +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -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 +64 -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/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -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 +48 -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 +166 -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 +105 -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 +249 -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 +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -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 +82 -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 +83 -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 +86 -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/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/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 +72 -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/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -9
- 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 +38 -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 +39 -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 +39 -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/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +107 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +265 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +104 -0
- data/src/core/ext/xds/xds_api.cc +2119 -0
- data/src/core/ext/xds/xds_api.h +438 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +208 -19
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -10
- data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
- data/src/core/ext/xds/xds_certificate_provider.h +74 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +636 -847
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +120 -98
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +38 -10
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.cc +24 -60
- data/src/core/lib/channel/channelz.h +14 -22
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- 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_data.cc +1 -0
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log_linux.cc +17 -3
- data/src/core/lib/gpr/log_posix.cc +13 -1
- data/src/core/lib/gpr/log_windows.cc +16 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/string.cc +1 -1
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +158 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +36 -36
- data/src/core/lib/http/parser.cc +46 -25
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
- data/src/core/lib/iomgr/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +3 -3
- data/src/core/lib/iomgr/iomgr.cc +0 -10
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +85 -7
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +23 -3
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
- data/src/core/lib/iomgr/tcp_custom.cc +32 -16
- data/src/core/lib/iomgr/tcp_posix.cc +34 -15
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
- 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_pipe.cc +2 -2
- data/src/core/lib/json/json.h +2 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +44 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +57 -0
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +351 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +218 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +74 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -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 +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +9 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/security/transport/security_handshaker.cc +1 -1
- 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 +2 -2
- data/src/core/lib/surface/call.cc +21 -20
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +37 -51
- data/src/core/lib/surface/channel.h +18 -3
- data/src/core/lib/surface/completion_queue.cc +17 -278
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/init.cc +27 -12
- data/src/core/lib/surface/server.cc +1069 -1245
- data/src/core/lib/surface/server.h +363 -87
- 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 +38 -0
- data/src/core/lib/transport/authority_override.h +34 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +22 -10
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/metadata.cc +11 -1
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- 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 -1
- data/src/core/lib/uri/uri_parser.cc +23 -21
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +26 -3
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +16 -9
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +43 -31
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +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/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +479 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +56 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +118 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
- 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 +54 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
- 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/ssl.h +103 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
- 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 +18 -18
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +49 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +77 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +57 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +140 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/def.c +2169 -0
- data/third_party/upb/upb/def.h +330 -0
- data/third_party/upb/upb/def.hpp +525 -0
- data/third_party/upb/upb/encode.c +2 -2
- data/third_party/upb/upb/msg.h +2 -2
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- data/third_party/upb/upb/upb.c +16 -14
- data/third_party/upb/upb/upb.h +26 -0
- data/third_party/upb/upb/upb.hpp +2 -0
- metadata +489 -161
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1143
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -24,12 +24,13 @@
|
|
24
24
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
|
26
26
|
#include "src/core/lib/iomgr/error.h"
|
27
|
+
#include "src/core/lib/surface/server.h"
|
27
28
|
|
28
29
|
namespace grpc_core {
|
29
30
|
|
30
31
|
/// Adds a port to \a server. Sets \a port_num to the port number.
|
31
32
|
/// Takes ownership of \a args.
|
32
|
-
grpc_error* Chttp2ServerAddPort(
|
33
|
+
grpc_error* Chttp2ServerAddPort(Server* server, const char* addr,
|
33
34
|
grpc_channel_args* args, int* port_num);
|
34
35
|
|
35
36
|
} // namespace grpc_core
|
@@ -33,8 +33,8 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
|
|
33
33
|
GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
|
34
34
|
(server, addr));
|
35
35
|
grpc_error* err = grpc_core::Chttp2ServerAddPort(
|
36
|
-
server, addr,
|
37
|
-
grpc_channel_args_copy(
|
36
|
+
server->core_server.get(), addr,
|
37
|
+
grpc_channel_args_copy(server->core_server->channel_args()), &port_num);
|
38
38
|
if (err != GRPC_ERROR_NONE) {
|
39
39
|
const char* msg = grpc_error_string(err);
|
40
40
|
gpr_log(GPR_ERROR, "%s", msg);
|
@@ -41,21 +41,21 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
41
41
|
GPR_ASSERT(reserved == nullptr);
|
42
42
|
|
43
43
|
grpc_core::ExecCtx exec_ctx;
|
44
|
+
grpc_core::Server* core_server = server->core_server.get();
|
44
45
|
|
46
|
+
const grpc_channel_args* server_args = core_server->channel_args();
|
45
47
|
std::string name = absl::StrCat("fd:", fd);
|
46
|
-
grpc_endpoint* server_endpoint =
|
47
|
-
|
48
|
-
grpc_server_get_channel_args(server), name.c_str());
|
48
|
+
grpc_endpoint* server_endpoint = grpc_tcp_create(
|
49
|
+
grpc_fd_create(fd, name.c_str(), true), server_args, name.c_str());
|
49
50
|
|
50
|
-
const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
|
51
51
|
grpc_transport* transport = grpc_create_chttp2_transport(
|
52
52
|
server_args, server_endpoint, false /* is_client */);
|
53
53
|
|
54
|
-
for (grpc_pollset* pollset :
|
54
|
+
for (grpc_pollset* pollset : core_server->pollsets()) {
|
55
55
|
grpc_endpoint_add_to_pollset(server_endpoint, pollset);
|
56
56
|
}
|
57
57
|
|
58
|
-
|
58
|
+
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
|
59
59
|
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr);
|
60
60
|
}
|
61
61
|
|
@@ -68,10 +68,11 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
|
|
68
68
|
args_to_add[0] = grpc_server_credentials_to_arg(creds);
|
69
69
|
args_to_add[1] = grpc_security_connector_to_arg(sc.get());
|
70
70
|
args =
|
71
|
-
grpc_channel_args_copy_and_add(
|
71
|
+
grpc_channel_args_copy_and_add(server->core_server->channel_args(),
|
72
72
|
args_to_add, GPR_ARRAY_SIZE(args_to_add));
|
73
73
|
// Add server port.
|
74
|
-
err = grpc_core::Chttp2ServerAddPort(server, addr, args,
|
74
|
+
err = grpc_core::Chttp2ServerAddPort(server->core_server.get(), addr, args,
|
75
|
+
&port_num);
|
75
76
|
done:
|
76
77
|
sc.reset(DEBUG_LOCATION, "server");
|
77
78
|
|
@@ -66,16 +66,16 @@ static bool input_is_valid(const uint8_t* input_ptr, size_t length) {
|
|
66
66
|
return true;
|
67
67
|
}
|
68
68
|
|
69
|
-
#define COMPOSE_OUTPUT_BYTE_0(input_ptr)
|
70
|
-
(uint8_t)((decode_table[input_ptr[0]] << 2) | \
|
71
|
-
(decode_table[input_ptr[1]] >> 4))
|
69
|
+
#define COMPOSE_OUTPUT_BYTE_0(input_ptr) \
|
70
|
+
(uint8_t)((decode_table[(input_ptr)[0]] << 2) | \
|
71
|
+
(decode_table[(input_ptr)[1]] >> 4))
|
72
72
|
|
73
|
-
#define COMPOSE_OUTPUT_BYTE_1(input_ptr)
|
74
|
-
(uint8_t)((decode_table[input_ptr[1]] << 4) | \
|
75
|
-
(decode_table[input_ptr[2]] >> 2))
|
73
|
+
#define COMPOSE_OUTPUT_BYTE_1(input_ptr) \
|
74
|
+
(uint8_t)((decode_table[(input_ptr)[1]] << 4) | \
|
75
|
+
(decode_table[(input_ptr)[2]] >> 2))
|
76
76
|
|
77
77
|
#define COMPOSE_OUTPUT_BYTE_2(input_ptr) \
|
78
|
-
(uint8_t)((decode_table[input_ptr[2]] << 6) | decode_table[input_ptr[3]])
|
78
|
+
(uint8_t)((decode_table[(input_ptr)[2]] << 6) | decode_table[(input_ptr)[3]])
|
79
79
|
|
80
80
|
// By RFC 4648, if the length of the encoded string without padding is 4n+r,
|
81
81
|
// the length of decoded string is: 1) 3n if r = 0, 2) 3n + 1 if r = 2, 3, or
|
@@ -1,25 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2018 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
21
19
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
22
20
|
|
21
|
+
#include "absl/strings/str_format.h"
|
22
|
+
|
23
23
|
#include <grpc/slice_buffer.h>
|
24
24
|
#include <grpc/support/alloc.h>
|
25
25
|
#include <grpc/support/log.h>
|
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <stdio.h>
|
32
32
|
#include <string.h>
|
33
33
|
|
34
|
-
#include "absl/strings/str_format.h"
|
35
34
|
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
36
35
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
37
36
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
@@ -70,7 +69,6 @@
|
|
70
69
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
71
70
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
72
71
|
|
73
|
-
#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
74
72
|
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
75
73
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
76
74
|
#define DEFAULT_MAX_PING_STRIKES 2
|
@@ -90,8 +88,6 @@ static bool g_default_client_keepalive_permit_without_calls =
|
|
90
88
|
static bool g_default_server_keepalive_permit_without_calls =
|
91
89
|
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
|
92
90
|
|
93
|
-
static int g_default_min_sent_ping_interval_without_data_ms =
|
94
|
-
DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
|
95
91
|
static int g_default_min_recv_ping_interval_without_data_ms =
|
96
92
|
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
|
97
93
|
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
@@ -103,7 +99,7 @@ grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
|
103
99
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
104
100
|
"chttp2_refcount");
|
105
101
|
|
106
|
-
|
102
|
+
// forward declarations of various callbacks that we'll build closures around
|
107
103
|
static void write_action_begin_locked(void* t, grpc_error* error);
|
108
104
|
static void write_action(void* t, grpc_error* error);
|
109
105
|
static void write_action_end(void* t, grpc_error* error);
|
@@ -115,18 +111,19 @@ static void continue_read_action_locked(grpc_chttp2_transport* t);
|
|
115
111
|
|
116
112
|
static void complete_fetch(void* gs, grpc_error* error);
|
117
113
|
static void complete_fetch_locked(void* gs, grpc_error* error);
|
118
|
-
|
114
|
+
// Set a transport level setting, and push it to our peer
|
119
115
|
static void queue_setting_update(grpc_chttp2_transport* t,
|
120
116
|
grpc_chttp2_setting_id id, uint32_t value);
|
121
117
|
|
122
118
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
123
119
|
grpc_error* error);
|
124
120
|
|
125
|
-
|
121
|
+
// Start new streams that have been created if we can
|
126
122
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
127
123
|
|
128
124
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
129
125
|
grpc_connectivity_state state,
|
126
|
+
const absl::Status& status,
|
130
127
|
const char* reason);
|
131
128
|
|
132
129
|
static void benign_reclaimer(void* t, grpc_error* error);
|
@@ -140,7 +137,6 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
|
140
137
|
static void close_transport_locked(grpc_chttp2_transport* t, grpc_error* error);
|
141
138
|
static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error);
|
142
139
|
|
143
|
-
static void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
|
144
140
|
static void start_bdp_ping(void* tp, grpc_error* error);
|
145
141
|
static void finish_bdp_ping(void* tp, grpc_error* error);
|
146
142
|
static void start_bdp_ping_locked(void* tp, grpc_error* error);
|
@@ -154,7 +150,7 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
154
150
|
grpc_closure* on_complete);
|
155
151
|
static void retry_initiate_ping_locked(void* tp, grpc_error* error);
|
156
152
|
|
157
|
-
|
153
|
+
// keepalive-relevant functions
|
158
154
|
static void init_keepalive_ping(void* arg, grpc_error* error);
|
159
155
|
static void init_keepalive_ping_locked(void* arg, grpc_error* error);
|
160
156
|
static void start_keepalive_ping(void* arg, grpc_error* error);
|
@@ -170,9 +166,9 @@ static void reset_byte_stream(void* arg, grpc_error* error);
|
|
170
166
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
171
167
|
bool g_flow_control_enabled = true;
|
172
168
|
|
173
|
-
|
174
|
-
|
175
|
-
|
169
|
+
//
|
170
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
171
|
+
//
|
176
172
|
|
177
173
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
174
|
size_t i;
|
@@ -226,12 +222,11 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
222
|
|
227
223
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
224
|
gpr_free(ping_acks);
|
229
|
-
gpr_free(peer_string);
|
230
225
|
}
|
231
226
|
|
232
227
|
static const grpc_transport_vtable* get_vtable(void);
|
233
228
|
|
234
|
-
|
229
|
+
// Returns whether bdp is enabled
|
235
230
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
231
|
const grpc_channel_args* channel_args,
|
237
232
|
bool is_client) {
|
@@ -273,15 +268,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
268
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
269
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
270
|
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
|
276
|
-
} else if (0 ==
|
277
|
-
strcmp(channel_args->args[i].key,
|
278
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
279
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
280
|
-
grpc_channel_arg_get_integer(
|
281
|
-
&channel_args->args[i],
|
282
|
-
grpc_integer_options{
|
283
|
-
g_default_min_sent_ping_interval_without_data_ms, 0,
|
284
|
-
INT_MAX});
|
285
271
|
} else if (0 ==
|
286
272
|
strcmp(channel_args->args[i].key,
|
287
273
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
@@ -378,11 +364,9 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
364
|
}
|
379
365
|
}
|
380
366
|
if (channelz_enabled) {
|
381
|
-
// TODO(ncteisen): add an API to endpoint to query for local addr, and pass
|
382
|
-
// it in here, so SocketNode knows its own address.
|
383
367
|
t->channelz_socket =
|
384
368
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
369
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
386
370
|
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string));
|
387
371
|
}
|
388
372
|
return enable_bdp;
|
@@ -412,8 +396,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
396
|
|
413
397
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
398
|
t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
|
415
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
416
|
-
g_default_min_sent_ping_interval_without_data_ms;
|
417
399
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
400
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
401
|
g_default_min_recv_ping_interval_without_data_ms;
|
@@ -429,8 +411,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
411
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
412
|
&t->init_keepalive_ping_locked);
|
431
413
|
} else {
|
432
|
-
|
433
|
-
|
414
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
415
|
+
// inflight keeaplive timers
|
434
416
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
417
|
}
|
436
418
|
}
|
@@ -438,7 +420,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
438
420
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
421
|
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
|
440
422
|
grpc_resource_user* resource_user)
|
441
|
-
: refs(1,
|
423
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
424
|
+
? "chttp2_refcount"
|
425
|
+
: nullptr),
|
442
426
|
ep(ep),
|
443
427
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
428
|
resource_user(resource_user),
|
@@ -451,11 +435,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
435
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
436
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
437
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
438
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
439
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
440
|
+
// large enough that the exponential growth should happen nicely when it's
|
441
|
+
// needed.
|
442
|
+
// TODO(ctiller): tune this
|
459
443
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
444
|
|
461
445
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -466,7 +450,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
466
450
|
}
|
467
451
|
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
452
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
453
|
+
// copy in initial settings to all setting sets
|
470
454
|
size_t i;
|
471
455
|
int j;
|
472
456
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -477,7 +461,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
477
461
|
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
462
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
463
|
|
480
|
-
|
464
|
+
// configure http2 the way we like it
|
481
465
|
if (is_client) {
|
482
466
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
467
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -503,7 +487,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
487
|
enable_bdp = false;
|
504
488
|
}
|
505
489
|
|
506
|
-
|
490
|
+
// No pings allowed before receiving a header or data frame.
|
507
491
|
ping_state.pings_before_data_required = 0;
|
508
492
|
ping_state.is_delayed_ping_timer_set = false;
|
509
493
|
ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
|
@@ -514,8 +498,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
514
498
|
init_keepalive_pings_if_enabled(this);
|
515
499
|
|
516
500
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
501
|
+
bdp_ping_blocked = true;
|
519
502
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
503
|
nullptr);
|
521
504
|
}
|
@@ -562,7 +545,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
545
|
}
|
563
546
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
547
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
548
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
549
|
+
"close_transport");
|
566
550
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
551
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
552
|
}
|
@@ -579,11 +563,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
563
|
break;
|
580
564
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
565
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
566
|
+
// keepalive timers are not set in these two states
|
583
567
|
break;
|
584
568
|
}
|
585
569
|
|
586
|
-
|
570
|
+
// flush writable stream list to avoid dangling references
|
587
571
|
grpc_chttp2_stream* s;
|
588
572
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
573
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,7 +577,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
577
|
}
|
594
578
|
if (t->notify_on_receive_settings != nullptr) {
|
595
579
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
580
|
+
GRPC_ERROR_REF(error));
|
597
581
|
t->notify_on_receive_settings = nullptr;
|
598
582
|
}
|
599
583
|
GRPC_ERROR_UNREF(error);
|
@@ -616,9 +600,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
600
|
#endif
|
617
601
|
|
618
602
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
603
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
604
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
605
|
+
// actively reading
|
622
606
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
607
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
608
|
}
|
@@ -677,9 +661,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
677
661
|
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
662
|
}
|
679
663
|
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
|
-
|
683
664
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
665
|
if (GPR_UNLIKELY(included[i])) {
|
685
666
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
@@ -774,9 +755,9 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
774
755
|
return accepting;
|
775
756
|
}
|
776
757
|
|
777
|
-
|
778
|
-
|
779
|
-
|
758
|
+
//
|
759
|
+
// OUTPUT PROCESSING
|
760
|
+
//
|
780
761
|
|
781
762
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
763
|
switch (st) {
|
@@ -794,15 +775,15 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
775
|
grpc_chttp2_write_state st, const char* reason) {
|
795
776
|
GRPC_CHTTP2_IF_TRACING(
|
796
777
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
778
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
779
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
780
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
781
|
+
// If the state is being reset back to idle, it means a write was just
|
782
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
783
|
+
//
|
784
|
+
// This is also our chance to close the transport if the transport was marked
|
785
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
786
|
+
// from peer while we had some pending writes)
|
806
787
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
788
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
808
789
|
if (t->close_transport_on_writes_finished != nullptr) {
|
@@ -864,6 +845,9 @@ static void inc_initiate_write_reason(
|
|
864
845
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
846
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
847
|
break;
|
848
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
849
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
850
|
+
break;
|
867
851
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
852
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
853
|
break;
|
@@ -889,22 +873,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
873
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
874
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
875
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
876
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
877
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
878
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
879
|
+
// closures (some of which are potentially initiating more writes on the
|
880
|
+
// transport) are executed on the t->combiner.
|
881
|
+
//
|
882
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
883
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
884
|
+
// that gathers all the relevant bytes (which are at various places in the
|
885
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
886
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
887
|
+
// multiple write operations.
|
888
|
+
//
|
889
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
890
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
891
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
892
|
t->combiner->FinallyRun(
|
909
893
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
894
|
write_action_begin_locked, t, nullptr),
|
@@ -956,9 +940,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
940
|
write_action(t, GRPC_ERROR_NONE);
|
957
941
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
942
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
943
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
944
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
945
|
+
// been able to flush qbuf, we can resume reading.
|
962
946
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
947
|
GPR_INFO,
|
964
948
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -993,8 +977,8 @@ static void write_action_end(void* tp, grpc_error* error) {
|
|
993
977
|
GRPC_ERROR_REF(error));
|
994
978
|
}
|
995
979
|
|
996
|
-
|
997
|
-
|
980
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
981
|
+
// sendmsg
|
998
982
|
static void write_action_end_locked(void* tp, grpc_error* error) {
|
999
983
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
984
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
@@ -1057,7 +1041,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1057
1041
|
}
|
1058
1042
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1043
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1044
|
+
t->dirtied_local_settings = true;
|
1061
1045
|
}
|
1062
1046
|
}
|
1063
1047
|
|
@@ -1080,16 +1064,17 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1064
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1065
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1066
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1067
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1068
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1069
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1070
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1087
1071
|
goaway_error, grpc_error_string(t->goaway_error));
|
1088
1072
|
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1073
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1074
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1075
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1076
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1077
|
+
// for new connections on that channel.
|
1093
1078
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1079
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
1080
|
grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
|
@@ -1104,15 +1089,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1104
1089
|
? GRPC_MILLIS_INF_FUTURE
|
1105
1090
|
: static_cast<grpc_millis>(current_keepalive_time_ms *
|
1106
1091
|
KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1092
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1093
|
+
absl::Cord(std::to_string(t->keepalive_time)));
|
1107
1094
|
}
|
1108
|
-
|
1109
|
-
|
1110
|
-
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1095
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1096
|
+
// received.
|
1097
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1098
|
+
"got_goaway");
|
1111
1099
|
}
|
1112
1100
|
|
1113
1101
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1114
1102
|
grpc_chttp2_stream* s;
|
1115
|
-
|
1103
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1116
1104
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1117
1105
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1118
1106
|
grpc_chttp2_cancel_stream(
|
@@ -1123,14 +1111,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1123
1111
|
}
|
1124
1112
|
return;
|
1125
1113
|
}
|
1126
|
-
|
1127
|
-
|
1114
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1115
|
+
// * concurrency
|
1128
1116
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1129
1117
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1130
1118
|
t->settings[GRPC_PEER_SETTINGS]
|
1131
1119
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1132
1120
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1133
|
-
|
1121
|
+
// safe since we can't (legally) be parsing this stream yet
|
1134
1122
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1135
1123
|
GPR_INFO,
|
1136
1124
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1142,6 +1130,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1142
1130
|
|
1143
1131
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1144
1132
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1133
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1134
|
+
"Transport Stream IDs exhausted"),
|
1145
1135
|
"no_more_stream_ids");
|
1146
1136
|
}
|
1147
1137
|
|
@@ -1150,7 +1140,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1150
1140
|
grpc_chttp2_mark_stream_writable(t, s);
|
1151
1141
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1152
1142
|
}
|
1153
|
-
|
1143
|
+
// cancel out streams that will never be started
|
1154
1144
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1155
1145
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1156
1146
|
grpc_chttp2_cancel_stream(
|
@@ -1162,12 +1152,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1162
1152
|
}
|
1163
1153
|
}
|
1164
1154
|
|
1165
|
-
|
1166
|
-
we should not complete this closure until we can prove that the write got
|
1167
|
-
scheduled
|
1155
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1156
|
+
// we should not complete this closure until we can prove that the write got
|
1157
|
+
// scheduled
|
1168
1158
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1169
|
-
|
1170
|
-
bits being used for flags defined above)
|
1159
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1160
|
+
// bits being used for flags defined above)
|
1171
1161
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1172
1162
|
|
1173
1163
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1211,7 +1201,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1211
1201
|
"Error in HTTP transport completing operation");
|
1212
1202
|
closure->error_data.error = grpc_error_set_str(
|
1213
1203
|
closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
1214
|
-
grpc_slice_from_copied_string(t->peer_string));
|
1204
|
+
grpc_slice_from_copied_string(t->peer_string.c_str()));
|
1215
1205
|
}
|
1216
1206
|
closure->error_data.error =
|
1217
1207
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1259,7 +1249,7 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1259
1249
|
grpc_chttp2_stream* s) {
|
1260
1250
|
for (;;) {
|
1261
1251
|
if (s->fetching_send_message == nullptr) {
|
1262
|
-
|
1252
|
+
// Stream was cancelled before message fetch completed
|
1263
1253
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1264
1254
|
return; /* early out */
|
1265
1255
|
}
|
@@ -1389,7 +1379,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1389
1379
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1390
1380
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1391
1381
|
|
1392
|
-
|
1382
|
+
// Identify stream compression
|
1393
1383
|
if (op_payload->send_initial_metadata.send_initial_metadata->idx.named
|
1394
1384
|
.content_encoding == nullptr ||
|
1395
1385
|
grpc_stream_compression_method_parse(
|
@@ -1408,68 +1398,48 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1408
1398
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1409
1399
|
s->send_initial_metadata =
|
1410
1400
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1411
|
-
const size_t metadata_size =
|
1412
|
-
grpc_metadata_batch_size(s->send_initial_metadata);
|
1413
|
-
const size_t metadata_peer_limit =
|
1414
|
-
t->settings[GRPC_PEER_SETTINGS]
|
1415
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
1416
1401
|
if (t->is_client) {
|
1417
1402
|
s->deadline = GPR_MIN(s->deadline, s->send_initial_metadata->deadline);
|
1418
1403
|
}
|
1419
|
-
if (
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
static_cast<intptr_t>(metadata_size)),
|
1429
|
-
GRPC_ERROR_INT_LIMIT,
|
1430
|
-
static_cast<intptr_t>(metadata_peer_limit)),
|
1431
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
1432
|
-
} else {
|
1433
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1434
|
-
s->seen_error = true;
|
1435
|
-
}
|
1436
|
-
if (!s->write_closed) {
|
1437
|
-
if (t->is_client) {
|
1438
|
-
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1439
|
-
GPR_ASSERT(s->id == 0);
|
1440
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1441
|
-
maybe_start_some_streams(t);
|
1442
|
-
} else {
|
1443
|
-
grpc_chttp2_cancel_stream(
|
1444
|
-
t, s,
|
1445
|
-
grpc_error_set_int(
|
1446
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1447
|
-
"Transport closed", &t->closed_with_error, 1),
|
1448
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1449
|
-
}
|
1404
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1405
|
+
s->seen_error = true;
|
1406
|
+
}
|
1407
|
+
if (!s->write_closed) {
|
1408
|
+
if (t->is_client) {
|
1409
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1410
|
+
GPR_ASSERT(s->id == 0);
|
1411
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1412
|
+
maybe_start_some_streams(t);
|
1450
1413
|
} else {
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1458
|
-
}
|
1414
|
+
grpc_chttp2_cancel_stream(
|
1415
|
+
t, s,
|
1416
|
+
grpc_error_set_int(
|
1417
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1418
|
+
"Transport closed", &t->closed_with_error, 1),
|
1419
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1459
1420
|
}
|
1460
1421
|
} else {
|
1461
|
-
s->
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1422
|
+
GPR_ASSERT(s->id != 0);
|
1423
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1424
|
+
if (!(op->send_message &&
|
1425
|
+
(op->payload->send_message.send_message->flags() &
|
1426
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1427
|
+
grpc_chttp2_initiate_write(
|
1428
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1429
|
+
}
|
1468
1430
|
}
|
1431
|
+
} else {
|
1432
|
+
s->send_initial_metadata = nullptr;
|
1433
|
+
grpc_chttp2_complete_closure_step(
|
1434
|
+
t, s, &s->send_initial_metadata_finished,
|
1435
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1436
|
+
"Attempt to send initial metadata after stream was closed",
|
1437
|
+
&s->write_closed_error, 1),
|
1438
|
+
"send_initial_metadata_finished");
|
1469
1439
|
}
|
1470
1440
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1471
1441
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1472
|
-
(gpr_atm)t->peer_string);
|
1442
|
+
(gpr_atm)t->peer_string.c_str());
|
1473
1443
|
}
|
1474
1444
|
}
|
1475
1445
|
|
@@ -1527,47 +1497,27 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1527
1497
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1528
1498
|
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1499
|
s->write_buffering = false;
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
|
1536
|
-
|
1537
|
-
t, s,
|
1538
|
-
|
1539
|
-
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
}
|
1552
|
-
if (s->write_closed) {
|
1553
|
-
s->send_trailing_metadata = nullptr;
|
1554
|
-
s->sent_trailing_metadata_op = nullptr;
|
1555
|
-
grpc_chttp2_complete_closure_step(
|
1556
|
-
t, s, &s->send_trailing_metadata_finished,
|
1557
|
-
grpc_metadata_batch_is_empty(
|
1558
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1559
|
-
? GRPC_ERROR_NONE
|
1560
|
-
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1561
|
-
"Attempt to send trailing metadata after "
|
1562
|
-
"stream was closed"),
|
1563
|
-
"send_trailing_metadata_finished");
|
1564
|
-
} else if (s->id != 0) {
|
1565
|
-
/* TODO(ctiller): check if there's flow control for any outstanding
|
1566
|
-
bytes before going writable */
|
1567
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1568
|
-
grpc_chttp2_initiate_write(
|
1569
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
|
-
}
|
1500
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1501
|
+
s->seen_error = true;
|
1502
|
+
}
|
1503
|
+
if (s->write_closed) {
|
1504
|
+
s->send_trailing_metadata = nullptr;
|
1505
|
+
s->sent_trailing_metadata_op = nullptr;
|
1506
|
+
grpc_chttp2_complete_closure_step(
|
1507
|
+
t, s, &s->send_trailing_metadata_finished,
|
1508
|
+
grpc_metadata_batch_is_empty(
|
1509
|
+
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1510
|
+
? GRPC_ERROR_NONE
|
1511
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1512
|
+
"Attempt to send trailing metadata after "
|
1513
|
+
"stream was closed"),
|
1514
|
+
"send_trailing_metadata_finished");
|
1515
|
+
} else if (s->id != 0) {
|
1516
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1517
|
+
// bytes before going writable
|
1518
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1519
|
+
grpc_chttp2_initiate_write(
|
1520
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1571
1521
|
}
|
1572
1522
|
}
|
1573
1523
|
|
@@ -1582,7 +1532,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1582
1532
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1583
1533
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1584
1534
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1585
|
-
(gpr_atm)t->peer_string);
|
1535
|
+
(gpr_atm)t->peer_string.c_str());
|
1586
1536
|
}
|
1587
1537
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1588
1538
|
}
|
@@ -1665,8 +1615,8 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1665
1615
|
}
|
1666
1616
|
|
1667
1617
|
static void cancel_pings(grpc_chttp2_transport* t, grpc_error* error) {
|
1668
|
-
|
1669
|
-
|
1618
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1619
|
+
// and maybe they hold resources that need to be freed
|
1670
1620
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1671
1621
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1672
1622
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1692,11 +1642,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1692
1642
|
GRPC_ERROR_NONE);
|
1693
1643
|
}
|
1694
1644
|
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1699
|
-
*/
|
1645
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1646
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1647
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1700
1648
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1701
1649
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1702
1650
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1710,7 +1658,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1710
1658
|
}
|
1711
1659
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1712
1660
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1713
|
-
|
1661
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1714
1662
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1715
1663
|
start_keepalive_ping_locked, t, nullptr),
|
1716
1664
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1752,9 +1700,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1752
1700
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1753
1701
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1754
1702
|
if (pq->inflight_id != id) {
|
1755
|
-
|
1756
|
-
|
1757
|
-
gpr_free(from);
|
1703
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1704
|
+
t->peer_string.c_str(), id);
|
1758
1705
|
return;
|
1759
1706
|
}
|
1760
1707
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1765,8 +1712,8 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1765
1712
|
}
|
1766
1713
|
|
1767
1714
|
static void send_goaway(grpc_chttp2_transport* t, grpc_error* error) {
|
1768
|
-
|
1769
|
-
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string,
|
1715
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1716
|
+
gpr_log(GPR_INFO, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1770
1717
|
grpc_error_string(error));
|
1771
1718
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1772
1719
|
grpc_http2_error_code http_error;
|
@@ -1787,7 +1734,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1787
1734
|
grpc_error_set_int(
|
1788
1735
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1789
1736
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1790
|
-
|
1737
|
+
// The transport will be closed after the write is done
|
1791
1738
|
close_transport_locked(
|
1792
1739
|
t, grpc_error_set_int(
|
1793
1740
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1862,9 +1809,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1862
1809
|
GRPC_ERROR_NONE);
|
1863
1810
|
}
|
1864
1811
|
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1812
|
+
//
|
1813
|
+
// INPUT PROCESSING - GENERAL
|
1814
|
+
//
|
1868
1815
|
|
1869
1816
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1870
1817
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1984,8 +1931,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1984
1931
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1985
1932
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1986
1933
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1987
|
-
|
1988
|
-
|
1934
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1935
|
+
// maybe decompress the next 5 bytes in the stream.
|
1989
1936
|
if (s->stream_decompression_method ==
|
1990
1937
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1991
1938
|
grpc_slice_buffer_move_first(
|
@@ -2069,6 +2016,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2069
2016
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2070
2017
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2071
2018
|
}
|
2019
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2020
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2072
2021
|
|
2073
2022
|
GRPC_ERROR_UNREF(error);
|
2074
2023
|
|
@@ -2107,12 +2056,12 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2107
2056
|
if (status != GRPC_STATUS_OK) {
|
2108
2057
|
s->seen_error = true;
|
2109
2058
|
}
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2059
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2060
|
+
// last chance replacement: we've received trailing metadata,
|
2061
|
+
// but something more important has become available to signal
|
2062
|
+
// to the upper layers - drop what we've got, and then publish
|
2063
|
+
// what we want - which is safe because we haven't told anyone
|
2064
|
+
// about the metadata yet
|
2116
2065
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2117
2066
|
s->recv_trailing_metadata_finished != nullptr) {
|
2118
2067
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
@@ -2204,7 +2153,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2204
2153
|
grpc_chttp2_stream* s, int close_reads,
|
2205
2154
|
int close_writes, grpc_error* error) {
|
2206
2155
|
if (s->read_closed && s->write_closed) {
|
2207
|
-
|
2156
|
+
// already closed, but we should still fake the status if needed.
|
2208
2157
|
grpc_error* overall_error = removal_error(error, s, "Stream removed");
|
2209
2158
|
if (overall_error != GRPC_ERROR_NONE) {
|
2210
2159
|
grpc_chttp2_fake_status(t, s, overall_error);
|
@@ -2231,7 +2180,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2231
2180
|
if (s->id != 0) {
|
2232
2181
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2233
2182
|
} else {
|
2234
|
-
|
2183
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2235
2184
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2236
2185
|
}
|
2237
2186
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2270,12 +2219,12 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2270
2219
|
|
2271
2220
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2272
2221
|
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
|
2277
|
-
|
2278
|
-
|
2222
|
+
// Hand roll a header block.
|
2223
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2224
|
+
// elegant solution.
|
2225
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2226
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2227
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2279
2228
|
if (!s->sent_initial_metadata) {
|
2280
2229
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2281
2230
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2436,9 +2385,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2436
2385
|
GRPC_ERROR_UNREF(error);
|
2437
2386
|
}
|
2438
2387
|
|
2439
|
-
|
2440
|
-
|
2441
|
-
|
2388
|
+
//
|
2389
|
+
// INPUT PROCESSING - PARSING
|
2390
|
+
//
|
2442
2391
|
|
2443
2392
|
template <class F>
|
2444
2393
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2535,11 +2484,6 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2535
2484
|
grpc_error* errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2536
2485
|
GRPC_ERROR_NONE};
|
2537
2486
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2538
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
|
2539
|
-
if (bdp_est) {
|
2540
|
-
bdp_est->AddIncomingBytes(
|
2541
|
-
static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
|
2542
|
-
}
|
2543
2487
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2544
2488
|
}
|
2545
2489
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2573,8 +2517,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2573
2517
|
"Transport closed", &t->closed_with_error, 1);
|
2574
2518
|
}
|
2575
2519
|
if (error != GRPC_ERROR_NONE) {
|
2576
|
-
|
2577
|
-
|
2520
|
+
// If a goaway frame was received, this might be the reason why the read
|
2521
|
+
// failed. Add this info to the error
|
2578
2522
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2579
2523
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2580
2524
|
}
|
@@ -2583,7 +2527,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2583
2527
|
t->endpoint_reading = 0;
|
2584
2528
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2585
2529
|
keep_reading = true;
|
2586
|
-
|
2530
|
+
// Since we have read a byte, reset the keepalive timer
|
2587
2531
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2588
2532
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2589
2533
|
}
|
@@ -2618,7 +2562,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2618
2562
|
|
2619
2563
|
// t is reffed prior to calling the first time, and once the callback chain
|
2620
2564
|
// that kicks off finishes, it's unreffed
|
2621
|
-
|
2565
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2622
2566
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2623
2567
|
send_ping_locked(
|
2624
2568
|
t,
|
@@ -2626,6 +2570,9 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2626
2570
|
grpc_schedule_on_exec_ctx),
|
2627
2571
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2628
2572
|
grpc_schedule_on_exec_ctx));
|
2573
|
+
// TODO(yashykt): Enabling this causes internal b/168345569. Re-enable once
|
2574
|
+
// fixed.
|
2575
|
+
// grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2629
2576
|
}
|
2630
2577
|
|
2631
2578
|
static void start_bdp_ping(void* tp, grpc_error* error) {
|
@@ -2638,13 +2585,13 @@ static void start_bdp_ping(void* tp, grpc_error* error) {
|
|
2638
2585
|
static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
2639
2586
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2640
2587
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2641
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2588
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2642
2589
|
grpc_error_string(error));
|
2643
2590
|
}
|
2644
2591
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2645
2592
|
return;
|
2646
2593
|
}
|
2647
|
-
|
2594
|
+
// Reset the keepalive ping timer
|
2648
2595
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2649
2596
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2650
2597
|
}
|
@@ -2662,7 +2609,7 @@ static void finish_bdp_ping(void* tp, grpc_error* error) {
|
|
2662
2609
|
static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
2663
2610
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2664
2611
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2665
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2612
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2666
2613
|
grpc_error_string(error));
|
2667
2614
|
}
|
2668
2615
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2670,8 +2617,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2670
2617
|
return;
|
2671
2618
|
}
|
2672
2619
|
if (!t->bdp_ping_started) {
|
2673
|
-
|
2674
|
-
|
2620
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2621
|
+
// finish_bdp_ping_locked to be run later.
|
2675
2622
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2676
2623
|
finish_bdp_ping_locked, t, nullptr),
|
2677
2624
|
GRPC_ERROR_REF(error));
|
@@ -2705,7 +2652,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2705
2652
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2706
2653
|
return;
|
2707
2654
|
}
|
2708
|
-
|
2655
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2656
|
+
// Block the bdp ping till we receive more data.
|
2657
|
+
t->bdp_ping_blocked = true;
|
2658
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2659
|
+
} else {
|
2660
|
+
schedule_bdp_ping_locked(t);
|
2661
|
+
}
|
2709
2662
|
}
|
2710
2663
|
|
2711
2664
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2754,14 +2707,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2754
2707
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2755
2708
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2756
2709
|
&args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
|
2757
|
-
} else if (0 ==
|
2758
|
-
strcmp(
|
2759
|
-
args->args[i].key,
|
2760
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
2761
|
-
g_default_min_sent_ping_interval_without_data_ms =
|
2762
|
-
grpc_channel_arg_get_integer(
|
2763
|
-
&args->args[i],
|
2764
|
-
{g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
|
2765
2710
|
} else if (0 ==
|
2766
2711
|
strcmp(
|
2767
2712
|
args->args[i].key,
|
@@ -2804,7 +2749,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2804
2749
|
&t->init_keepalive_ping_locked);
|
2805
2750
|
}
|
2806
2751
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2807
|
-
|
2752
|
+
// The keepalive ping timer may be cancelled by bdp
|
2808
2753
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2809
2754
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2810
2755
|
grpc_schedule_on_exec_ctx);
|
@@ -2832,7 +2777,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2832
2777
|
}
|
2833
2778
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2834
2779
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2835
|
-
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string);
|
2780
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2836
2781
|
}
|
2837
2782
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2838
2783
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2856,11 +2801,11 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2856
2801
|
if (error == GRPC_ERROR_NONE) {
|
2857
2802
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2858
2803
|
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2859
|
-
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string);
|
2804
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2860
2805
|
}
|
2861
2806
|
if (!t->keepalive_ping_started) {
|
2862
|
-
|
2863
|
-
|
2807
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2808
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2864
2809
|
t->combiner->Run(
|
2865
2810
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2866
2811
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2894,7 +2839,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2894
2839
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2895
2840
|
if (error == GRPC_ERROR_NONE) {
|
2896
2841
|
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2897
|
-
t->peer_string);
|
2842
|
+
t->peer_string.c_str());
|
2898
2843
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2899
2844
|
close_transport_locked(
|
2900
2845
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2903,8 +2848,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2903
2848
|
GRPC_STATUS_UNAVAILABLE));
|
2904
2849
|
}
|
2905
2850
|
} else {
|
2906
|
-
|
2907
|
-
|
2851
|
+
// The watchdog timer should have been cancelled by
|
2852
|
+
// finish_keepalive_ping_locked.
|
2908
2853
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2909
2854
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2910
2855
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2913,21 +2858,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2913
2858
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2914
2859
|
}
|
2915
2860
|
|
2916
|
-
|
2917
|
-
|
2918
|
-
|
2861
|
+
//
|
2862
|
+
// CALLBACK LOOP
|
2863
|
+
//
|
2919
2864
|
|
2920
2865
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2921
2866
|
grpc_connectivity_state state,
|
2867
|
+
const absl::Status& status,
|
2922
2868
|
const char* reason) {
|
2923
2869
|
GRPC_CHTTP2_IF_TRACING(
|
2924
2870
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2925
|
-
t->state_tracker.SetState(state, reason);
|
2871
|
+
t->state_tracker.SetState(state, status, reason);
|
2926
2872
|
}
|
2927
2873
|
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2874
|
+
//
|
2875
|
+
// POLLSET STUFF
|
2876
|
+
//
|
2931
2877
|
|
2932
2878
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2933
2879
|
grpc_pollset* pollset) {
|
@@ -2941,9 +2887,9 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2941
2887
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2942
2888
|
}
|
2943
2889
|
|
2944
|
-
|
2945
|
-
|
2946
|
-
|
2890
|
+
//
|
2891
|
+
// BYTE STREAM
|
2892
|
+
//
|
2947
2893
|
|
2948
2894
|
static void reset_byte_stream(void* arg, grpc_error* error) {
|
2949
2895
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
@@ -3031,7 +2977,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3031
2977
|
s->data_parser.parsing_frame = nullptr;
|
3032
2978
|
}
|
3033
2979
|
} else {
|
3034
|
-
|
2980
|
+
// Should never reach here.
|
3035
2981
|
GPR_ASSERT(false);
|
3036
2982
|
}
|
3037
2983
|
} else {
|
@@ -3160,9 +3106,9 @@ void Chttp2IncomingByteStream::Shutdown(grpc_error* error) {
|
|
3160
3106
|
|
3161
3107
|
} // namespace grpc_core
|
3162
3108
|
|
3163
|
-
|
3164
|
-
|
3165
|
-
|
3109
|
+
//
|
3110
|
+
// RESOURCE QUOTAS
|
3111
|
+
//
|
3166
3112
|
|
3167
3113
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3168
3114
|
if (!t->benign_reclaimer_registered) {
|
@@ -3197,11 +3143,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3197
3143
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3198
3144
|
if (error == GRPC_ERROR_NONE &&
|
3199
3145
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3200
|
-
|
3201
|
-
|
3146
|
+
// Channel with no active streams: send a goaway to try and make it
|
3147
|
+
// disconnect cleanly
|
3202
3148
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3203
3149
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3204
|
-
t->peer_string);
|
3150
|
+
t->peer_string.c_str());
|
3205
3151
|
}
|
3206
3152
|
send_goaway(t,
|
3207
3153
|
grpc_error_set_int(
|
@@ -3212,7 +3158,8 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3212
3158
|
gpr_log(GPR_INFO,
|
3213
3159
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3214
3160
|
" streams",
|
3215
|
-
t->peer_string
|
3161
|
+
t->peer_string.c_str(),
|
3162
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3216
3163
|
}
|
3217
3164
|
t->benign_reclaimer_registered = false;
|
3218
3165
|
if (error != GRPC_ERROR_CANCELLED) {
|
@@ -3237,8 +3184,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3237
3184
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3238
3185
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3239
3186
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3240
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3241
|
-
s->id);
|
3187
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3188
|
+
t->peer_string.c_str(), s->id);
|
3242
3189
|
}
|
3243
3190
|
grpc_chttp2_cancel_stream(
|
3244
3191
|
t, s,
|
@@ -3246,10 +3193,10 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3246
3193
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3247
3194
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3248
3195
|
if (n > 1) {
|
3249
|
-
|
3250
|
-
|
3251
|
-
|
3252
|
-
|
3196
|
+
// Since we cancel one stream per destructive reclamation, if
|
3197
|
+
// there are more streams left, we can immediately post a new
|
3198
|
+
// reclaimer in case the resource quota needs to free more
|
3199
|
+
// memory
|
3253
3200
|
post_destructive_reclaimer(t);
|
3254
3201
|
}
|
3255
3202
|
}
|
@@ -3260,9 +3207,9 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3260
3207
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3261
3208
|
}
|
3262
3209
|
|
3263
|
-
|
3264
|
-
|
3265
|
-
|
3210
|
+
//
|
3211
|
+
// MONITORING
|
3212
|
+
//
|
3266
3213
|
|
3267
3214
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3268
3215
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3299,6 +3246,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3299
3246
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3300
3247
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3301
3248
|
return "APPLICATION_PING";
|
3249
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3250
|
+
return "BDP_PING";
|
3302
3251
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3303
3252
|
return "KEEPALIVE_PING";
|
3304
3253
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|