grpc 1.37.1 → 1.38.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +64 -58
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +5 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +101 -93
- data/src/core/ext/xds/xds_api.h +6 -6
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +4 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +11 -10
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +36 -34
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +477 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- metadata +68 -45
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -128,7 +128,7 @@ class Server : public InternallyRefCounted<Server> {
|
|
128
128
|
|
129
129
|
// Sets up a transport. Creates a channel stack and binds the transport to
|
130
130
|
// the server. Called from the listener when a new connection is accepted.
|
131
|
-
|
131
|
+
grpc_error_handle SetupTransport(
|
132
132
|
grpc_transport* transport, grpc_pollset* accepting_pollset,
|
133
133
|
const grpc_channel_args* args,
|
134
134
|
const RefCountedPtr<channelz::SocketNode>& socket_node,
|
@@ -202,8 +202,8 @@ class Server : public InternallyRefCounted<Server> {
|
|
202
202
|
bool is_idempotent);
|
203
203
|
|
204
204
|
// Filter vtable functions.
|
205
|
-
static
|
206
|
-
|
205
|
+
static grpc_error_handle InitChannelElement(
|
206
|
+
grpc_channel_element* elem, grpc_channel_element_args* args);
|
207
207
|
static void DestroyChannelElement(grpc_channel_element* elem);
|
208
208
|
|
209
209
|
private:
|
@@ -214,7 +214,7 @@ class Server : public InternallyRefCounted<Server> {
|
|
214
214
|
|
215
215
|
void Destroy() ABSL_EXCLUSIVE_LOCKS_REQUIRED(server_->mu_global_);
|
216
216
|
|
217
|
-
static void FinishDestroy(void* arg,
|
217
|
+
static void FinishDestroy(void* arg, grpc_error_handle error);
|
218
218
|
|
219
219
|
RefCountedPtr<Server> server_;
|
220
220
|
grpc_channel* channel_;
|
@@ -264,8 +264,8 @@ class Server : public InternallyRefCounted<Server> {
|
|
264
264
|
void FailCallCreation();
|
265
265
|
|
266
266
|
// Filter vtable functions.
|
267
|
-
static
|
268
|
-
|
267
|
+
static grpc_error_handle InitCallElement(
|
268
|
+
grpc_call_element* elem, const grpc_call_element_args* args);
|
269
269
|
static void DestroyCallElement(grpc_call_element* elem,
|
270
270
|
const grpc_call_final_info* /*final_info*/,
|
271
271
|
grpc_closure* /*ignored*/);
|
@@ -274,15 +274,16 @@ class Server : public InternallyRefCounted<Server> {
|
|
274
274
|
|
275
275
|
private:
|
276
276
|
// Helper functions for handling calls at the top of the call stack.
|
277
|
-
static void RecvInitialMetadataBatchComplete(void* arg,
|
277
|
+
static void RecvInitialMetadataBatchComplete(void* arg,
|
278
|
+
grpc_error_handle error);
|
278
279
|
void StartNewRpc(grpc_call_element* elem);
|
279
|
-
static void PublishNewRpc(void* arg,
|
280
|
+
static void PublishNewRpc(void* arg, grpc_error_handle error);
|
280
281
|
|
281
282
|
// Functions used inside the call stack.
|
282
283
|
void StartTransportStreamOpBatchImpl(grpc_call_element* elem,
|
283
284
|
grpc_transport_stream_op_batch* batch);
|
284
|
-
static void RecvInitialMetadataReady(void* arg,
|
285
|
-
static void RecvTrailingMetadataReady(void* arg,
|
285
|
+
static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
|
286
|
+
static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
|
286
287
|
|
287
288
|
RefCountedPtr<Server> server_;
|
288
289
|
|
@@ -309,12 +310,12 @@ class Server : public InternallyRefCounted<Server> {
|
|
309
310
|
uint32_t recv_initial_metadata_flags_ = 0;
|
310
311
|
grpc_closure recv_initial_metadata_ready_;
|
311
312
|
grpc_closure* original_recv_initial_metadata_ready_;
|
312
|
-
|
313
|
+
grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE;
|
313
314
|
|
314
315
|
bool seen_recv_trailing_metadata_ready_ = false;
|
315
316
|
grpc_closure recv_trailing_metadata_ready_;
|
316
317
|
grpc_closure* original_recv_trailing_metadata_ready_;
|
317
|
-
|
318
|
+
grpc_error_handle recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
|
318
319
|
|
319
320
|
grpc_closure publish_;
|
320
321
|
|
@@ -336,7 +337,7 @@ class Server : public InternallyRefCounted<Server> {
|
|
336
337
|
grpc_cq_completion completion;
|
337
338
|
};
|
338
339
|
|
339
|
-
static void ListenerDestroyDone(void* arg,
|
340
|
+
static void ListenerDestroyDone(void* arg, grpc_error_handle error);
|
340
341
|
|
341
342
|
static void DoneShutdownEvent(void* server,
|
342
343
|
grpc_cq_completion* /*completion*/) {
|
@@ -345,13 +346,13 @@ class Server : public InternallyRefCounted<Server> {
|
|
345
346
|
|
346
347
|
static void DoneRequestEvent(void* req, grpc_cq_completion* completion);
|
347
348
|
|
348
|
-
void FailCall(size_t cq_idx, RequestedCall* rc,
|
349
|
+
void FailCall(size_t cq_idx, RequestedCall* rc, grpc_error_handle error);
|
349
350
|
grpc_call_error QueueRequestedCall(size_t cq_idx, RequestedCall* rc);
|
350
351
|
|
351
352
|
void MaybeFinishShutdown() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_global_)
|
352
353
|
ABSL_LOCKS_EXCLUDED(mu_call_);
|
353
354
|
|
354
|
-
void KillPendingWorkLocked(
|
355
|
+
void KillPendingWorkLocked(grpc_error_handle error)
|
355
356
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_call_);
|
356
357
|
|
357
358
|
static grpc_call_error ValidateServerRequest(
|
@@ -30,9 +30,9 @@
|
|
30
30
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
31
31
|
#include "src/core/lib/surface/validate_metadata.h"
|
32
32
|
|
33
|
-
static
|
34
|
-
|
35
|
-
|
33
|
+
static grpc_error_handle conforms_to(const grpc_slice& slice,
|
34
|
+
const uint8_t* legal_bits,
|
35
|
+
const char* err_desc) {
|
36
36
|
const uint8_t* p = GRPC_SLICE_START_PTR(slice);
|
37
37
|
const uint8_t* e = GRPC_SLICE_END_PTR(slice);
|
38
38
|
for (; p != e; p++) {
|
@@ -40,7 +40,7 @@ static grpc_error* conforms_to(const grpc_slice& slice,
|
|
40
40
|
int byte = idx / 8;
|
41
41
|
int bit = idx % 8;
|
42
42
|
if ((legal_bits[byte] & (1 << bit)) == 0) {
|
43
|
-
|
43
|
+
grpc_error_handle error = grpc_error_set_str(
|
44
44
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_desc),
|
45
45
|
GRPC_ERROR_INT_OFFSET,
|
46
46
|
p - GRPC_SLICE_START_PTR(slice)),
|
@@ -52,13 +52,13 @@ static grpc_error* conforms_to(const grpc_slice& slice,
|
|
52
52
|
return GRPC_ERROR_NONE;
|
53
53
|
}
|
54
54
|
|
55
|
-
static int error2int(
|
55
|
+
static int error2int(grpc_error_handle error) {
|
56
56
|
int r = (error == GRPC_ERROR_NONE);
|
57
57
|
GRPC_ERROR_UNREF(error);
|
58
58
|
return r;
|
59
59
|
}
|
60
60
|
|
61
|
-
|
61
|
+
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
|
62
62
|
static const uint8_t legal_header_bits[256 / 8] = {
|
63
63
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x03, 0x00, 0x00, 0x00,
|
64
64
|
0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
@@ -82,7 +82,7 @@ int grpc_header_key_is_legal(grpc_slice slice) {
|
|
82
82
|
return error2int(grpc_validate_header_key_is_legal(slice));
|
83
83
|
}
|
84
84
|
|
85
|
-
|
85
|
+
grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
|
86
86
|
const grpc_slice& slice) {
|
87
87
|
static const uint8_t legal_header_bits[256 / 8] = {
|
88
88
|
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
@@ -27,8 +27,9 @@
|
|
27
27
|
|
28
28
|
#include "src/core/lib/iomgr/error.h"
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice);
|
31
|
+
grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
|
32
|
+
const grpc_slice& slice);
|
32
33
|
|
33
34
|
int grpc_is_binary_header_internal(const grpc_slice& slice);
|
34
35
|
inline int grpc_key_is_binary_header(const uint8_t* buf, size_t length) {
|
@@ -23,6 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "16.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) {
|
28
|
+
const char* grpc_g_stands_for(void) {
|
29
|
+
return "guadalupe_river_park_conservancy";
|
30
|
+
}
|
@@ -59,7 +59,7 @@ bool SliceBufferByteStream::Next(size_t /*max_size_hint*/,
|
|
59
59
|
return true;
|
60
60
|
}
|
61
61
|
|
62
|
-
|
62
|
+
grpc_error_handle SliceBufferByteStream::Pull(grpc_slice* slice) {
|
63
63
|
if (GPR_UNLIKELY(shutdown_error_ != GRPC_ERROR_NONE)) {
|
64
64
|
return GRPC_ERROR_REF(shutdown_error_);
|
65
65
|
}
|
@@ -67,7 +67,7 @@ grpc_error* SliceBufferByteStream::Pull(grpc_slice* slice) {
|
|
67
67
|
return GRPC_ERROR_NONE;
|
68
68
|
}
|
69
69
|
|
70
|
-
void SliceBufferByteStream::Shutdown(
|
70
|
+
void SliceBufferByteStream::Shutdown(grpc_error_handle error) {
|
71
71
|
GRPC_ERROR_UNREF(shutdown_error_);
|
72
72
|
shutdown_error_ = error;
|
73
73
|
}
|
@@ -117,7 +117,7 @@ bool ByteStreamCache::CachingByteStream::Next(size_t max_size_hint,
|
|
117
117
|
return cache_->underlying_stream_->Next(max_size_hint, on_complete);
|
118
118
|
}
|
119
119
|
|
120
|
-
|
120
|
+
grpc_error_handle ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
|
121
121
|
if (shutdown_error_ != GRPC_ERROR_NONE) {
|
122
122
|
return GRPC_ERROR_REF(shutdown_error_);
|
123
123
|
}
|
@@ -128,7 +128,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
|
|
128
128
|
return GRPC_ERROR_NONE;
|
129
129
|
}
|
130
130
|
GPR_ASSERT(cache_->underlying_stream_ != nullptr);
|
131
|
-
|
131
|
+
grpc_error_handle error = cache_->underlying_stream_->Pull(slice);
|
132
132
|
if (error == GRPC_ERROR_NONE) {
|
133
133
|
grpc_slice_buffer_add(&cache_->cache_buffer_,
|
134
134
|
grpc_slice_ref_internal(*slice));
|
@@ -142,7 +142,7 @@ grpc_error* ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
|
|
142
142
|
return error;
|
143
143
|
}
|
144
144
|
|
145
|
-
void ByteStreamCache::CachingByteStream::Shutdown(
|
145
|
+
void ByteStreamCache::CachingByteStream::Shutdown(grpc_error_handle error) {
|
146
146
|
GRPC_ERROR_UNREF(shutdown_error_);
|
147
147
|
shutdown_error_ = GRPC_ERROR_REF(error);
|
148
148
|
if (cache_->underlying_stream_ != nullptr) {
|
@@ -56,7 +56,7 @@ class ByteStream : public Orphanable {
|
|
56
56
|
// indicated by Next().
|
57
57
|
//
|
58
58
|
// Once a slice is returned into *slice, it is owned by the caller.
|
59
|
-
virtual
|
59
|
+
virtual grpc_error_handle Pull(grpc_slice* slice) = 0;
|
60
60
|
|
61
61
|
// Shuts down the byte stream.
|
62
62
|
//
|
@@ -65,7 +65,7 @@ class ByteStream : public Orphanable {
|
|
65
65
|
//
|
66
66
|
// The next call to Pull() (if any) will return the error passed to
|
67
67
|
// Shutdown().
|
68
|
-
virtual void Shutdown(
|
68
|
+
virtual void Shutdown(grpc_error_handle error) = 0;
|
69
69
|
|
70
70
|
uint32_t length() const { return length_; }
|
71
71
|
uint32_t flags() const { return flags_; }
|
@@ -97,11 +97,11 @@ class SliceBufferByteStream : public ByteStream {
|
|
97
97
|
void Orphan() override;
|
98
98
|
|
99
99
|
bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
|
100
|
-
|
101
|
-
void Shutdown(
|
100
|
+
grpc_error_handle Pull(grpc_slice* slice) override;
|
101
|
+
void Shutdown(grpc_error_handle error) override;
|
102
102
|
|
103
103
|
private:
|
104
|
-
|
104
|
+
grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
|
105
105
|
grpc_slice_buffer backing_buffer_;
|
106
106
|
};
|
107
107
|
|
@@ -131,8 +131,8 @@ class ByteStreamCache {
|
|
131
131
|
void Orphan() override;
|
132
132
|
|
133
133
|
bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
|
134
|
-
|
135
|
-
void Shutdown(
|
134
|
+
grpc_error_handle Pull(grpc_slice* slice) override;
|
135
|
+
void Shutdown(grpc_error_handle error) override;
|
136
136
|
|
137
137
|
// Resets the byte stream to the start of the underlying stream.
|
138
138
|
void Reset();
|
@@ -141,7 +141,7 @@ class ByteStreamCache {
|
|
141
141
|
ByteStreamCache* cache_;
|
142
142
|
size_t cursor_ = 0;
|
143
143
|
size_t offset_ = 0;
|
144
|
-
|
144
|
+
grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
|
145
145
|
};
|
146
146
|
|
147
147
|
explicit ByteStreamCache(OrphanablePtr<ByteStream> underlying_stream);
|
@@ -73,7 +73,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
|
|
73
73
|
}
|
74
74
|
|
75
75
|
private:
|
76
|
-
static void SendNotification(void* arg,
|
76
|
+
static void SendNotification(void* arg, grpc_error_handle /*ignored*/) {
|
77
77
|
Notifier* self = static_cast<Notifier*>(arg);
|
78
78
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_connectivity_state_trace)) {
|
79
79
|
gpr_log(GPR_INFO, "watcher %p: delivering async notification for %s (%s)",
|
@@ -25,8 +25,8 @@
|
|
25
25
|
#include "src/core/lib/slice/slice_internal.h"
|
26
26
|
#include "src/core/lib/transport/status_conversion.h"
|
27
27
|
|
28
|
-
static
|
29
|
-
|
28
|
+
static grpc_error_handle recursively_find_error_with_field(
|
29
|
+
grpc_error_handle error, grpc_error_ints which) {
|
30
30
|
intptr_t unused;
|
31
31
|
// If the error itself has a status code, return it.
|
32
32
|
if (grpc_error_get_int(error, which, &unused)) {
|
@@ -38,14 +38,15 @@ static grpc_error* recursively_find_error_with_field(grpc_error* error,
|
|
38
38
|
while (slot != UINT8_MAX) {
|
39
39
|
grpc_linked_error* lerr =
|
40
40
|
reinterpret_cast<grpc_linked_error*>(error->arena + slot);
|
41
|
-
|
41
|
+
grpc_error_handle result =
|
42
|
+
recursively_find_error_with_field(lerr->err, which);
|
42
43
|
if (result) return result;
|
43
44
|
slot = lerr->next;
|
44
45
|
}
|
45
46
|
return nullptr;
|
46
47
|
}
|
47
48
|
|
48
|
-
void grpc_error_get_status(
|
49
|
+
void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline,
|
49
50
|
grpc_status_code* code, grpc_slice* slice,
|
50
51
|
grpc_http2_error_code* http_error,
|
51
52
|
const char** error_string) {
|
@@ -71,7 +72,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
|
|
71
72
|
|
72
73
|
// Start with the parent error and recurse through the tree of children
|
73
74
|
// until we find the first one that has a status code.
|
74
|
-
|
75
|
+
grpc_error_handle found_error =
|
75
76
|
recursively_find_error_with_field(error, GRPC_ERROR_INT_GRPC_STATUS);
|
76
77
|
if (found_error == nullptr) {
|
77
78
|
/// If no grpc-status exists, retry through the tree to find a http2 error
|
@@ -96,7 +97,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
|
|
96
97
|
if (code != nullptr) *code = status;
|
97
98
|
|
98
99
|
if (error_string != nullptr && status != GRPC_STATUS_OK) {
|
99
|
-
*error_string = gpr_strdup(
|
100
|
+
*error_string = gpr_strdup(grpc_error_std_string(error).c_str());
|
100
101
|
}
|
101
102
|
|
102
103
|
if (http_error != nullptr) {
|
@@ -123,7 +124,7 @@ void grpc_error_get_status(grpc_error* error, grpc_millis deadline,
|
|
123
124
|
}
|
124
125
|
}
|
125
126
|
|
126
|
-
absl::Status grpc_error_to_absl_status(
|
127
|
+
absl::Status grpc_error_to_absl_status(grpc_error_handle error) {
|
127
128
|
grpc_status_code status;
|
128
129
|
// TODO(yashykt): This should be updated once we decide on how to use the
|
129
130
|
// absl::Status payload to capture all the contents of grpc_error.
|
@@ -136,7 +137,17 @@ absl::Status grpc_error_to_absl_status(grpc_error* error) {
|
|
136
137
|
GRPC_SLICE_LENGTH(message)));
|
137
138
|
}
|
138
139
|
|
139
|
-
|
140
|
+
grpc_error_handle absl_status_to_grpc_error(absl::Status status) {
|
141
|
+
// Special error checks
|
142
|
+
if (status.ok()) {
|
143
|
+
return GRPC_ERROR_NONE;
|
144
|
+
}
|
145
|
+
return grpc_error_set_int(
|
146
|
+
GRPC_ERROR_CREATE_FROM_STRING_VIEW(status.message()),
|
147
|
+
GRPC_ERROR_INT_GRPC_STATUS, static_cast<grpc_status_code>(status.code()));
|
148
|
+
}
|
149
|
+
|
150
|
+
bool grpc_error_has_clear_grpc_status(grpc_error_handle error) {
|
140
151
|
intptr_t unused;
|
141
152
|
if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &unused)) {
|
142
153
|
return true;
|
@@ -34,19 +34,25 @@
|
|
34
34
|
/// be populated with the entire error string. If any of the attributes (code,
|
35
35
|
/// msg, http_status, error_string) are unneeded, they can be passed as
|
36
36
|
/// NULL.
|
37
|
-
void grpc_error_get_status(
|
37
|
+
void grpc_error_get_status(grpc_error_handle error, grpc_millis deadline,
|
38
38
|
grpc_status_code* code, grpc_slice* slice,
|
39
39
|
grpc_http2_error_code* http_error,
|
40
40
|
const char** error_string);
|
41
41
|
|
42
|
-
/// Utility Function to convert a
|
43
|
-
/// Does NOT consume a ref to grpc_error.
|
44
|
-
absl::Status grpc_error_to_absl_status(
|
42
|
+
/// Utility Function to convert a grpc_error_handle \a error to an
|
43
|
+
/// absl::Status. Does NOT consume a ref to grpc_error.
|
44
|
+
absl::Status grpc_error_to_absl_status(grpc_error_handle error);
|
45
|
+
|
46
|
+
/// Utility function to convert an absl::Status \a status to grpc_error. Note
|
47
|
+
/// that this method does not return "special case" errors such as
|
48
|
+
/// GRPC_ERROR_CANCELLED, with the exception of GRPC_ERROR_NONE returned for
|
49
|
+
/// \a absl::OkStatus().
|
50
|
+
grpc_error_handle absl_status_to_grpc_error(absl::Status status);
|
45
51
|
|
46
52
|
/// A utility function to check whether there is a clear status code that
|
47
53
|
/// doesn't need to be guessed in \a error. This means that \a error or some
|
48
54
|
/// child has GRPC_ERROR_INT_GRPC_STATUS set, or that it is GRPC_ERROR_NONE or
|
49
55
|
/// GRPC_ERROR_CANCELLED
|
50
|
-
bool grpc_error_has_clear_grpc_status(
|
56
|
+
bool grpc_error_has_clear_grpc_status(grpc_error_handle error);
|
51
57
|
|
52
58
|
#endif /* GRPC_CORE_LIB_TRANSPORT_ERROR_UTILS_H */
|
@@ -94,22 +94,23 @@ void grpc_metadata_batch_destroy(grpc_metadata_batch* batch) {
|
|
94
94
|
}
|
95
95
|
}
|
96
96
|
|
97
|
-
|
98
|
-
|
97
|
+
grpc_error_handle grpc_attach_md_to_error(grpc_error_handle src,
|
98
|
+
grpc_mdelem md) {
|
99
|
+
grpc_error_handle out = grpc_error_set_str(
|
99
100
|
grpc_error_set_str(src, GRPC_ERROR_STR_KEY,
|
100
101
|
grpc_slice_ref_internal(GRPC_MDKEY(md))),
|
101
102
|
GRPC_ERROR_STR_VALUE, grpc_slice_ref_internal(GRPC_MDVALUE(md)));
|
102
103
|
return out;
|
103
104
|
}
|
104
105
|
|
105
|
-
static
|
106
|
+
static grpc_error_handle GPR_ATTRIBUTE_NOINLINE error_with_md(grpc_mdelem md) {
|
106
107
|
return grpc_attach_md_to_error(
|
107
108
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unallowed duplicate metadata"), md);
|
108
109
|
}
|
109
110
|
|
110
|
-
static
|
111
|
-
|
112
|
-
|
111
|
+
static grpc_error_handle link_callout(grpc_metadata_batch* batch,
|
112
|
+
grpc_linked_mdelem* storage,
|
113
|
+
grpc_metadata_batch_callouts_index idx) {
|
113
114
|
GPR_DEBUG_ASSERT(idx >= 0 && idx < GRPC_BATCH_CALLOUTS_COUNT);
|
114
115
|
if (GPR_LIKELY(batch->idx.array[idx] == nullptr)) {
|
115
116
|
++batch->list.default_count;
|
@@ -119,12 +120,12 @@ static grpc_error* link_callout(grpc_metadata_batch* batch,
|
|
119
120
|
return error_with_md(storage->md);
|
120
121
|
}
|
121
122
|
|
122
|
-
static
|
123
|
-
|
123
|
+
static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch,
|
124
|
+
grpc_linked_mdelem* storage)
|
124
125
|
GRPC_MUST_USE_RESULT;
|
125
126
|
|
126
|
-
static
|
127
|
-
|
127
|
+
static grpc_error_handle maybe_link_callout(grpc_metadata_batch* batch,
|
128
|
+
grpc_linked_mdelem* storage) {
|
128
129
|
grpc_metadata_batch_callouts_index idx =
|
129
130
|
GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md));
|
130
131
|
if (idx == GRPC_BATCH_CALLOUTS_COUNT) {
|
@@ -145,9 +146,9 @@ static void maybe_unlink_callout(grpc_metadata_batch* batch,
|
|
145
146
|
batch->idx.array[idx] = nullptr;
|
146
147
|
}
|
147
148
|
|
148
|
-
|
149
|
-
|
150
|
-
|
149
|
+
grpc_error_handle grpc_metadata_batch_add_head(grpc_metadata_batch* batch,
|
150
|
+
grpc_linked_mdelem* storage,
|
151
|
+
grpc_mdelem elem_to_add) {
|
151
152
|
GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
|
152
153
|
storage->md = elem_to_add;
|
153
154
|
return grpc_metadata_batch_link_head(batch, storage);
|
@@ -169,10 +170,10 @@ static void link_head(grpc_mdelem_list* list, grpc_linked_mdelem* storage) {
|
|
169
170
|
assert_valid_list(list);
|
170
171
|
}
|
171
172
|
|
172
|
-
|
173
|
-
|
173
|
+
grpc_error_handle grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
|
174
|
+
grpc_linked_mdelem* storage) {
|
174
175
|
assert_valid_callouts(batch);
|
175
|
-
|
176
|
+
grpc_error_handle err = maybe_link_callout(batch, storage);
|
176
177
|
if (err != GRPC_ERROR_NONE) {
|
177
178
|
assert_valid_callouts(batch);
|
178
179
|
return err;
|
@@ -185,12 +186,12 @@ grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
|
|
185
186
|
// TODO(arjunroy): Need to revisit this and see what guarantees exist between
|
186
187
|
// C-core and the internal-metadata subsystem. E.g. can we ensure a particular
|
187
188
|
// metadata is never added twice, even in the presence of user supplied data?
|
188
|
-
|
189
|
+
grpc_error_handle grpc_metadata_batch_link_head(
|
189
190
|
grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
|
190
191
|
grpc_metadata_batch_callouts_index idx) {
|
191
192
|
GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx);
|
192
193
|
assert_valid_callouts(batch);
|
193
|
-
|
194
|
+
grpc_error_handle err = link_callout(batch, storage, idx);
|
194
195
|
if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
|
195
196
|
assert_valid_callouts(batch);
|
196
197
|
return err;
|
@@ -200,9 +201,9 @@ grpc_error* grpc_metadata_batch_link_head(
|
|
200
201
|
return GRPC_ERROR_NONE;
|
201
202
|
}
|
202
203
|
|
203
|
-
|
204
|
-
|
205
|
-
|
204
|
+
grpc_error_handle grpc_metadata_batch_add_tail(grpc_metadata_batch* batch,
|
205
|
+
grpc_linked_mdelem* storage,
|
206
|
+
grpc_mdelem elem_to_add) {
|
206
207
|
GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
|
207
208
|
storage->md = elem_to_add;
|
208
209
|
return grpc_metadata_batch_link_tail(batch, storage);
|
@@ -224,10 +225,10 @@ static void link_tail(grpc_mdelem_list* list, grpc_linked_mdelem* storage) {
|
|
224
225
|
assert_valid_list(list);
|
225
226
|
}
|
226
227
|
|
227
|
-
|
228
|
-
|
228
|
+
grpc_error_handle grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
|
229
|
+
grpc_linked_mdelem* storage) {
|
229
230
|
assert_valid_callouts(batch);
|
230
|
-
|
231
|
+
grpc_error_handle err = maybe_link_callout(batch, storage);
|
231
232
|
if (err != GRPC_ERROR_NONE) {
|
232
233
|
assert_valid_callouts(batch);
|
233
234
|
return err;
|
@@ -237,12 +238,12 @@ grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
|
|
237
238
|
return GRPC_ERROR_NONE;
|
238
239
|
}
|
239
240
|
|
240
|
-
|
241
|
+
grpc_error_handle grpc_metadata_batch_link_tail(
|
241
242
|
grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
|
242
243
|
grpc_metadata_batch_callouts_index idx) {
|
243
244
|
GPR_DEBUG_ASSERT(GRPC_BATCH_INDEX_OF(GRPC_MDKEY(storage->md)) == idx);
|
244
245
|
assert_valid_callouts(batch);
|
245
|
-
|
246
|
+
grpc_error_handle err = link_callout(batch, storage, idx);
|
246
247
|
if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
|
247
248
|
assert_valid_callouts(batch);
|
248
249
|
return err;
|
@@ -323,11 +324,11 @@ absl::optional<absl::string_view> grpc_metadata_batch_get_value(
|
|
323
324
|
return *concatenated_value;
|
324
325
|
}
|
325
326
|
|
326
|
-
|
327
|
-
|
328
|
-
|
327
|
+
grpc_error_handle grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
|
328
|
+
grpc_linked_mdelem* storage,
|
329
|
+
grpc_mdelem new_mdelem) {
|
329
330
|
assert_valid_callouts(batch);
|
330
|
-
|
331
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
331
332
|
grpc_mdelem old_mdelem = storage->md;
|
332
333
|
if (!grpc_slice_eq(GRPC_MDKEY(new_mdelem), GRPC_MDKEY(old_mdelem))) {
|
333
334
|
maybe_unlink_callout(batch, storage);
|
@@ -364,7 +365,7 @@ size_t grpc_metadata_batch_size(grpc_metadata_batch* batch) {
|
|
364
365
|
return size;
|
365
366
|
}
|
366
367
|
|
367
|
-
static void add_error(
|
368
|
+
static void add_error(grpc_error_handle* composite, grpc_error_handle error,
|
368
369
|
const char* composite_error_string) {
|
369
370
|
if (error == GRPC_ERROR_NONE) return;
|
370
371
|
if (*composite == GRPC_ERROR_NONE) {
|
@@ -373,12 +374,11 @@ static void add_error(grpc_error** composite, grpc_error* error,
|
|
373
374
|
*composite = grpc_error_add_child(*composite, error);
|
374
375
|
}
|
375
376
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
const char* composite_error_string) {
|
377
|
+
grpc_error_handle grpc_metadata_batch_filter(
|
378
|
+
grpc_metadata_batch* batch, grpc_metadata_batch_filter_func func,
|
379
|
+
void* user_data, const char* composite_error_string) {
|
380
380
|
grpc_linked_mdelem* l = batch->list.head;
|
381
|
-
|
381
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
382
382
|
while (l) {
|
383
383
|
grpc_linked_mdelem* next = l->next;
|
384
384
|
grpc_filtered_mdelem new_mdelem = func(user_data, l->md);
|
@@ -402,7 +402,7 @@ void grpc_metadata_batch_copy(grpc_metadata_batch* src,
|
|
402
402
|
for (grpc_linked_mdelem* elem = src->list.head; elem != nullptr;
|
403
403
|
elem = elem->next) {
|
404
404
|
// Error unused in non-debug builds.
|
405
|
-
|
405
|
+
grpc_error_handle GRPC_UNUSED error = grpc_metadata_batch_add_tail(
|
406
406
|
dst, &storage[i++], GRPC_MDELEM_REF(elem->md));
|
407
407
|
// The only way that grpc_metadata_batch_add_tail() can fail is if
|
408
408
|
// there's a duplicate entry for a callout. However, that can't be
|