grpc 1.74.0 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +83 -41
- data/include/grpc/credentials.h +7 -1
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channelz.cc +10 -17
- data/src/core/channelz/channelz.h +58 -19
- data/src/core/channelz/channelz_registry.cc +0 -162
- data/src/core/channelz/channelz_registry.h +14 -7
- data/src/core/channelz/property_list.cc +19 -23
- data/src/core/channelz/property_list.h +3 -1
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/client_channel/client_channel_filter.cc +5 -4
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/subchannel.cc +14 -6
- data/src/core/client_channel/subchannel.h +2 -0
- data/src/core/config/core_configuration.cc +3 -1
- data/src/core/config/core_configuration.h +12 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
- data/src/core/filter/auth/auth_filters.h +2 -2
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +28 -13
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +6 -5
- data/src/core/lib/event_engine/ares_resolver.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
- data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
- data/src/core/lib/experiments/experiments.cc +120 -6
- data/src/core/lib/experiments/experiments.h +46 -3
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +3 -3
- data/src/core/lib/promise/activity.h +2 -2
- data/src/core/lib/promise/mpsc.cc +8 -8
- data/src/core/lib/promise/party.cc +7 -7
- data/src/core/lib/promise/party.h +4 -4
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.h +3 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
- data/src/core/server/server.cc +1 -1
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +151 -151
- data/src/core/telemetry/stats_data.h +87 -87
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/ssl_transport_security.cc +203 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +245 -188
- data/src/core/util/single_set_ptr.h +5 -2
- data/src/core/util/useful.h +91 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/ruby/ext/grpc/rb_channel.c +15 -6
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +122 -50
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
//
|
|
17
17
|
//
|
|
18
18
|
|
|
19
|
+
#include "src/core/ext/transport/chttp2/transport/http2_transport.h"
|
|
20
|
+
|
|
19
21
|
#include <cstdint>
|
|
20
22
|
#include <utility>
|
|
21
23
|
|
|
22
24
|
#include "src/core/call/call_spine.h"
|
|
25
|
+
#include "src/core/call/metadata_info.h"
|
|
23
26
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
|
24
|
-
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
|
25
27
|
#include "src/core/lib/promise/mpsc.h"
|
|
26
28
|
#include "src/core/lib/promise/party.h"
|
|
27
29
|
#include "src/core/lib/transport/promise_endpoint.h"
|
|
@@ -36,8 +38,84 @@ namespace http2 {
|
|
|
36
38
|
// and it is functions. The code will be written iteratively.
|
|
37
39
|
// Do not use or edit any of these functions unless you are
|
|
38
40
|
// familiar with the PH2 project (Moving chttp2 to promises.)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
|
|
42
|
+
void InitLocalSettings(Http2Settings& settings, const bool is_client) {
|
|
43
|
+
if (is_client) {
|
|
44
|
+
// gRPC has never supported PUSH_PROMISE and we have no plan to do so in the
|
|
45
|
+
// future.
|
|
46
|
+
settings.SetEnablePush(false);
|
|
47
|
+
// This is to make it double-sure that server cannot initite a stream.
|
|
48
|
+
settings.SetMaxConcurrentStreams(0);
|
|
49
|
+
}
|
|
50
|
+
settings.SetMaxHeaderListSize(DEFAULT_MAX_HEADER_LIST_SIZE);
|
|
51
|
+
settings.SetAllowTrueBinaryMetadata(true);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
|
|
55
|
+
Http2Settings& settings,
|
|
56
|
+
const bool is_client) {
|
|
57
|
+
if (channel_args.Contains(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)) {
|
|
58
|
+
settings.SetHeaderTableSize(
|
|
59
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)
|
|
60
|
+
.value_or(-1));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (channel_args.Contains(GRPC_ARG_MAX_CONCURRENT_STREAMS)) {
|
|
64
|
+
if (!is_client) {
|
|
65
|
+
settings.SetMaxConcurrentStreams(
|
|
66
|
+
channel_args.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS).value_or(-1));
|
|
67
|
+
} else {
|
|
68
|
+
// We do not allow the channel arg to alter our 0 setting for
|
|
69
|
+
// MAX_CONCURRENT_STREAMS for clients because we dont support PUSH_PROMISE
|
|
70
|
+
LOG(WARNING) << "ChannelArg GRPC_ARG_MAX_CONCURRENT_STREAMS is not "
|
|
71
|
+
"available on clients";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (channel_args.Contains(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)) {
|
|
76
|
+
settings.SetInitialWindowSize(
|
|
77
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)
|
|
78
|
+
.value_or(-1));
|
|
79
|
+
// TODO(tjagtap) [PH2][P2] : Also set this for flow control.
|
|
80
|
+
// Refer to read_channel_args() in chttp2_transport.cc for more details.
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
settings.SetMaxHeaderListSize(GetHardLimitFromChannelArgs(channel_args));
|
|
84
|
+
|
|
85
|
+
if (channel_args.Contains(GRPC_ARG_HTTP2_MAX_FRAME_SIZE)) {
|
|
86
|
+
settings.SetMaxFrameSize(
|
|
87
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_MAX_FRAME_SIZE).value_or(-1));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (channel_args
|
|
91
|
+
.GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
|
|
92
|
+
.value_or(false)) {
|
|
93
|
+
settings.SetPreferredReceiveCryptoMessageSize(INT_MAX);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (channel_args.Contains(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY)) {
|
|
97
|
+
settings.SetAllowTrueBinaryMetadata(
|
|
98
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY).value_or(-1) !=
|
|
99
|
+
0);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
settings.SetAllowSecurityFrame(
|
|
103
|
+
channel_args.GetBool(GRPC_ARG_SECURITY_FRAME_ALLOWED).value_or(false));
|
|
104
|
+
|
|
105
|
+
GRPC_HTTP2_COMMON_DLOG
|
|
106
|
+
<< "Http2Settings: {"
|
|
107
|
+
<< "header_table_size: " << settings.header_table_size()
|
|
108
|
+
<< ", max_concurrent_streams: " << settings.max_concurrent_streams()
|
|
109
|
+
<< ", initial_window_size: " << settings.initial_window_size()
|
|
110
|
+
<< ", max_frame_size: " << settings.max_frame_size()
|
|
111
|
+
<< ", max_header_list_size: " << settings.max_header_list_size()
|
|
112
|
+
<< ", preferred_receive_crypto_message_size: "
|
|
113
|
+
<< settings.preferred_receive_crypto_message_size()
|
|
114
|
+
<< ", enable_push: " << settings.enable_push()
|
|
115
|
+
<< ", allow_true_binary_metadata: "
|
|
116
|
+
<< settings.allow_true_binary_metadata()
|
|
117
|
+
<< ", allow_security_frame: " << settings.allow_security_frame() << "}";
|
|
118
|
+
}
|
|
41
119
|
|
|
42
120
|
} // namespace http2
|
|
43
121
|
} // namespace grpc_core
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
#include <utility>
|
|
24
24
|
|
|
25
25
|
#include "src/core/call/call_spine.h"
|
|
26
|
+
#include "src/core/call/metadata_info.h"
|
|
26
27
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
|
27
28
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
|
28
29
|
#include "src/core/lib/promise/mpsc.h"
|
|
@@ -45,8 +46,15 @@ namespace http2 {
|
|
|
45
46
|
#define GRPC_HTTP2_CLIENT_DLOG \
|
|
46
47
|
DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport))
|
|
47
48
|
|
|
49
|
+
#define GRPC_HTTP2_COMMON_DLOG \
|
|
50
|
+
DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport))
|
|
51
|
+
|
|
52
|
+
// Timeout for getting an ack back on settings changes
|
|
53
|
+
#define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
|
|
54
|
+
|
|
48
55
|
// TODO(akshitpatel) : [PH2][P2] : Choose appropriate size later.
|
|
49
56
|
constexpr int kMpscSize = 10;
|
|
57
|
+
constexpr uint32_t kStreamQueueSize = /*1 MB*/ 1024u * 1024u;
|
|
50
58
|
|
|
51
59
|
enum class HttpStreamState : uint8_t {
|
|
52
60
|
// https://www.rfc-editor.org/rfc/rfc9113.html#name-stream-states
|
|
@@ -57,7 +65,10 @@ enum class HttpStreamState : uint8_t {
|
|
|
57
65
|
kClosed,
|
|
58
66
|
};
|
|
59
67
|
|
|
60
|
-
|
|
68
|
+
void InitLocalSettings(Http2Settings& settings, const bool is_client);
|
|
69
|
+
|
|
70
|
+
void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
|
|
71
|
+
Http2Settings& settings, const bool is_client);
|
|
61
72
|
|
|
62
73
|
} // namespace http2
|
|
63
74
|
} // namespace grpc_core
|
|
@@ -76,8 +76,7 @@ class GrpcMessageAssembler {
|
|
|
76
76
|
ValueOrHttp2Status<MessageHandle> ExtractMessage() {
|
|
77
77
|
const size_t current_len = message_buffer_.Length();
|
|
78
78
|
if (current_len < kGrpcHeaderSizeInBytes) {
|
|
79
|
-
// TODO(tjagtap) : [PH2][P3] : Write a test for this
|
|
80
|
-
LOG(ERROR) << "Incomplete gRPC message received";
|
|
79
|
+
// TODO(tjagtap) : [PH2][P3] : Write a test for this.
|
|
81
80
|
return ReturnNullOrError();
|
|
82
81
|
}
|
|
83
82
|
GrpcMessageHeader header = ExtractGrpcHeader(message_buffer_);
|
|
@@ -113,6 +112,7 @@ class GrpcMessageAssembler {
|
|
|
113
112
|
return Http2Status::Http2StreamError(Http2ErrorCode::kInternalError,
|
|
114
113
|
"Incomplete gRPC frame received");
|
|
115
114
|
}
|
|
115
|
+
VLOG(2) << "Incomplete gRPC message received. Return nullptr";
|
|
116
116
|
return ValueOrHttp2Status<MessageHandle>(nullptr);
|
|
117
117
|
}
|
|
118
118
|
bool is_end_stream_ = false;
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
|
|
55
55
|
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
|
|
56
56
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
|
57
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
|
|
57
58
|
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
|
58
59
|
#include "src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h"
|
|
59
60
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
|
@@ -212,7 +213,7 @@ std::string FrameTypeString(uint8_t frame_type, uint8_t flags) {
|
|
|
212
213
|
std::variant<size_t, absl::Status> grpc_chttp2_perform_read(
|
|
213
214
|
grpc_chttp2_transport* t, const grpc_slice& slice,
|
|
214
215
|
size_t& requests_started) {
|
|
215
|
-
|
|
216
|
+
GRPC_LATENT_SEE_SCOPE("grpc_chttp2_perform_read");
|
|
216
217
|
|
|
217
218
|
const uint8_t* beg = GRPC_SLICE_START_PTR(slice);
|
|
218
219
|
const uint8_t* end = GRPC_SLICE_END_PTR(slice);
|
|
@@ -40,7 +40,8 @@ using grpc_event_engine::experimental::EventEngine;
|
|
|
40
40
|
GRPC_TRACE_FLAG_ENABLED(http2_ping)))
|
|
41
41
|
|
|
42
42
|
Promise<absl::Status> PingManager::PingPromiseCallbacks::RequestPing(
|
|
43
|
-
Callback on_initiate) {
|
|
43
|
+
Callback on_initiate, bool important) {
|
|
44
|
+
important_ping_requested_ = (important_ping_requested_ || important);
|
|
44
45
|
std::shared_ptr<Latch<void>> latch = std::make_shared<Latch<void>>();
|
|
45
46
|
auto on_ack = [latch]() { latch->Set(); };
|
|
46
47
|
ping_callbacks_.OnPing(std::move(on_initiate), std::move(on_ack));
|
|
@@ -110,8 +110,8 @@ class PingManager {
|
|
|
110
110
|
// Returns a promise that resolves once a new ping is initiated and ack is
|
|
111
111
|
// received for the same. The on_initiate callback is executed when the
|
|
112
112
|
// ping is initiated.
|
|
113
|
-
auto RequestPing(absl::AnyInvocable<void()> on_initiate) {
|
|
114
|
-
return ping_callbacks_.RequestPing(std::move(on_initiate));
|
|
113
|
+
auto RequestPing(absl::AnyInvocable<void()> on_initiate, bool important) {
|
|
114
|
+
return ping_callbacks_.RequestPing(std::move(on_initiate), important);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
// Returns a promise that resolves once the next valid ping ack is received.
|
|
@@ -125,6 +125,9 @@ class PingManager {
|
|
|
125
125
|
|
|
126
126
|
uint64_t StartPing() { return ping_callbacks_.StartPing(); }
|
|
127
127
|
bool PingRequested() { return ping_callbacks_.PingRequested(); }
|
|
128
|
+
bool ImportantPingRequested() const {
|
|
129
|
+
return ping_callbacks_.ImportantPingRequested();
|
|
130
|
+
}
|
|
128
131
|
bool AckPing(uint64_t id) { return ping_callbacks_.AckPing(id); }
|
|
129
132
|
size_t CountPingInflight() { return ping_callbacks_.CountPingInflight(); }
|
|
130
133
|
|
|
@@ -135,11 +138,19 @@ class PingManager {
|
|
|
135
138
|
std::shared_ptr<grpc_event_engine::experimental::EventEngine>
|
|
136
139
|
event_engine)
|
|
137
140
|
: event_engine_(event_engine) {}
|
|
138
|
-
Promise<absl::Status> RequestPing(absl::AnyInvocable<void()> on_initiate
|
|
141
|
+
Promise<absl::Status> RequestPing(absl::AnyInvocable<void()> on_initiate,
|
|
142
|
+
bool important);
|
|
139
143
|
Promise<absl::Status> WaitForPingAck();
|
|
140
|
-
void CancelCallbacks() {
|
|
141
|
-
|
|
144
|
+
void CancelCallbacks() {
|
|
145
|
+
important_ping_requested_ = false;
|
|
146
|
+
ping_callbacks_.CancelAll(event_engine_.get());
|
|
147
|
+
}
|
|
148
|
+
uint64_t StartPing() {
|
|
149
|
+
important_ping_requested_ = false;
|
|
150
|
+
return ping_callbacks_.StartPing(SharedBitGen());
|
|
151
|
+
}
|
|
142
152
|
bool PingRequested() { return ping_callbacks_.ping_requested(); }
|
|
153
|
+
bool ImportantPingRequested() const { return important_ping_requested_; }
|
|
143
154
|
bool AckPing(uint64_t id) {
|
|
144
155
|
return ping_callbacks_.AckPing(id, event_engine_.get());
|
|
145
156
|
}
|
|
@@ -160,6 +171,12 @@ class PingManager {
|
|
|
160
171
|
private:
|
|
161
172
|
Chttp2PingCallbacks ping_callbacks_;
|
|
162
173
|
std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine_;
|
|
174
|
+
// Return true if an "important" ping request needs to be started. This can
|
|
175
|
+
// be used to determine if a ping should be sent as soon as possible. If
|
|
176
|
+
// there are no outstanding ping requests, this is guaranteed to be false.
|
|
177
|
+
// If there is at least one outstanding ping request, this may be true or
|
|
178
|
+
// false.
|
|
179
|
+
bool important_ping_requested_ = false;
|
|
163
180
|
};
|
|
164
181
|
|
|
165
182
|
PingPromiseCallbacks ping_callbacks_;
|