grpc 1.74.1 → 1.75.0.pre1
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 +202 -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_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 +121 -49
- 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_;
|