grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- 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/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- 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 +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -39,17 +39,17 @@
|
|
39
39
|
#include <grpc/support/string_util.h>
|
40
40
|
|
41
41
|
#include "src/core/lib/channel/channel_stack.h"
|
42
|
-
#include "src/core/lib/compression/
|
42
|
+
#include "src/core/lib/compression/compression_internal.h"
|
43
43
|
#include "src/core/lib/debug/stats.h"
|
44
44
|
#include "src/core/lib/gpr/alloc.h"
|
45
45
|
#include "src/core/lib/gpr/string.h"
|
46
46
|
#include "src/core/lib/gpr/time_precise.h"
|
47
47
|
#include "src/core/lib/gpr/useful.h"
|
48
|
-
#include "src/core/lib/gprpp/arena.h"
|
49
48
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
50
49
|
#include "src/core/lib/gprpp/ref_counted.h"
|
51
50
|
#include "src/core/lib/iomgr/timer.h"
|
52
51
|
#include "src/core/lib/profiling/timers.h"
|
52
|
+
#include "src/core/lib/resource_quota/arena.h"
|
53
53
|
#include "src/core/lib/slice/slice_split.h"
|
54
54
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
55
55
|
#include "src/core/lib/slice/slice_utils.h"
|
@@ -60,9 +60,6 @@
|
|
60
60
|
#include "src/core/lib/surface/server.h"
|
61
61
|
#include "src/core/lib/surface/validate_metadata.h"
|
62
62
|
#include "src/core/lib/transport/error_utils.h"
|
63
|
-
#include "src/core/lib/transport/metadata.h"
|
64
|
-
#include "src/core/lib/transport/static_metadata.h"
|
65
|
-
#include "src/core/lib/transport/status_metadata.h"
|
66
63
|
#include "src/core/lib/transport/transport.h"
|
67
64
|
|
68
65
|
/** The maximum number of concurrent batches possible.
|
@@ -76,11 +73,6 @@
|
|
76
73
|
- status/close recv (depending on client/server) */
|
77
74
|
#define MAX_CONCURRENT_BATCHES 6
|
78
75
|
|
79
|
-
#define MAX_SEND_EXTRA_METADATA_COUNT 3
|
80
|
-
|
81
|
-
// Used to create arena for the first call.
|
82
|
-
#define ESTIMATED_MDELEM_COUNT 16
|
83
|
-
|
84
76
|
struct batch_control {
|
85
77
|
batch_control() = default;
|
86
78
|
|
@@ -196,8 +188,6 @@ struct grpc_call {
|
|
196
188
|
Element 0 is initial metadata, element 1 is trailing metadata. */
|
197
189
|
grpc_metadata_array* buffered_metadata[2] = {};
|
198
190
|
|
199
|
-
grpc_metadata compression_md;
|
200
|
-
|
201
191
|
// A char* indicating the peer name.
|
202
192
|
gpr_atm peer_string = 0;
|
203
193
|
|
@@ -206,24 +196,18 @@ struct grpc_call {
|
|
206
196
|
grpc_call_final_info final_info;
|
207
197
|
|
208
198
|
/* Compression algorithm for *incoming* data */
|
209
|
-
|
210
|
-
|
211
|
-
/* Stream compression algorithm for *incoming* data */
|
212
|
-
grpc_stream_compression_algorithm incoming_stream_compression_algorithm =
|
213
|
-
GRPC_STREAM_COMPRESS_NONE;
|
199
|
+
grpc_compression_algorithm incoming_compression_algorithm =
|
200
|
+
GRPC_COMPRESS_NONE;
|
214
201
|
/* Supported encodings (compression algorithms), a bitset.
|
215
202
|
* Always support no compression. */
|
216
|
-
|
203
|
+
grpc_core::CompressionAlgorithmSet encodings_accepted_by_peer{
|
204
|
+
GRPC_COMPRESS_NONE};
|
217
205
|
/* Supported stream encodings (stream compression algorithms), a bitset */
|
218
206
|
uint32_t stream_encodings_accepted_by_peer = 0;
|
219
207
|
|
220
208
|
/* Contexts for various subsystems (security, tracing, ...). */
|
221
209
|
grpc_call_context_element context[GRPC_CONTEXT_COUNT] = {};
|
222
210
|
|
223
|
-
/* for the client, extra metadata is initial metadata; for the
|
224
|
-
server, it's trailing metadata */
|
225
|
-
grpc_linked_mdelem send_extra_metadata[MAX_SEND_EXTRA_METADATA_COUNT];
|
226
|
-
int send_extra_metadata_count;
|
227
211
|
grpc_millis send_deadline;
|
228
212
|
|
229
213
|
grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sending_stream;
|
@@ -339,11 +323,10 @@ static parent_call* get_parent_call(grpc_call* call) {
|
|
339
323
|
}
|
340
324
|
|
341
325
|
size_t grpc_call_get_initial_size_estimate() {
|
342
|
-
return sizeof(grpc_call) + sizeof(batch_control) * MAX_CONCURRENT_BATCHES
|
343
|
-
sizeof(grpc_linked_mdelem) * ESTIMATED_MDELEM_COUNT;
|
326
|
+
return sizeof(grpc_call) + sizeof(batch_control) * MAX_CONCURRENT_BATCHES;
|
344
327
|
}
|
345
328
|
|
346
|
-
grpc_error_handle grpc_call_create(
|
329
|
+
grpc_error_handle grpc_call_create(grpc_call_create_args* args,
|
347
330
|
grpc_call** out_call) {
|
348
331
|
GPR_TIMER_SCOPE("grpc_call_create", 0);
|
349
332
|
|
@@ -363,7 +346,8 @@ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
|
|
363
346
|
call_and_stack_size + (args->parent ? sizeof(child_call) : 0);
|
364
347
|
|
365
348
|
std::pair<grpc_core::Arena*, void*> arena_with_call =
|
366
|
-
grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size
|
349
|
+
grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size,
|
350
|
+
&*args->channel->allocator);
|
367
351
|
arena = arena_with_call.first;
|
368
352
|
call = new (arena_with_call.second) grpc_call(arena, *args);
|
369
353
|
*out_call = call;
|
@@ -373,24 +357,17 @@ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
|
|
373
357
|
call->final_op.client.status = nullptr;
|
374
358
|
call->final_op.client.error_string = nullptr;
|
375
359
|
GRPC_STATS_INC_CLIENT_CALLS_CREATED();
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
path = grpc_slice_ref_internal(
|
383
|
-
GRPC_MDVALUE(args->add_initial_metadata[i]));
|
384
|
-
}
|
360
|
+
path = grpc_slice_ref_internal(args->path->c_slice());
|
361
|
+
call->send_initial_metadata.Set(grpc_core::HttpPathMetadata(),
|
362
|
+
std::move(*args->path));
|
363
|
+
if (args->authority.has_value()) {
|
364
|
+
call->send_initial_metadata.Set(grpc_core::HttpAuthorityMetadata(),
|
365
|
+
std::move(*args->authority));
|
385
366
|
}
|
386
|
-
call->send_extra_metadata_count =
|
387
|
-
static_cast<int>(args->add_initial_metadata_count);
|
388
367
|
} else {
|
389
368
|
GRPC_STATS_INC_SERVER_CALLS_CREATED();
|
390
369
|
call->final_op.server.cancelled = nullptr;
|
391
370
|
call->final_op.server.core_server = args->server;
|
392
|
-
GPR_ASSERT(args->add_initial_metadata_count == 0);
|
393
|
-
call->send_extra_metadata_count = 0;
|
394
371
|
}
|
395
372
|
|
396
373
|
grpc_millis send_deadline = args->send_deadline;
|
@@ -551,9 +528,6 @@ static void destroy_call(void* call, grpc_error_handle /*error*/) {
|
|
551
528
|
if (pc != nullptr) {
|
552
529
|
pc->~parent_call();
|
553
530
|
}
|
554
|
-
for (int i = 0; i < c->send_extra_metadata_count; i++) {
|
555
|
-
GRPC_MDELEM_UNREF(c->send_extra_metadata[i].md);
|
556
|
-
}
|
557
531
|
if (c->cq) {
|
558
532
|
GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
|
559
533
|
}
|
@@ -779,31 +753,9 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
|
|
779
753
|
* COMPRESSION
|
780
754
|
*/
|
781
755
|
|
782
|
-
static void set_incoming_message_compression_algorithm(
|
783
|
-
grpc_call* call, grpc_message_compression_algorithm algo) {
|
784
|
-
GPR_ASSERT(algo < GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT);
|
785
|
-
call->incoming_message_compression_algorithm = algo;
|
786
|
-
}
|
787
|
-
|
788
|
-
static void set_incoming_stream_compression_algorithm(
|
789
|
-
grpc_call* call, grpc_stream_compression_algorithm algo) {
|
790
|
-
GPR_ASSERT(algo < GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT);
|
791
|
-
call->incoming_stream_compression_algorithm = algo;
|
792
|
-
}
|
793
|
-
|
794
756
|
grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
|
795
757
|
grpc_call* call) {
|
796
|
-
|
797
|
-
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
798
|
-
&algorithm, call->incoming_message_compression_algorithm,
|
799
|
-
call->incoming_stream_compression_algorithm);
|
800
|
-
return algorithm;
|
801
|
-
}
|
802
|
-
|
803
|
-
static grpc_compression_algorithm compression_algorithm_for_level_locked(
|
804
|
-
grpc_call* call, grpc_compression_level level) {
|
805
|
-
return grpc_compression_algorithm_for_level(level,
|
806
|
-
call->encodings_accepted_by_peer);
|
758
|
+
return call->incoming_compression_algorithm;
|
807
759
|
}
|
808
760
|
|
809
761
|
uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
@@ -812,188 +764,91 @@ uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
|
|
812
764
|
return flags;
|
813
765
|
}
|
814
766
|
|
815
|
-
static void destroy_encodings_accepted_by_peer(void* /*p*/) {}
|
816
|
-
|
817
|
-
static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
|
818
|
-
grpc_mdelem mdel,
|
819
|
-
uint32_t* encodings_accepted_by_peer,
|
820
|
-
bool stream_encoding) {
|
821
|
-
size_t i;
|
822
|
-
uint32_t algorithm;
|
823
|
-
grpc_slice_buffer accept_encoding_parts;
|
824
|
-
grpc_slice accept_encoding_slice;
|
825
|
-
void* accepted_user_data;
|
826
|
-
|
827
|
-
accepted_user_data =
|
828
|
-
grpc_mdelem_get_user_data(mdel, destroy_encodings_accepted_by_peer);
|
829
|
-
if (accepted_user_data != nullptr) {
|
830
|
-
*encodings_accepted_by_peer = static_cast<uint32_t>(
|
831
|
-
reinterpret_cast<uintptr_t>(accepted_user_data) - 1);
|
832
|
-
return;
|
833
|
-
}
|
834
|
-
|
835
|
-
*encodings_accepted_by_peer = 0;
|
836
|
-
|
837
|
-
accept_encoding_slice = GRPC_MDVALUE(mdel);
|
838
|
-
grpc_slice_buffer_init(&accept_encoding_parts);
|
839
|
-
grpc_slice_split_without_space(accept_encoding_slice, ",",
|
840
|
-
&accept_encoding_parts);
|
841
|
-
|
842
|
-
grpc_core::SetBit(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
|
843
|
-
for (i = 0; i < accept_encoding_parts.count; i++) {
|
844
|
-
int r;
|
845
|
-
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
846
|
-
if (!stream_encoding) {
|
847
|
-
r = grpc_message_compression_algorithm_parse(
|
848
|
-
accept_encoding_entry_slice,
|
849
|
-
reinterpret_cast<grpc_message_compression_algorithm*>(&algorithm));
|
850
|
-
} else {
|
851
|
-
r = grpc_stream_compression_algorithm_parse(
|
852
|
-
accept_encoding_entry_slice,
|
853
|
-
reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
|
854
|
-
}
|
855
|
-
if (r) {
|
856
|
-
grpc_core::SetBit(encodings_accepted_by_peer, algorithm);
|
857
|
-
} else {
|
858
|
-
char* accept_encoding_entry_str =
|
859
|
-
grpc_slice_to_c_string(accept_encoding_entry_slice);
|
860
|
-
gpr_log(GPR_DEBUG,
|
861
|
-
"Unknown entry in accept encoding metadata: '%s'. Ignoring.",
|
862
|
-
accept_encoding_entry_str);
|
863
|
-
gpr_free(accept_encoding_entry_str);
|
864
|
-
}
|
865
|
-
}
|
866
|
-
|
867
|
-
grpc_slice_buffer_destroy_internal(&accept_encoding_parts);
|
868
|
-
|
869
|
-
grpc_mdelem_set_user_data(
|
870
|
-
mdel, destroy_encodings_accepted_by_peer,
|
871
|
-
reinterpret_cast<void*>(
|
872
|
-
static_cast<uintptr_t>(*encodings_accepted_by_peer) + 1));
|
873
|
-
}
|
874
|
-
|
875
767
|
uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
|
876
|
-
|
877
|
-
encodings_accepted_by_peer = call->encodings_accepted_by_peer;
|
878
|
-
return encodings_accepted_by_peer;
|
879
|
-
}
|
880
|
-
|
881
|
-
grpc_stream_compression_algorithm
|
882
|
-
grpc_call_test_only_get_incoming_stream_encodings(grpc_call* call) {
|
883
|
-
return call->incoming_stream_compression_algorithm;
|
884
|
-
}
|
885
|
-
|
886
|
-
static grpc_linked_mdelem* linked_from_md(grpc_metadata* md) {
|
887
|
-
return reinterpret_cast<grpc_linked_mdelem*>(&md->internal_data);
|
888
|
-
}
|
889
|
-
|
890
|
-
static grpc_metadata* get_md_elem(grpc_metadata* metadata,
|
891
|
-
grpc_metadata* additional_metadata, int i,
|
892
|
-
int count) {
|
893
|
-
grpc_metadata* res =
|
894
|
-
i < count ? &metadata[i] : &additional_metadata[i - count];
|
895
|
-
GPR_ASSERT(res);
|
896
|
-
return res;
|
768
|
+
return call->encodings_accepted_by_peer.ToLegacyBitmask();
|
897
769
|
}
|
898
770
|
|
899
771
|
static int prepare_application_metadata(grpc_call* call, int count,
|
900
772
|
grpc_metadata* metadata,
|
901
|
-
int is_trailing
|
902
|
-
grpc_metadata* additional_metadata,
|
903
|
-
int additional_metadata_count) {
|
904
|
-
int total_count = count + additional_metadata_count;
|
773
|
+
int is_trailing) {
|
905
774
|
int i;
|
906
775
|
grpc_metadata_batch* batch = is_trailing ? &call->send_trailing_metadata
|
907
776
|
: &call->send_initial_metadata;
|
908
|
-
for (i = 0; i <
|
909
|
-
grpc_metadata* md =
|
910
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
911
|
-
GPR_ASSERT(sizeof(grpc_linked_mdelem) == sizeof(md->internal_data));
|
777
|
+
for (i = 0; i < count; i++) {
|
778
|
+
grpc_metadata* md = &metadata[i];
|
912
779
|
if (!GRPC_LOG_IF_ERROR("validate_metadata",
|
913
780
|
grpc_validate_header_key_is_legal(md->key))) {
|
914
|
-
|
781
|
+
return 0;
|
915
782
|
} else if (!grpc_is_binary_header_internal(md->key) &&
|
916
783
|
!GRPC_LOG_IF_ERROR(
|
917
784
|
"validate_metadata",
|
918
785
|
grpc_validate_header_nonbin_value_is_legal(md->value))) {
|
919
|
-
|
786
|
+
return 0;
|
920
787
|
} else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
|
921
788
|
// HTTP2 hpack encoding has a maximum limit.
|
922
|
-
|
923
|
-
}
|
924
|
-
l->md = grpc_mdelem_from_grpc_metadata(const_cast<grpc_metadata*>(md));
|
925
|
-
}
|
926
|
-
if (i != total_count) {
|
927
|
-
for (int j = 0; j < i; j++) {
|
928
|
-
grpc_metadata* md = get_md_elem(metadata, additional_metadata, j, count);
|
929
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
930
|
-
GRPC_MDELEM_UNREF(l->md);
|
931
|
-
}
|
932
|
-
return 0;
|
933
|
-
}
|
934
|
-
for (i = 0; i < total_count; i++) {
|
935
|
-
grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
|
936
|
-
grpc_linked_mdelem* l = linked_from_md(md);
|
937
|
-
grpc_error_handle error = batch->LinkTail(l);
|
938
|
-
if (error != GRPC_ERROR_NONE) {
|
939
|
-
GRPC_MDELEM_UNREF(l->md);
|
789
|
+
return 0;
|
940
790
|
}
|
941
|
-
|
791
|
+
batch->Append(
|
792
|
+
grpc_core::StringViewFromSlice(md->key),
|
793
|
+
grpc_core::Slice(grpc_slice_ref_internal(md->value)),
|
794
|
+
[md](absl::string_view error, const grpc_core::Slice& value) {
|
795
|
+
gpr_log(
|
796
|
+
GPR_DEBUG, "Append error: %s",
|
797
|
+
absl::StrCat("key=", grpc_core::StringViewFromSlice(md->key),
|
798
|
+
" error=", error, " value=", value.as_string_view())
|
799
|
+
.c_str());
|
800
|
+
});
|
942
801
|
}
|
943
802
|
|
944
803
|
return 1;
|
945
804
|
}
|
946
805
|
|
947
|
-
static grpc_message_compression_algorithm decode_message_compression(
|
948
|
-
grpc_mdelem md) {
|
949
|
-
grpc_message_compression_algorithm algorithm =
|
950
|
-
grpc_message_compression_algorithm_from_slice(GRPC_MDVALUE(md));
|
951
|
-
if (algorithm == GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT) {
|
952
|
-
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
953
|
-
gpr_log(GPR_ERROR,
|
954
|
-
"Invalid incoming message compression algorithm: '%s'. "
|
955
|
-
"Interpreting incoming data as uncompressed.",
|
956
|
-
md_c_str);
|
957
|
-
gpr_free(md_c_str);
|
958
|
-
return GRPC_MESSAGE_COMPRESS_NONE;
|
959
|
-
}
|
960
|
-
return algorithm;
|
961
|
-
}
|
962
|
-
|
963
|
-
static grpc_stream_compression_algorithm decode_stream_compression(
|
964
|
-
grpc_mdelem md) {
|
965
|
-
grpc_stream_compression_algorithm algorithm =
|
966
|
-
grpc_stream_compression_algorithm_from_slice(GRPC_MDVALUE(md));
|
967
|
-
if (algorithm == GRPC_STREAM_COMPRESS_ALGORITHMS_COUNT) {
|
968
|
-
char* md_c_str = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
969
|
-
gpr_log(GPR_ERROR,
|
970
|
-
"Invalid incoming stream compression algorithm: '%s'. Interpreting "
|
971
|
-
"incoming data as uncompressed.",
|
972
|
-
md_c_str);
|
973
|
-
gpr_free(md_c_str);
|
974
|
-
return GRPC_STREAM_COMPRESS_NONE;
|
975
|
-
}
|
976
|
-
return algorithm;
|
977
|
-
}
|
978
|
-
|
979
806
|
namespace {
|
980
807
|
class PublishToAppEncoder {
|
981
808
|
public:
|
982
809
|
explicit PublishToAppEncoder(grpc_metadata_array* dest) : dest_(dest) {}
|
983
810
|
|
984
|
-
void Encode(
|
985
|
-
|
986
|
-
|
987
|
-
void Encode(grpc_core::TeMetadata, grpc_core::TeMetadata::ValueType) {}
|
811
|
+
void Encode(const grpc_core::Slice& key, const grpc_core::Slice& value) {
|
812
|
+
Append(key.c_slice(), value.c_slice());
|
813
|
+
}
|
988
814
|
|
815
|
+
// Catch anything that is not explicitly handled, and do not publish it to the
|
816
|
+
// application. If new metadata is added to a batch that needs to be
|
817
|
+
// published, it should be called out here.
|
989
818
|
template <typename Which>
|
990
|
-
void Encode(Which, const
|
991
|
-
|
992
|
-
|
993
|
-
|
819
|
+
void Encode(Which, const typename Which::ValueType&) {}
|
820
|
+
|
821
|
+
void Encode(grpc_core::UserAgentMetadata, const grpc_core::Slice& slice) {
|
822
|
+
Append(grpc_core::UserAgentMetadata::key(), slice);
|
823
|
+
}
|
824
|
+
|
825
|
+
void Encode(grpc_core::HostMetadata, const grpc_core::Slice& slice) {
|
826
|
+
Append(grpc_core::HostMetadata::key(), slice);
|
827
|
+
}
|
828
|
+
|
829
|
+
void Encode(grpc_core::GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
|
830
|
+
Append(grpc_core::GrpcPreviousRpcAttemptsMetadata::key(), count);
|
831
|
+
}
|
832
|
+
|
833
|
+
void Encode(grpc_core::GrpcRetryPushbackMsMetadata, grpc_millis count) {
|
834
|
+
Append(grpc_core::GrpcRetryPushbackMsMetadata::key(), count);
|
835
|
+
}
|
836
|
+
|
837
|
+
void Encode(grpc_core::LbTokenMetadata, const grpc_core::Slice& slice) {
|
838
|
+
Append(grpc_core::LbTokenMetadata::key(), slice);
|
994
839
|
}
|
995
840
|
|
996
841
|
private:
|
842
|
+
void Append(absl::string_view key, int64_t value) {
|
843
|
+
Append(grpc_core::StaticSlice::FromStaticString(key).c_slice(),
|
844
|
+
grpc_core::Slice::FromInt64(value).c_slice());
|
845
|
+
}
|
846
|
+
|
847
|
+
void Append(absl::string_view key, const grpc_core::Slice& value) {
|
848
|
+
Append(grpc_core::StaticSlice::FromStaticString(key).c_slice(),
|
849
|
+
value.c_slice());
|
850
|
+
}
|
851
|
+
|
997
852
|
void Append(grpc_slice key, grpc_slice value) {
|
998
853
|
auto* mdusr = &dest_->metadata[dest_->count++];
|
999
854
|
mdusr->key = key;
|
@@ -1023,40 +878,11 @@ static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
|
|
1023
878
|
}
|
1024
879
|
|
1025
880
|
static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
|
1026
|
-
|
1027
|
-
|
1028
|
-
set_incoming_stream_compression_algorithm(
|
1029
|
-
call, decode_stream_compression(
|
1030
|
-
b->legacy_index()->named.content_encoding->md));
|
1031
|
-
b->Remove(GRPC_BATCH_CONTENT_ENCODING);
|
1032
|
-
}
|
1033
|
-
if (b->legacy_index()->named.grpc_encoding != nullptr) {
|
1034
|
-
GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
|
1035
|
-
set_incoming_message_compression_algorithm(
|
1036
|
-
call,
|
1037
|
-
decode_message_compression(b->legacy_index()->named.grpc_encoding->md));
|
1038
|
-
b->Remove(GRPC_BATCH_GRPC_ENCODING);
|
1039
|
-
}
|
1040
|
-
uint32_t message_encodings_accepted_by_peer = 1u;
|
1041
|
-
uint32_t stream_encodings_accepted_by_peer = 1u;
|
1042
|
-
if (b->legacy_index()->named.grpc_accept_encoding != nullptr) {
|
1043
|
-
GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
|
1044
|
-
set_encodings_accepted_by_peer(
|
1045
|
-
call, b->legacy_index()->named.grpc_accept_encoding->md,
|
1046
|
-
&message_encodings_accepted_by_peer, false);
|
1047
|
-
b->Remove(GRPC_BATCH_GRPC_ACCEPT_ENCODING);
|
1048
|
-
}
|
1049
|
-
if (b->legacy_index()->named.accept_encoding != nullptr) {
|
1050
|
-
GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
|
1051
|
-
set_encodings_accepted_by_peer(call,
|
1052
|
-
b->legacy_index()->named.accept_encoding->md,
|
1053
|
-
&stream_encodings_accepted_by_peer, true);
|
1054
|
-
b->Remove(GRPC_BATCH_ACCEPT_ENCODING);
|
1055
|
-
}
|
881
|
+
call->incoming_compression_algorithm =
|
882
|
+
b->Take(grpc_core::GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
|
1056
883
|
call->encodings_accepted_by_peer =
|
1057
|
-
|
1058
|
-
|
1059
|
-
stream_encodings_accepted_by_peer);
|
884
|
+
b->Take(grpc_core::GrpcAcceptEncodingMetadata())
|
885
|
+
.value_or(grpc_core::CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
|
1060
886
|
publish_app_metadata(call, b, false);
|
1061
887
|
}
|
1062
888
|
|
@@ -1065,37 +891,39 @@ static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
|
|
1065
891
|
grpc_call* call = static_cast<grpc_call*>(args);
|
1066
892
|
if (batch_error != GRPC_ERROR_NONE) {
|
1067
893
|
set_final_status(call, batch_error);
|
1068
|
-
} else if (b->legacy_index()->named.grpc_status != nullptr) {
|
1069
|
-
grpc_status_code status_code = grpc_get_status_code_from_metadata(
|
1070
|
-
b->legacy_index()->named.grpc_status->md);
|
1071
|
-
grpc_error_handle error = GRPC_ERROR_NONE;
|
1072
|
-
if (status_code != GRPC_STATUS_OK) {
|
1073
|
-
char* peer = grpc_call_get_peer(call);
|
1074
|
-
error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
|
1075
|
-
"Error received from peer ", peer)),
|
1076
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
1077
|
-
static_cast<intptr_t>(status_code));
|
1078
|
-
gpr_free(peer);
|
1079
|
-
}
|
1080
|
-
auto grpc_message = b->Take(grpc_core::GrpcMessageMetadata());
|
1081
|
-
if (grpc_message.has_value()) {
|
1082
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1083
|
-
grpc_message->as_string_view());
|
1084
|
-
} else if (error != GRPC_ERROR_NONE) {
|
1085
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
|
1086
|
-
}
|
1087
|
-
set_final_status(call, GRPC_ERROR_REF(error));
|
1088
|
-
b->Remove(GRPC_BATCH_GRPC_STATUS);
|
1089
|
-
GRPC_ERROR_UNREF(error);
|
1090
|
-
} else if (!call->is_client) {
|
1091
|
-
set_final_status(call, GRPC_ERROR_NONE);
|
1092
894
|
} else {
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
895
|
+
absl::optional<grpc_status_code> grpc_status =
|
896
|
+
b->Take(grpc_core::GrpcStatusMetadata());
|
897
|
+
if (grpc_status.has_value()) {
|
898
|
+
grpc_status_code status_code = *grpc_status;
|
899
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
900
|
+
if (status_code != GRPC_STATUS_OK) {
|
901
|
+
char* peer = grpc_call_get_peer(call);
|
902
|
+
error = grpc_error_set_int(
|
903
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
904
|
+
absl::StrCat("Error received from peer ", peer)),
|
905
|
+
GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
|
906
|
+
gpr_free(peer);
|
907
|
+
}
|
908
|
+
auto grpc_message = b->Take(grpc_core::GrpcMessageMetadata());
|
909
|
+
if (grpc_message.has_value()) {
|
910
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
911
|
+
grpc_message->as_string_view());
|
912
|
+
} else if (error != GRPC_ERROR_NONE) {
|
913
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
|
914
|
+
}
|
915
|
+
set_final_status(call, GRPC_ERROR_REF(error));
|
916
|
+
GRPC_ERROR_UNREF(error);
|
917
|
+
} else if (!call->is_client) {
|
918
|
+
set_final_status(call, GRPC_ERROR_NONE);
|
919
|
+
} else {
|
920
|
+
gpr_log(GPR_DEBUG,
|
921
|
+
"Received trailing metadata with no error and no status");
|
922
|
+
set_final_status(
|
923
|
+
call, grpc_error_set_int(
|
924
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
|
925
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
|
926
|
+
}
|
1099
927
|
}
|
1100
928
|
publish_app_metadata(call, b, true);
|
1101
929
|
}
|
@@ -1328,15 +1156,9 @@ static void process_data_after_md(batch_control* bctl) {
|
|
1328
1156
|
} else {
|
1329
1157
|
call->test_only_last_message_flags = call->receiving_stream->flags();
|
1330
1158
|
if ((call->receiving_stream->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
|
1331
|
-
(call->
|
1332
|
-
|
1333
|
-
|
1334
|
-
GPR_ASSERT(
|
1335
|
-
grpc_compression_algorithm_from_message_stream_compression_algorithm(
|
1336
|
-
&algo, call->incoming_message_compression_algorithm,
|
1337
|
-
(grpc_stream_compression_algorithm)0));
|
1338
|
-
*call->receiving_buffer =
|
1339
|
-
grpc_raw_compressed_byte_buffer_create(nullptr, 0, algo);
|
1159
|
+
(call->incoming_compression_algorithm != GRPC_COMPRESS_NONE)) {
|
1160
|
+
*call->receiving_buffer = grpc_raw_compressed_byte_buffer_create(
|
1161
|
+
nullptr, 0, call->incoming_compression_algorithm);
|
1340
1162
|
} else {
|
1341
1163
|
*call->receiving_buffer = grpc_raw_byte_buffer_create(nullptr, 0);
|
1342
1164
|
}
|
@@ -1377,35 +1199,6 @@ static void receiving_stream_ready_in_call_combiner(void* bctlp,
|
|
1377
1199
|
receiving_stream_ready(bctlp, error);
|
1378
1200
|
}
|
1379
1201
|
|
1380
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1381
|
-
handle_both_stream_and_msg_compression_set(grpc_call* call) {
|
1382
|
-
std::string error_msg = absl::StrFormat(
|
1383
|
-
"Incoming stream has both stream compression (%d) and message "
|
1384
|
-
"compression (%d).",
|
1385
|
-
call->incoming_stream_compression_algorithm,
|
1386
|
-
call->incoming_message_compression_algorithm);
|
1387
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1388
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1389
|
-
}
|
1390
|
-
|
1391
|
-
static void GPR_ATTRIBUTE_NOINLINE
|
1392
|
-
handle_error_parsing_compression_algorithm(grpc_call* call) {
|
1393
|
-
std::string error_msg = absl::StrFormat(
|
1394
|
-
"Error in incoming message compression (%d) or stream "
|
1395
|
-
"compression (%d).",
|
1396
|
-
call->incoming_stream_compression_algorithm,
|
1397
|
-
call->incoming_message_compression_algorithm);
|
1398
|
-
cancel_with_status(call, GRPC_STATUS_INTERNAL, error_msg.c_str());
|
1399
|
-
}
|
1400
|
-
|
1401
|
-
static void GPR_ATTRIBUTE_NOINLINE handle_invalid_compression(
|
1402
|
-
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1403
|
-
std::string error_msg = absl::StrFormat(
|
1404
|
-
"Invalid compression algorithm value '%d'.", compression_algorithm);
|
1405
|
-
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
|
1406
|
-
cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
|
1407
|
-
}
|
1408
|
-
|
1409
1202
|
static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
|
1410
1203
|
grpc_call* call, grpc_compression_algorithm compression_algorithm) {
|
1411
1204
|
const char* algo_name = nullptr;
|
@@ -1421,44 +1214,30 @@ static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_not_accepted(
|
|
1421
1214
|
const char* algo_name = nullptr;
|
1422
1215
|
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
|
1423
1216
|
gpr_log(GPR_ERROR,
|
1424
|
-
"Compression algorithm ('%s') not present in the
|
1425
|
-
"accepted encodings (
|
1426
|
-
algo_name, call->encodings_accepted_by_peer);
|
1217
|
+
"Compression algorithm ('%s') not present in the "
|
1218
|
+
"accepted encodings (%s)",
|
1219
|
+
algo_name, call->encodings_accepted_by_peer.ToString().c_str());
|
1427
1220
|
}
|
1428
1221
|
|
1429
1222
|
static void validate_filtered_metadata(batch_control* bctl) {
|
1430
|
-
grpc_compression_algorithm compression_algorithm;
|
1431
1223
|
grpc_call* call = bctl->call;
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1447
|
-
if (
|
1448
|
-
|
1449
|
-
} else if (GPR_UNLIKELY(
|
1450
|
-
grpc_compression_options_is_algorithm_enabled_internal(
|
1451
|
-
&compression_options, compression_algorithm) == 0)) {
|
1452
|
-
/* check if algorithm is supported by current channel config */
|
1453
|
-
handle_compression_algorithm_disabled(call, compression_algorithm);
|
1454
|
-
}
|
1455
|
-
/* GRPC_COMPRESS_NONE is always set. */
|
1456
|
-
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
|
1457
|
-
if (GPR_UNLIKELY(!grpc_core::GetBit(call->encodings_accepted_by_peer,
|
1458
|
-
compression_algorithm))) {
|
1459
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1460
|
-
handle_compression_algorithm_not_accepted(call, compression_algorithm);
|
1461
|
-
}
|
1224
|
+
|
1225
|
+
const grpc_compression_options compression_options =
|
1226
|
+
grpc_channel_compression_options(call->channel);
|
1227
|
+
const grpc_compression_algorithm compression_algorithm =
|
1228
|
+
call->incoming_compression_algorithm;
|
1229
|
+
if (GPR_UNLIKELY(!grpc_core::CompressionAlgorithmSet::FromUint32(
|
1230
|
+
compression_options.enabled_algorithms_bitset)
|
1231
|
+
.IsSet(compression_algorithm))) {
|
1232
|
+
/* check if algorithm is supported by current channel config */
|
1233
|
+
handle_compression_algorithm_disabled(call, compression_algorithm);
|
1234
|
+
}
|
1235
|
+
/* GRPC_COMPRESS_NONE is always set. */
|
1236
|
+
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer.IsSet(GRPC_COMPRESS_NONE));
|
1237
|
+
if (GPR_UNLIKELY(
|
1238
|
+
!call->encodings_accepted_by_peer.IsSet(compression_algorithm))) {
|
1239
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1240
|
+
handle_compression_algorithm_not_accepted(call, compression_algorithm);
|
1462
1241
|
}
|
1463
1242
|
}
|
1464
1243
|
}
|
@@ -1623,10 +1402,6 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1623
1402
|
// GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY, we shouldn't override that
|
1624
1403
|
// with the compression algorithm mapped from compression level.
|
1625
1404
|
/* process compression level */
|
1626
|
-
grpc_metadata& compression_md = call->compression_md;
|
1627
|
-
compression_md.key = grpc_empty_slice();
|
1628
|
-
compression_md.value = grpc_empty_slice();
|
1629
|
-
size_t additional_metadata_count = 0;
|
1630
1405
|
grpc_compression_level effective_compression_level =
|
1631
1406
|
GRPC_COMPRESS_LEVEL_NONE;
|
1632
1407
|
bool level_set = false;
|
@@ -1645,36 +1420,23 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1645
1420
|
// Currently, only server side supports compression level setting.
|
1646
1421
|
if (level_set && !call->is_client) {
|
1647
1422
|
const grpc_compression_algorithm calgo =
|
1648
|
-
|
1649
|
-
|
1423
|
+
call->encodings_accepted_by_peer.CompressionAlgorithmForLevel(
|
1424
|
+
effective_compression_level);
|
1650
1425
|
// The following metadata will be checked and removed by the message
|
1651
1426
|
// compression filter. It will be used as the call's compression
|
1652
1427
|
// algorithm.
|
1653
|
-
|
1654
|
-
|
1655
|
-
additional_metadata_count++;
|
1428
|
+
call->send_initial_metadata.Set(
|
1429
|
+
grpc_core::GrpcInternalEncodingRequest(), calgo);
|
1656
1430
|
}
|
1657
|
-
if (op->data.send_initial_metadata.count
|
1658
|
-
INT_MAX) {
|
1431
|
+
if (op->data.send_initial_metadata.count > INT_MAX) {
|
1659
1432
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1660
1433
|
goto done_with_error;
|
1661
1434
|
}
|
1662
1435
|
stream_op->send_initial_metadata = true;
|
1663
1436
|
call->sent_initial_metadata = true;
|
1664
|
-
if (call->is_client) {
|
1665
|
-
// TODO(ctiller): this will turn into explicit Set() calls once we
|
1666
|
-
// migrate :path, :authority.
|
1667
|
-
for (int i = 0; i < call->send_extra_metadata_count; i++) {
|
1668
|
-
GRPC_LOG_IF_ERROR("prepare_client_metadata",
|
1669
|
-
call->send_initial_metadata.LinkTail(
|
1670
|
-
&call->send_extra_metadata[i]));
|
1671
|
-
}
|
1672
|
-
call->send_extra_metadata_count = 0;
|
1673
|
-
}
|
1674
1437
|
if (!prepare_application_metadata(
|
1675
1438
|
call, static_cast<int>(op->data.send_initial_metadata.count),
|
1676
|
-
op->data.send_initial_metadata.metadata, 0
|
1677
|
-
static_cast<int>(additional_metadata_count))) {
|
1439
|
+
op->data.send_initial_metadata.metadata, 0)) {
|
1678
1440
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1679
1441
|
goto done_with_error;
|
1680
1442
|
}
|
@@ -1771,8 +1533,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1771
1533
|
call,
|
1772
1534
|
static_cast<int>(
|
1773
1535
|
op->data.send_status_from_server.trailing_metadata_count),
|
1774
|
-
op->data.send_status_from_server.trailing_metadata, 1
|
1775
|
-
0)) {
|
1536
|
+
op->data.send_status_from_server.trailing_metadata, 1)) {
|
1776
1537
|
error = GRPC_CALL_ERROR_INVALID_METADATA;
|
1777
1538
|
goto done_with_error;
|
1778
1539
|
}
|
@@ -1802,10 +1563,9 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1802
1563
|
call->status_error.set(status_error);
|
1803
1564
|
GRPC_ERROR_UNREF(status_error);
|
1804
1565
|
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
op->data.send_status_from_server.status)));
|
1566
|
+
call->send_trailing_metadata.Set(
|
1567
|
+
grpc_core::GrpcStatusMetadata(),
|
1568
|
+
op->data.send_status_from_server.status);
|
1809
1569
|
|
1810
1570
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1811
1571
|
&call->send_trailing_metadata;
|
@@ -2028,9 +1788,7 @@ uint8_t grpc_call_is_client(grpc_call* call) { return call->is_client; }
|
|
2028
1788
|
|
2029
1789
|
grpc_compression_algorithm grpc_call_compression_for_level(
|
2030
1790
|
grpc_call* call, grpc_compression_level level) {
|
2031
|
-
|
2032
|
-
compression_algorithm_for_level_locked(call, level);
|
2033
|
-
return algo;
|
1791
|
+
return call->encodings_accepted_by_peer.CompressionAlgorithmForLevel(level);
|
2034
1792
|
}
|
2035
1793
|
|
2036
1794
|
bool grpc_call_is_trailers_only(const grpc_call* call) {
|