grpc 1.28.0 → 1.42.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 +1824 -22390
- data/etc/roots.pem +592 -899
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +43 -0
- data/include/grpc/event_engine/event_engine.h +375 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +52 -13
- data/include/grpc/grpc_posix.h +5 -2
- data/include/grpc/grpc_security.h +324 -180
- data/include/grpc/grpc_security_constants.h +20 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm.h +5 -3
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
- data/include/grpc/impl/codegen/atm_windows.h +6 -0
- data/include/grpc/impl/codegen/byte_buffer.h +3 -1
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -0
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/fork.h +2 -0
- data/include/grpc/impl/codegen/gpr_slice.h +2 -0
- data/include/grpc/impl/codegen/gpr_types.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +80 -54
- data/include/grpc/impl/codegen/log.h +2 -2
- data/include/grpc/impl/codegen/port_platform.h +103 -100
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +2 -0
- data/include/grpc/impl/codegen/status.h +2 -0
- data/include/grpc/impl/codegen/sync.h +8 -5
- data/include/grpc/impl/codegen/sync_abseil.h +2 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +3 -0
- data/include/grpc/impl/codegen/sync_posix.h +4 -2
- data/include/grpc/impl/codegen/sync_windows.h +6 -0
- data/include/grpc/module.modulemap +31 -46
- data/include/grpc/slice.h +1 -1
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +1 -1
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_windows.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/sync.h +4 -4
- data/include/grpc/support/sync_abseil.h +1 -1
- data/include/grpc/support/sync_custom.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_windows.h +1 -1
- data/include/grpc/support/time.h +9 -9
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +30 -28
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +158 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +2207 -3176
- data/src/core/ext/filters/client_channel/client_channel.h +561 -62
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +2 -5
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
- data/src/core/ext/filters/client_channel/config_selector.h +145 -0
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -11
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +71 -73
- data/src/core/ext/filters/client_channel/health/health_check_client.h +37 -35
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +43 -40
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +59 -34
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +26 -13
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +659 -608
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +5 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +57 -44
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +918 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -26
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -47
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +741 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +512 -137
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +795 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +701 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1362 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +29 -35
- data/src/core/ext/filters/client_channel/lb_policy.h +130 -117
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +19 -12
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +136 -131
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +20 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +98 -138
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +651 -216
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +32 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +79 -68
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +124 -136
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +892 -47
- data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
- data/src/core/ext/filters/client_channel/resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver.h +13 -23
- data/src/core/ext/filters/client_channel/resolver_factory.h +10 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +57 -56
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +61 -315
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +42 -67
- data/src/core/ext/filters/client_channel/retry_filter.cc +2573 -0
- data/src/core/ext/filters/{workarounds/workaround_cronet_compression_filter.h → client_channel/retry_filter.h} +9 -6
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +20 -49
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +132 -13
- data/src/core/ext/filters/client_channel/server_address.h +80 -32
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +156 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +271 -347
- data/src/core/ext/filters/client_channel/subchannel.h +142 -163
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +47 -223
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +113 -108
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +503 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +181 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +104 -101
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -21
- data/src/core/ext/filters/http/http_filters_plugin.cc +54 -53
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +274 -230
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +398 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +107 -98
- data/src/core/ext/filters/max_age/max_age_filter.cc +74 -70
- data/src/core/ext/filters/message_size/message_size_filter.cc +89 -113
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
- data/src/core/ext/service_config/service_config.cc +227 -0
- data/src/core/ext/service_config/service_config.h +127 -0
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/service_config/service_config_parser.cc +89 -0
- data/src/core/ext/service_config/service_config_parser.h +97 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +119 -49
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +24 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +42 -35
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +32 -16
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +52 -88
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +829 -357
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -6
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +32 -24
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +548 -542
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +17 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +5 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +82 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.h +47 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -29
- data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -22
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +53 -22
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +7 -9
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +311 -652
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +241 -72
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +868 -1175
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +102 -84
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
- data/src/core/ext/transport/chttp2/transport/hpack_utils.h +30 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +77 -56
- data/src/core/ext/transport/chttp2/transport/parsing.cc +168 -320
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
- data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +97 -80
- data/src/core/ext/transport/inproc/inproc_transport.cc +263 -180
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1591 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +2 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +955 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1554 -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 +271 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +494 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2116 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +83 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +370 -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 +470 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +382 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1295 -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 +418 -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 +84 -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 +161 -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 +917 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +171 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +830 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +244 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1089 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +101 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +132 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +96 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +261 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +125 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +462 -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 +397 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +640 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +680 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +177 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +153 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +550 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +185 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +738 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +82 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +312 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +960 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4213 -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 +177 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +298 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +303 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +123 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +403 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1785 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +130 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +559 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +148 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +674 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +535 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +163 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +8 -8
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +468 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +205 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +144 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +96 -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 +90 -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 +84 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +65 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +184 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +158 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +136 -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 +225 -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 +343 -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 +313 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +4 -3
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +10 -10
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +148 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +74 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +2 -2
- 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 +896 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +943 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
- data/src/core/ext/upb-generated/google/api/http.upb.h +74 -36
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +155 -154
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +881 -524
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +16 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +77 -61
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +146 -38
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +25 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +48 -47
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +63 -63
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +307 -195
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +44 -16
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +34 -10
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +186 -72
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +52 -16
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +29 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +70 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +77 -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 +66 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +243 -226
- data/src/core/ext/upb-generated/validate/validate.upb.h +1048 -668
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +66 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +155 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +90 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +100 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +178 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +91 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +252 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +596 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +313 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +236 -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 +300 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +205 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +982 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +567 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +196 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +251 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +71 -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 +52 -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 +34 -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 +51 -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 +44 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +3965 -0
- data/src/core/ext/xds/xds_api.h +744 -0
- data/src/core/ext/xds/xds_bootstrap.cc +471 -0
- data/src/core/ext/xds/xds_bootstrap.h +125 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_channel_args.h +32 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +2791 -0
- data/src/core/ext/xds/xds_client.h +380 -0
- data/src/core/ext/xds/xds_client_stats.cc +160 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +87 -46
- data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
- data/src/core/ext/xds/xds_http_filters.cc +116 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +544 -0
- data/src/core/lib/address_utils/parse_address.cc +320 -0
- data/src/core/lib/address_utils/parse_address.h +77 -0
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +159 -46
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +46 -20
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_args.cc +50 -29
- data/src/core/lib/channel/channel_args.h +12 -2
- data/src/core/lib/channel/channel_stack.cc +27 -12
- data/src/core/lib/channel/channel_stack.h +38 -23
- data/src/core/lib/channel/channel_stack_builder.cc +6 -16
- data/src/core/lib/channel/channel_stack_builder.h +1 -9
- data/src/core/lib/channel/channel_trace.cc +11 -12
- data/src/core/lib/channel/channel_trace.h +3 -2
- data/src/core/lib/channel/channelz.cc +194 -142
- data/src/core/lib/channel/channelz.h +79 -55
- data/src/core/lib/channel/channelz_registry.cc +42 -22
- data/src/core/lib/channel/channelz_registry.h +4 -2
- data/src/core/lib/channel/connected_channel.cc +13 -12
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/channel/context.h +4 -1
- data/src/core/lib/channel/handshaker.cc +23 -65
- data/src/core/lib/channel/handshaker.h +12 -28
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -82
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/status_util.cc +14 -5
- data/src/core/lib/channel/status_util.h +11 -2
- data/src/core/lib/compression/algorithm_metadata.h +1 -0
- data/src/core/lib/compression/compression.cc +10 -6
- data/src/core/lib/compression/compression_args.cc +11 -7
- data/src/core/lib/compression/compression_internal.cc +14 -11
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +7 -3
- data/src/core/lib/compression/stream_compression.cc +2 -1
- data/src/core/lib/compression/stream_compression.h +3 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.cc +3 -4
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/config/core_configuration.cc +96 -0
- data/src/core/lib/config/core_configuration.h +146 -0
- data/src/core/lib/debug/stats.cc +22 -28
- data/src/core/lib/debug/stats.h +7 -4
- data/src/core/lib/debug/stats_data.cc +16 -14
- data/src/core/lib/debug/stats_data.h +14 -13
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +2 -1
- data/src/core/lib/event_engine/endpoint_config.cc +45 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/alloc.cc +7 -5
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -2
- data/src/core/lib/gpr/env_posix.cc +2 -3
- data/src/core/lib/gpr/log.cc +61 -19
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +30 -13
- data/src/core/lib/gpr/log_posix.cc +25 -10
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +5 -3
- data/src/core/lib/gpr/spinlock.h +12 -5
- data/src/core/lib/gpr/string.cc +35 -57
- data/src/core/lib/gpr/string.h +11 -26
- data/src/core/lib/gpr/sync.cc +6 -6
- data/src/core/lib/gpr/sync_abseil.cc +12 -12
- data/src/core/lib/gpr/sync_posix.cc +5 -11
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +19 -14
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +119 -36
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +79 -31
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/arena.cc +2 -1
- data/src/core/lib/gprpp/arena.h +18 -7
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +188 -0
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +39 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +330 -0
- data/src/core/lib/gprpp/{optional.h → examine_stack.cc} +19 -9
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +17 -15
- data/src/core/lib/gprpp/fork.h +4 -4
- data/src/core/lib/gprpp/global_config.h +1 -2
- data/src/core/lib/gprpp/global_config_env.cc +11 -9
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/manual_constructor.h +10 -7
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +9 -9
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +10 -14
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +123 -86
- data/src/core/lib/gprpp/ref_counted_ptr.h +173 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/status_helper.cc +427 -0
- data/src/core/lib/gprpp/status_helper.h +194 -0
- data/src/core/lib/gprpp/sync.h +106 -43
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +47 -42
- data/src/core/lib/gprpp/thd_windows.cc +7 -12
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/format_request.cc +47 -65
- data/src/core/lib/http/format_request.h +1 -0
- data/src/core/lib/http/httpcli.cc +213 -193
- data/src/core/lib/http/httpcli.h +7 -6
- data/src/core/lib/http/httpcli_security_connector.cc +25 -24
- data/src/core/lib/http/parser.cc +65 -45
- data/src/core/lib/http/parser.h +7 -7
- data/src/core/lib/iomgr/buffer_list.cc +10 -11
- data/src/core/lib/iomgr/buffer_list.h +27 -28
- data/src/core/lib/iomgr/call_combiner.cc +46 -21
- data/src/core/lib/iomgr/call_combiner.h +15 -16
- data/src/core/lib/iomgr/cfstream_handle.cc +10 -8
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +9 -9
- data/src/core/lib/iomgr/combiner.cc +25 -36
- data/src/core/lib/iomgr/combiner.h +3 -2
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +48 -0
- data/src/core/lib/iomgr/endpoint.cc +6 -6
- data/src/core/lib/iomgr/endpoint.h +10 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +60 -48
- data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +21 -17
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
- data/src/core/lib/iomgr/error.cc +285 -115
- data/src/core/lib/iomgr/error.h +280 -115
- data/src/core/lib/iomgr/error_cfstream.cc +17 -10
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +7 -2
- data/src/core/lib/iomgr/ev_apple.cc +359 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +76 -80
- data/src/core/lib/iomgr/ev_epollex_linux.cc +106 -109
- data/src/core/lib/iomgr/ev_poll_posix.cc +79 -76
- data/src/core/lib/iomgr/ev_posix.cc +15 -16
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +77 -0
- data/src/core/lib/iomgr/event_engine/closure.h +42 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +173 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +104 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +42 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +88 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +114 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +293 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
- data/src/core/lib/iomgr/exec_ctx.cc +15 -12
- data/src/core/lib/iomgr/exec_ctx.h +37 -30
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
- data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
- data/src/core/lib/iomgr/executor/threadpool.h +8 -7
- data/src/core/lib/iomgr/executor.cc +19 -33
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr.cc +6 -4
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_custom.cc +3 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -2
- data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
- data/src/core/lib/iomgr/iomgr_internal.h +6 -5
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +115 -22
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -3
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +18 -4
- data/src/core/lib/iomgr/load_file.cc +6 -6
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +38 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +10 -11
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +12 -13
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +9 -31
- data/src/core/lib/iomgr/python_util.h +47 -0
- data/src/core/lib/iomgr/resolve_address.cc +14 -9
- data/src/core/lib/iomgr/resolve_address.h +15 -15
- data/src/core/lib/iomgr/resolve_address_custom.cc +48 -62
- data/src/core/lib/iomgr/resolve_address_custom.h +5 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +21 -30
- data/src/core/lib/iomgr/resolve_address_windows.cc +22 -33
- data/src/core/lib/iomgr/resource_quota.cc +185 -94
- data/src/core/lib/iomgr/resource_quota.h +66 -17
- data/src/core/lib/iomgr/sockaddr.h +2 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
- data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
- data/src/core/lib/iomgr/socket_mutator.cc +20 -6
- data/src/core/lib/iomgr/socket_mutator.h +28 -5
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +128 -105
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +25 -22
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +5 -3
- data/src/core/lib/iomgr/tcp_client.h +4 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +31 -43
- data/src/core/lib/iomgr/tcp_client_custom.cc +23 -34
- data/src/core/lib/iomgr/tcp_client_posix.cc +72 -69
- data/src/core/lib/iomgr/tcp_client_posix.h +8 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +31 -23
- data/src/core/lib/iomgr/tcp_custom.cc +77 -71
- data/src/core/lib/iomgr/tcp_custom.h +16 -14
- data/src/core/lib/iomgr/tcp_posix.cc +149 -156
- data/src/core/lib/iomgr/tcp_posix.h +19 -12
- data/src/core/lib/iomgr/tcp_server.cc +12 -11
- data/src/core/lib/iomgr/tcp_server.h +23 -17
- data/src/core/lib/iomgr/tcp_server_custom.cc +72 -94
- data/src/core/lib/iomgr/tcp_server_posix.cc +84 -76
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -16
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +29 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +19 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +46 -42
- data/src/core/lib/iomgr/tcp_windows.cc +44 -47
- data/src/core/lib/iomgr/tcp_windows.h +4 -3
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer.cc +1 -0
- data/src/core/lib/iomgr/timer.h +7 -3
- data/src/core/lib/iomgr/timer_custom.cc +9 -8
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +46 -76
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +17 -14
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +4 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +37 -33
- data/src/core/lib/iomgr/unix_sockets_posix.h +9 -3
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.cc +4 -4
- data/src/core/lib/iomgr/work_serializer.h +18 -2
- data/src/core/lib/json/json.h +15 -4
- data/src/core/lib/json/json_reader.cc +31 -37
- data/src/core/lib/json/json_util.cc +126 -0
- data/src/core/lib/json/json_util.h +154 -0
- data/src/core/lib/json/json_writer.cc +14 -15
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +33 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +213 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +171 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
- data/src/core/lib/security/context/security_context.cc +15 -11
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.h +8 -5
- data/src/core/lib/security/credentials/credentials.cc +17 -99
- data/src/core/lib/security/credentials/credentials.h +27 -70
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +404 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +81 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +527 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +122 -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 +60 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -2
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +154 -77
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +10 -7
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +7 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +3 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +39 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +24 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +25 -35
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -6
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +128 -118
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +25 -14
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +31 -10
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +455 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +147 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -140
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +35 -10
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +40 -37
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +97 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +7 -6
- 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 +26 -13
- data/src/core/lib/security/security_connector/security_connector.cc +15 -7
- data/src/core/lib/security/security_connector/security_connector.h +16 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -46
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +9 -7
- data/src/core/lib/security/security_connector/ssl_utils.cc +126 -31
- data/src/core/lib/security/security_connector/ssl_utils.h +40 -34
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +393 -303
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +144 -62
- data/src/core/lib/security/transport/auth_filters.h +1 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +34 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +16 -20
- data/src/core/lib/security/transport/secure_endpoint.h +1 -0
- data/src/core/lib/security/transport/security_handshaker.cc +159 -91
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +22 -17
- data/src/core/lib/security/transport/tsi_error.cc +5 -6
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +10 -13
- data/src/core/lib/security/util/json_util.h +2 -1
- data/src/core/lib/slice/percent_encoding.cc +73 -30
- data/src/core/lib/slice/percent_encoding.h +29 -28
- data/src/core/lib/slice/slice.cc +59 -26
- data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
- data/src/core/lib/slice/slice_buffer.cc +8 -8
- data/src/core/lib/slice/slice_intern.cc +23 -32
- data/src/core/lib/slice/slice_internal.h +19 -246
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/api_trace.cc +2 -1
- data/src/core/lib/surface/api_trace.h +1 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/lib/surface/builtins.h +26 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +3 -48
- data/src/core/lib/surface/call.cc +252 -241
- data/src/core/lib/surface/call.h +12 -6
- data/src/core/lib/surface/call_details.cc +10 -10
- data/src/core/lib/surface/call_log_batch.cc +52 -60
- data/src/core/lib/surface/channel.cc +99 -85
- data/src/core/lib/surface/channel.h +60 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/channel_ping.cc +4 -6
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +179 -188
- data/src/core/lib/surface/completion_queue.h +18 -17
- data/src/core/lib/surface/completion_queue_factory.cc +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +1 -0
- data/src/core/lib/surface/event_string.cc +19 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +44 -74
- data/src/core/lib/surface/init.h +10 -2
- data/src/core/lib/surface/init_secure.cc +36 -17
- data/src/core/lib/surface/lame_client.cc +62 -61
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +1314 -1305
- data/src/core/lib/surface/server.h +475 -45
- data/src/core/lib/surface/validate_metadata.cc +55 -24
- data/src/core/lib/surface/validate_metadata.h +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +19 -13
- data/src/core/lib/transport/connectivity_state.cc +32 -23
- data/src/core/lib/transport/connectivity_state.h +33 -17
- data/src/core/lib/transport/error_utils.cc +71 -21
- data/src/core/lib/transport/error_utils.h +16 -4
- data/src/core/lib/transport/metadata.cc +60 -25
- data/src/core/lib/transport/metadata.h +17 -14
- data/src/core/lib/transport/metadata_batch.cc +41 -339
- data/src/core/lib/transport/metadata_batch.h +932 -69
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +718 -831
- data/src/core/lib/transport/static_metadata.h +115 -372
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/status_metadata.cc +5 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +15 -14
- data/src/core/lib/transport/transport.h +29 -13
- data/src/core/lib/transport/transport_op_string.cc +91 -112
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +60 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +136 -44
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -5
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/crypt/gsec.h +5 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +18 -17
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +56 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +10 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +116 -55
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
- data/src/core/tsi/fake_transport_security.cc +41 -26
- data/src/core/tsi/local_transport_security.cc +41 -74
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +262 -113
- data/src/core/tsi/ssl_transport_security.h +32 -19
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +25 -11
- data/src/core/tsi/transport_security.h +22 -10
- data/src/core/tsi/transport_security_grpc.h +3 -3
- data/src/core/tsi/transport_security_interface.h +35 -4
- data/src/ruby/bin/math_services_pb.rb +5 -5
- data/src/ruby/ext/grpc/extconf.rb +25 -9
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +17 -8
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
- data/src/ruby/ext/grpc/rb_channel.c +19 -8
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
- data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +54 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +99 -45
- data/src/ruby/ext/grpc/rb_server.c +19 -6
- data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
- data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +64 -14
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +42 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +21 -10
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +122 -41
- data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +97 -26
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +54 -48
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +47 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +38 -39
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +274 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +61 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1949 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +80 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +147 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +69 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
- data/third_party/abseil-cpp/absl/status/status.cc +452 -0
- data/third_party/abseil-cpp/absl/status/status.h +878 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +7 -7
- data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +22 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +585 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +954 -0
- data/third_party/abseil-cpp/absl/time/format.cc +160 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +628 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +315 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +500 -0
- data/third_party/abseil-cpp/absl/time/time.h +1585 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +866 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +789 -707
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +57 -52
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +29 -27
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +196 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +35 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +326 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +18 -7
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +19 -27
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +15 -23
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +120 -112
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +40 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +24 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +305 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -165
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +117 -91
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +62 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +150 -56
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +49 -129
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +116 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +135 -63
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +231 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +86 -113
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +75 -25
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +131 -53
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -28
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +345 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -180
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +24 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +83 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +87 -113
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +99 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +15 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +13 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +52 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +49 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +75 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +42 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +27 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1035 -625
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -176
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +71 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +29 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +39 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +110 -51
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +33 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +8 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +135 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +697 -194
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +54 -38
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2071 -826
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -678
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +639 -450
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -22
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
- data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +1083 -634
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +478 -78
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +122 -56
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +340 -236
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +199 -40
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +607 -209
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +17 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +35 -40
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +11 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +169 -111
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +179 -111
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +81 -37
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +411 -235
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +183 -166
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +434 -151
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +65 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1261 -0
- data/third_party/re2/re2/dfa.cc +2118 -0
- data/third_party/re2/re2/filtered_re2.cc +137 -0
- data/third_party/re2/re2/filtered_re2.h +114 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2483 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +711 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +1166 -0
- data/third_party/re2/re2/prog.h +455 -0
- data/third_party/re2/re2/re2.cc +1331 -0
- data/third_party/re2/re2/re2.h +1017 -0
- data/third_party/re2/re2/regexp.cc +987 -0
- data/third_party/re2/re2/regexp.h +665 -0
- data/third_party/re2/re2/set.cc +176 -0
- data/third_party/re2/re2/set.h +85 -0
- data/third_party/re2/re2/simplify.cc +665 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +668 -506
- data/third_party/upb/upb/decode.h +50 -3
- data/third_party/upb/upb/decode_fast.c +1053 -0
- data/third_party/upb/upb/decode_fast.h +153 -0
- data/third_party/upb/upb/decode_internal.h +193 -0
- data/third_party/upb/upb/def.c +2168 -0
- data/third_party/upb/upb/def.h +337 -0
- data/third_party/upb/upb/def.hpp +468 -0
- data/third_party/upb/upb/encode.c +346 -213
- data/third_party/upb/upb/encode.h +56 -4
- data/third_party/upb/upb/msg.c +356 -70
- data/third_party/upb/upb/msg.h +84 -45
- data/third_party/upb/upb/msg_internal.h +687 -0
- data/third_party/upb/upb/port_def.inc +187 -84
- data/third_party/upb/upb/port_undef.inc +47 -7
- data/third_party/upb/upb/reflection.c +400 -0
- data/third_party/upb/upb/reflection.h +196 -0
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +265 -336
- data/third_party/upb/upb/{table.int.h → table_internal.h} +73 -229
- data/third_party/upb/upb/text_encode.c +449 -0
- data/third_party/upb/upb/text_encode.h +64 -0
- data/third_party/upb/upb/upb.c +189 -135
- data/third_party/upb/upb/upb.h +153 -150
- data/third_party/upb/upb/upb.hpp +112 -0
- data/third_party/upb/upb/upb_internal.h +58 -0
- data/third_party/xxhash/xxhash.h +5325 -0
- metadata +810 -204
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -181
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
- data/src/core/ext/filters/client_channel/service_config.cc +0 -261
- data/src/core/ext/filters/client_channel/service_config.h +0 -193
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2174
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -246
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +0 -29
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -144
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/gpr/tls_gcc.h +0 -52
- data/src/core/lib/gpr/tls_msvc.h +0 -52
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -59
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/iomgr/pollset_uv.cc +0 -93
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
- data/src/core/lib/iomgr/tcp_uv.cc +0 -418
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -752
- data/src/core/lib/iomgr/udp_server.h +0 -101
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -1,20 +1,18 @@
|
|
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
|
|
@@ -26,13 +24,13 @@
|
|
26
24
|
#include <stdio.h>
|
27
25
|
#include <string.h>
|
28
26
|
|
27
|
+
#include "absl/strings/str_format.h"
|
28
|
+
|
29
29
|
#include <grpc/slice_buffer.h>
|
30
30
|
#include <grpc/support/alloc.h>
|
31
31
|
#include <grpc/support/log.h>
|
32
32
|
#include <grpc/support/string_util.h>
|
33
33
|
|
34
|
-
#include "absl/strings/str_format.h"
|
35
|
-
|
36
34
|
#include "src/core/ext/transport/chttp2/transport/context_list.h"
|
37
35
|
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
|
38
36
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
@@ -71,7 +69,6 @@
|
|
71
69
|
#define DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS false
|
72
70
|
#define KEEPALIVE_TIME_BACKOFF_MULTIPLIER 2
|
73
71
|
|
74
|
-
#define DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
75
72
|
#define DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 300000 /* 5 minutes */
|
76
73
|
#define DEFAULT_MAX_PINGS_BETWEEN_DATA 2
|
77
74
|
#define DEFAULT_MAX_PING_STRIKES 2
|
@@ -91,8 +88,6 @@ static bool g_default_client_keepalive_permit_without_calls =
|
|
91
88
|
static bool g_default_server_keepalive_permit_without_calls =
|
92
89
|
DEFAULT_KEEPALIVE_PERMIT_WITHOUT_CALLS;
|
93
90
|
|
94
|
-
static int g_default_min_sent_ping_interval_without_data_ms =
|
95
|
-
DEFAULT_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
|
96
91
|
static int g_default_min_recv_ping_interval_without_data_ms =
|
97
92
|
DEFAULT_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS;
|
98
93
|
static int g_default_max_pings_without_data = DEFAULT_MAX_PINGS_BETWEEN_DATA;
|
@@ -100,79 +95,102 @@ static int g_default_max_ping_strikes = DEFAULT_MAX_PING_STRIKES;
|
|
100
95
|
|
101
96
|
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
|
102
97
|
grpc_core::TraceFlag grpc_http_trace(false, "http");
|
98
|
+
grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
|
103
99
|
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
|
104
100
|
"chttp2_refcount");
|
105
101
|
|
106
|
-
|
107
|
-
static void write_action_begin_locked(void* t,
|
108
|
-
static void write_action(void* t,
|
109
|
-
static void write_action_end(void* t,
|
110
|
-
static void write_action_end_locked(void* t,
|
102
|
+
// forward declarations of various callbacks that we'll build closures around
|
103
|
+
static void write_action_begin_locked(void* t, grpc_error_handle error);
|
104
|
+
static void write_action(void* t, grpc_error_handle error);
|
105
|
+
static void write_action_end(void* t, grpc_error_handle error);
|
106
|
+
static void write_action_end_locked(void* t, grpc_error_handle error);
|
111
107
|
|
112
|
-
static void read_action(void* t,
|
113
|
-
static void read_action_locked(void* t,
|
108
|
+
static void read_action(void* t, grpc_error_handle error);
|
109
|
+
static void read_action_locked(void* t, grpc_error_handle error);
|
114
110
|
static void continue_read_action_locked(grpc_chttp2_transport* t);
|
115
111
|
|
116
|
-
static void complete_fetch(void* gs,
|
117
|
-
static void complete_fetch_locked(void* gs,
|
118
|
-
|
112
|
+
static void complete_fetch(void* gs, grpc_error_handle error);
|
113
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error);
|
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_handle error);
|
124
120
|
|
125
|
-
|
121
|
+
// Start new streams that have been created if we can
|
126
122
|
static void maybe_start_some_streams(grpc_chttp2_transport* t);
|
127
123
|
|
128
124
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
129
125
|
grpc_connectivity_state state,
|
126
|
+
const absl::Status& status,
|
130
127
|
const char* reason);
|
131
128
|
|
132
|
-
static void benign_reclaimer(void*
|
133
|
-
static void destructive_reclaimer(void*
|
134
|
-
static void benign_reclaimer_locked(void*
|
135
|
-
static void destructive_reclaimer_locked(void*
|
129
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error);
|
130
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error);
|
131
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error);
|
132
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error);
|
136
133
|
|
137
134
|
static void post_benign_reclaimer(grpc_chttp2_transport* t);
|
138
135
|
static void post_destructive_reclaimer(grpc_chttp2_transport* t);
|
139
136
|
|
140
|
-
static void close_transport_locked(grpc_chttp2_transport* t,
|
141
|
-
|
137
|
+
static void close_transport_locked(grpc_chttp2_transport* t,
|
138
|
+
grpc_error_handle error);
|
139
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
140
|
+
grpc_error_handle error);
|
141
|
+
|
142
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error);
|
143
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error);
|
144
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error);
|
145
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error);
|
146
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error);
|
147
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
148
|
+
grpc_error_handle error);
|
149
|
+
|
150
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error);
|
151
|
+
static void send_ping_locked(grpc_chttp2_transport* t,
|
152
|
+
grpc_closure* on_initiate, grpc_closure* on_ack);
|
153
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error);
|
142
154
|
|
143
|
-
|
144
|
-
static void
|
145
|
-
static void
|
146
|
-
static void
|
147
|
-
static void
|
148
|
-
static void
|
149
|
-
static void
|
155
|
+
// keepalive-relevant functions
|
156
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error);
|
157
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
158
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error);
|
159
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error);
|
160
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
161
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
|
162
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
|
163
|
+
static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
|
150
164
|
|
151
|
-
static void
|
152
|
-
static void send_ping_locked(grpc_chttp2_transport* t,
|
153
|
-
grpc_closure* on_initiate,
|
154
|
-
grpc_closure* on_complete);
|
155
|
-
static void retry_initiate_ping_locked(void* tp, grpc_error* error);
|
156
|
-
|
157
|
-
/** keepalive-relevant functions */
|
158
|
-
static void init_keepalive_ping(void* arg, grpc_error* error);
|
159
|
-
static void init_keepalive_ping_locked(void* arg, grpc_error* error);
|
160
|
-
static void start_keepalive_ping(void* arg, grpc_error* error);
|
161
|
-
static void finish_keepalive_ping(void* arg, grpc_error* error);
|
162
|
-
static void start_keepalive_ping_locked(void* arg, grpc_error* error);
|
163
|
-
static void finish_keepalive_ping_locked(void* arg, grpc_error* error);
|
164
|
-
static void keepalive_watchdog_fired(void* arg, grpc_error* error);
|
165
|
-
static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error);
|
166
|
-
|
167
|
-
static void reset_byte_stream(void* arg, grpc_error* error);
|
165
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error);
|
168
166
|
|
169
167
|
// Flow control default enabled. Can be disabled by setting
|
170
168
|
// GRPC_EXPERIMENTAL_DISABLE_FLOW_CONTROL
|
171
169
|
bool g_flow_control_enabled = true;
|
172
170
|
|
173
|
-
|
174
|
-
|
175
|
-
|
171
|
+
namespace grpc_core {
|
172
|
+
|
173
|
+
namespace {
|
174
|
+
TestOnlyGlobalHttp2TransportInitCallback test_only_init_callback = nullptr;
|
175
|
+
TestOnlyGlobalHttp2TransportDestructCallback test_only_destruct_callback =
|
176
|
+
nullptr;
|
177
|
+
} // namespace
|
178
|
+
|
179
|
+
void TestOnlySetGlobalHttp2TransportInitCallback(
|
180
|
+
TestOnlyGlobalHttp2TransportInitCallback callback) {
|
181
|
+
test_only_init_callback = callback;
|
182
|
+
}
|
183
|
+
|
184
|
+
void TestOnlySetGlobalHttp2TransportDestructCallback(
|
185
|
+
TestOnlyGlobalHttp2TransportDestructCallback callback) {
|
186
|
+
test_only_destruct_callback = callback;
|
187
|
+
}
|
188
|
+
|
189
|
+
} // namespace grpc_core
|
190
|
+
|
191
|
+
//
|
192
|
+
// CONSTRUCTION/DESTRUCTION/REFCOUNTING
|
193
|
+
//
|
176
194
|
|
177
195
|
grpc_chttp2_transport::~grpc_chttp2_transport() {
|
178
196
|
size_t i;
|
@@ -186,9 +204,8 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
186
204
|
grpc_slice_buffer_destroy_internal(&qbuf);
|
187
205
|
|
188
206
|
grpc_slice_buffer_destroy_internal(&outbuf);
|
189
|
-
grpc_chttp2_hpack_compressor_destroy(&hpack_compressor);
|
190
207
|
|
191
|
-
|
208
|
+
grpc_error_handle error =
|
192
209
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
|
193
210
|
// ContextList::Execute follows semantics of a callback function and does not
|
194
211
|
// take a ref on error
|
@@ -197,7 +214,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
197
214
|
cl = nullptr;
|
198
215
|
|
199
216
|
grpc_slice_buffer_destroy_internal(&read_buffer);
|
200
|
-
grpc_chttp2_hpack_parser_destroy(&hpack_parser);
|
201
217
|
grpc_chttp2_goaway_parser_destroy(&goaway_parser);
|
202
218
|
|
203
219
|
for (i = 0; i < STREAM_LIST_COUNT; i++) {
|
@@ -226,12 +242,14 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
226
242
|
|
227
243
|
GRPC_ERROR_UNREF(closed_with_error);
|
228
244
|
gpr_free(ping_acks);
|
229
|
-
|
245
|
+
if (grpc_core::test_only_destruct_callback != nullptr) {
|
246
|
+
grpc_core::test_only_destruct_callback();
|
247
|
+
}
|
230
248
|
}
|
231
249
|
|
232
250
|
static const grpc_transport_vtable* get_vtable(void);
|
233
251
|
|
234
|
-
|
252
|
+
// Returns whether bdp is enabled
|
235
253
|
static bool read_channel_args(grpc_chttp2_transport* t,
|
236
254
|
const grpc_channel_args* channel_args,
|
237
255
|
bool is_client) {
|
@@ -261,8 +279,7 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
261
279
|
const int value =
|
262
280
|
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
263
281
|
if (value >= 0) {
|
264
|
-
|
265
|
-
&t->hpack_compressor, static_cast<uint32_t>(value));
|
282
|
+
t->hpack_compressor.SetMaxUsableSize(value);
|
266
283
|
}
|
267
284
|
} else if (0 == strcmp(channel_args->args[i].key,
|
268
285
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
@@ -273,15 +290,6 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
273
290
|
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
274
291
|
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
275
292
|
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
|
276
|
-
} else if (0 ==
|
277
|
-
strcmp(channel_args->args[i].key,
|
278
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
279
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
280
|
-
grpc_channel_arg_get_integer(
|
281
|
-
&channel_args->args[i],
|
282
|
-
grpc_integer_options{
|
283
|
-
g_default_min_sent_ping_interval_without_data_ms, 0,
|
284
|
-
INT_MAX});
|
285
293
|
} else if (0 ==
|
286
294
|
strcmp(channel_args->args[i].key,
|
287
295
|
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
@@ -378,12 +386,12 @@ static bool read_channel_args(grpc_chttp2_transport* t,
|
|
378
386
|
}
|
379
387
|
}
|
380
388
|
if (channelz_enabled) {
|
381
|
-
// TODO(ncteisen): add an API to endpoint to query for local addr, and pass
|
382
|
-
// it in here, so SocketNode knows its own address.
|
383
389
|
t->channelz_socket =
|
384
390
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
385
|
-
|
386
|
-
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string)
|
391
|
+
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
392
|
+
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
|
393
|
+
grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
|
394
|
+
channel_args));
|
387
395
|
}
|
388
396
|
return enable_bdp;
|
389
397
|
}
|
@@ -412,8 +420,6 @@ static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
|
|
412
420
|
|
413
421
|
static void configure_transport_ping_policy(grpc_chttp2_transport* t) {
|
414
422
|
t->ping_policy.max_pings_without_data = g_default_max_pings_without_data;
|
415
|
-
t->ping_policy.min_sent_ping_interval_without_data =
|
416
|
-
g_default_min_sent_ping_interval_without_data_ms;
|
417
423
|
t->ping_policy.max_ping_strikes = g_default_max_ping_strikes;
|
418
424
|
t->ping_policy.min_recv_ping_interval_without_data =
|
419
425
|
g_default_min_recv_ping_interval_without_data_ms;
|
@@ -429,8 +435,8 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
429
435
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
|
430
436
|
&t->init_keepalive_ping_locked);
|
431
437
|
} else {
|
432
|
-
|
433
|
-
|
438
|
+
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
|
439
|
+
// inflight keeaplive timers
|
434
440
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED;
|
435
441
|
}
|
436
442
|
}
|
@@ -438,7 +444,9 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
438
444
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
439
445
|
const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client,
|
440
446
|
grpc_resource_user* resource_user)
|
441
|
-
: refs(1,
|
447
|
+
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
448
|
+
? "chttp2_refcount"
|
449
|
+
: nullptr),
|
442
450
|
ep(ep),
|
443
451
|
peer_string(grpc_endpoint_get_peer(ep)),
|
444
452
|
resource_user(resource_user),
|
@@ -451,11 +459,11 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
451
459
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
452
460
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
453
461
|
base.vtable = get_vtable();
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
462
|
+
// 8 is a random stab in the dark as to a good initial size: it's small enough
|
463
|
+
// that it shouldn't waste memory for infrequently used connections, yet
|
464
|
+
// large enough that the exponential growth should happen nicely when it's
|
465
|
+
// needed.
|
466
|
+
// TODO(ctiller): tune this
|
459
467
|
grpc_chttp2_stream_map_init(&stream_map, 8);
|
460
468
|
|
461
469
|
grpc_slice_buffer_init(&read_buffer);
|
@@ -464,9 +472,8 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
464
472
|
grpc_slice_buffer_add(&outbuf, grpc_slice_from_copied_string(
|
465
473
|
GRPC_CHTTP2_CLIENT_CONNECT_STRING));
|
466
474
|
}
|
467
|
-
grpc_chttp2_hpack_compressor_init(&hpack_compressor);
|
468
475
|
grpc_slice_buffer_init(&qbuf);
|
469
|
-
|
476
|
+
// copy in initial settings to all setting sets
|
470
477
|
size_t i;
|
471
478
|
int j;
|
472
479
|
for (i = 0; i < GRPC_CHTTP2_NUM_SETTINGS; i++) {
|
@@ -474,10 +481,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
474
481
|
settings[j][i] = grpc_chttp2_settings_parameters[i].default_value;
|
475
482
|
}
|
476
483
|
}
|
477
|
-
grpc_chttp2_hpack_parser_init(&hpack_parser);
|
478
484
|
grpc_chttp2_goaway_parser_init(&goaway_parser);
|
479
485
|
|
480
|
-
|
486
|
+
// configure http2 the way we like it
|
481
487
|
if (is_client) {
|
482
488
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_ENABLE_PUSH, 0);
|
483
489
|
queue_setting_update(this, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
|
@@ -503,7 +509,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
503
509
|
enable_bdp = false;
|
504
510
|
}
|
505
511
|
|
506
|
-
|
512
|
+
// No pings allowed before receiving a header or data frame.
|
507
513
|
ping_state.pings_before_data_required = 0;
|
508
514
|
ping_state.is_delayed_ping_timer_set = false;
|
509
515
|
ping_state.last_ping_sent_time = GRPC_MILLIS_INF_PAST;
|
@@ -514,19 +520,23 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
514
520
|
init_keepalive_pings_if_enabled(this);
|
515
521
|
|
516
522
|
if (enable_bdp) {
|
517
|
-
|
518
|
-
schedule_bdp_ping_locked(this);
|
523
|
+
bdp_ping_blocked = true;
|
519
524
|
grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
|
520
525
|
nullptr);
|
521
526
|
}
|
522
527
|
|
523
528
|
grpc_chttp2_initiate_write(this, GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE);
|
524
529
|
post_benign_reclaimer(this);
|
530
|
+
if (grpc_core::test_only_init_callback != nullptr) {
|
531
|
+
grpc_core::test_only_init_callback();
|
532
|
+
}
|
525
533
|
}
|
526
534
|
|
527
|
-
static void destroy_transport_locked(void* tp,
|
535
|
+
static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
|
528
536
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
529
537
|
t->destroying = 1;
|
538
|
+
grpc_resource_user_shutdown(t->resource_user);
|
539
|
+
grpc_resource_user_unref(t->resource_user);
|
530
540
|
close_transport_locked(
|
531
541
|
t, grpc_error_set_int(
|
532
542
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
|
@@ -542,7 +552,7 @@ static void destroy_transport(grpc_transport* gt) {
|
|
542
552
|
}
|
543
553
|
|
544
554
|
static void close_transport_locked(grpc_chttp2_transport* t,
|
545
|
-
|
555
|
+
grpc_error_handle error) {
|
546
556
|
end_all_the_calls(t, GRPC_ERROR_REF(error));
|
547
557
|
cancel_pings(t, GRPC_ERROR_REF(error));
|
548
558
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
@@ -551,7 +561,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
551
561
|
GRPC_STATUS_UNAVAILABLE);
|
552
562
|
}
|
553
563
|
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
554
|
-
if (t->close_transport_on_writes_finished ==
|
564
|
+
if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
|
555
565
|
t->close_transport_on_writes_finished =
|
556
566
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
557
567
|
"Delayed close due to in-progress write");
|
@@ -562,7 +572,8 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
562
572
|
}
|
563
573
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
564
574
|
t->closed_with_error = GRPC_ERROR_REF(error);
|
565
|
-
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN,
|
575
|
+
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
|
576
|
+
"close_transport");
|
566
577
|
if (t->ping_state.is_delayed_ping_timer_set) {
|
567
578
|
grpc_timer_cancel(&t->ping_state.delayed_ping_timer);
|
568
579
|
}
|
@@ -579,11 +590,11 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
579
590
|
break;
|
580
591
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DYING:
|
581
592
|
case GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED:
|
582
|
-
|
593
|
+
// keepalive timers are not set in these two states
|
583
594
|
break;
|
584
595
|
}
|
585
596
|
|
586
|
-
|
597
|
+
// flush writable stream list to avoid dangling references
|
587
598
|
grpc_chttp2_stream* s;
|
588
599
|
while (grpc_chttp2_list_pop_writable_stream(t, &s)) {
|
589
600
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
|
@@ -593,9 +604,14 @@ static void close_transport_locked(grpc_chttp2_transport* t,
|
|
593
604
|
}
|
594
605
|
if (t->notify_on_receive_settings != nullptr) {
|
595
606
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
|
596
|
-
|
607
|
+
GRPC_ERROR_REF(error));
|
597
608
|
t->notify_on_receive_settings = nullptr;
|
598
609
|
}
|
610
|
+
if (t->notify_on_close != nullptr) {
|
611
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
|
612
|
+
GRPC_ERROR_REF(error));
|
613
|
+
t->notify_on_close = nullptr;
|
614
|
+
}
|
599
615
|
GRPC_ERROR_UNREF(error);
|
600
616
|
}
|
601
617
|
|
@@ -616,9 +632,9 @@ void grpc_chttp2_stream_unref(grpc_chttp2_stream* s) {
|
|
616
632
|
#endif
|
617
633
|
|
618
634
|
grpc_chttp2_stream::Reffer::Reffer(grpc_chttp2_stream* s) {
|
619
|
-
|
620
|
-
|
621
|
-
|
635
|
+
// We reserve one 'active stream' that's dropped when the stream is
|
636
|
+
// read-closed. The others are for Chttp2IncomingByteStreams that are
|
637
|
+
// actively reading
|
622
638
|
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
|
623
639
|
GRPC_CHTTP2_REF_TRANSPORT(s->t, "stream");
|
624
640
|
}
|
@@ -630,10 +646,10 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
630
646
|
: t(t),
|
631
647
|
refcount(refcount),
|
632
648
|
reffer(this),
|
633
|
-
|
634
|
-
|
649
|
+
initial_metadata_buffer(arena),
|
650
|
+
trailing_metadata_buffer(arena) {
|
635
651
|
if (server_data) {
|
636
|
-
id = static_cast<uint32_t>((
|
652
|
+
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
637
653
|
*t->accepting_stream = this;
|
638
654
|
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
|
639
655
|
post_destructive_reclaimer(t);
|
@@ -677,9 +693,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
677
693
|
grpc_slice_buffer_destroy_internal(&decompressed_data_buffer);
|
678
694
|
}
|
679
695
|
|
680
|
-
grpc_chttp2_list_remove_stalled_by_transport(t, this);
|
681
|
-
grpc_chttp2_list_remove_stalled_by_stream(t, this);
|
682
|
-
|
683
696
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
684
697
|
if (GPR_UNLIKELY(included[i])) {
|
685
698
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
@@ -698,13 +711,10 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
|
|
698
711
|
GRPC_ERROR_UNREF(read_closed_error);
|
699
712
|
GRPC_ERROR_UNREF(write_closed_error);
|
700
713
|
GRPC_ERROR_UNREF(byte_stream_error);
|
701
|
-
|
702
714
|
flow_control.Destroy();
|
703
|
-
|
704
|
-
if (t->resource_user != nullptr) {
|
715
|
+
if (!t->is_client) {
|
705
716
|
grpc_resource_user_free(t->resource_user, GRPC_RESOURCE_QUOTA_CALL_SIZE);
|
706
717
|
}
|
707
|
-
|
708
718
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
|
709
719
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
|
710
720
|
}
|
@@ -718,7 +728,7 @@ static int init_stream(grpc_transport* gt, grpc_stream* gs,
|
|
718
728
|
return 0;
|
719
729
|
}
|
720
730
|
|
721
|
-
static void destroy_stream_locked(void* sp,
|
731
|
+
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
|
722
732
|
GPR_TIMER_SCOPE("destroy_stream", 0);
|
723
733
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
|
724
734
|
s->~grpc_chttp2_stream();
|
@@ -756,10 +766,10 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
756
766
|
// Don't accept the stream if memory quota doesn't allow. Note that we should
|
757
767
|
// simply refuse the stream here instead of canceling the stream after it's
|
758
768
|
// accepted since the latter will create the call which costs much memory.
|
759
|
-
|
760
|
-
|
769
|
+
GPR_ASSERT(t->resource_user != nullptr);
|
770
|
+
if (!grpc_resource_user_safe_alloc(t->resource_user,
|
761
771
|
GRPC_RESOURCE_QUOTA_CALL_SIZE)) {
|
762
|
-
gpr_log(
|
772
|
+
gpr_log(GPR_INFO, "Memory exhausted, rejecting the stream.");
|
763
773
|
grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_REFUSED_STREAM,
|
764
774
|
nullptr);
|
765
775
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
|
@@ -769,14 +779,14 @@ grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
|
|
769
779
|
GPR_ASSERT(t->accepting_stream == nullptr);
|
770
780
|
t->accepting_stream = &accepting;
|
771
781
|
t->accept_stream_cb(t->accept_stream_cb_user_data, &t->base,
|
772
|
-
|
782
|
+
reinterpret_cast<void*>(id));
|
773
783
|
t->accepting_stream = nullptr;
|
774
784
|
return accepting;
|
775
785
|
}
|
776
786
|
|
777
|
-
|
778
|
-
|
779
|
-
|
787
|
+
//
|
788
|
+
// OUTPUT PROCESSING
|
789
|
+
//
|
780
790
|
|
781
791
|
static const char* write_state_name(grpc_chttp2_write_state st) {
|
782
792
|
switch (st) {
|
@@ -794,20 +804,20 @@ static void set_write_state(grpc_chttp2_transport* t,
|
|
794
804
|
grpc_chttp2_write_state st, const char* reason) {
|
795
805
|
GRPC_CHTTP2_IF_TRACING(
|
796
806
|
gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
|
797
|
-
t->is_client ? "CLIENT" : "SERVER", t->peer_string,
|
807
|
+
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
|
798
808
|
write_state_name(t->write_state), write_state_name(st), reason));
|
799
809
|
t->write_state = st;
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
810
|
+
// If the state is being reset back to idle, it means a write was just
|
811
|
+
// finished. Make sure all the run_after_write closures are scheduled.
|
812
|
+
//
|
813
|
+
// This is also our chance to close the transport if the transport was marked
|
814
|
+
// to be closed after all writes finish (for example, if we received a go-away
|
815
|
+
// from peer while we had some pending writes)
|
806
816
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
807
817
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
|
808
|
-
if (t->close_transport_on_writes_finished !=
|
809
|
-
|
810
|
-
t->close_transport_on_writes_finished =
|
818
|
+
if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
|
819
|
+
grpc_error_handle err = t->close_transport_on_writes_finished;
|
820
|
+
t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
|
811
821
|
close_transport_locked(t, err);
|
812
822
|
}
|
813
823
|
}
|
@@ -864,6 +874,9 @@ static void inc_initiate_write_reason(
|
|
864
874
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
865
875
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
|
866
876
|
break;
|
877
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
878
|
+
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
|
879
|
+
break;
|
867
880
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
868
881
|
GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
|
869
882
|
break;
|
@@ -889,22 +902,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
889
902
|
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
|
890
903
|
grpc_chttp2_initiate_write_reason_string(reason));
|
891
904
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
905
|
+
// Note that the 'write_action_begin_locked' closure is being scheduled
|
906
|
+
// on the 'finally_scheduler' of t->combiner. This means that
|
907
|
+
// 'write_action_begin_locked' is called only *after* all the other
|
908
|
+
// closures (some of which are potentially initiating more writes on the
|
909
|
+
// transport) are executed on the t->combiner.
|
910
|
+
//
|
911
|
+
// The reason for scheduling on finally_scheduler is to make sure we batch
|
912
|
+
// as many writes as possible. 'write_action_begin_locked' is the function
|
913
|
+
// that gathers all the relevant bytes (which are at various places in the
|
914
|
+
// grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
915
|
+
// grpc_chttp2_transport thereby batching what would have been potentially
|
916
|
+
// multiple write operations.
|
917
|
+
//
|
918
|
+
// Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
919
|
+
// It does not call the endpoint to write the bytes. That is done by the
|
920
|
+
// 'write_action' (which is scheduled by 'write_action_begin_locked')
|
908
921
|
t->combiner->FinallyRun(
|
909
922
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
910
923
|
write_action_begin_locked, t, nullptr),
|
@@ -935,7 +948,8 @@ static const char* begin_writing_desc(bool partial) {
|
|
935
948
|
}
|
936
949
|
}
|
937
950
|
|
938
|
-
static void write_action_begin_locked(void* gt,
|
951
|
+
static void write_action_begin_locked(void* gt,
|
952
|
+
grpc_error_handle /*error_ignored*/) {
|
939
953
|
GPR_TIMER_SCOPE("write_action_begin_locked", 0);
|
940
954
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
941
955
|
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
@@ -956,9 +970,9 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
956
970
|
write_action(t, GRPC_ERROR_NONE);
|
957
971
|
if (t->reading_paused_on_pending_induced_frames) {
|
958
972
|
GPR_ASSERT(t->num_pending_induced_frames == 0);
|
959
|
-
|
960
|
-
|
961
|
-
|
973
|
+
// We had paused reading, because we had many induced frames (SETTINGS
|
974
|
+
// ACK, PINGS ACK and RST_STREAMS) pending in t->qbuf. Now that we have
|
975
|
+
// been able to flush qbuf, we can resume reading.
|
962
976
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
963
977
|
GPR_INFO,
|
964
978
|
"transport %p : Resuming reading after being paused due to too "
|
@@ -974,7 +988,7 @@ static void write_action_begin_locked(void* gt, grpc_error* /*error_ignored*/) {
|
|
974
988
|
}
|
975
989
|
}
|
976
990
|
|
977
|
-
static void write_action(void* gt,
|
991
|
+
static void write_action(void* gt, grpc_error_handle /*error*/) {
|
978
992
|
GPR_TIMER_SCOPE("write_action", 0);
|
979
993
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
|
980
994
|
void* cl = t->cl;
|
@@ -986,16 +1000,16 @@ static void write_action(void* gt, grpc_error* /*error*/) {
|
|
986
1000
|
cl);
|
987
1001
|
}
|
988
1002
|
|
989
|
-
static void write_action_end(void* tp,
|
1003
|
+
static void write_action_end(void* tp, grpc_error_handle error) {
|
990
1004
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
991
1005
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
|
992
1006
|
write_action_end_locked, t, nullptr),
|
993
1007
|
GRPC_ERROR_REF(error));
|
994
1008
|
}
|
995
1009
|
|
996
|
-
|
997
|
-
|
998
|
-
static void write_action_end_locked(void* tp,
|
1010
|
+
// Callback from the grpc_endpoint after bytes have been written by calling
|
1011
|
+
// sendmsg
|
1012
|
+
static void write_action_end_locked(void* tp, grpc_error_handle error) {
|
999
1013
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1000
1014
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1001
1015
|
|
@@ -1050,21 +1064,21 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1050
1064
|
grpc_chttp2_setting_id id, uint32_t value) {
|
1051
1065
|
const grpc_chttp2_setting_parameters* sp =
|
1052
1066
|
&grpc_chttp2_settings_parameters[id];
|
1053
|
-
uint32_t use_value =
|
1067
|
+
uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
|
1054
1068
|
if (use_value != value) {
|
1055
1069
|
gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
|
1056
1070
|
value, use_value);
|
1057
1071
|
}
|
1058
1072
|
if (use_value != t->settings[GRPC_LOCAL_SETTINGS][id]) {
|
1059
1073
|
t->settings[GRPC_LOCAL_SETTINGS][id] = use_value;
|
1060
|
-
t->dirtied_local_settings =
|
1074
|
+
t->dirtied_local_settings = true;
|
1061
1075
|
}
|
1062
1076
|
}
|
1063
1077
|
|
1064
1078
|
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
1065
1079
|
uint32_t goaway_error,
|
1066
1080
|
uint32_t last_stream_id,
|
1067
|
-
|
1081
|
+
absl::string_view goaway_text) {
|
1068
1082
|
// Discard the error from a previous goaway frame (if any)
|
1069
1083
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1070
1084
|
GRPC_ERROR_UNREF(t->goaway_error);
|
@@ -1080,38 +1094,43 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1080
1094
|
GRPC_CHTTP2_IF_TRACING(
|
1081
1095
|
gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
|
1082
1096
|
last_stream_id));
|
1083
|
-
|
1084
|
-
|
1097
|
+
// We want to log this irrespective of whether http tracing is enabled if we
|
1098
|
+
// received a GOAWAY with a non NO_ERROR code.
|
1085
1099
|
if (goaway_error != GRPC_HTTP2_NO_ERROR) {
|
1086
|
-
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string,
|
1087
|
-
goaway_error,
|
1088
|
-
}
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1100
|
+
gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
|
1101
|
+
goaway_error, grpc_error_std_string(t->goaway_error).c_str());
|
1102
|
+
}
|
1103
|
+
absl::Status status = grpc_error_to_absl_status(t->goaway_error);
|
1104
|
+
// When a client receives a GOAWAY with error code ENHANCE_YOUR_CALM and debug
|
1105
|
+
// data equal to "too_many_pings", it should log the occurrence at a log level
|
1106
|
+
// that is enabled by default and double the configured KEEPALIVE_TIME used
|
1107
|
+
// for new connections on that channel.
|
1093
1108
|
if (GPR_UNLIKELY(t->is_client &&
|
1094
1109
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1095
|
-
|
1110
|
+
goaway_text == "too_many_pings")) {
|
1096
1111
|
gpr_log(GPR_ERROR,
|
1097
1112
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1098
1113
|
"data equal to \"too_many_pings\"");
|
1099
1114
|
double current_keepalive_time_ms = static_cast<double>(t->keepalive_time);
|
1115
|
+
constexpr int max_keepalive_time_ms =
|
1116
|
+
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1100
1117
|
t->keepalive_time =
|
1101
|
-
current_keepalive_time_ms >
|
1118
|
+
current_keepalive_time_ms > static_cast<double>(max_keepalive_time_ms)
|
1102
1119
|
? GRPC_MILLIS_INF_FUTURE
|
1103
1120
|
: static_cast<grpc_millis>(current_keepalive_time_ms *
|
1104
1121
|
KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
|
1122
|
+
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1123
|
+
absl::Cord(std::to_string(t->keepalive_time)));
|
1105
1124
|
}
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1125
|
+
// lie: use transient failure from the transport to indicate goaway has been
|
1126
|
+
// received.
|
1127
|
+
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1128
|
+
"got_goaway");
|
1110
1129
|
}
|
1111
1130
|
|
1112
1131
|
static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
1113
1132
|
grpc_chttp2_stream* s;
|
1114
|
-
|
1133
|
+
// cancel out streams that haven't yet started if we have received a GOAWAY
|
1115
1134
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1116
1135
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1117
1136
|
grpc_chttp2_cancel_stream(
|
@@ -1122,14 +1141,14 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1122
1141
|
}
|
1123
1142
|
return;
|
1124
1143
|
}
|
1125
|
-
|
1126
|
-
|
1144
|
+
// start streams where we have free grpc_chttp2_stream ids and free
|
1145
|
+
// * concurrency
|
1127
1146
|
while (t->next_stream_id <= MAX_CLIENT_STREAM_ID &&
|
1128
1147
|
grpc_chttp2_stream_map_size(&t->stream_map) <
|
1129
1148
|
t->settings[GRPC_PEER_SETTINGS]
|
1130
1149
|
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS] &&
|
1131
1150
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1132
|
-
|
1151
|
+
// safe since we can't (legally) be parsing this stream yet
|
1133
1152
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1134
1153
|
GPR_INFO,
|
1135
1154
|
"HTTP:%s: Transport %p allocating new grpc_chttp2_stream %p to id %d",
|
@@ -1141,6 +1160,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1141
1160
|
|
1142
1161
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1143
1162
|
connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1163
|
+
absl::Status(absl::StatusCode::kUnavailable,
|
1164
|
+
"Transport Stream IDs exhausted"),
|
1144
1165
|
"no_more_stream_ids");
|
1145
1166
|
}
|
1146
1167
|
|
@@ -1149,7 +1170,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1149
1170
|
grpc_chttp2_mark_stream_writable(t, s);
|
1150
1171
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM);
|
1151
1172
|
}
|
1152
|
-
|
1173
|
+
// cancel out streams that will never be started
|
1153
1174
|
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
|
1154
1175
|
while (grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1155
1176
|
grpc_chttp2_cancel_stream(
|
@@ -1161,12 +1182,12 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1161
1182
|
}
|
1162
1183
|
}
|
1163
1184
|
|
1164
|
-
|
1165
|
-
we should not complete this closure until we can prove that the write got
|
1166
|
-
scheduled
|
1185
|
+
// Flag that this closure barrier may be covering a write in a pollset, and so
|
1186
|
+
// we should not complete this closure until we can prove that the write got
|
1187
|
+
// scheduled
|
1167
1188
|
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1168
|
-
|
1169
|
-
bits being used for flags defined above)
|
1189
|
+
// First bit of the reference count, stored in the high order bits (with the low
|
1190
|
+
// bits being used for flags defined above)
|
1170
1191
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
1171
1192
|
|
1172
1193
|
static grpc_closure* add_closure_barrier(grpc_closure* closure) {
|
@@ -1183,7 +1204,8 @@ static void null_then_sched_closure(grpc_closure** closure) {
|
|
1183
1204
|
void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
1184
1205
|
grpc_chttp2_stream* /*s*/,
|
1185
1206
|
grpc_closure** pclosure,
|
1186
|
-
|
1207
|
+
grpc_error_handle error,
|
1208
|
+
const char* desc) {
|
1187
1209
|
grpc_closure* closure = *pclosure;
|
1188
1210
|
*pclosure = nullptr;
|
1189
1211
|
if (closure == nullptr) {
|
@@ -1192,7 +1214,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1192
1214
|
}
|
1193
1215
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1194
1216
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1195
|
-
const char* errstr = grpc_error_string(error);
|
1196
1217
|
gpr_log(
|
1197
1218
|
GPR_INFO,
|
1198
1219
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
@@ -1202,15 +1223,16 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1202
1223
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1203
1224
|
static_cast<int>(closure->next_data.scratch %
|
1204
1225
|
CLOSURE_BARRIER_FIRST_REF_BIT),
|
1205
|
-
desc,
|
1226
|
+
desc, grpc_error_std_string(error).c_str(),
|
1227
|
+
write_state_name(t->write_state));
|
1206
1228
|
}
|
1207
1229
|
if (error != GRPC_ERROR_NONE) {
|
1208
1230
|
if (closure->error_data.error == GRPC_ERROR_NONE) {
|
1209
1231
|
closure->error_data.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1210
1232
|
"Error in HTTP transport completing operation");
|
1211
|
-
closure->error_data.error =
|
1212
|
-
closure->error_data.error,
|
1213
|
-
|
1233
|
+
closure->error_data.error =
|
1234
|
+
grpc_error_set_str(closure->error_data.error,
|
1235
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, t->peer_string);
|
1214
1236
|
}
|
1215
1237
|
closure->error_data.error =
|
1216
1238
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1230,9 +1252,10 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1230
1252
|
}
|
1231
1253
|
|
1232
1254
|
static bool contains_non_ok_status(grpc_metadata_batch* batch) {
|
1233
|
-
if (batch->
|
1234
|
-
return !grpc_mdelem_static_value_eq(
|
1235
|
-
|
1255
|
+
if (batch->legacy_index()->named.grpc_status != nullptr) {
|
1256
|
+
return !grpc_mdelem_static_value_eq(
|
1257
|
+
batch->legacy_index()->named.grpc_status->md,
|
1258
|
+
GRPC_MDELEM_GRPC_STATUS_0);
|
1236
1259
|
}
|
1237
1260
|
return false;
|
1238
1261
|
}
|
@@ -1258,9 +1281,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1258
1281
|
grpc_chttp2_stream* s) {
|
1259
1282
|
for (;;) {
|
1260
1283
|
if (s->fetching_send_message == nullptr) {
|
1261
|
-
|
1284
|
+
// Stream was cancelled before message fetch completed
|
1262
1285
|
abort(); /* TODO(ctiller): what cleanup here? */
|
1263
|
-
return; /* early out */
|
1264
1286
|
}
|
1265
1287
|
if (s->fetched_send_message_length == s->fetching_send_message->length()) {
|
1266
1288
|
int64_t notify_offset = s->next_message_end_offset;
|
@@ -1291,7 +1313,8 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1291
1313
|
UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1292
1314
|
::complete_fetch, s,
|
1293
1315
|
grpc_schedule_on_exec_ctx))) {
|
1294
|
-
|
1316
|
+
grpc_error_handle error =
|
1317
|
+
s->fetching_send_message->Pull(&s->fetching_slice);
|
1295
1318
|
if (error != GRPC_ERROR_NONE) {
|
1296
1319
|
s->fetching_send_message.reset();
|
1297
1320
|
grpc_chttp2_cancel_stream(t, s, error);
|
@@ -1302,14 +1325,14 @@ static void continue_fetching_send_locked(grpc_chttp2_transport* t,
|
|
1302
1325
|
}
|
1303
1326
|
}
|
1304
1327
|
|
1305
|
-
static void complete_fetch(void* gs,
|
1328
|
+
static void complete_fetch(void* gs, grpc_error_handle error) {
|
1306
1329
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1307
1330
|
s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
|
1308
1331
|
::complete_fetch_locked, s, nullptr),
|
1309
1332
|
GRPC_ERROR_REF(error));
|
1310
1333
|
}
|
1311
1334
|
|
1312
|
-
static void complete_fetch_locked(void* gs,
|
1335
|
+
static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
1313
1336
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
|
1314
1337
|
grpc_chttp2_transport* t = s->t;
|
1315
1338
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1327,19 +1350,18 @@ static void complete_fetch_locked(void* gs, grpc_error* error) {
|
|
1327
1350
|
|
1328
1351
|
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
1329
1352
|
bool is_client, bool is_initial) {
|
1330
|
-
|
1331
|
-
|
1332
|
-
char*
|
1333
|
-
char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md->md));
|
1353
|
+
md_batch->ForEach([=](grpc_mdelem md) {
|
1354
|
+
char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
|
1355
|
+
char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
1334
1356
|
gpr_log(GPR_INFO, "HTTP:%d:%s:%s: %s: %s", id, is_initial ? "HDR" : "TRL",
|
1335
1357
|
is_client ? "CLI" : "SVR", key, value);
|
1336
1358
|
gpr_free(key);
|
1337
1359
|
gpr_free(value);
|
1338
|
-
}
|
1360
|
+
});
|
1339
1361
|
}
|
1340
1362
|
|
1341
1363
|
static void perform_stream_op_locked(void* stream_op,
|
1342
|
-
|
1364
|
+
grpc_error_handle /*error_ignored*/) {
|
1343
1365
|
GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
|
1344
1366
|
|
1345
1367
|
grpc_transport_stream_op_batch* op =
|
@@ -1354,10 +1376,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1354
1376
|
s->context = op->payload->context;
|
1355
1377
|
s->traced = op->is_traced;
|
1356
1378
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1357
|
-
|
1358
|
-
|
1359
|
-
op->on_complete);
|
1360
|
-
gpr_free(str);
|
1379
|
+
gpr_log(GPR_INFO, "perform_stream_op_locked: %s; on_complete = %p",
|
1380
|
+
grpc_transport_stream_op_batch_string(op).c_str(), op->on_complete);
|
1361
1381
|
if (op->send_initial_metadata) {
|
1362
1382
|
log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
|
1363
1383
|
s->id, t->is_client, true);
|
@@ -1390,13 +1410,14 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1390
1410
|
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
|
1391
1411
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1392
1412
|
|
1393
|
-
|
1394
|
-
if (op_payload->send_initial_metadata.send_initial_metadata->
|
1395
|
-
.content_encoding == nullptr ||
|
1413
|
+
// Identify stream compression
|
1414
|
+
if (op_payload->send_initial_metadata.send_initial_metadata->legacy_index()
|
1415
|
+
->named.content_encoding == nullptr ||
|
1396
1416
|
grpc_stream_compression_method_parse(
|
1397
1417
|
GRPC_MDVALUE(
|
1398
|
-
op_payload->send_initial_metadata.send_initial_metadata
|
1399
|
-
|
1418
|
+
op_payload->send_initial_metadata.send_initial_metadata
|
1419
|
+
->legacy_index()
|
1420
|
+
->named.content_encoding->md),
|
1400
1421
|
true, &s->stream_compression_method) == 0) {
|
1401
1422
|
s->stream_compression_method = GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS;
|
1402
1423
|
}
|
@@ -1409,68 +1430,51 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1409
1430
|
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1410
1431
|
s->send_initial_metadata =
|
1411
1432
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1412
|
-
const size_t metadata_size =
|
1413
|
-
grpc_metadata_batch_size(s->send_initial_metadata);
|
1414
|
-
const size_t metadata_peer_limit =
|
1415
|
-
t->settings[GRPC_PEER_SETTINGS]
|
1416
|
-
[GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
|
1417
1433
|
if (t->is_client) {
|
1418
|
-
s->deadline =
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
|
1433
|
-
} else {
|
1434
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1435
|
-
s->seen_error = true;
|
1436
|
-
}
|
1437
|
-
if (!s->write_closed) {
|
1438
|
-
if (t->is_client) {
|
1439
|
-
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1440
|
-
GPR_ASSERT(s->id == 0);
|
1441
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1442
|
-
maybe_start_some_streams(t);
|
1443
|
-
} else {
|
1444
|
-
grpc_chttp2_cancel_stream(
|
1445
|
-
t, s,
|
1446
|
-
grpc_error_set_int(
|
1447
|
-
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1448
|
-
"Transport closed", &t->closed_with_error, 1),
|
1449
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1450
|
-
}
|
1434
|
+
s->deadline = std::min(
|
1435
|
+
s->deadline,
|
1436
|
+
s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
|
1437
|
+
.value_or(GRPC_MILLIS_INF_FUTURE));
|
1438
|
+
}
|
1439
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1440
|
+
s->seen_error = true;
|
1441
|
+
}
|
1442
|
+
if (!s->write_closed) {
|
1443
|
+
if (t->is_client) {
|
1444
|
+
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
1445
|
+
GPR_ASSERT(s->id == 0);
|
1446
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1447
|
+
maybe_start_some_streams(t);
|
1451
1448
|
} else {
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1459
|
-
}
|
1449
|
+
grpc_chttp2_cancel_stream(
|
1450
|
+
t, s,
|
1451
|
+
grpc_error_set_int(
|
1452
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1453
|
+
"Transport closed", &t->closed_with_error, 1),
|
1454
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
1460
1455
|
}
|
1461
1456
|
} else {
|
1462
|
-
s->
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1457
|
+
GPR_ASSERT(s->id != 0);
|
1458
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1459
|
+
if (!(op->send_message &&
|
1460
|
+
(op->payload->send_message.send_message->flags() &
|
1461
|
+
GRPC_WRITE_BUFFER_HINT))) {
|
1462
|
+
grpc_chttp2_initiate_write(
|
1463
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1464
|
+
}
|
1469
1465
|
}
|
1466
|
+
} else {
|
1467
|
+
s->send_initial_metadata = nullptr;
|
1468
|
+
grpc_chttp2_complete_closure_step(
|
1469
|
+
t, s, &s->send_initial_metadata_finished,
|
1470
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1471
|
+
"Attempt to send initial metadata after stream was closed",
|
1472
|
+
&s->write_closed_error, 1),
|
1473
|
+
"send_initial_metadata_finished");
|
1470
1474
|
}
|
1471
1475
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1472
1476
|
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1473
|
-
(gpr_atm)t->peer_string);
|
1477
|
+
(gpr_atm)t->peer_string.c_str());
|
1474
1478
|
}
|
1475
1479
|
}
|
1476
1480
|
|
@@ -1526,47 +1530,28 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1526
1530
|
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1527
1531
|
s->send_trailing_metadata =
|
1528
1532
|
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1533
|
+
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1529
1534
|
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
|
-
s->seen_error = true;
|
1551
|
-
}
|
1552
|
-
if (s->write_closed) {
|
1553
|
-
s->send_trailing_metadata = nullptr;
|
1554
|
-
grpc_chttp2_complete_closure_step(
|
1555
|
-
t, s, &s->send_trailing_metadata_finished,
|
1556
|
-
grpc_metadata_batch_is_empty(
|
1557
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1558
|
-
? GRPC_ERROR_NONE
|
1559
|
-
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1560
|
-
"Attempt to send trailing metadata after "
|
1561
|
-
"stream was closed"),
|
1562
|
-
"send_trailing_metadata_finished");
|
1563
|
-
} else if (s->id != 0) {
|
1564
|
-
/* TODO(ctiller): check if there's flow control for any outstanding
|
1565
|
-
bytes before going writable */
|
1566
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1567
|
-
grpc_chttp2_initiate_write(
|
1568
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1569
|
-
}
|
1535
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1536
|
+
s->seen_error = true;
|
1537
|
+
}
|
1538
|
+
if (s->write_closed) {
|
1539
|
+
s->send_trailing_metadata = nullptr;
|
1540
|
+
s->sent_trailing_metadata_op = nullptr;
|
1541
|
+
grpc_chttp2_complete_closure_step(
|
1542
|
+
t, s, &s->send_trailing_metadata_finished,
|
1543
|
+
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1544
|
+
? GRPC_ERROR_NONE
|
1545
|
+
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1546
|
+
"Attempt to send trailing metadata after "
|
1547
|
+
"stream was closed"),
|
1548
|
+
"send_trailing_metadata_finished");
|
1549
|
+
} else if (s->id != 0) {
|
1550
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1551
|
+
// bytes before going writable
|
1552
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1553
|
+
grpc_chttp2_initiate_write(
|
1554
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1570
1555
|
}
|
1571
1556
|
}
|
1572
1557
|
|
@@ -1581,7 +1566,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1581
1566
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1582
1567
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1583
1568
|
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1584
|
-
(gpr_atm)t->peer_string);
|
1569
|
+
(gpr_atm)t->peer_string.c_str());
|
1585
1570
|
}
|
1586
1571
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1587
1572
|
}
|
@@ -1593,6 +1578,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1593
1578
|
GPR_ASSERT(!s->pending_byte_stream);
|
1594
1579
|
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1595
1580
|
s->recv_message = op_payload->recv_message.recv_message;
|
1581
|
+
s->call_failed_before_recv_message =
|
1582
|
+
op_payload->recv_message.call_failed_before_recv_message;
|
1596
1583
|
if (s->id != 0) {
|
1597
1584
|
if (!s->read_closed) {
|
1598
1585
|
before = s->frame_storage.length +
|
@@ -1602,8 +1589,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1602
1589
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
1603
1590
|
if (s->id != 0) {
|
1604
1591
|
if (!s->read_closed && s->frame_storage.length == 0) {
|
1605
|
-
size_t after = s->
|
1606
|
-
s->unprocessed_incoming_frames_buffer_cached_length;
|
1592
|
+
size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
|
1607
1593
|
s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
|
1608
1594
|
before - after);
|
1609
1595
|
grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
|
@@ -1640,21 +1626,20 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1640
1626
|
|
1641
1627
|
if (!t->is_client) {
|
1642
1628
|
if (op->send_initial_metadata) {
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1629
|
+
GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
|
1630
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1631
|
+
.has_value());
|
1646
1632
|
}
|
1647
1633
|
if (op->send_trailing_metadata) {
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1634
|
+
GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata
|
1635
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1636
|
+
.has_value());
|
1651
1637
|
}
|
1652
1638
|
}
|
1653
1639
|
|
1654
1640
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1655
|
-
|
1656
|
-
|
1657
|
-
gpr_free(str);
|
1641
|
+
gpr_log(GPR_INFO, "perform_stream_op[s=%p]: %s", s,
|
1642
|
+
grpc_transport_stream_op_batch_string(op).c_str());
|
1658
1643
|
}
|
1659
1644
|
|
1660
1645
|
GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
|
@@ -1664,9 +1649,9 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1664
1649
|
GRPC_ERROR_NONE);
|
1665
1650
|
}
|
1666
1651
|
|
1667
|
-
static void cancel_pings(grpc_chttp2_transport* t,
|
1668
|
-
|
1669
|
-
|
1652
|
+
static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1653
|
+
// callback remaining pings: they're not allowed to call into the transport,
|
1654
|
+
// and maybe they hold resources that need to be freed
|
1670
1655
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1671
1656
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
1672
1657
|
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
|
@@ -1692,11 +1677,9 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1692
1677
|
GRPC_ERROR_NONE);
|
1693
1678
|
}
|
1694
1679
|
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
* instead of waiting for that ping to complete and then starting a new ping.
|
1699
|
-
*/
|
1680
|
+
// Specialized form of send_ping_locked for keepalive ping. If there is already
|
1681
|
+
// a ping in progress, the keepalive ping would piggyback onto that ping,
|
1682
|
+
// instead of waiting for that ping to complete and then starting a new ping.
|
1700
1683
|
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1701
1684
|
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1702
1685
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
@@ -1710,7 +1693,7 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1710
1693
|
}
|
1711
1694
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1712
1695
|
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1713
|
-
|
1696
|
+
// There is a ping in flight. Add yourself to the inflight closure list.
|
1714
1697
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
1715
1698
|
start_keepalive_ping_locked, t, nullptr),
|
1716
1699
|
GRPC_ERROR_REF(t->closed_with_error));
|
@@ -1733,14 +1716,14 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
|
1733
1716
|
GRPC_ERROR_NONE);
|
1734
1717
|
}
|
1735
1718
|
|
1736
|
-
void grpc_chttp2_retry_initiate_ping(void* tp,
|
1719
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
|
1737
1720
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1738
1721
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
1739
1722
|
retry_initiate_ping_locked, t, nullptr),
|
1740
1723
|
GRPC_ERROR_REF(error));
|
1741
1724
|
}
|
1742
1725
|
|
1743
|
-
static void retry_initiate_ping_locked(void* tp,
|
1726
|
+
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
|
1744
1727
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1745
1728
|
t->ping_state.is_delayed_ping_timer_set = false;
|
1746
1729
|
if (error == GRPC_ERROR_NONE) {
|
@@ -1752,9 +1735,8 @@ static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
|
1752
1735
|
void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
1753
1736
|
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1754
1737
|
if (pq->inflight_id != id) {
|
1755
|
-
|
1756
|
-
|
1757
|
-
gpr_free(from);
|
1738
|
+
gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
|
1739
|
+
t->peer_string.c_str(), id);
|
1758
1740
|
return;
|
1759
1741
|
}
|
1760
1742
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
|
@@ -1764,18 +1746,18 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
|
|
1764
1746
|
}
|
1765
1747
|
}
|
1766
1748
|
|
1767
|
-
static void send_goaway(grpc_chttp2_transport* t,
|
1768
|
-
|
1769
|
-
gpr_log(
|
1770
|
-
|
1749
|
+
static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
1750
|
+
// We want to log this irrespective of whether http tracing is enabled
|
1751
|
+
gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
|
1752
|
+
grpc_error_std_string(error).c_str());
|
1771
1753
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1772
1754
|
grpc_http2_error_code http_error;
|
1773
|
-
|
1774
|
-
grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &
|
1755
|
+
std::string message;
|
1756
|
+
grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &message,
|
1775
1757
|
&http_error, nullptr);
|
1776
|
-
grpc_chttp2_goaway_append(
|
1777
|
-
|
1778
|
-
|
1758
|
+
grpc_chttp2_goaway_append(
|
1759
|
+
t->last_new_stream_id, static_cast<uint32_t>(http_error),
|
1760
|
+
grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
|
1779
1761
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1780
1762
|
GRPC_ERROR_UNREF(error);
|
1781
1763
|
}
|
@@ -1787,7 +1769,7 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1787
1769
|
grpc_error_set_int(
|
1788
1770
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
|
1789
1771
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
1790
|
-
|
1772
|
+
// The transport will be closed after the write is done
|
1791
1773
|
close_transport_locked(
|
1792
1774
|
t, grpc_error_set_int(
|
1793
1775
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
|
@@ -1795,13 +1777,22 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
|
|
1795
1777
|
}
|
1796
1778
|
}
|
1797
1779
|
|
1780
|
+
void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
|
1781
|
+
if (!t->is_client) {
|
1782
|
+
t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
|
1783
|
+
t->ping_recv_state.ping_strikes = 0;
|
1784
|
+
}
|
1785
|
+
t->ping_state.pings_before_data_required =
|
1786
|
+
t->ping_policy.max_pings_without_data;
|
1787
|
+
}
|
1788
|
+
|
1798
1789
|
static void perform_transport_op_locked(void* stream_op,
|
1799
|
-
|
1790
|
+
grpc_error_handle /*error_ignored*/) {
|
1800
1791
|
grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
|
1801
1792
|
grpc_chttp2_transport* t =
|
1802
1793
|
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
|
1803
1794
|
|
1804
|
-
if (op->goaway_error) {
|
1795
|
+
if (op->goaway_error != GRPC_ERROR_NONE) {
|
1805
1796
|
send_goaway(t, op->goaway_error);
|
1806
1797
|
}
|
1807
1798
|
|
@@ -1843,9 +1834,8 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1843
1834
|
static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
1844
1835
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
1845
1836
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
1846
|
-
|
1847
|
-
|
1848
|
-
gpr_free(msg);
|
1837
|
+
gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", t,
|
1838
|
+
grpc_transport_op_string(op).c_str());
|
1849
1839
|
}
|
1850
1840
|
op->handler_private.extra_arg = gt;
|
1851
1841
|
GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
|
@@ -1854,9 +1844,9 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1854
1844
|
GRPC_ERROR_NONE);
|
1855
1845
|
}
|
1856
1846
|
|
1857
|
-
|
1858
|
-
|
1859
|
-
|
1847
|
+
//
|
1848
|
+
// INPUT PROCESSING - GENERAL
|
1849
|
+
//
|
1860
1850
|
|
1861
1851
|
void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
1862
1852
|
grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
|
@@ -1869,15 +1859,14 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1869
1859
|
&s->unprocessed_incoming_frames_buffer);
|
1870
1860
|
}
|
1871
1861
|
}
|
1872
|
-
|
1873
|
-
s->recv_initial_metadata);
|
1862
|
+
*s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
|
1874
1863
|
null_then_sched_closure(&s->recv_initial_metadata_ready);
|
1875
1864
|
}
|
1876
1865
|
}
|
1877
1866
|
|
1878
1867
|
void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
1879
1868
|
grpc_chttp2_stream* s) {
|
1880
|
-
|
1869
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1881
1870
|
if (s->recv_message_ready != nullptr) {
|
1882
1871
|
*s->recv_message = nullptr;
|
1883
1872
|
if (s->final_metadata_requested && s->seen_error) {
|
@@ -1954,6 +1943,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
|
|
1954
1943
|
null_then_sched_closure(&s->recv_message_ready);
|
1955
1944
|
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
|
1956
1945
|
*s->recv_message = nullptr;
|
1946
|
+
if (s->call_failed_before_recv_message != nullptr) {
|
1947
|
+
*s->call_failed_before_recv_message =
|
1948
|
+
(s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
|
1949
|
+
}
|
1957
1950
|
null_then_sched_closure(&s->recv_message_ready);
|
1958
1951
|
}
|
1959
1952
|
GRPC_ERROR_UNREF(error);
|
@@ -1976,13 +1969,14 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1976
1969
|
s->unprocessed_incoming_frames_buffer.length > 0;
|
1977
1970
|
if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
|
1978
1971
|
!s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
|
1979
|
-
|
1980
|
-
|
1972
|
+
// Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
|
1973
|
+
// maybe decompress the next 5 bytes in the stream.
|
1981
1974
|
if (s->stream_decompression_method ==
|
1982
1975
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1983
1976
|
grpc_slice_buffer_move_first(
|
1984
1977
|
&s->frame_storage,
|
1985
|
-
|
1978
|
+
std::min(s->frame_storage.length,
|
1979
|
+
size_t(GRPC_HEADER_SIZE_IN_BYTES)),
|
1986
1980
|
&s->unprocessed_incoming_frames_buffer);
|
1987
1981
|
if (s->unprocessed_incoming_frames_buffer.length > 0) {
|
1988
1982
|
s->unprocessed_incoming_frames_decompressed = true;
|
@@ -2019,15 +2013,14 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
2019
2013
|
s->recv_trailing_metadata_finished != nullptr) {
|
2020
2014
|
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
2021
2015
|
s->collecting_stats = nullptr;
|
2022
|
-
|
2023
|
-
s->recv_trailing_metadata);
|
2016
|
+
*s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
|
2024
2017
|
null_then_sched_closure(&s->recv_trailing_metadata_finished);
|
2025
2018
|
}
|
2026
2019
|
}
|
2027
2020
|
}
|
2028
2021
|
|
2029
2022
|
static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
2030
|
-
|
2023
|
+
grpc_error_handle error) {
|
2031
2024
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2032
2025
|
grpc_chttp2_stream_map_delete(&t->stream_map, id));
|
2033
2026
|
GPR_DEBUG_ASSERT(s);
|
@@ -2061,6 +2054,8 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2061
2054
|
if (grpc_chttp2_list_remove_writable_stream(t, s)) {
|
2062
2055
|
GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:remove_stream");
|
2063
2056
|
}
|
2057
|
+
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
2058
|
+
grpc_chttp2_list_remove_stalled_by_transport(t, s);
|
2064
2059
|
|
2065
2060
|
GRPC_ERROR_UNREF(error);
|
2066
2061
|
|
@@ -2068,7 +2063,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
|
|
2068
2063
|
}
|
2069
2064
|
|
2070
2065
|
void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2071
|
-
|
2066
|
+
grpc_error_handle due_to_error) {
|
2072
2067
|
if (!t->is_client && !s->sent_trailing_metadata &&
|
2073
2068
|
grpc_error_has_clear_grpc_status(due_to_error)) {
|
2074
2069
|
close_from_api(t, s, due_to_error);
|
@@ -2092,35 +2087,33 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2092
2087
|
}
|
2093
2088
|
|
2094
2089
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2095
|
-
|
2090
|
+
grpc_error_handle error) {
|
2096
2091
|
grpc_status_code status;
|
2097
|
-
|
2098
|
-
grpc_error_get_status(error, s->deadline, &status, &
|
2092
|
+
std::string message;
|
2093
|
+
grpc_error_get_status(error, s->deadline, &status, &message, nullptr,
|
2094
|
+
nullptr);
|
2099
2095
|
if (status != GRPC_STATUS_OK) {
|
2100
2096
|
s->seen_error = true;
|
2101
2097
|
}
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2098
|
+
// stream_global->recv_trailing_metadata_finished gives us a
|
2099
|
+
// last chance replacement: we've received trailing metadata,
|
2100
|
+
// but something more important has become available to signal
|
2101
|
+
// to the upper layers - drop what we've got, and then publish
|
2102
|
+
// what we want - which is safe because we haven't told anyone
|
2103
|
+
// about the metadata yet
|
2108
2104
|
if (s->published_metadata[1] == GRPC_METADATA_NOT_PUBLISHED ||
|
2109
2105
|
s->recv_trailing_metadata_finished != nullptr) {
|
2110
2106
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
2111
2107
|
gpr_ltoa(status, status_string);
|
2112
2108
|
GRPC_LOG_IF_ERROR("add_status",
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2117
|
-
|
2118
|
-
|
2119
|
-
|
2120
|
-
|
2121
|
-
grpc_chttp2_incoming_metadata_buffer_replace_or_add(
|
2122
|
-
&s->metadata_buffer[1],
|
2123
|
-
grpc_mdelem_create(GRPC_MDSTR_GRPC_MESSAGE, slice, nullptr)));
|
2109
|
+
s->trailing_metadata_buffer.ReplaceOrAppend(
|
2110
|
+
GRPC_MDSTR_GRPC_STATUS,
|
2111
|
+
grpc_core::UnmanagedMemorySlice(status_string)));
|
2112
|
+
if (!message.empty()) {
|
2113
|
+
grpc_slice message_slice = grpc_slice_from_cpp_string(std::move(message));
|
2114
|
+
GRPC_LOG_IF_ERROR("add_status_message",
|
2115
|
+
s->trailing_metadata_buffer.ReplaceOrAppend(
|
2116
|
+
GRPC_MDSTR_GRPC_MESSAGE, message_slice));
|
2124
2117
|
}
|
2125
2118
|
s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
|
2126
2119
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
@@ -2129,7 +2122,8 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2129
2122
|
GRPC_ERROR_UNREF(error);
|
2130
2123
|
}
|
2131
2124
|
|
2132
|
-
static void add_error(
|
2125
|
+
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
|
2126
|
+
size_t* nrefs) {
|
2133
2127
|
if (error == GRPC_ERROR_NONE) return;
|
2134
2128
|
for (size_t i = 0; i < *nrefs; i++) {
|
2135
2129
|
if (error == refs[i]) {
|
@@ -2140,16 +2134,17 @@ static void add_error(grpc_error* error, grpc_error** refs, size_t* nrefs) {
|
|
2140
2134
|
++*nrefs;
|
2141
2135
|
}
|
2142
2136
|
|
2143
|
-
static
|
2144
|
-
|
2145
|
-
|
2137
|
+
static grpc_error_handle removal_error(grpc_error_handle extra_error,
|
2138
|
+
grpc_chttp2_stream* s,
|
2139
|
+
const char* main_error_msg) {
|
2140
|
+
grpc_error_handle refs[3];
|
2146
2141
|
size_t nrefs = 0;
|
2147
2142
|
add_error(s->read_closed_error, refs, &nrefs);
|
2148
2143
|
add_error(s->write_closed_error, refs, &nrefs);
|
2149
2144
|
add_error(extra_error, refs, &nrefs);
|
2150
|
-
|
2145
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2151
2146
|
if (nrefs > 0) {
|
2152
|
-
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2147
|
+
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
|
2153
2148
|
refs, nrefs);
|
2154
2149
|
}
|
2155
2150
|
GRPC_ERROR_UNREF(extra_error);
|
@@ -2157,7 +2152,8 @@ static grpc_error* removal_error(grpc_error* extra_error, grpc_chttp2_stream* s,
|
|
2157
2152
|
}
|
2158
2153
|
|
2159
2154
|
static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2160
|
-
grpc_chttp2_write_cb** list,
|
2155
|
+
grpc_chttp2_write_cb** list,
|
2156
|
+
grpc_error_handle error) {
|
2161
2157
|
while (*list) {
|
2162
2158
|
grpc_chttp2_write_cb* cb = *list;
|
2163
2159
|
*list = cb->next;
|
@@ -2170,7 +2166,8 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2170
2166
|
}
|
2171
2167
|
|
2172
2168
|
void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
2173
|
-
grpc_chttp2_stream* s,
|
2169
|
+
grpc_chttp2_stream* s,
|
2170
|
+
grpc_error_handle error) {
|
2174
2171
|
error =
|
2175
2172
|
removal_error(error, s, "Pending writes failed due to stream closure");
|
2176
2173
|
s->send_initial_metadata = nullptr;
|
@@ -2179,6 +2176,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2179
2176
|
"send_initial_metadata_finished");
|
2180
2177
|
|
2181
2178
|
s->send_trailing_metadata = nullptr;
|
2179
|
+
s->sent_trailing_metadata_op = nullptr;
|
2182
2180
|
grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
|
2183
2181
|
GRPC_ERROR_REF(error),
|
2184
2182
|
"send_trailing_metadata_finished");
|
@@ -2193,11 +2191,14 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
2193
2191
|
|
2194
2192
|
void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
2195
2193
|
grpc_chttp2_stream* s, int close_reads,
|
2196
|
-
int close_writes,
|
2194
|
+
int close_writes, grpc_error_handle error) {
|
2197
2195
|
if (s->read_closed && s->write_closed) {
|
2198
|
-
|
2196
|
+
// already closed, but we should still fake the status if needed.
|
2197
|
+
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
2198
|
+
if (overall_error != GRPC_ERROR_NONE) {
|
2199
|
+
grpc_chttp2_fake_status(t, s, overall_error);
|
2200
|
+
}
|
2199
2201
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
2200
|
-
GRPC_ERROR_UNREF(error);
|
2201
2202
|
return;
|
2202
2203
|
}
|
2203
2204
|
bool closed_read = false;
|
@@ -2214,12 +2215,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2214
2215
|
}
|
2215
2216
|
if (s->read_closed && s->write_closed) {
|
2216
2217
|
became_closed = true;
|
2217
|
-
|
2218
|
+
grpc_error_handle overall_error =
|
2218
2219
|
removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
|
2219
2220
|
if (s->id != 0) {
|
2220
2221
|
remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
|
2221
2222
|
} else {
|
2222
|
-
|
2223
|
+
// Purge streams waiting on concurrency still waiting for id assignment
|
2223
2224
|
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
|
2224
2225
|
}
|
2225
2226
|
if (overall_error != GRPC_ERROR_NONE) {
|
@@ -2243,7 +2244,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
|
|
2243
2244
|
}
|
2244
2245
|
|
2245
2246
|
static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2246
|
-
|
2247
|
+
grpc_error_handle error) {
|
2247
2248
|
grpc_slice hdr;
|
2248
2249
|
grpc_slice status_hdr;
|
2249
2250
|
grpc_slice http_status_hdr;
|
@@ -2252,18 +2253,18 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2252
2253
|
uint8_t* p;
|
2253
2254
|
uint32_t len = 0;
|
2254
2255
|
grpc_status_code grpc_status;
|
2255
|
-
|
2256
|
-
grpc_error_get_status(error, s->deadline, &grpc_status, &
|
2256
|
+
std::string message;
|
2257
|
+
grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
|
2257
2258
|
nullptr);
|
2258
2259
|
|
2259
2260
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
2260
2261
|
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
|
2262
|
+
// Hand roll a header block.
|
2263
|
+
// This is unnecessarily ugly - at some point we should find a more
|
2264
|
+
// elegant solution.
|
2265
|
+
// It's complicated by the fact that our send machinery would be dead by
|
2266
|
+
// the time we got around to sending this, so instead we ignore HPACK
|
2267
|
+
// compression and just write the uncompressed bytes onto the wire.
|
2267
2268
|
if (!s->sent_initial_metadata) {
|
2268
2269
|
http_status_hdr = GRPC_SLICE_MALLOC(13);
|
2269
2270
|
p = GRPC_SLICE_START_PTR(http_status_hdr);
|
@@ -2346,10 +2347,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2346
2347
|
GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
|
2347
2348
|
len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
|
2348
2349
|
|
2349
|
-
size_t msg_len =
|
2350
|
+
size_t msg_len = message.length();
|
2350
2351
|
GPR_ASSERT(msg_len <= UINT32_MAX);
|
2351
|
-
|
2352
|
-
message_pfx = GRPC_SLICE_MALLOC(14 +
|
2352
|
+
grpc_core::VarintWriter<1> msg_len_writer(msg_len);
|
2353
|
+
message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
|
2353
2354
|
p = GRPC_SLICE_START_PTR(message_pfx);
|
2354
2355
|
*p++ = 0x00; /* literal header, not indexed */
|
2355
2356
|
*p++ = 12; /* len(grpc-message) */
|
@@ -2365,8 +2366,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2365
2366
|
*p++ = 'a';
|
2366
2367
|
*p++ = 'g';
|
2367
2368
|
*p++ = 'e';
|
2368
|
-
|
2369
|
-
p +=
|
2369
|
+
msg_len_writer.Write(0, p);
|
2370
|
+
p += msg_len_writer.length();
|
2370
2371
|
GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
|
2371
2372
|
len += static_cast<uint32_t> GRPC_SLICE_LENGTH(message_pfx);
|
2372
2373
|
len += static_cast<uint32_t>(msg_len);
|
@@ -2391,7 +2392,9 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2391
2392
|
}
|
2392
2393
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2393
2394
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2394
|
-
grpc_slice_buffer_add(&t->qbuf,
|
2395
|
+
grpc_slice_buffer_add(&t->qbuf,
|
2396
|
+
grpc_slice_from_cpp_string(std::move(message)));
|
2397
|
+
grpc_chttp2_reset_ping_clock(t);
|
2395
2398
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2396
2399
|
&s->stats.outgoing);
|
2397
2400
|
|
@@ -2399,10 +2402,10 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2399
2402
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
|
2400
2403
|
}
|
2401
2404
|
|
2402
|
-
|
2403
|
-
|
2405
|
+
struct cancel_stream_cb_args {
|
2406
|
+
grpc_error_handle error;
|
2404
2407
|
grpc_chttp2_transport* t;
|
2405
|
-
}
|
2408
|
+
};
|
2406
2409
|
|
2407
2410
|
static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
2408
2411
|
cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
|
@@ -2410,7 +2413,8 @@ static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
|
|
2410
2413
|
grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
|
2411
2414
|
}
|
2412
2415
|
|
2413
|
-
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2416
|
+
static void end_all_the_calls(grpc_chttp2_transport* t,
|
2417
|
+
grpc_error_handle error) {
|
2414
2418
|
intptr_t http2_error;
|
2415
2419
|
// If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
|
2416
2420
|
if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
|
@@ -2423,9 +2427,9 @@ static void end_all_the_calls(grpc_chttp2_transport* t, grpc_error* error) {
|
|
2423
2427
|
GRPC_ERROR_UNREF(error);
|
2424
2428
|
}
|
2425
2429
|
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2430
|
+
//
|
2431
|
+
// INPUT PROCESSING - PARSING
|
2432
|
+
//
|
2429
2433
|
|
2430
2434
|
template <class F>
|
2431
2435
|
static void WithUrgency(grpc_chttp2_transport* t,
|
@@ -2436,7 +2440,7 @@ static void WithUrgency(grpc_chttp2_transport* t,
|
|
2436
2440
|
break;
|
2437
2441
|
case grpc_core::chttp2::FlowControlAction::Urgency::UPDATE_IMMEDIATELY:
|
2438
2442
|
grpc_chttp2_initiate_write(t, reason);
|
2439
|
-
|
2443
|
+
ABSL_FALLTHROUGH_INTENDED;
|
2440
2444
|
case grpc_core::chttp2::FlowControlAction::Urgency::QUEUE_UPDATE:
|
2441
2445
|
action();
|
2442
2446
|
break;
|
@@ -2464,15 +2468,15 @@ void grpc_chttp2_act_on_flowctl_action(
|
|
2464
2468
|
});
|
2465
2469
|
}
|
2466
2470
|
|
2467
|
-
static
|
2471
|
+
static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
|
2468
2472
|
grpc_http_parser parser;
|
2469
2473
|
size_t i = 0;
|
2470
|
-
|
2474
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
2471
2475
|
grpc_http_response response;
|
2472
2476
|
|
2473
2477
|
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
|
2474
2478
|
|
2475
|
-
|
2479
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
2476
2480
|
for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
|
2477
2481
|
parse_error =
|
2478
2482
|
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
|
@@ -2483,7 +2487,8 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2483
2487
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
2484
2488
|
"Trying to connect an http1.x server"),
|
2485
2489
|
GRPC_ERROR_INT_HTTP_STATUS, response.status),
|
2486
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
2490
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
2491
|
+
grpc_http2_status_to_grpc_status(response.status));
|
2487
2492
|
}
|
2488
2493
|
GRPC_ERROR_UNREF(parse_error);
|
2489
2494
|
|
@@ -2492,40 +2497,35 @@ static grpc_error* try_http_parsing(grpc_chttp2_transport* t) {
|
|
2492
2497
|
return error;
|
2493
2498
|
}
|
2494
2499
|
|
2495
|
-
static void read_action(void* tp,
|
2500
|
+
static void read_action(void* tp, grpc_error_handle error) {
|
2496
2501
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2497
2502
|
t->combiner->Run(
|
2498
2503
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
2499
2504
|
GRPC_ERROR_REF(error));
|
2500
2505
|
}
|
2501
2506
|
|
2502
|
-
static void read_action_locked(void* tp,
|
2507
|
+
static void read_action_locked(void* tp, grpc_error_handle error) {
|
2503
2508
|
GPR_TIMER_SCOPE("reading_action_locked", 0);
|
2504
2509
|
|
2505
2510
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2506
2511
|
|
2507
|
-
GRPC_ERROR_REF(error);
|
2512
|
+
(void)GRPC_ERROR_REF(error);
|
2508
2513
|
|
2509
|
-
|
2514
|
+
grpc_error_handle err = error;
|
2510
2515
|
if (err != GRPC_ERROR_NONE) {
|
2511
2516
|
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
2512
2517
|
"Endpoint read failed", &err, 1),
|
2513
2518
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2514
2519
|
t->write_state);
|
2515
2520
|
}
|
2516
|
-
|
2521
|
+
std::swap(err, error);
|
2517
2522
|
GRPC_ERROR_UNREF(err);
|
2518
2523
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2519
2524
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|
2520
2525
|
size_t i = 0;
|
2521
|
-
|
2522
|
-
|
2526
|
+
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
|
2527
|
+
GRPC_ERROR_NONE};
|
2523
2528
|
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
|
2524
|
-
grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
|
2525
|
-
if (bdp_est) {
|
2526
|
-
bdp_est->AddIncomingBytes(
|
2527
|
-
static_cast<int64_t> GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
|
2528
|
-
}
|
2529
2529
|
errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
|
2530
2530
|
}
|
2531
2531
|
if (errors[1] != GRPC_ERROR_NONE) {
|
@@ -2559,8 +2559,8 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2559
2559
|
"Transport closed", &t->closed_with_error, 1);
|
2560
2560
|
}
|
2561
2561
|
if (error != GRPC_ERROR_NONE) {
|
2562
|
-
|
2563
|
-
|
2562
|
+
// If a goaway frame was received, this might be the reason why the read
|
2563
|
+
// failed. Add this info to the error
|
2564
2564
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
2565
2565
|
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
|
2566
2566
|
}
|
@@ -2569,7 +2569,7 @@ static void read_action_locked(void* tp, grpc_error* error) {
|
|
2569
2569
|
t->endpoint_reading = 0;
|
2570
2570
|
} else if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2571
2571
|
keep_reading = true;
|
2572
|
-
|
2572
|
+
// Since we have read a byte, reset the keepalive timer
|
2573
2573
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2574
2574
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2575
2575
|
}
|
@@ -2604,7 +2604,7 @@ static void continue_read_action_locked(grpc_chttp2_transport* t) {
|
|
2604
2604
|
|
2605
2605
|
// t is reffed prior to calling the first time, and once the callback chain
|
2606
2606
|
// that kicks off finishes, it's unreffed
|
2607
|
-
|
2607
|
+
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
2608
2608
|
t->flow_control->bdp_estimator()->SchedulePing();
|
2609
2609
|
send_ping_locked(
|
2610
2610
|
t,
|
@@ -2612,25 +2612,26 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2612
2612
|
grpc_schedule_on_exec_ctx),
|
2613
2613
|
GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked, finish_bdp_ping, t,
|
2614
2614
|
grpc_schedule_on_exec_ctx));
|
2615
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_BDP_PING);
|
2615
2616
|
}
|
2616
2617
|
|
2617
|
-
static void start_bdp_ping(void* tp,
|
2618
|
+
static void start_bdp_ping(void* tp, grpc_error_handle error) {
|
2618
2619
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2619
2620
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
|
2620
2621
|
start_bdp_ping_locked, t, nullptr),
|
2621
2622
|
GRPC_ERROR_REF(error));
|
2622
2623
|
}
|
2623
2624
|
|
2624
|
-
static void start_bdp_ping_locked(void* tp,
|
2625
|
+
static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2625
2626
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2626
2627
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2627
|
-
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2628
|
-
|
2628
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
|
2629
|
+
grpc_error_std_string(error).c_str());
|
2629
2630
|
}
|
2630
2631
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2631
2632
|
return;
|
2632
2633
|
}
|
2633
|
-
|
2634
|
+
// Reset the keepalive ping timer
|
2634
2635
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
|
2635
2636
|
grpc_timer_cancel(&t->keepalive_ping_timer);
|
2636
2637
|
}
|
@@ -2638,26 +2639,26 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2638
2639
|
t->bdp_ping_started = true;
|
2639
2640
|
}
|
2640
2641
|
|
2641
|
-
static void finish_bdp_ping(void* tp,
|
2642
|
+
static void finish_bdp_ping(void* tp, grpc_error_handle error) {
|
2642
2643
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2643
2644
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2644
2645
|
finish_bdp_ping_locked, t, nullptr),
|
2645
2646
|
GRPC_ERROR_REF(error));
|
2646
2647
|
}
|
2647
2648
|
|
2648
|
-
static void finish_bdp_ping_locked(void* tp,
|
2649
|
+
static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
|
2649
2650
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2650
2651
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
|
2651
|
-
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2652
|
-
|
2652
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
|
2653
|
+
grpc_error_std_string(error).c_str());
|
2653
2654
|
}
|
2654
2655
|
if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
|
2655
2656
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2656
2657
|
return;
|
2657
2658
|
}
|
2658
2659
|
if (!t->bdp_ping_started) {
|
2659
|
-
|
2660
|
-
|
2660
|
+
// start_bdp_ping_locked has not been run yet. Schedule
|
2661
|
+
// finish_bdp_ping_locked to be run later.
|
2661
2662
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
|
2662
2663
|
finish_bdp_ping_locked, t, nullptr),
|
2663
2664
|
GRPC_ERROR_REF(error));
|
@@ -2675,7 +2676,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2675
2676
|
&t->next_bdp_ping_timer_expired_locked);
|
2676
2677
|
}
|
2677
2678
|
|
2678
|
-
static void next_bdp_ping_timer_expired(void* tp,
|
2679
|
+
static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
|
2679
2680
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2680
2681
|
t->combiner->Run(
|
2681
2682
|
GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
|
@@ -2683,7 +2684,8 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error* error) {
|
|
2683
2684
|
GRPC_ERROR_REF(error));
|
2684
2685
|
}
|
2685
2686
|
|
2686
|
-
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2687
|
+
static void next_bdp_ping_timer_expired_locked(void* tp,
|
2688
|
+
grpc_error_handle error) {
|
2687
2689
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2688
2690
|
GPR_ASSERT(t->have_next_bdp_ping_timer);
|
2689
2691
|
t->have_next_bdp_ping_timer = false;
|
@@ -2691,7 +2693,13 @@ static void next_bdp_ping_timer_expired_locked(void* tp, grpc_error* error) {
|
|
2691
2693
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2692
2694
|
return;
|
2693
2695
|
}
|
2694
|
-
|
2696
|
+
if (t->flow_control->bdp_estimator()->accumulator() == 0) {
|
2697
|
+
// Block the bdp ping till we receive more data.
|
2698
|
+
t->bdp_ping_blocked = true;
|
2699
|
+
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
|
2700
|
+
} else {
|
2701
|
+
schedule_bdp_ping_locked(t);
|
2702
|
+
}
|
2695
2703
|
}
|
2696
2704
|
|
2697
2705
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
@@ -2740,14 +2748,6 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2740
2748
|
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
2741
2749
|
g_default_max_pings_without_data = grpc_channel_arg_get_integer(
|
2742
2750
|
&args->args[i], {g_default_max_pings_without_data, 0, INT_MAX});
|
2743
|
-
} else if (0 ==
|
2744
|
-
strcmp(
|
2745
|
-
args->args[i].key,
|
2746
|
-
GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
2747
|
-
g_default_min_sent_ping_interval_without_data_ms =
|
2748
|
-
grpc_channel_arg_get_integer(
|
2749
|
-
&args->args[i],
|
2750
|
-
{g_default_min_sent_ping_interval_without_data_ms, 0, INT_MAX});
|
2751
2751
|
} else if (0 ==
|
2752
2752
|
strcmp(
|
2753
2753
|
args->args[i].key,
|
@@ -2761,14 +2761,14 @@ void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
|
2761
2761
|
}
|
2762
2762
|
}
|
2763
2763
|
|
2764
|
-
static void init_keepalive_ping(void* arg,
|
2764
|
+
static void init_keepalive_ping(void* arg, grpc_error_handle error) {
|
2765
2765
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2766
2766
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
|
2767
2767
|
init_keepalive_ping_locked, t, nullptr),
|
2768
2768
|
GRPC_ERROR_REF(error));
|
2769
2769
|
}
|
2770
2770
|
|
2771
|
-
static void init_keepalive_ping_locked(void* arg,
|
2771
|
+
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2772
2772
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2773
2773
|
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
|
2774
2774
|
if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
|
@@ -2790,7 +2790,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2790
2790
|
&t->init_keepalive_ping_locked);
|
2791
2791
|
}
|
2792
2792
|
} else if (error == GRPC_ERROR_CANCELLED) {
|
2793
|
-
|
2793
|
+
// The keepalive ping timer may be cancelled by bdp
|
2794
2794
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
2795
2795
|
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
|
2796
2796
|
grpc_schedule_on_exec_ctx);
|
@@ -2801,14 +2801,14 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2801
2801
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
|
2802
2802
|
}
|
2803
2803
|
|
2804
|
-
static void start_keepalive_ping(void* arg,
|
2804
|
+
static void start_keepalive_ping(void* arg, grpc_error_handle error) {
|
2805
2805
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2806
2806
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
|
2807
2807
|
start_keepalive_ping_locked, t, nullptr),
|
2808
2808
|
GRPC_ERROR_REF(error));
|
2809
2809
|
}
|
2810
2810
|
|
2811
|
-
static void start_keepalive_ping_locked(void* arg,
|
2811
|
+
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2812
2812
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2813
2813
|
if (error != GRPC_ERROR_NONE) {
|
2814
2814
|
return;
|
@@ -2816,8 +2816,9 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2816
2816
|
if (t->channelz_socket != nullptr) {
|
2817
2817
|
t->channelz_socket->RecordKeepaliveSent();
|
2818
2818
|
}
|
2819
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)
|
2820
|
-
|
2819
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2820
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2821
|
+
gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
|
2821
2822
|
}
|
2822
2823
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2823
2824
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2828,23 +2829,24 @@ static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2828
2829
|
t->keepalive_ping_started = true;
|
2829
2830
|
}
|
2830
2831
|
|
2831
|
-
static void finish_keepalive_ping(void* arg,
|
2832
|
+
static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
|
2832
2833
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2833
2834
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2834
2835
|
finish_keepalive_ping_locked, t, nullptr),
|
2835
2836
|
GRPC_ERROR_REF(error));
|
2836
2837
|
}
|
2837
2838
|
|
2838
|
-
static void finish_keepalive_ping_locked(void* arg,
|
2839
|
+
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
|
2839
2840
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2840
2841
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2841
2842
|
if (error == GRPC_ERROR_NONE) {
|
2842
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)
|
2843
|
-
|
2843
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
|
2844
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
|
2845
|
+
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
|
2844
2846
|
}
|
2845
2847
|
if (!t->keepalive_ping_started) {
|
2846
|
-
|
2847
|
-
|
2848
|
+
// start_keepalive_ping_locked has not run yet. Reschedule
|
2849
|
+
// finish_keepalive_ping_locked for it to be run later.
|
2848
2850
|
t->combiner->Run(
|
2849
2851
|
GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
|
2850
2852
|
finish_keepalive_ping_locked, t, nullptr),
|
@@ -2865,7 +2867,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2865
2867
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive ping end");
|
2866
2868
|
}
|
2867
2869
|
|
2868
|
-
static void keepalive_watchdog_fired(void* arg,
|
2870
|
+
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
|
2869
2871
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2870
2872
|
t->combiner->Run(
|
2871
2873
|
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
|
@@ -2873,12 +2875,13 @@ static void keepalive_watchdog_fired(void* arg, grpc_error* error) {
|
|
2873
2875
|
GRPC_ERROR_REF(error));
|
2874
2876
|
}
|
2875
2877
|
|
2876
|
-
static void keepalive_watchdog_fired_locked(void* arg,
|
2878
|
+
static void keepalive_watchdog_fired_locked(void* arg,
|
2879
|
+
grpc_error_handle error) {
|
2877
2880
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2878
2881
|
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
|
2879
2882
|
if (error == GRPC_ERROR_NONE) {
|
2880
|
-
gpr_log(
|
2881
|
-
t->peer_string);
|
2883
|
+
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
|
2884
|
+
t->peer_string.c_str());
|
2882
2885
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
|
2883
2886
|
close_transport_locked(
|
2884
2887
|
t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -2887,8 +2890,8 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2887
2890
|
GRPC_STATUS_UNAVAILABLE));
|
2888
2891
|
}
|
2889
2892
|
} else {
|
2890
|
-
|
2891
|
-
|
2893
|
+
// The watchdog timer should have been cancelled by
|
2894
|
+
// finish_keepalive_ping_locked.
|
2892
2895
|
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2893
2896
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2894
2897
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
@@ -2897,21 +2900,22 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2897
2900
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "keepalive watchdog");
|
2898
2901
|
}
|
2899
2902
|
|
2900
|
-
|
2901
|
-
|
2902
|
-
|
2903
|
+
//
|
2904
|
+
// CALLBACK LOOP
|
2905
|
+
//
|
2903
2906
|
|
2904
2907
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2905
2908
|
grpc_connectivity_state state,
|
2909
|
+
const absl::Status& status,
|
2906
2910
|
const char* reason) {
|
2907
2911
|
GRPC_CHTTP2_IF_TRACING(
|
2908
2912
|
gpr_log(GPR_INFO, "transport %p set connectivity_state=%d", t, state));
|
2909
|
-
t->state_tracker.SetState(state, reason);
|
2913
|
+
t->state_tracker.SetState(state, status, reason);
|
2910
2914
|
}
|
2911
2915
|
|
2912
|
-
|
2913
|
-
|
2914
|
-
|
2916
|
+
//
|
2917
|
+
// POLLSET STUFF
|
2918
|
+
//
|
2915
2919
|
|
2916
2920
|
static void set_pollset(grpc_transport* gt, grpc_stream* /*gs*/,
|
2917
2921
|
grpc_pollset* pollset) {
|
@@ -2925,11 +2929,11 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
|
|
2925
2929
|
grpc_endpoint_add_to_pollset_set(t->ep, pollset_set);
|
2926
2930
|
}
|
2927
2931
|
|
2928
|
-
|
2929
|
-
|
2930
|
-
|
2932
|
+
//
|
2933
|
+
// BYTE STREAM
|
2934
|
+
//
|
2931
2935
|
|
2932
|
-
static void reset_byte_stream(void* arg,
|
2936
|
+
static void reset_byte_stream(void* arg, grpc_error_handle error) {
|
2933
2937
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
|
2934
2938
|
s->pending_byte_stream = false;
|
2935
2939
|
if (error == GRPC_ERROR_NONE) {
|
@@ -2960,8 +2964,8 @@ Chttp2IncomingByteStream::Chttp2IncomingByteStream(
|
|
2960
2964
|
stream->byte_stream_error = GRPC_ERROR_NONE;
|
2961
2965
|
}
|
2962
2966
|
|
2963
|
-
void Chttp2IncomingByteStream::OrphanLocked(
|
2964
|
-
|
2967
|
+
void Chttp2IncomingByteStream::OrphanLocked(
|
2968
|
+
void* arg, grpc_error_handle /*error_ignored*/) {
|
2965
2969
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2966
2970
|
grpc_chttp2_stream* s = bs->stream_;
|
2967
2971
|
grpc_chttp2_transport* t = s->t;
|
@@ -2980,7 +2984,7 @@ void Chttp2IncomingByteStream::Orphan() {
|
|
2980
2984
|
}
|
2981
2985
|
|
2982
2986
|
void Chttp2IncomingByteStream::NextLocked(void* arg,
|
2983
|
-
|
2987
|
+
grpc_error_handle /*error_ignored*/) {
|
2984
2988
|
Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
|
2985
2989
|
grpc_chttp2_transport* t = bs->transport_;
|
2986
2990
|
grpc_chttp2_stream* s = bs->stream_;
|
@@ -3015,7 +3019,7 @@ void Chttp2IncomingByteStream::NextLocked(void* arg,
|
|
3015
3019
|
s->data_parser.parsing_frame = nullptr;
|
3016
3020
|
}
|
3017
3021
|
} else {
|
3018
|
-
|
3022
|
+
// Should never reach here.
|
3019
3023
|
GPR_ASSERT(false);
|
3020
3024
|
}
|
3021
3025
|
} else {
|
@@ -3050,9 +3054,9 @@ void Chttp2IncomingByteStream::MaybeCreateStreamDecompressionCtx() {
|
|
3050
3054
|
}
|
3051
3055
|
}
|
3052
3056
|
|
3053
|
-
|
3057
|
+
grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
3054
3058
|
GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
|
3055
|
-
|
3059
|
+
grpc_error_handle error;
|
3056
3060
|
if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
|
3057
3061
|
if (!stream_->unprocessed_incoming_frames_decompressed &&
|
3058
3062
|
stream_->stream_decompression_method !=
|
@@ -3095,7 +3099,7 @@ grpc_error* Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
|
|
3095
3099
|
return GRPC_ERROR_NONE;
|
3096
3100
|
}
|
3097
3101
|
|
3098
|
-
void Chttp2IncomingByteStream::PublishError(
|
3102
|
+
void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
|
3099
3103
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
3100
3104
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, stream_->on_next,
|
3101
3105
|
GRPC_ERROR_REF(error));
|
@@ -3105,10 +3109,10 @@ void Chttp2IncomingByteStream::PublishError(grpc_error* error) {
|
|
3105
3109
|
grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
|
3106
3110
|
}
|
3107
3111
|
|
3108
|
-
|
3109
|
-
|
3112
|
+
grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
3113
|
+
grpc_slice* slice_out) {
|
3110
3114
|
if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
|
3111
|
-
|
3115
|
+
grpc_error_handle error =
|
3112
3116
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
|
3113
3117
|
transport_->combiner->Run(&stream_->reset_byte_stream,
|
3114
3118
|
GRPC_ERROR_REF(error));
|
@@ -3123,8 +3127,8 @@ grpc_error* Chttp2IncomingByteStream::Push(const grpc_slice& slice,
|
|
3123
3127
|
}
|
3124
3128
|
}
|
3125
3129
|
|
3126
|
-
|
3127
|
-
|
3130
|
+
grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
|
3131
|
+
bool reset_on_error) {
|
3128
3132
|
if (error == GRPC_ERROR_NONE) {
|
3129
3133
|
if (remaining_bytes_ != 0) {
|
3130
3134
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
|
@@ -3138,15 +3142,15 @@ grpc_error* Chttp2IncomingByteStream::Finished(grpc_error* error,
|
|
3138
3142
|
return error;
|
3139
3143
|
}
|
3140
3144
|
|
3141
|
-
void Chttp2IncomingByteStream::Shutdown(
|
3145
|
+
void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
|
3142
3146
|
GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
|
3143
3147
|
}
|
3144
3148
|
|
3145
3149
|
} // namespace grpc_core
|
3146
3150
|
|
3147
|
-
|
3148
|
-
|
3149
|
-
|
3151
|
+
//
|
3152
|
+
// RESOURCE QUOTAS
|
3153
|
+
//
|
3150
3154
|
|
3151
3155
|
static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
3152
3156
|
if (!t->benign_reclaimer_registered) {
|
@@ -3154,8 +3158,8 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
|
|
3154
3158
|
GRPC_CHTTP2_REF_TRANSPORT(t, "benign_reclaimer");
|
3155
3159
|
GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked, benign_reclaimer, t,
|
3156
3160
|
grpc_schedule_on_exec_ctx);
|
3157
|
-
grpc_resource_user_post_reclaimer(
|
3158
|
-
|
3161
|
+
grpc_resource_user_post_reclaimer(t->resource_user, false,
|
3162
|
+
&t->benign_reclaimer_locked);
|
3159
3163
|
}
|
3160
3164
|
}
|
3161
3165
|
|
@@ -3165,27 +3169,27 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
|
|
3165
3169
|
GRPC_CHTTP2_REF_TRANSPORT(t, "destructive_reclaimer");
|
3166
3170
|
GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked, destructive_reclaimer,
|
3167
3171
|
t, grpc_schedule_on_exec_ctx);
|
3168
|
-
grpc_resource_user_post_reclaimer(
|
3169
|
-
|
3172
|
+
grpc_resource_user_post_reclaimer(t->resource_user, true,
|
3173
|
+
&t->destructive_reclaimer_locked);
|
3170
3174
|
}
|
3171
3175
|
}
|
3172
3176
|
|
3173
|
-
static void benign_reclaimer(void* arg,
|
3177
|
+
static void benign_reclaimer(void* arg, grpc_error_handle error) {
|
3174
3178
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3175
3179
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->benign_reclaimer_locked,
|
3176
3180
|
benign_reclaimer_locked, t, nullptr),
|
3177
3181
|
GRPC_ERROR_REF(error));
|
3178
3182
|
}
|
3179
3183
|
|
3180
|
-
static void benign_reclaimer_locked(void* arg,
|
3184
|
+
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3181
3185
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3182
3186
|
if (error == GRPC_ERROR_NONE &&
|
3183
3187
|
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
|
3184
|
-
|
3185
|
-
|
3188
|
+
// Channel with no active streams: send a goaway to try and make it
|
3189
|
+
// disconnect cleanly
|
3186
3190
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3187
3191
|
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
3188
|
-
t->peer_string);
|
3192
|
+
t->peer_string.c_str());
|
3189
3193
|
}
|
3190
3194
|
send_goaway(t,
|
3191
3195
|
grpc_error_set_int(
|
@@ -3196,24 +3200,24 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3196
3200
|
gpr_log(GPR_INFO,
|
3197
3201
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
3198
3202
|
" streams",
|
3199
|
-
t->peer_string
|
3203
|
+
t->peer_string.c_str(),
|
3204
|
+
grpc_chttp2_stream_map_size(&t->stream_map));
|
3200
3205
|
}
|
3201
3206
|
t->benign_reclaimer_registered = false;
|
3202
3207
|
if (error != GRPC_ERROR_CANCELLED) {
|
3203
|
-
grpc_resource_user_finish_reclamation(
|
3204
|
-
grpc_endpoint_get_resource_user(t->ep));
|
3208
|
+
grpc_resource_user_finish_reclamation(t->resource_user);
|
3205
3209
|
}
|
3206
3210
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
|
3207
3211
|
}
|
3208
3212
|
|
3209
|
-
static void destructive_reclaimer(void* arg,
|
3213
|
+
static void destructive_reclaimer(void* arg, grpc_error_handle error) {
|
3210
3214
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3211
3215
|
t->combiner->Run(GRPC_CLOSURE_INIT(&t->destructive_reclaimer_locked,
|
3212
3216
|
destructive_reclaimer_locked, t, nullptr),
|
3213
3217
|
GRPC_ERROR_REF(error));
|
3214
3218
|
}
|
3215
3219
|
|
3216
|
-
static void destructive_reclaimer_locked(void* arg,
|
3220
|
+
static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
|
3217
3221
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
3218
3222
|
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
|
3219
3223
|
t->destructive_reclaimer_registered = false;
|
@@ -3221,8 +3225,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3221
3225
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
3222
3226
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
3223
3227
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
3224
|
-
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3225
|
-
s->id);
|
3228
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
|
3229
|
+
t->peer_string.c_str(), s->id);
|
3226
3230
|
}
|
3227
3231
|
grpc_chttp2_cancel_stream(
|
3228
3232
|
t, s,
|
@@ -3230,23 +3234,22 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
3230
3234
|
GRPC_ERROR_INT_HTTP2_ERROR,
|
3231
3235
|
GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
3232
3236
|
if (n > 1) {
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3237
|
+
// Since we cancel one stream per destructive reclamation, if
|
3238
|
+
// there are more streams left, we can immediately post a new
|
3239
|
+
// reclaimer in case the resource quota needs to free more
|
3240
|
+
// memory
|
3237
3241
|
post_destructive_reclaimer(t);
|
3238
3242
|
}
|
3239
3243
|
}
|
3240
3244
|
if (error != GRPC_ERROR_CANCELLED) {
|
3241
|
-
grpc_resource_user_finish_reclamation(
|
3242
|
-
grpc_endpoint_get_resource_user(t->ep));
|
3245
|
+
grpc_resource_user_finish_reclamation(t->resource_user);
|
3243
3246
|
}
|
3244
3247
|
GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
|
3245
3248
|
}
|
3246
3249
|
|
3247
|
-
|
3248
|
-
|
3249
|
-
|
3250
|
+
//
|
3251
|
+
// MONITORING
|
3252
|
+
//
|
3250
3253
|
|
3251
3254
|
const char* grpc_chttp2_initiate_write_reason_string(
|
3252
3255
|
grpc_chttp2_initiate_write_reason reason) {
|
@@ -3283,6 +3286,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
|
|
3283
3286
|
return "FLOW_CONTROL_UNSTALLED_BY_UPDATE";
|
3284
3287
|
case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
|
3285
3288
|
return "APPLICATION_PING";
|
3289
|
+
case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
|
3290
|
+
return "BDP_PING";
|
3286
3291
|
case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
|
3287
3292
|
return "KEEPALIVE_PING";
|
3288
3293
|
case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
|
@@ -3329,7 +3334,7 @@ grpc_transport* grpc_create_chttp2_transport(
|
|
3329
3334
|
|
3330
3335
|
void grpc_chttp2_transport_start_reading(
|
3331
3336
|
grpc_transport* transport, grpc_slice_buffer* read_buffer,
|
3332
|
-
grpc_closure* notify_on_receive_settings) {
|
3337
|
+
grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close) {
|
3333
3338
|
grpc_chttp2_transport* t =
|
3334
3339
|
reinterpret_cast<grpc_chttp2_transport*>(transport);
|
3335
3340
|
GRPC_CHTTP2_REF_TRANSPORT(
|
@@ -3339,6 +3344,7 @@ void grpc_chttp2_transport_start_reading(
|
|
3339
3344
|
gpr_free(read_buffer);
|
3340
3345
|
}
|
3341
3346
|
t->notify_on_receive_settings = notify_on_receive_settings;
|
3347
|
+
t->notify_on_close = notify_on_close;
|
3342
3348
|
t->combiner->Run(
|
3343
3349
|
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
|
3344
3350
|
GRPC_ERROR_NONE);
|