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
@@ -312,7 +312,7 @@ TlsChannelSecurityConnector::TlsChannelSecurityConnector(
|
|
312
312
|
// hence no need to register the watcher.
|
313
313
|
bool use_default_roots = !options_->watch_root_cert();
|
314
314
|
if (use_default_roots && !options_->watch_identity_pair()) {
|
315
|
-
watcher_ptr->OnCertificatesChanged(
|
315
|
+
watcher_ptr->OnCertificatesChanged(nullptr, std::nullopt);
|
316
316
|
} else {
|
317
317
|
distributor->WatchTlsCertificates(std::move(watcher_ptr),
|
318
318
|
watched_root_cert_name,
|
@@ -429,18 +429,18 @@ ArenaPromise<absl::Status> TlsChannelSecurityConnector::CheckCallHost(
|
|
429
429
|
}
|
430
430
|
|
431
431
|
void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
|
432
|
-
OnCertificatesChanged(std::
|
432
|
+
OnCertificatesChanged(std::shared_ptr<RootCertInfo> root_certs,
|
433
433
|
std::optional<PemKeyCertPairList> key_cert_pairs) {
|
434
434
|
CHECK_NE(security_connector_, nullptr);
|
435
435
|
MutexLock lock(&security_connector_->mu_);
|
436
|
-
if (root_certs
|
437
|
-
security_connector_->
|
436
|
+
if (root_certs != nullptr) {
|
437
|
+
security_connector_->root_cert_info_ = std::move(root_certs);
|
438
438
|
}
|
439
439
|
if (key_cert_pairs.has_value()) {
|
440
440
|
security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
|
441
441
|
}
|
442
442
|
const bool root_ready = !security_connector_->options_->watch_root_cert() ||
|
443
|
-
security_connector_->
|
443
|
+
security_connector_->root_cert_info_ != nullptr;
|
444
444
|
const bool identity_ready =
|
445
445
|
!security_connector_->options_->watch_identity_pair() ||
|
446
446
|
security_connector_->pem_key_cert_pair_list_.has_value();
|
@@ -525,21 +525,13 @@ TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
525
525
|
if (client_handshaker_factory_ != nullptr) {
|
526
526
|
tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_);
|
527
527
|
}
|
528
|
-
std::string pem_root_certs;
|
529
|
-
if (pem_root_certs_.has_value()) {
|
530
|
-
// TODO(ZhenLian): update the underlying TSI layer to use C++ types like
|
531
|
-
// std::string and absl::string_view to avoid making another copy here.
|
532
|
-
pem_root_certs = std::string(*pem_root_certs_);
|
533
|
-
}
|
534
528
|
tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = nullptr;
|
535
529
|
if (pem_key_cert_pair_list_.has_value()) {
|
536
530
|
pem_key_cert_pair = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
|
537
531
|
}
|
538
532
|
bool use_default_roots = !options_->watch_root_cert();
|
539
533
|
grpc_security_status status = grpc_ssl_tsi_client_handshaker_factory_init(
|
540
|
-
pem_key_cert_pair,
|
541
|
-
pem_root_certs.empty() || use_default_roots ? nullptr
|
542
|
-
: pem_root_certs.c_str(),
|
534
|
+
pem_key_cert_pair, use_default_roots ? nullptr : root_cert_info_,
|
543
535
|
skip_server_certificate_verification,
|
544
536
|
grpc_get_tsi_tls_version(options_->min_tls_version()),
|
545
537
|
grpc_get_tsi_tls_version(options_->max_tls_version()), ssl_session_cache_,
|
@@ -689,18 +681,18 @@ int TlsServerSecurityConnector::cmp(
|
|
689
681
|
}
|
690
682
|
|
691
683
|
void TlsServerSecurityConnector::TlsServerCertificateWatcher::
|
692
|
-
OnCertificatesChanged(std::
|
684
|
+
OnCertificatesChanged(std::shared_ptr<RootCertInfo> roots,
|
693
685
|
std::optional<PemKeyCertPairList> key_cert_pairs) {
|
694
686
|
CHECK_NE(security_connector_, nullptr);
|
695
687
|
MutexLock lock(&security_connector_->mu_);
|
696
|
-
if (
|
697
|
-
security_connector_->
|
688
|
+
if (roots != nullptr) {
|
689
|
+
security_connector_->root_cert_info_ = std::move(roots);
|
698
690
|
}
|
699
691
|
if (key_cert_pairs.has_value()) {
|
700
692
|
security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
|
701
693
|
}
|
702
694
|
bool root_being_watched = security_connector_->options_->watch_root_cert();
|
703
|
-
bool root_has_value = security_connector_->
|
695
|
+
bool root_has_value = security_connector_->root_cert_info_ != nullptr;
|
704
696
|
bool identity_being_watched =
|
705
697
|
security_connector_->options_->watch_identity_pair();
|
706
698
|
bool identity_has_value =
|
@@ -790,18 +782,11 @@ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
|
|
790
782
|
// The identity certs on the server side shouldn't be empty.
|
791
783
|
CHECK(pem_key_cert_pair_list_.has_value());
|
792
784
|
CHECK(!(*pem_key_cert_pair_list_).empty());
|
793
|
-
std::string pem_root_certs;
|
794
|
-
if (pem_root_certs_.has_value()) {
|
795
|
-
// TODO(ZhenLian): update the underlying TSI layer to use C++ types like
|
796
|
-
// std::string and absl::string_view to avoid making another copy here.
|
797
|
-
pem_root_certs = std::string(*pem_root_certs_);
|
798
|
-
}
|
799
785
|
tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = nullptr;
|
800
786
|
pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
|
801
787
|
size_t num_key_cert_pairs = (*pem_key_cert_pair_list_).size();
|
802
788
|
grpc_security_status status = grpc_ssl_tsi_server_handshaker_factory_init(
|
803
|
-
pem_key_cert_pairs, num_key_cert_pairs,
|
804
|
-
pem_root_certs.empty() ? nullptr : pem_root_certs.c_str(),
|
789
|
+
pem_key_cert_pairs, num_key_cert_pairs, root_cert_info_,
|
805
790
|
options_->cert_request_type(),
|
806
791
|
grpc_get_tsi_tls_version(options_->min_tls_version()),
|
807
792
|
grpc_get_tsi_tls_version(options_->max_tls_version()),
|
@@ -94,14 +94,14 @@ class TlsChannelSecurityConnector final
|
|
94
94
|
return client_handshaker_factory_;
|
95
95
|
};
|
96
96
|
|
97
|
-
std::optional<
|
97
|
+
std::optional<PemKeyCertPairList> KeyCertPairListForTesting() {
|
98
98
|
MutexLock lock(&mu_);
|
99
|
-
return
|
99
|
+
return pem_key_cert_pair_list_;
|
100
100
|
}
|
101
101
|
|
102
|
-
std::
|
102
|
+
std::shared_ptr<RootCertInfo> RootCertInfoForTesting() {
|
103
103
|
MutexLock lock(&mu_);
|
104
|
-
return
|
104
|
+
return root_cert_info_;
|
105
105
|
}
|
106
106
|
|
107
107
|
private:
|
@@ -115,7 +115,7 @@ class TlsChannelSecurityConnector final
|
|
115
115
|
TlsChannelSecurityConnector* security_connector)
|
116
116
|
: security_connector_(security_connector) {}
|
117
117
|
void OnCertificatesChanged(
|
118
|
-
std::
|
118
|
+
std::shared_ptr<RootCertInfo> root_certs,
|
119
119
|
std::optional<PemKeyCertPairList> key_cert_pairs) override;
|
120
120
|
void OnError(grpc_error_handle root_cert_error,
|
121
121
|
grpc_error_handle identity_cert_error) override;
|
@@ -165,9 +165,9 @@ class TlsChannelSecurityConnector final
|
|
165
165
|
ABSL_GUARDED_BY(mu_) = nullptr;
|
166
166
|
tsi_ssl_session_cache* ssl_session_cache_ ABSL_GUARDED_BY(mu_) = nullptr;
|
167
167
|
RefCountedPtr<TlsSessionKeyLogger> tls_session_key_logger_;
|
168
|
-
std::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
|
169
168
|
std::optional<PemKeyCertPairList> pem_key_cert_pair_list_
|
170
169
|
ABSL_GUARDED_BY(mu_);
|
170
|
+
std::shared_ptr<RootCertInfo> root_cert_info_ ABSL_GUARDED_BY(mu_);
|
171
171
|
std::map<grpc_closure* /*on_peer_checked*/, ChannelPendingVerifierRequest*>
|
172
172
|
pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_);
|
173
173
|
};
|
@@ -204,14 +204,14 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
|
204
204
|
return server_handshaker_factory_;
|
205
205
|
};
|
206
206
|
|
207
|
-
std::optional<
|
207
|
+
std::optional<PemKeyCertPairList> KeyCertPairListForTesting() {
|
208
208
|
MutexLock lock(&mu_);
|
209
|
-
return
|
209
|
+
return pem_key_cert_pair_list_;
|
210
210
|
}
|
211
211
|
|
212
|
-
std::
|
212
|
+
std::shared_ptr<RootCertInfo> RootCertInfoForTesting() {
|
213
213
|
MutexLock lock(&mu_);
|
214
|
-
return
|
214
|
+
return root_cert_info_;
|
215
215
|
}
|
216
216
|
|
217
217
|
private:
|
@@ -225,7 +225,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
|
225
225
|
TlsServerSecurityConnector* security_connector)
|
226
226
|
: security_connector_(security_connector) {}
|
227
227
|
void OnCertificatesChanged(
|
228
|
-
std::
|
228
|
+
std::shared_ptr<RootCertInfo> roots,
|
229
229
|
std::optional<PemKeyCertPairList> key_cert_pairs) override;
|
230
230
|
|
231
231
|
void OnError(grpc_error_handle root_cert_error,
|
@@ -272,9 +272,9 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
|
|
272
272
|
certificate_watcher_ = nullptr;
|
273
273
|
tsi_ssl_server_handshaker_factory* server_handshaker_factory_
|
274
274
|
ABSL_GUARDED_BY(mu_) = nullptr;
|
275
|
-
std::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
|
276
275
|
std::optional<PemKeyCertPairList> pem_key_cert_pair_list_
|
277
276
|
ABSL_GUARDED_BY(mu_);
|
277
|
+
std::shared_ptr<RootCertInfo> root_cert_info_ ABSL_GUARDED_BY(mu_);
|
278
278
|
RefCountedPtr<TlsSessionKeyLogger> tls_session_key_logger_;
|
279
279
|
std::map<grpc_closure* /*on_peer_checked*/, ServerPendingVerifierRequest*>
|
280
280
|
pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_);
|
@@ -116,8 +116,7 @@ BackendMetricFilter::Create(const ChannelArgs&, ChannelFilter::Args) {
|
|
116
116
|
}
|
117
117
|
|
118
118
|
void BackendMetricFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) {
|
119
|
-
|
120
|
-
"BackendMetricFilter::Call::OnServerTrailingMetadata");
|
119
|
+
GRPC_LATENT_SEE_SCOPE("BackendMetricFilter::Call::OnServerTrailingMetadata");
|
121
120
|
if (md.get(GrpcCallWasCancelled()).value_or(false)) return;
|
122
121
|
auto* ctx = MaybeGetContext<BackendMetricProvider>();
|
123
122
|
if (ctx == nullptr) {
|
@@ -107,8 +107,7 @@ Slice UserAgentFromArgs(const ChannelArgs& args,
|
|
107
107
|
|
108
108
|
void HttpClientFilter::Call::OnClientInitialMetadata(ClientMetadata& md,
|
109
109
|
HttpClientFilter* filter) {
|
110
|
-
|
111
|
-
"HttpClientFilter::Call::OnClientInitialMetadata");
|
110
|
+
GRPC_LATENT_SEE_SCOPE("HttpClientFilter::Call::OnClientInitialMetadata");
|
112
111
|
if (filter->test_only_use_put_requests_) {
|
113
112
|
md.Set(HttpMethodMetadata(), HttpMethodMetadata::kPut);
|
114
113
|
} else {
|
@@ -122,15 +121,13 @@ void HttpClientFilter::Call::OnClientInitialMetadata(ClientMetadata& md,
|
|
122
121
|
|
123
122
|
absl::Status HttpClientFilter::Call::OnServerInitialMetadata(
|
124
123
|
ServerMetadata& md) {
|
125
|
-
|
126
|
-
"HttpClientFilter::Call::OnServerInitialMetadata");
|
124
|
+
GRPC_LATENT_SEE_SCOPE("HttpClientFilter::Call::OnServerInitialMetadata");
|
127
125
|
return CheckServerMetadata(&md);
|
128
126
|
}
|
129
127
|
|
130
128
|
absl::Status HttpClientFilter::Call::OnServerTrailingMetadata(
|
131
129
|
ServerMetadata& md) {
|
132
|
-
|
133
|
-
"HttpClientFilter::Call::OnServerTrailingMetadata");
|
130
|
+
GRPC_LATENT_SEE_SCOPE("HttpClientFilter::Call::OnServerTrailingMetadata");
|
134
131
|
return CheckServerMetadata(&md);
|
135
132
|
}
|
136
133
|
|
@@ -51,8 +51,7 @@ ClientAuthorityFilter::Create(const ChannelArgs& args, ChannelFilter::Args) {
|
|
51
51
|
|
52
52
|
void ClientAuthorityFilter::Call::OnClientInitialMetadata(
|
53
53
|
ClientMetadata& md, ClientAuthorityFilter* filter) {
|
54
|
-
|
55
|
-
"ClientAuthorityFilter::Call::OnClientInitialMetadata");
|
54
|
+
GRPC_LATENT_SEE_SCOPE("ClientAuthorityFilter::Call::OnClientInitialMetadata");
|
56
55
|
// If no authority is set, set the default authority.
|
57
56
|
if (md.get_pointer(HttpAuthorityMetadata()) == nullptr) {
|
58
57
|
md.Set(HttpAuthorityMetadata(), filter->default_authority_.Ref());
|
@@ -229,7 +229,7 @@ ChannelCompression::DecompressArgs ChannelCompression::HandleIncomingMetadata(
|
|
229
229
|
|
230
230
|
void ClientCompressionFilter::Call::OnClientInitialMetadata(
|
231
231
|
ClientMetadata& md, ClientCompressionFilter* filter) {
|
232
|
-
|
232
|
+
GRPC_LATENT_SEE_SCOPE(
|
233
233
|
"ClientCompressionFilter::Call::OnClientInitialMetadata");
|
234
234
|
compression_algorithm_ =
|
235
235
|
filter->compression_engine_.HandleOutgoingMetadata(md);
|
@@ -238,7 +238,7 @@ void ClientCompressionFilter::Call::OnClientInitialMetadata(
|
|
238
238
|
|
239
239
|
MessageHandle ClientCompressionFilter::Call::OnClientToServerMessage(
|
240
240
|
MessageHandle message, ClientCompressionFilter* filter) {
|
241
|
-
|
241
|
+
GRPC_LATENT_SEE_SCOPE(
|
242
242
|
"ClientCompressionFilter::Call::OnClientToServerMessage");
|
243
243
|
return filter->compression_engine_.CompressMessage(
|
244
244
|
std::move(message), compression_algorithm_, call_tracer_);
|
@@ -246,7 +246,7 @@ MessageHandle ClientCompressionFilter::Call::OnClientToServerMessage(
|
|
246
246
|
|
247
247
|
void ClientCompressionFilter::Call::OnServerInitialMetadata(
|
248
248
|
ServerMetadata& md, ClientCompressionFilter* filter) {
|
249
|
-
|
249
|
+
GRPC_LATENT_SEE_SCOPE(
|
250
250
|
"ClientCompressionFilter::Call::OnServerInitialMetadata");
|
251
251
|
decompress_args_ = filter->compression_engine_.HandleIncomingMetadata(md);
|
252
252
|
}
|
@@ -254,7 +254,7 @@ void ClientCompressionFilter::Call::OnServerInitialMetadata(
|
|
254
254
|
absl::StatusOr<MessageHandle>
|
255
255
|
ClientCompressionFilter::Call::OnServerToClientMessage(
|
256
256
|
MessageHandle message, ClientCompressionFilter* filter) {
|
257
|
-
|
257
|
+
GRPC_LATENT_SEE_SCOPE(
|
258
258
|
"ClientCompressionFilter::Call::OnServerToClientMessage");
|
259
259
|
return filter->compression_engine_.DecompressMessage(
|
260
260
|
/*is_client=*/true, std::move(message), decompress_args_, call_tracer_);
|
@@ -262,7 +262,7 @@ ClientCompressionFilter::Call::OnServerToClientMessage(
|
|
262
262
|
|
263
263
|
void ServerCompressionFilter::Call::OnClientInitialMetadata(
|
264
264
|
ClientMetadata& md, ServerCompressionFilter* filter) {
|
265
|
-
|
265
|
+
GRPC_LATENT_SEE_SCOPE(
|
266
266
|
"ServerCompressionFilter::Call::OnClientInitialMetadata");
|
267
267
|
decompress_args_ = filter->compression_engine_.HandleIncomingMetadata(md);
|
268
268
|
}
|
@@ -270,7 +270,7 @@ void ServerCompressionFilter::Call::OnClientInitialMetadata(
|
|
270
270
|
absl::StatusOr<MessageHandle>
|
271
271
|
ServerCompressionFilter::Call::OnClientToServerMessage(
|
272
272
|
MessageHandle message, ServerCompressionFilter* filter) {
|
273
|
-
|
273
|
+
GRPC_LATENT_SEE_SCOPE(
|
274
274
|
"ServerCompressionFilter::Call::OnClientToServerMessage");
|
275
275
|
return filter->compression_engine_.DecompressMessage(
|
276
276
|
/*is_client=*/false, std::move(message), decompress_args_,
|
@@ -279,7 +279,7 @@ ServerCompressionFilter::Call::OnClientToServerMessage(
|
|
279
279
|
|
280
280
|
void ServerCompressionFilter::Call::OnServerInitialMetadata(
|
281
281
|
ServerMetadata& md, ServerCompressionFilter* filter) {
|
282
|
-
|
282
|
+
GRPC_LATENT_SEE_SCOPE(
|
283
283
|
"ServerCompressionFilter::Call::OnServerInitialMetadata");
|
284
284
|
compression_algorithm_ =
|
285
285
|
filter->compression_engine_.HandleOutgoingMetadata(md);
|
@@ -287,7 +287,7 @@ void ServerCompressionFilter::Call::OnServerInitialMetadata(
|
|
287
287
|
|
288
288
|
MessageHandle ServerCompressionFilter::Call::OnServerToClientMessage(
|
289
289
|
MessageHandle message, ServerCompressionFilter* filter) {
|
290
|
-
|
290
|
+
GRPC_LATENT_SEE_SCOPE(
|
291
291
|
"ServerCompressionFilter::Call::OnServerToClientMessage");
|
292
292
|
return filter->compression_engine_.CompressMessage(
|
293
293
|
std::move(message), compression_algorithm_,
|
@@ -71,8 +71,7 @@ ServerMetadataHandle MalformedRequest(absl::string_view explanation) {
|
|
71
71
|
|
72
72
|
ServerMetadataHandle HttpServerFilter::Call::OnClientInitialMetadata(
|
73
73
|
ClientMetadata& md, HttpServerFilter* filter) {
|
74
|
-
|
75
|
-
"HttpServerFilter::Call::OnClientInitialMetadata");
|
74
|
+
GRPC_LATENT_SEE_SCOPE("HttpServerFilter::Call::OnClientInitialMetadata");
|
76
75
|
auto method = md.get(HttpMethodMetadata());
|
77
76
|
if (method.has_value()) {
|
78
77
|
switch (*method) {
|
@@ -135,8 +134,7 @@ ServerMetadataHandle HttpServerFilter::Call::OnClientInitialMetadata(
|
|
135
134
|
}
|
136
135
|
|
137
136
|
void HttpServerFilter::Call::OnServerInitialMetadata(ServerMetadata& md) {
|
138
|
-
|
139
|
-
"HttpServerFilter::Call::OnServerInitialMetadata");
|
137
|
+
GRPC_LATENT_SEE_SCOPE("HttpServerFilter::Call::OnServerInitialMetadata");
|
140
138
|
GRPC_TRACE_LOG(call, INFO)
|
141
139
|
<< GetContext<Activity>()->DebugTag() << "[http-server] Write metadata";
|
142
140
|
FilterOutgoingMetadata(&md);
|
@@ -145,8 +143,7 @@ void HttpServerFilter::Call::OnServerInitialMetadata(ServerMetadata& md) {
|
|
145
143
|
}
|
146
144
|
|
147
145
|
void HttpServerFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) {
|
148
|
-
|
149
|
-
"HttpServerFilter::Call::OnServerTrailingMetadata");
|
146
|
+
GRPC_LATENT_SEE_SCOPE("HttpServerFilter::Call::OnServerTrailingMetadata");
|
150
147
|
FilterOutgoingMetadata(&md);
|
151
148
|
}
|
152
149
|
|
@@ -187,7 +187,7 @@ void ClientMessageSizeFilter::Call::OnClientInitialMetadata(
|
|
187
187
|
|
188
188
|
ServerMetadataHandle ServerMessageSizeFilter::Call::OnClientToServerMessage(
|
189
189
|
const Message& message, ServerMessageSizeFilter* filter) {
|
190
|
-
|
190
|
+
GRPC_LATENT_SEE_SCOPE(
|
191
191
|
"ServerMessageSizeFilter::Call::OnClientToServerMessage");
|
192
192
|
return CheckPayload(message, filter->parsed_config_.max_recv_size(),
|
193
193
|
/*is_client=*/false, false);
|
@@ -195,7 +195,7 @@ ServerMetadataHandle ServerMessageSizeFilter::Call::OnClientToServerMessage(
|
|
195
195
|
|
196
196
|
ServerMetadataHandle ServerMessageSizeFilter::Call::OnServerToClientMessage(
|
197
197
|
const Message& message, ServerMessageSizeFilter* filter) {
|
198
|
-
|
198
|
+
GRPC_LATENT_SEE_SCOPE(
|
199
199
|
"ServerMessageSizeFilter::Call::OnServerToClientMessage");
|
200
200
|
return CheckPayload(message, filter->parsed_config_.max_send_size(),
|
201
201
|
/*is_client=*/false, true);
|
@@ -203,7 +203,7 @@ ServerMetadataHandle ServerMessageSizeFilter::Call::OnServerToClientMessage(
|
|
203
203
|
|
204
204
|
ServerMetadataHandle ClientMessageSizeFilter::Call::OnClientToServerMessage(
|
205
205
|
const Message& message) {
|
206
|
-
|
206
|
+
GRPC_LATENT_SEE_SCOPE(
|
207
207
|
"ClientMessageSizeFilter::Call::OnClientToServerMessage");
|
208
208
|
return CheckPayload(message, limits_.max_send_size(), /*is_client=*/true,
|
209
209
|
true);
|
@@ -211,7 +211,7 @@ ServerMetadataHandle ClientMessageSizeFilter::Call::OnClientToServerMessage(
|
|
211
211
|
|
212
212
|
ServerMetadataHandle ClientMessageSizeFilter::Call::OnServerToClientMessage(
|
213
213
|
const Message& message) {
|
214
|
-
|
214
|
+
GRPC_LATENT_SEE_SCOPE(
|
215
215
|
"ClientMessageSizeFilter::Call::OnServerToClientMessage");
|
216
216
|
return CheckPayload(message, limits_.max_recv_size(), /*is_client=*/true,
|
217
217
|
false);
|
@@ -43,7 +43,7 @@ namespace grpc_core {
|
|
43
43
|
|
44
44
|
absl::Status RbacFilter::Call::OnClientInitialMetadata(ClientMetadata& md,
|
45
45
|
RbacFilter* filter) {
|
46
|
-
|
46
|
+
GRPC_LATENT_SEE_SCOPE("RbacFilter::Call::OnClientInitialMetadata");
|
47
47
|
// Fetch and apply the rbac policy from the service config.
|
48
48
|
auto* service_config_call_data = GetContext<ServiceConfigCallData>();
|
49
49
|
auto* method_params = static_cast<RbacMethodParsedConfig*>(
|
@@ -213,8 +213,7 @@ bool IsConfiguredPath(absl::string_view configured_path,
|
|
213
213
|
|
214
214
|
void StatefulSessionFilter::Call::OnClientInitialMetadata(
|
215
215
|
ClientMetadata& md, StatefulSessionFilter* filter) {
|
216
|
-
|
217
|
-
"StatefulSessionFilter::Call::OnClientInitialMetadata");
|
216
|
+
GRPC_LATENT_SEE_SCOPE("StatefulSessionFilter::Call::OnClientInitialMetadata");
|
218
217
|
// Get config.
|
219
218
|
auto* service_config_call_data = GetContext<ServiceConfigCallData>();
|
220
219
|
CHECK_NE(service_config_call_data, nullptr);
|
@@ -254,8 +253,7 @@ void StatefulSessionFilter::Call::OnClientInitialMetadata(
|
|
254
253
|
}
|
255
254
|
|
256
255
|
void StatefulSessionFilter::Call::OnServerInitialMetadata(ServerMetadata& md) {
|
257
|
-
|
258
|
-
"StatefulSessionFilter::Call::OnServerInitialMetadata");
|
256
|
+
GRPC_LATENT_SEE_SCOPE("StatefulSessionFilter::Call::OnServerInitialMetadata");
|
259
257
|
if (!perform_filtering_) return;
|
260
258
|
// Add cookie to server initial metadata if needed.
|
261
259
|
MaybeUpdateServerInitialMetadata(cookie_config_, cluster_changed_,
|
@@ -264,7 +262,7 @@ void StatefulSessionFilter::Call::OnServerInitialMetadata(ServerMetadata& md) {
|
|
264
262
|
}
|
265
263
|
|
266
264
|
void StatefulSessionFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) {
|
267
|
-
|
265
|
+
GRPC_LATENT_SEE_SCOPE(
|
268
266
|
"StatefulSessionFilter::Call::OnServerTrailingMetadata");
|
269
267
|
if (!perform_filtering_) return;
|
270
268
|
// If we got a Trailers-Only response, then add the
|
@@ -69,6 +69,7 @@
|
|
69
69
|
#include "src/core/ext/transport/chttp2/transport/frame_security.h"
|
70
70
|
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
|
71
71
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
72
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
|
72
73
|
#include "src/core/ext/transport/chttp2/transport/http2_stats_collector.h"
|
73
74
|
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
74
75
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
@@ -1136,7 +1137,7 @@ static const char* begin_writing_desc(bool partial) {
|
|
1136
1137
|
static void write_action_begin_locked(
|
1137
1138
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
1138
1139
|
grpc_error_handle /*error_ignored*/) {
|
1139
|
-
|
1140
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("write_action_begin_locked");
|
1140
1141
|
CHECK(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
1141
1142
|
grpc_chttp2_begin_write_result r;
|
1142
1143
|
if (!t->closed_with_error.ok()) {
|
@@ -2896,7 +2897,7 @@ static void read_action(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2896
2897
|
static void read_action_parse_loop_locked(
|
2897
2898
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2898
2899
|
grpc_error_handle error) {
|
2899
|
-
|
2900
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("read_action_parse_loop_locked");
|
2900
2901
|
if (t->closed_with_error.ok()) {
|
2901
2902
|
grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
|
2902
2903
|
size_t requests_started = 0;
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "absl/strings/str_format.h"
|
35
35
|
#include "absl/strings/str_join.h"
|
36
36
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
37
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
|
37
38
|
#include "src/core/lib/experiments/experiments.h"
|
38
39
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
39
40
|
#include "src/core/util/useful.h"
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "absl/strings/string_view.h"
|
35
35
|
#include "src/core/channelz/property_list.h"
|
36
36
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
37
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
|
37
38
|
#include "src/core/lib/debug/trace.h"
|
38
39
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
39
40
|
#include "src/core/lib/transport/bdp_estimator.h"
|
@@ -24,20 +24,69 @@
|
|
24
24
|
#include "absl/log/check.h"
|
25
25
|
#include "absl/status/status.h"
|
26
26
|
#include "absl/strings/str_cat.h"
|
27
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
27
28
|
#include "src/core/lib/slice/slice.h"
|
28
29
|
#include "src/core/lib/slice/slice_buffer.h"
|
29
30
|
#include "src/core/util/crash.h"
|
30
31
|
|
32
|
+
// TODO(tjagtap) TODO(akshitpatel): [PH2][P3] : Write micro benchmarks for
|
33
|
+
// framing code
|
34
|
+
|
31
35
|
using grpc_core::http2::Http2ErrorCode;
|
32
36
|
using grpc_core::http2::Http2Status;
|
33
37
|
using grpc_core::http2::ValueOrHttp2Status;
|
34
38
|
|
35
39
|
namespace grpc_core {
|
36
40
|
|
41
|
+
///////////////////////////////////////////////////////////////////////////////
|
42
|
+
// Settings Frame Validations
|
43
|
+
|
44
|
+
bool IsUnknownSetting(const uint16_t setting_id) {
|
45
|
+
// RFC9113 : An endpoint that receives a SETTINGS frame with any unknown
|
46
|
+
// or unsupported identifier MUST ignore that setting.
|
47
|
+
return setting_id < Http2Settings::kHeaderTableSizeWireId ||
|
48
|
+
setting_id > Http2Settings::kGrpcAllowSecurityFrameWireId ||
|
49
|
+
(setting_id > Http2Settings::kMaxHeaderListSizeWireId &&
|
50
|
+
setting_id < Http2Settings::kGrpcAllowTrueBinaryMetadataWireId);
|
51
|
+
}
|
52
|
+
|
53
|
+
Http2Status ValidateSettingsValues(
|
54
|
+
std::vector<Http2SettingsFrame::Setting>& list) {
|
55
|
+
for (const auto& setting : list) {
|
56
|
+
if (GPR_UNLIKELY(setting.id == Http2Settings::kInitialWindowSizeWireId &&
|
57
|
+
setting.value > RFC9113::kMaxSize31Bit)) {
|
58
|
+
LOG(ERROR)
|
59
|
+
<< "ValidateSettingsValues Invalid "
|
60
|
+
"Setting:{setting.id:kInitialWindowSizeWireId, setting.value: "
|
61
|
+
<< setting.value << "}";
|
62
|
+
return Http2Status::Http2ConnectionError(
|
63
|
+
Http2ErrorCode::kFlowControlError,
|
64
|
+
absl::StrCat(RFC9113::kIncorrectWindowSizeSetting,
|
65
|
+
"Invalid Setting:{setting.id:kInitialWindowSizeWireId, "
|
66
|
+
"setting.value: ",
|
67
|
+
setting.value));
|
68
|
+
} else if (GPR_UNLIKELY(setting.id == Http2Settings::kMaxFrameSizeWireId &&
|
69
|
+
(setting.value < RFC9113::kMinimumFrameSize ||
|
70
|
+
setting.value > RFC9113::kMaximumFrameSize))) {
|
71
|
+
LOG(ERROR) << "ValidateSettingsValues Invalid "
|
72
|
+
"Setting:{setting.id:kMaxFrameSizeWireId, setting.value: "
|
73
|
+
<< setting.value << "}";
|
74
|
+
return Http2Status::Http2ConnectionError(
|
75
|
+
Http2ErrorCode::kProtocolError,
|
76
|
+
absl::StrCat(RFC9113::kIncorrectFrameSizeSetting,
|
77
|
+
"Invalid Setting:{setting.id:kMaxFrameSizeWireId, "
|
78
|
+
"setting.value: ",
|
79
|
+
setting.value));
|
80
|
+
}
|
81
|
+
}
|
82
|
+
DVLOG(2) << "Http2Transport ValidateSettingsValues Valid";
|
83
|
+
return Http2Status::Ok();
|
84
|
+
}
|
85
|
+
|
37
86
|
namespace {
|
38
87
|
|
39
|
-
|
40
|
-
//
|
88
|
+
///////////////////////////////////////////////////////////////////////////////
|
89
|
+
// HTTP2 Framing Code
|
41
90
|
|
42
91
|
// HTTP2 Frame Types
|
43
92
|
enum class FrameType : uint8_t {
|
@@ -431,7 +480,8 @@ ValueOrHttp2Status<Http2Frame> ParseSettingsFrame(const Http2FrameHeader& hdr,
|
|
431
480
|
Http2ErrorCode::kFrameSizeError,
|
432
481
|
absl::StrCat(RFC9113::kSettingsLength0, hdr.ToString()));
|
433
482
|
}
|
434
|
-
return ValueOrHttp2Status<Http2Frame>(
|
483
|
+
return ValueOrHttp2Status<Http2Frame>(
|
484
|
+
Http2SettingsFrame{/*ack=*/true, /*settings=*/{}});
|
435
485
|
}
|
436
486
|
|
437
487
|
if (GPR_UNLIKELY(payload.Length() % 6 != 0)) {
|
@@ -440,13 +490,18 @@ ValueOrHttp2Status<Http2Frame> ParseSettingsFrame(const Http2FrameHeader& hdr,
|
|
440
490
|
absl::StrCat(RFC9113::kSettingsLength6x, hdr.ToString()));
|
441
491
|
}
|
442
492
|
|
443
|
-
Http2SettingsFrame frame{false, {}};
|
493
|
+
Http2SettingsFrame frame{/*ack=*/false, /*settings=*/{}};
|
444
494
|
while (payload.Length() != 0) {
|
445
495
|
uint8_t buffer[6];
|
446
496
|
payload.MoveFirstNBytesIntoBuffer(6, buffer);
|
497
|
+
uint16_t setting_id = Read2b(buffer);
|
498
|
+
uint32_t setting_value = Read4b(buffer + 2);
|
499
|
+
if (GPR_UNLIKELY(IsUnknownSetting(setting_id))) {
|
500
|
+
continue;
|
501
|
+
}
|
447
502
|
frame.settings.push_back({
|
448
|
-
|
449
|
-
|
503
|
+
setting_id,
|
504
|
+
setting_value,
|
450
505
|
});
|
451
506
|
}
|
452
507
|
return ValueOrHttp2Status<Http2Frame>(std::move(frame));
|
@@ -578,6 +633,7 @@ std::string Http2FrameTypeString(FrameType frame_type) {
|
|
578
633
|
}
|
579
634
|
return absl::StrCat("UNKNOWN(", static_cast<uint8_t>(frame_type), ")");
|
580
635
|
}
|
636
|
+
|
581
637
|
} // namespace
|
582
638
|
|
583
639
|
std::string Http2FrameHeader::ToString() const {
|
@@ -642,6 +698,9 @@ http2::Http2ErrorCode Http2ErrorCodeFromRstFrameErrorCode(uint32_t error_code) {
|
|
642
698
|
return static_cast<http2::Http2ErrorCode>(error_code);
|
643
699
|
}
|
644
700
|
|
701
|
+
///////////////////////////////////////////////////////////////////////////////
|
702
|
+
// GRPC Header
|
703
|
+
|
645
704
|
GrpcMessageHeader ExtractGrpcHeader(SliceBuffer& payload) {
|
646
705
|
CHECK_GE(payload.Length(), kGrpcHeaderSizeInBytes);
|
647
706
|
uint8_t buffer[kGrpcHeaderSizeInBytes];
|
@@ -659,4 +718,28 @@ void AppendGrpcHeaderToSliceBuffer(SliceBuffer& payload, const uint8_t flags,
|
|
659
718
|
Write4b(length, frame_hdr + 1);
|
660
719
|
}
|
661
720
|
|
721
|
+
Http2Status ValidateFrameHeader(const uint32_t max_frame_size_setting,
|
722
|
+
const bool incoming_header_in_progress,
|
723
|
+
const uint32_t incoming_header_stream_id,
|
724
|
+
Http2FrameHeader& current_frame_header) {
|
725
|
+
if (GPR_UNLIKELY(current_frame_header.length > max_frame_size_setting)) {
|
726
|
+
return Http2Status::Http2ConnectionError(
|
727
|
+
Http2ErrorCode::kFrameSizeError,
|
728
|
+
absl::StrCat(RFC9113::kFrameSizeLargerThanMaxFrameSizeSetting,
|
729
|
+
", Current Size = ", current_frame_header.length,
|
730
|
+
", Max Size = ", max_frame_size_setting));
|
731
|
+
}
|
732
|
+
if (GPR_UNLIKELY(
|
733
|
+
incoming_header_in_progress &&
|
734
|
+
(current_frame_header.type !=
|
735
|
+
static_cast<uint8_t>(FrameType::kContinuation) ||
|
736
|
+
current_frame_header.stream_id != incoming_header_stream_id))) {
|
737
|
+
return Http2Status::Http2ConnectionError(
|
738
|
+
Http2ErrorCode::kProtocolError,
|
739
|
+
std::string(RFC9113::kAssemblerContiguousSequenceError));
|
740
|
+
}
|
741
|
+
// TODO(tjagtap) : [PH2][P2]:Consider validating MAX_CONCURRENT_STREAMS here
|
742
|
+
return Http2Status::Ok();
|
743
|
+
}
|
744
|
+
|
662
745
|
} // namespace grpc_core
|