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
@@ -37,30 +37,89 @@
|
|
37
37
|
#include "src/core/lib/iomgr/executor.h"
|
38
38
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
39
39
|
#include "src/core/lib/iomgr/resolve_address.h"
|
40
|
+
#include "src/core/lib/iomgr/resolve_address_posix.h"
|
40
41
|
#include "src/core/lib/iomgr/sockaddr.h"
|
41
42
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
43
|
+
#include "src/core/lib/transport/error_utils.h"
|
44
|
+
|
45
|
+
namespace grpc_core {
|
46
|
+
namespace {
|
47
|
+
|
48
|
+
class NativeDNSRequest : public DNSResolver::Request {
|
49
|
+
public:
|
50
|
+
NativeDNSRequest(
|
51
|
+
absl::string_view name, absl::string_view default_port,
|
52
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
53
|
+
on_done)
|
54
|
+
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
55
|
+
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
56
|
+
}
|
57
|
+
|
58
|
+
// Starts the resolution
|
59
|
+
void Start() override {
|
60
|
+
Ref().release(); // ref held by callback
|
61
|
+
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
|
62
|
+
}
|
63
|
+
|
64
|
+
// This is a no-op for the native resolver. Note
|
65
|
+
// that no I/O polling is required for the resolution to finish.
|
66
|
+
void Orphan() override { Unref(); }
|
67
|
+
|
68
|
+
private:
|
69
|
+
// Callback to be passed to grpc Executor to asynch-ify
|
70
|
+
// ResolveNameBlocking
|
71
|
+
static void DoRequestThread(void* rp, grpc_error_handle /*error*/) {
|
72
|
+
NativeDNSRequest* r = static_cast<NativeDNSRequest*>(rp);
|
73
|
+
auto result =
|
74
|
+
GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
|
75
|
+
// running inline is safe since we've already been scheduled on the executor
|
76
|
+
r->on_done_(std::move(result));
|
77
|
+
r->Unref();
|
78
|
+
}
|
79
|
+
|
80
|
+
const std::string name_;
|
81
|
+
const std::string default_port_;
|
82
|
+
const std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
83
|
+
on_done_;
|
84
|
+
grpc_closure request_closure_;
|
85
|
+
};
|
42
86
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
87
|
+
} // namespace
|
88
|
+
|
89
|
+
NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
|
90
|
+
static NativeDNSResolver* instance = new NativeDNSResolver();
|
91
|
+
return instance;
|
92
|
+
}
|
93
|
+
|
94
|
+
OrphanablePtr<DNSResolver::Request> NativeDNSResolver::ResolveName(
|
95
|
+
absl::string_view name, absl::string_view default_port,
|
96
|
+
grpc_pollset_set* /* interested_parties */,
|
97
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
98
|
+
on_done) {
|
99
|
+
return MakeOrphanable<NativeDNSRequest>(name, default_port,
|
100
|
+
std::move(on_done));
|
101
|
+
}
|
102
|
+
|
103
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
104
|
+
NativeDNSResolver::ResolveNameBlocking(absl::string_view name,
|
105
|
+
absl::string_view default_port) {
|
106
|
+
ExecCtx exec_ctx;
|
47
107
|
struct addrinfo hints;
|
48
108
|
struct addrinfo *result = nullptr, *resp;
|
49
109
|
int s;
|
50
110
|
size_t i;
|
51
111
|
grpc_error_handle err;
|
52
|
-
|
112
|
+
std::vector<grpc_resolved_address> addresses;
|
53
113
|
std::string host;
|
54
114
|
std::string port;
|
55
|
-
|
56
|
-
|
115
|
+
// parse name, splitting it into host and port parts
|
116
|
+
SplitHostPort(name, &host, &port);
|
57
117
|
if (host.empty()) {
|
58
118
|
err = grpc_error_set_str(
|
59
119
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
|
60
120
|
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
61
121
|
goto done;
|
62
122
|
}
|
63
|
-
|
64
123
|
if (port.empty()) {
|
65
124
|
if (default_port == nullptr) {
|
66
125
|
err = grpc_error_set_str(
|
@@ -68,21 +127,18 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
68
127
|
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
69
128
|
goto done;
|
70
129
|
}
|
71
|
-
port = default_port;
|
130
|
+
port = std::string(default_port);
|
72
131
|
}
|
73
|
-
|
74
|
-
/* Call getaddrinfo */
|
132
|
+
// Call getaddrinfo
|
75
133
|
memset(&hints, 0, sizeof(hints));
|
76
134
|
hints.ai_family = AF_UNSPEC; /* ipv4 or ipv6 */
|
77
135
|
hints.ai_socktype = SOCK_STREAM; /* stream socket */
|
78
136
|
hints.ai_flags = AI_PASSIVE; /* for wildcard IP address */
|
79
|
-
|
80
137
|
GRPC_SCHEDULING_START_BLOCKING_REGION;
|
81
138
|
s = getaddrinfo(host.c_str(), port.c_str(), &hints, &result);
|
82
139
|
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
83
|
-
|
84
140
|
if (s != 0) {
|
85
|
-
|
141
|
+
// Retry if well-known service name is recognized
|
86
142
|
const char* svc[][2] = {{"http", "80"}, {"https", "443"}};
|
87
143
|
for (i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
|
88
144
|
if (port == svc[i][0]) {
|
@@ -93,7 +149,6 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
93
149
|
}
|
94
150
|
}
|
95
151
|
}
|
96
|
-
|
97
152
|
if (s != 0) {
|
98
153
|
err = grpc_error_set_str(
|
99
154
|
grpc_error_set_str(
|
@@ -106,65 +161,26 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
106
161
|
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
107
162
|
goto done;
|
108
163
|
}
|
109
|
-
|
110
|
-
/* Success path: set addrs non-NULL, fill it in */
|
111
|
-
*addresses = static_cast<grpc_resolved_addresses*>(
|
112
|
-
gpr_malloc(sizeof(grpc_resolved_addresses)));
|
113
|
-
(*addresses)->naddrs = 0;
|
114
|
-
for (resp = result; resp != nullptr; resp = resp->ai_next) {
|
115
|
-
(*addresses)->naddrs++;
|
116
|
-
}
|
117
|
-
(*addresses)->addrs = static_cast<grpc_resolved_address*>(
|
118
|
-
gpr_malloc(sizeof(grpc_resolved_address) * (*addresses)->naddrs));
|
119
|
-
i = 0;
|
164
|
+
// Success path: fill in addrs
|
120
165
|
for (resp = result; resp != nullptr; resp = resp->ai_next) {
|
121
|
-
|
122
|
-
(
|
123
|
-
|
166
|
+
grpc_resolved_address addr;
|
167
|
+
memcpy(&addr.addr, resp->ai_addr, resp->ai_addrlen);
|
168
|
+
addr.len = resp->ai_addrlen;
|
169
|
+
addresses.push_back(addr);
|
124
170
|
}
|
125
171
|
err = GRPC_ERROR_NONE;
|
126
|
-
|
127
172
|
done:
|
128
173
|
if (result) {
|
129
174
|
freeaddrinfo(result);
|
130
175
|
}
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
grpc_closure* on_done;
|
138
|
-
grpc_resolved_addresses** addrs_out;
|
139
|
-
grpc_closure request_closure;
|
140
|
-
void* arg;
|
141
|
-
};
|
142
|
-
/* Callback to be passed to grpc Executor to asynch-ify
|
143
|
-
* grpc_blocking_resolve_address */
|
144
|
-
static void do_request_thread(void* rp, grpc_error_handle /*error*/) {
|
145
|
-
request* r = static_cast<request*>(rp);
|
146
|
-
grpc_core::ExecCtx::Run(
|
147
|
-
DEBUG_LOCATION, r->on_done,
|
148
|
-
grpc_blocking_resolve_address(r->name, r->default_port, r->addrs_out));
|
149
|
-
gpr_free(r->name);
|
150
|
-
gpr_free(r->default_port);
|
151
|
-
gpr_free(r);
|
176
|
+
if (err == GRPC_ERROR_NONE) {
|
177
|
+
return addresses;
|
178
|
+
}
|
179
|
+
auto error_result = grpc_error_to_absl_status(err);
|
180
|
+
GRPC_ERROR_UNREF(err);
|
181
|
+
return error_result;
|
152
182
|
}
|
153
183
|
|
154
|
-
|
155
|
-
grpc_pollset_set* /*interested_parties*/,
|
156
|
-
grpc_closure* on_done,
|
157
|
-
grpc_resolved_addresses** addrs) {
|
158
|
-
request* r = static_cast<request*>(gpr_malloc(sizeof(request)));
|
159
|
-
GRPC_CLOSURE_INIT(&r->request_closure, do_request_thread, r, nullptr);
|
160
|
-
r->name = gpr_strdup(name);
|
161
|
-
r->default_port = gpr_strdup(default_port);
|
162
|
-
r->on_done = on_done;
|
163
|
-
r->addrs_out = addrs;
|
164
|
-
grpc_core::Executor::Run(&r->request_closure, GRPC_ERROR_NONE,
|
165
|
-
grpc_core::ExecutorType::RESOLVER);
|
166
|
-
}
|
184
|
+
} // namespace grpc_core
|
167
185
|
|
168
|
-
grpc_address_resolver_vtable grpc_posix_resolver_vtable = {
|
169
|
-
posix_resolve_address, posix_blocking_resolve_address};
|
170
186
|
#endif
|
@@ -0,0 +1,47 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_POSIX_H
|
18
|
+
#define GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_POSIX_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <functional>
|
23
|
+
|
24
|
+
#include "src/core/lib/iomgr/port.h"
|
25
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
26
|
+
|
27
|
+
namespace grpc_core {
|
28
|
+
|
29
|
+
// A DNS resolver which uses the native platform's getaddrinfo API.
|
30
|
+
class NativeDNSResolver : public DNSResolver {
|
31
|
+
public:
|
32
|
+
// Gets the singleton instance, creating it first if it doesn't exist
|
33
|
+
static NativeDNSResolver* GetOrCreate();
|
34
|
+
|
35
|
+
OrphanablePtr<DNSResolver::Request> ResolveName(
|
36
|
+
absl::string_view name, absl::string_view default_port,
|
37
|
+
grpc_pollset_set* interested_parties,
|
38
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
39
|
+
on_done) override;
|
40
|
+
|
41
|
+
absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
|
42
|
+
absl::string_view name, absl::string_view default_port) override;
|
43
|
+
};
|
44
|
+
|
45
|
+
} // namespace grpc_core
|
46
|
+
|
47
|
+
#endif // GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_POSIX_H
|
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
@@ -43,29 +41,83 @@
|
|
43
41
|
#include "src/core/lib/iomgr/executor.h"
|
44
42
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
45
43
|
#include "src/core/lib/iomgr/resolve_address.h"
|
44
|
+
#include "src/core/lib/iomgr/resolve_address_windows.h"
|
46
45
|
#include "src/core/lib/iomgr/sockaddr.h"
|
46
|
+
#include "src/core/lib/transport/error_utils.h"
|
47
|
+
|
48
|
+
namespace grpc_core {
|
49
|
+
namespace {
|
50
|
+
|
51
|
+
class NativeDNSRequest : public DNSResolver::Request {
|
52
|
+
public:
|
53
|
+
NativeDNSRequest(
|
54
|
+
absl::string_view name, absl::string_view default_port,
|
55
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
56
|
+
on_done)
|
57
|
+
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
58
|
+
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
59
|
+
}
|
60
|
+
|
61
|
+
// Starts the resolution
|
62
|
+
void Start() override {
|
63
|
+
Ref().release(); // ref held by callback
|
64
|
+
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
|
65
|
+
}
|
66
|
+
|
67
|
+
// This is a no-op for the native resolver. Note
|
68
|
+
// that no I/O polling is required for the resolution to finish.
|
69
|
+
void Orphan() override { Unref(); }
|
70
|
+
|
71
|
+
private:
|
72
|
+
// Callback to be passed to grpc Executor to asynch-ify
|
73
|
+
// ResolveNameBlocking
|
74
|
+
static void DoRequestThread(void* rp, grpc_error_handle /*error*/) {
|
75
|
+
NativeDNSRequest* r = static_cast<NativeDNSRequest*>(rp);
|
76
|
+
auto result =
|
77
|
+
GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
|
78
|
+
// running inline is safe since we've already been scheduled on the executor
|
79
|
+
r->on_done_(std::move(result));
|
80
|
+
r->Unref();
|
81
|
+
}
|
47
82
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
grpc_closure
|
53
|
-
grpc_resolved_addresses** addresses;
|
83
|
+
const std::string name_;
|
84
|
+
const std::string default_port_;
|
85
|
+
const std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
86
|
+
on_done_;
|
87
|
+
grpc_closure request_closure_;
|
54
88
|
};
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
89
|
+
|
90
|
+
} // namespace
|
91
|
+
|
92
|
+
NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
|
93
|
+
static NativeDNSResolver* instance = new NativeDNSResolver();
|
94
|
+
return instance;
|
95
|
+
}
|
96
|
+
|
97
|
+
OrphanablePtr<DNSResolver::Request> NativeDNSResolver::ResolveName(
|
98
|
+
absl::string_view name, absl::string_view default_port,
|
99
|
+
grpc_pollset_set* /* interested_parties */,
|
100
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
101
|
+
on_done) {
|
102
|
+
return MakeOrphanable<NativeDNSRequest>(name, default_port,
|
103
|
+
std::move(on_done));
|
104
|
+
}
|
105
|
+
|
106
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
107
|
+
NativeDNSResolver::ResolveNameBlocking(absl::string_view name,
|
108
|
+
absl::string_view default_port) {
|
109
|
+
ExecCtx exec_ctx;
|
59
110
|
struct addrinfo hints;
|
60
111
|
struct addrinfo *result = NULL, *resp;
|
61
112
|
int s;
|
62
113
|
size_t i;
|
63
114
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
115
|
+
std::vector<grpc_resolved_address> addresses;
|
64
116
|
|
65
|
-
|
117
|
+
// parse name, splitting it into host and port parts
|
66
118
|
std::string host;
|
67
119
|
std::string port;
|
68
|
-
|
120
|
+
SplitHostPort(name, &host, &port);
|
69
121
|
if (host.empty()) {
|
70
122
|
error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
71
123
|
absl::StrFormat("unparseable host:port: '%s'", name));
|
@@ -77,10 +129,10 @@ static grpc_error_handle windows_blocking_resolve_address(
|
|
77
129
|
absl::StrFormat("no port in name '%s'", name));
|
78
130
|
goto done;
|
79
131
|
}
|
80
|
-
port = default_port;
|
132
|
+
port = std::string(default_port);
|
81
133
|
}
|
82
134
|
|
83
|
-
|
135
|
+
// Call getaddrinfo
|
84
136
|
memset(&hints, 0, sizeof(hints));
|
85
137
|
hints.ai_family = AF_UNSPEC; /* ipv4 or ipv6 */
|
86
138
|
hints.ai_socktype = SOCK_STREAM; /* stream socket */
|
@@ -94,59 +146,26 @@ static grpc_error_handle windows_blocking_resolve_address(
|
|
94
146
|
goto done;
|
95
147
|
}
|
96
148
|
|
97
|
-
|
98
|
-
(*addresses) =
|
99
|
-
(grpc_resolved_addresses*)gpr_malloc(sizeof(grpc_resolved_addresses));
|
100
|
-
(*addresses)->naddrs = 0;
|
101
|
-
for (resp = result; resp != NULL; resp = resp->ai_next) {
|
102
|
-
(*addresses)->naddrs++;
|
103
|
-
}
|
104
|
-
(*addresses)->addrs = (grpc_resolved_address*)gpr_malloc(
|
105
|
-
sizeof(grpc_resolved_address) * (*addresses)->naddrs);
|
106
|
-
i = 0;
|
149
|
+
// Success path: set addrs non-NULL, fill it in
|
107
150
|
for (resp = result; resp != NULL; resp = resp->ai_next) {
|
108
|
-
|
109
|
-
(
|
110
|
-
|
151
|
+
grpc_resolved_address addr;
|
152
|
+
memcpy(&addr.addr, resp->ai_addr, resp->ai_addrlen);
|
153
|
+
addr.len = resp->ai_addrlen;
|
154
|
+
addresses.push_back(addr);
|
111
155
|
}
|
112
156
|
|
113
157
|
done:
|
114
158
|
if (result) {
|
115
159
|
freeaddrinfo(result);
|
116
160
|
}
|
117
|
-
return error;
|
118
|
-
}
|
119
|
-
|
120
|
-
/* Callback to be passed to grpc_executor to asynch-ify
|
121
|
-
* grpc_blocking_resolve_address */
|
122
|
-
static void do_request_thread(void* rp, grpc_error_handle error) {
|
123
|
-
request* r = (request*)rp;
|
124
161
|
if (error == GRPC_ERROR_NONE) {
|
125
|
-
|
126
|
-
grpc_blocking_resolve_address(r->name, r->default_port, r->addresses);
|
127
|
-
} else {
|
128
|
-
GRPC_ERROR_REF(error);
|
162
|
+
return addresses;
|
129
163
|
}
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
gpr_free(r);
|
164
|
+
auto error_result = grpc_error_to_absl_status(error);
|
165
|
+
GRPC_ERROR_UNREF(error);
|
166
|
+
return error_result;
|
134
167
|
}
|
135
168
|
|
136
|
-
|
137
|
-
grpc_pollset_set* interested_parties,
|
138
|
-
grpc_closure* on_done,
|
139
|
-
grpc_resolved_addresses** addresses) {
|
140
|
-
request* r = (request*)gpr_malloc(sizeof(request));
|
141
|
-
GRPC_CLOSURE_INIT(&r->request_closure, do_request_thread, r, nullptr);
|
142
|
-
r->name = gpr_strdup(name);
|
143
|
-
r->default_port = gpr_strdup(default_port);
|
144
|
-
r->on_done = on_done;
|
145
|
-
r->addresses = addresses;
|
146
|
-
grpc_core::Executor::Run(&r->request_closure, GRPC_ERROR_NONE,
|
147
|
-
grpc_core::ExecutorType::RESOLVER);
|
148
|
-
}
|
169
|
+
} // namespace grpc_core
|
149
170
|
|
150
|
-
grpc_address_resolver_vtable grpc_windows_resolver_vtable = {
|
151
|
-
windows_resolve_address, windows_blocking_resolve_address};
|
152
171
|
#endif
|
@@ -0,0 +1,47 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_WINDOWS_H
|
18
|
+
#define GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_WINDOWS_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <functional>
|
23
|
+
|
24
|
+
#include "src/core/lib/iomgr/port.h"
|
25
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
26
|
+
|
27
|
+
namespace grpc_core {
|
28
|
+
|
29
|
+
// A DNS resolver which uses the native platform's getaddrinfo API.
|
30
|
+
class NativeDNSResolver : public DNSResolver {
|
31
|
+
public:
|
32
|
+
// Gets the singleton instance, creating it first if it doesn't exist
|
33
|
+
static NativeDNSResolver* GetOrCreate();
|
34
|
+
|
35
|
+
OrphanablePtr<DNSResolver::Request> ResolveName(
|
36
|
+
absl::string_view name, absl::string_view default_port,
|
37
|
+
grpc_pollset_set* interested_parties,
|
38
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
39
|
+
on_done) override;
|
40
|
+
|
41
|
+
absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
|
42
|
+
absl::string_view name, absl::string_view default_port) override;
|
43
|
+
};
|
44
|
+
|
45
|
+
} // namespace grpc_core
|
46
|
+
|
47
|
+
#endif // GRPC_CORE_LIB_IOMGR_RESOLVE_ADDRESS_WINDOWS_H
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// Copyright 2021 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_IOMGR_RESOLVED_ADDRESS_H
|
16
|
+
#define GRPC_CORE_LIB_IOMGR_RESOLVED_ADDRESS_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <stddef.h>
|
21
|
+
|
22
|
+
#include "src/core/lib/iomgr/port.h"
|
23
|
+
|
24
|
+
#ifdef GRPC_WINSOCK_SOCKET
|
25
|
+
#include <ws2tcpip.h>
|
26
|
+
#endif
|
27
|
+
|
28
|
+
#if defined(GRPC_POSIX_SOCKET) || defined(GRPC_CFSTREAM)
|
29
|
+
#include <sys/socket.h>
|
30
|
+
#endif
|
31
|
+
|
32
|
+
#define GRPC_MAX_SOCKADDR_SIZE 128
|
33
|
+
|
34
|
+
struct grpc_resolved_address {
|
35
|
+
char addr[GRPC_MAX_SOCKADDR_SIZE];
|
36
|
+
socklen_t len;
|
37
|
+
};
|
38
|
+
|
39
|
+
#endif /* GRPC_CORE_LIB_IOMGR_RESOLVED_ADDRESS_H */
|
@@ -35,29 +35,35 @@
|
|
35
35
|
#include "src/core/lib/gpr/useful.h"
|
36
36
|
#include "src/core/lib/iomgr/sockaddr.h"
|
37
37
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
38
|
+
#include "src/core/lib/transport/error_utils.h"
|
38
39
|
|
39
40
|
void grpc_create_socketpair_if_unix(int sv[2]) {
|
40
41
|
GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
|
41
42
|
}
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
(
|
48
|
-
|
49
|
-
|
50
|
-
|
44
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
45
|
+
grpc_resolve_unix_domain_address(absl::string_view name) {
|
46
|
+
grpc_resolved_address addr;
|
47
|
+
grpc_error_handle error = grpc_core::UnixSockaddrPopulate(name, &addr);
|
48
|
+
if (error == GRPC_ERROR_NONE) {
|
49
|
+
return std::vector<grpc_resolved_address>({addr});
|
50
|
+
}
|
51
|
+
auto result = grpc_error_to_absl_status(error);
|
52
|
+
GRPC_ERROR_UNREF(error);
|
53
|
+
return result;
|
51
54
|
}
|
52
55
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
(
|
59
|
-
|
60
|
-
|
56
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
57
|
+
grpc_resolve_unix_abstract_domain_address(const absl::string_view name) {
|
58
|
+
grpc_resolved_address addr;
|
59
|
+
grpc_error_handle error =
|
60
|
+
grpc_core::UnixAbstractSockaddrPopulate(name, &addr);
|
61
|
+
if (error == GRPC_ERROR_NONE) {
|
62
|
+
return std::vector<grpc_resolved_address>({addr});
|
63
|
+
}
|
64
|
+
auto result = grpc_error_to_absl_status(error);
|
65
|
+
GRPC_ERROR_UNREF(error);
|
66
|
+
return result;
|
61
67
|
}
|
62
68
|
|
63
69
|
int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr) {
|
@@ -87,22 +93,4 @@ void grpc_unlink_if_unix_domain_socket(
|
|
87
93
|
}
|
88
94
|
}
|
89
95
|
|
90
|
-
std::string grpc_sockaddr_to_uri_unix_if_possible(
|
91
|
-
const grpc_resolved_address* resolved_addr) {
|
92
|
-
const grpc_sockaddr* addr =
|
93
|
-
reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
|
94
|
-
if (addr->sa_family != AF_UNIX) {
|
95
|
-
return "";
|
96
|
-
}
|
97
|
-
const auto* unix_addr = reinterpret_cast<const struct sockaddr_un*>(addr);
|
98
|
-
if (unix_addr->sun_path[0] == '\0' && unix_addr->sun_path[1] != '\0') {
|
99
|
-
return absl::StrCat(
|
100
|
-
"unix-abstract:",
|
101
|
-
absl::string_view(
|
102
|
-
unix_addr->sun_path + 1,
|
103
|
-
resolved_addr->len - sizeof(unix_addr->sun_family) - 1));
|
104
|
-
}
|
105
|
-
return absl::StrCat("unix:", unix_addr->sun_path);
|
106
|
-
}
|
107
|
-
|
108
96
|
#endif
|
@@ -32,18 +32,15 @@
|
|
32
32
|
|
33
33
|
void grpc_create_socketpair_if_unix(int sv[2]);
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
36
|
+
grpc_resolve_unix_domain_address(absl::string_view name);
|
37
37
|
|
38
|
-
|
39
|
-
|
38
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>
|
39
|
+
grpc_resolve_unix_abstract_domain_address(absl::string_view name);
|
40
40
|
|
41
41
|
int grpc_is_unix_socket(const grpc_resolved_address* resolved_addr);
|
42
42
|
|
43
43
|
void grpc_unlink_if_unix_domain_socket(
|
44
44
|
const grpc_resolved_address* resolved_addr);
|
45
45
|
|
46
|
-
std::string grpc_sockaddr_to_uri_unix_if_possible(
|
47
|
-
const grpc_resolved_address* resolved_addr);
|
48
|
-
|
49
46
|
#endif /* GRPC_CORE_LIB_IOMGR_UNIX_SOCKETS_POSIX_H */
|