grpc-flamingo 1.11.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +1150 -176
- data/etc/roots.pem +40 -196
- data/include/grpc/grpc.h +49 -8
- data/include/grpc/grpc_security.h +123 -2
- data/include/grpc/grpc_security_constants.h +6 -0
- data/include/grpc/impl/codegen/fork.h +4 -4
- data/include/grpc/impl/codegen/grpc_types.h +26 -5
- data/include/grpc/impl/codegen/log.h +112 -0
- data/include/grpc/impl/codegen/port_platform.h +55 -4
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/log.h +2 -80
- data/include/grpc/support/string_util.h +2 -0
- data/include/grpc/support/sync.h +0 -16
- data/src/boringssl/err_data.c +602 -588
- data/src/core/ext/{census → filters/census}/grpc_context.cc +0 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +1234 -1070
- data/src/core/ext/filters/client_channel/client_channel.h +5 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +113 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +71 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +22 -5
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +30 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +120 -127
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +36 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +36 -102
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +37 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +25 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +19 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +19 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +4 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +37 -63
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +306 -239
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +444 -392
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +538 -98
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -0
- data/src/core/ext/filters/client_channel/method_params.h +4 -0
- data/src/core/ext/filters/client_channel/resolver.h +10 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +320 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +62 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +49 -294
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +537 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +112 -87
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +17 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +6 -5
- data/src/core/ext/filters/{load_reporting/server_load_reporting_filter.h → client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc} +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +29 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +32 -15
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +58 -15
- data/src/core/ext/filters/client_channel/subchannel.h +11 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -15
- data/src/core/ext/filters/deadline/deadline_filter.h +5 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +10 -9
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -5
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +6 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +123 -131
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +9 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +97 -48
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +32 -27
- data/src/core/ext/transport/inproc/inproc_transport.cc +87 -49
- data/src/core/lib/channel/channel_args.cc +28 -0
- data/src/core/lib/channel/channel_args.h +4 -0
- data/src/core/lib/channel/channel_stack.cc +22 -29
- data/src/core/lib/channel/channel_stack.h +2 -2
- data/src/core/lib/channel/channel_stack_builder.cc +0 -3
- data/src/core/lib/channel/channel_stack_builder.h +0 -2
- data/src/core/lib/channel/channel_trace.cc +28 -63
- data/src/core/lib/channel/channel_trace.h +13 -17
- data/src/core/lib/channel/channelz.cc +153 -0
- data/src/core/lib/channel/channelz.h +133 -0
- data/src/core/lib/channel/channelz_registry.cc +145 -0
- data/src/core/lib/channel/channelz_registry.h +120 -0
- data/src/core/lib/channel/connected_channel.cc +8 -1
- data/src/core/lib/channel/handshaker.cc +71 -0
- data/src/core/lib/channel/handshaker.h +4 -0
- data/src/core/lib/debug/stats.h +7 -0
- data/src/core/lib/debug/stats_data.cc +5 -0
- data/src/core/lib/debug/stats_data.h +120 -0
- data/src/core/lib/debug/trace.cc +2 -1
- data/src/core/lib/debug/trace.h +12 -1
- data/src/core/lib/gpr/alloc.h +28 -0
- data/src/core/lib/gpr/arena.cc +38 -45
- data/src/core/lib/gpr/log.cc +8 -2
- data/src/core/lib/gpr/log_android.cc +4 -0
- data/src/core/lib/gpr/log_linux.cc +4 -0
- data/src/core/lib/gpr/log_posix.cc +4 -0
- data/src/core/lib/gpr/log_windows.cc +5 -0
- data/src/core/lib/gpr/string.cc +28 -0
- data/src/core/lib/gpr/string.h +10 -0
- data/src/core/lib/gprpp/abstract.h +5 -2
- data/src/core/lib/gprpp/fork.cc +268 -0
- data/src/core/lib/gprpp/fork.h +88 -0
- data/src/core/lib/gprpp/inlined_vector.h +87 -37
- data/src/core/lib/gprpp/memory.h +12 -0
- data/src/core/lib/gprpp/mutex_lock.h +42 -0
- data/src/core/lib/gprpp/orphanable.h +10 -12
- data/src/core/lib/gprpp/ref_counted.h +10 -12
- data/src/core/lib/gprpp/ref_counted_ptr.h +65 -8
- data/src/core/lib/gprpp/thd.h +0 -3
- data/src/core/lib/gprpp/thd_posix.cc +5 -54
- data/src/core/lib/gprpp/thd_windows.cc +0 -7
- data/src/core/lib/http/httpcli_security_connector.cc +1 -3
- data/src/core/lib/iomgr/call_combiner.cc +13 -13
- data/src/core/lib/iomgr/call_combiner.h +84 -1
- data/src/core/lib/iomgr/closure.h +6 -5
- data/src/core/lib/iomgr/combiner.cc +30 -13
- data/src/core/lib/iomgr/combiner.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +12 -0
- data/src/core/lib/iomgr/error.h +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +138 -51
- data/src/core/lib/iomgr/ev_epollex_linux.cc +276 -93
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +58 -50
- data/src/core/lib/iomgr/ev_poll_posix.cc +163 -42
- data/src/core/lib/iomgr/ev_posix.cc +88 -24
- data/src/core/lib/iomgr/ev_posix.h +48 -12
- data/src/core/lib/iomgr/exec_ctx.cc +15 -9
- data/src/core/lib/iomgr/exec_ctx.h +48 -20
- data/src/core/lib/iomgr/executor.cc +274 -142
- data/src/core/lib/iomgr/executor.h +82 -16
- data/src/core/lib/iomgr/fork_posix.cc +42 -19
- data/src/core/lib/iomgr/iocp_windows.cc +9 -4
- data/src/core/lib/iomgr/iomgr.cc +2 -0
- data/src/core/lib/iomgr/iomgr.h +5 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +5 -1
- data/src/core/lib/iomgr/polling_entity.cc +11 -2
- data/src/core/lib/iomgr/pollset_custom.cc +2 -2
- data/src/core/lib/iomgr/port.h +51 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +89 -12
- data/src/core/lib/iomgr/resource_quota.h +16 -0
- data/src/core/lib/iomgr/sockaddr_posix.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -1
- data/src/core/lib/iomgr/socket_utils.h +9 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -1
- data/src/core/lib/iomgr/socket_utils_linux.cc +0 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_utils_uv.cc +4 -0
- data/src/core/lib/iomgr/socket_utils_windows.cc +4 -0
- data/src/core/lib/iomgr/socket_windows.cc +33 -0
- data/src/core/lib/iomgr/socket_windows.h +6 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +11 -11
- data/src/core/lib/iomgr/tcp_posix.cc +49 -36
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +16 -36
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +17 -5
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -0
- data/src/core/lib/iomgr/tcp_uv.cc +3 -0
- data/src/core/lib/iomgr/tcp_windows.cc +18 -2
- data/src/core/lib/iomgr/tcp_windows.h +2 -0
- data/src/core/lib/iomgr/timer.h +4 -3
- data/src/core/lib/iomgr/timer_generic.cc +133 -51
- data/src/core/lib/iomgr/timer_manager.cc +12 -14
- data/src/core/lib/iomgr/timer_uv.cc +3 -0
- data/src/core/lib/iomgr/udp_server.cc +106 -52
- data/src/core/lib/iomgr/udp_server.h +8 -4
- data/src/core/lib/json/json.cc +12 -1
- data/src/core/lib/json/json.h +5 -0
- data/src/core/lib/profiling/basic_timers.cc +1 -0
- data/src/core/lib/security/context/security_context.cc +8 -8
- data/src/core/lib/security/context/security_context.h +6 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -20
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +3 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +7 -7
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +1 -38
- data/src/core/lib/security/credentials/credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +89 -115
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +16 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
- data/src/core/lib/security/credentials/local/local_credentials.cc +77 -0
- data/src/core/lib/security/credentials/local/local_credentials.h +40 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +11 -7
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +17 -3
- data/src/core/lib/security/security_connector/alts_security_connector.cc +2 -1
- data/src/core/lib/security/security_connector/load_system_roots.h +29 -0
- data/src/core/lib/{gpr/fork.h → security/security_connector/load_system_roots_fallback.cc} +10 -13
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +165 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +44 -0
- data/src/core/lib/security/security_connector/local_security_connector.cc +245 -0
- data/src/core/lib/security/security_connector/local_security_connector.h +58 -0
- data/src/core/lib/security/security_connector/security_connector.cc +79 -32
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +7 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +4 -7
- data/src/core/lib/security/util/json_util.cc +4 -0
- data/src/core/lib/slice/slice.cc +6 -2
- data/src/core/lib/slice/slice_buffer.cc +27 -7
- data/src/core/lib/slice/slice_hash_table.h +4 -0
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -0
- data/src/core/lib/surface/call.cc +119 -58
- data/src/core/lib/surface/call.h +7 -0
- data/src/core/lib/surface/channel.cc +50 -18
- data/src/core/lib/surface/channel.h +4 -0
- data/src/core/lib/surface/completion_queue.cc +153 -18
- data/src/core/lib/surface/completion_queue.h +20 -2
- data/src/core/lib/surface/completion_queue_factory.cc +13 -4
- data/src/core/lib/surface/init.cc +7 -8
- data/src/core/lib/surface/init.h +0 -1
- data/src/core/lib/surface/server.cc +16 -0
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.cc +3 -3
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +1 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -7
- data/src/core/lib/transport/service_config.cc +2 -2
- data/src/core/lib/transport/service_config.h +3 -3
- data/src/core/lib/transport/transport.cc +22 -10
- data/src/core/lib/transport/transport.h +18 -18
- data/src/core/lib/transport/transport_op_string.cc +1 -8
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +2 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +19 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +10 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +1 -2
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +1 -2
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +47 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -11
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +7 -2
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/grpc_shadow_boringssl.h +3006 -0
- data/src/core/tsi/local_transport_security.cc +209 -0
- data/src/core/tsi/local_transport_security.h +51 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +245 -116
- data/src/core/tsi/ssl_types.h +2 -0
- data/src/core/tsi/transport_security.cc +14 -0
- data/src/core/tsi/transport_security.h +2 -0
- data/src/core/tsi/transport_security_interface.h +11 -1
- data/src/ruby/bin/math_client.rb +17 -9
- data/src/ruby/ext/grpc/extconf.rb +1 -26
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -16
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +65 -26
- data/src/ruby/lib/grpc/generic/active_call.rb +19 -23
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +7 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +4 -1
- data/src/ruby/spec/call_credentials_spec.rb +1 -1
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +1 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -12
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/compression_options_spec.rb +1 -1
- data/src/ruby/spec/error_sanity_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +16 -4
- data/src/ruby/spec/generic/rpc_desc_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/service_spec.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +1 -12
- data/src/ruby/spec/pb/duplicate/codegen_spec.rb +1 -0
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +1 -1
- data/src/ruby/spec/spec_helper.rb +1 -0
- data/src/ruby/spec/support/services.rb +1 -1
- data/src/ruby/spec/time_consts_spec.rb +1 -1
- data/third_party/address_sorting/address_sorting.c +17 -11
- data/third_party/address_sorting/address_sorting_windows.c +43 -3
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +3 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +33 -28
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +24 -22
- data/third_party/boringssl/crypto/asn1/a_utf8.c +13 -11
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +40 -19
- data/third_party/boringssl/crypto/bio/fd.c +1 -0
- data/third_party/boringssl/crypto/bio/file.c +2 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +6 -5
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +116 -16
- data/third_party/boringssl/crypto/bytestring/cbs.c +151 -20
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +203 -0
- data/third_party/boringssl/crypto/cipher_extra/e_rc2.c +2 -0
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +1 -2
- data/third_party/boringssl/crypto/cpu-aarch64-fuchsia.c +55 -0
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +2 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +16 -54
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +9 -10
- data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +11 -542
- data/third_party/boringssl/crypto/fipsmodule/bn/add.c +57 -112
- data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +128 -70
- data/third_party/boringssl/crypto/fipsmodule/bn/bytes.c +32 -71
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +64 -118
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +284 -122
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +31 -65
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +274 -218
- data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +2 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +187 -27
- data/third_party/boringssl/crypto/fipsmodule/bn/jacobi.c +1 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +124 -81
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +8 -30
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +321 -347
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +326 -66
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +77 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +199 -222
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +27 -47
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +155 -96
- data/third_party/boringssl/crypto/fipsmodule/bn/sqrt.c +1 -1
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +10 -10
- data/third_party/boringssl/crypto/fipsmodule/des/internal.h +2 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +78 -47
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +99 -163
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +3 -10
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +44 -23
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +59 -90
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +38 -65
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +5378 -5418
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -26
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +15 -11
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +45 -51
- data/third_party/boringssl/crypto/fipsmodule/ec/{util-64.c → util.c} +0 -5
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +144 -264
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +78 -62
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +256 -0
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +36 -32
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +9 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +16 -40
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +1 -6
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +57 -39
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +309 -142
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +581 -0
- data/third_party/boringssl/crypto/fipsmodule/tls/internal.h +39 -0
- data/third_party/boringssl/crypto/fipsmodule/tls/kdf.c +165 -0
- data/third_party/boringssl/crypto/internal.h +65 -2
- data/third_party/boringssl/crypto/mem.c +0 -2
- data/third_party/boringssl/crypto/obj/obj.c +6 -73
- data/third_party/boringssl/crypto/thread_pthread.c +35 -5
- data/third_party/boringssl/crypto/x509/a_strex.c +11 -11
- data/third_party/boringssl/crypto/x509/vpm_int.h +1 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +4 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +44 -22
- data/third_party/boringssl/crypto/x509/x_name.c +13 -0
- data/third_party/boringssl/include/openssl/aead.h +10 -0
- data/third_party/boringssl/include/openssl/asn1.h +2 -3
- data/third_party/boringssl/include/openssl/base.h +5 -14
- data/third_party/boringssl/include/openssl/bio.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +62 -18
- data/third_party/boringssl/include/openssl/bytestring.h +53 -28
- data/third_party/boringssl/include/openssl/crypto.h +4 -0
- data/third_party/boringssl/include/openssl/ec.h +10 -4
- data/third_party/boringssl/include/openssl/ec_key.h +7 -6
- data/third_party/boringssl/include/openssl/err.h +9 -9
- data/third_party/boringssl/include/openssl/evp.h +1 -1
- data/third_party/boringssl/include/openssl/rsa.h +35 -10
- data/third_party/boringssl/include/openssl/ssl.h +167 -19
- data/third_party/boringssl/include/openssl/ssl3.h +0 -1
- data/third_party/boringssl/include/openssl/stack.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +10 -2
- data/third_party/boringssl/include/openssl/x509.h +4 -0
- data/third_party/boringssl/include/openssl/x509v3.h +1 -0
- data/third_party/boringssl/ssl/d1_both.cc +16 -2
- data/third_party/boringssl/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl/ssl/handoff.cc +285 -0
- data/third_party/boringssl/ssl/handshake.cc +26 -12
- data/third_party/boringssl/ssl/handshake_client.cc +101 -95
- data/third_party/boringssl/ssl/handshake_server.cc +14 -2
- data/third_party/boringssl/ssl/internal.h +132 -79
- data/third_party/boringssl/ssl/s3_both.cc +2 -2
- data/third_party/boringssl/ssl/s3_lib.cc +3 -1
- data/third_party/boringssl/ssl/s3_pkt.cc +0 -18
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +1 -4
- data/third_party/boringssl/ssl/ssl_asn1.cc +47 -43
- data/third_party/boringssl/ssl/ssl_cipher.cc +12 -8
- data/third_party/boringssl/ssl/ssl_key_share.cc +3 -1
- data/third_party/boringssl/ssl/ssl_lib.cc +83 -14
- data/third_party/boringssl/ssl/ssl_privkey.cc +6 -0
- data/third_party/boringssl/ssl/ssl_stat.cc +6 -6
- data/third_party/boringssl/ssl/ssl_versions.cc +12 -85
- data/third_party/boringssl/ssl/ssl_x509.cc +59 -61
- data/third_party/boringssl/ssl/t1_enc.cc +73 -124
- data/third_party/boringssl/ssl/t1_lib.cc +367 -41
- data/third_party/boringssl/ssl/tls13_both.cc +8 -0
- data/third_party/boringssl/ssl/tls13_client.cc +98 -184
- data/third_party/boringssl/ssl/tls13_enc.cc +88 -158
- data/third_party/boringssl/ssl/tls13_server.cc +91 -137
- data/third_party/boringssl/ssl/tls_method.cc +0 -17
- data/third_party/boringssl/ssl/tls_record.cc +1 -10
- data/third_party/boringssl/third_party/fiat/curve25519.c +921 -2753
- data/third_party/boringssl/third_party/fiat/curve25519_tables.h +7880 -0
- data/third_party/boringssl/third_party/fiat/internal.h +32 -20
- data/third_party/boringssl/third_party/fiat/p256.c +1824 -0
- metadata +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +0 -253
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +0 -222
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +0 -71
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -61
- data/src/core/lib/channel/channel_trace_registry.cc +0 -80
- data/src/core/lib/channel/channel_trace_registry.h +0 -43
- data/src/core/lib/gpr/fork.cc +0 -78
- data/src/core/tsi/transport_security_adapter.cc +0 -235
- data/src/core/tsi/transport_security_adapter.h +0 -41
- data/src/ruby/bin/apis/google/protobuf/empty.rb +0 -29
- data/src/ruby/bin/apis/pubsub_demo.rb +0 -241
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +0 -159
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +0 -88
- data/src/ruby/pb/test/client.rb +0 -764
- data/src/ruby/pb/test/server.rb +0 -252
- data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +0 -54
- data/src/ruby/spec/pb/package_with_underscore/data.proto +0 -23
- data/src/ruby/spec/pb/package_with_underscore/service.proto +0 -23
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +0 -247
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +0 -1674
@@ -22,7 +22,6 @@
|
|
22
22
|
|
23
23
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
24
24
|
#include "src/core/lib/iomgr/sockaddr.h"
|
25
|
-
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
26
25
|
|
27
26
|
#include <string.h>
|
28
27
|
#include <sys/types.h>
|
@@ -50,6 +49,8 @@ static gpr_mu g_init_mu;
|
|
50
49
|
grpc_core::TraceFlag grpc_trace_cares_address_sorting(false,
|
51
50
|
"cares_address_sorting");
|
52
51
|
|
52
|
+
grpc_core::TraceFlag grpc_trace_cares_resolver(false, "cares_resolver");
|
53
|
+
|
53
54
|
struct grpc_ares_request {
|
54
55
|
/** indicates the DNS server to use, if specified */
|
55
56
|
struct ares_addr_port_node dns_server_addr;
|
@@ -63,10 +64,8 @@ struct grpc_ares_request {
|
|
63
64
|
/** the evernt driver used by this request */
|
64
65
|
grpc_ares_ev_driver* ev_driver;
|
65
66
|
/** number of ongoing queries */
|
66
|
-
|
67
|
+
size_t pending_queries;
|
67
68
|
|
68
|
-
/** mutex guarding the rest of the state */
|
69
|
-
gpr_mu mu;
|
70
69
|
/** is there at least one successful query, set in on_done_cb */
|
71
70
|
bool success;
|
72
71
|
/** the errors explaining the request failure, set in on_done_cb */
|
@@ -74,7 +73,8 @@ struct grpc_ares_request {
|
|
74
73
|
};
|
75
74
|
|
76
75
|
typedef struct grpc_ares_hostbyname_request {
|
77
|
-
/** following members are set in
|
76
|
+
/** following members are set in create_hostbyname_request_locked
|
77
|
+
*/
|
78
78
|
/** the top-level request instance */
|
79
79
|
grpc_ares_request* parent_request;
|
80
80
|
/** host to resolve, parsed from the name to resolve */
|
@@ -96,10 +96,6 @@ static uint16_t strhtons(const char* port) {
|
|
96
96
|
return htons(static_cast<unsigned short>(atoi(port)));
|
97
97
|
}
|
98
98
|
|
99
|
-
static void grpc_ares_request_ref(grpc_ares_request* r) {
|
100
|
-
gpr_ref(&r->pending_queries);
|
101
|
-
}
|
102
|
-
|
103
99
|
static void log_address_sorting_list(grpc_lb_addresses* lb_addrs,
|
104
100
|
const char* input_output_str) {
|
105
101
|
for (size_t i = 0; i < lb_addrs->num_addresses; i++) {
|
@@ -149,19 +145,29 @@ void grpc_cares_wrapper_test_only_address_sorting_sort(
|
|
149
145
|
grpc_cares_wrapper_address_sorting_sort(lb_addrs);
|
150
146
|
}
|
151
147
|
|
152
|
-
static void
|
153
|
-
|
148
|
+
static void grpc_ares_request_ref_locked(grpc_ares_request* r) {
|
149
|
+
r->pending_queries++;
|
150
|
+
}
|
151
|
+
|
152
|
+
static void grpc_ares_request_unref_locked(grpc_ares_request* r) {
|
153
|
+
r->pending_queries--;
|
154
|
+
if (r->pending_queries == 0u) {
|
155
|
+
grpc_ares_ev_driver_on_queries_complete_locked(r->ev_driver);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
void grpc_ares_complete_request_locked(grpc_ares_request* r) {
|
160
|
+
/* Invoke on_done callback and destroy the
|
154
161
|
request */
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
gpr_mu_destroy(&r->mu);
|
159
|
-
grpc_ares_ev_driver_destroy(r->ev_driver);
|
160
|
-
gpr_free(r);
|
162
|
+
grpc_lb_addresses* lb_addrs = *(r->lb_addrs_out);
|
163
|
+
if (lb_addrs != nullptr) {
|
164
|
+
grpc_cares_wrapper_address_sorting_sort(lb_addrs);
|
161
165
|
}
|
166
|
+
GRPC_CLOSURE_SCHED(r->on_done, r->error);
|
167
|
+
gpr_free(r);
|
162
168
|
}
|
163
169
|
|
164
|
-
static grpc_ares_hostbyname_request*
|
170
|
+
static grpc_ares_hostbyname_request* create_hostbyname_request_locked(
|
165
171
|
grpc_ares_request* parent_request, char* host, uint16_t port,
|
166
172
|
bool is_balancer) {
|
167
173
|
grpc_ares_hostbyname_request* hr = static_cast<grpc_ares_hostbyname_request*>(
|
@@ -170,22 +176,22 @@ static grpc_ares_hostbyname_request* create_hostbyname_request(
|
|
170
176
|
hr->host = gpr_strdup(host);
|
171
177
|
hr->port = port;
|
172
178
|
hr->is_balancer = is_balancer;
|
173
|
-
|
179
|
+
grpc_ares_request_ref_locked(parent_request);
|
174
180
|
return hr;
|
175
181
|
}
|
176
182
|
|
177
|
-
static void
|
178
|
-
|
183
|
+
static void destroy_hostbyname_request_locked(
|
184
|
+
grpc_ares_hostbyname_request* hr) {
|
185
|
+
grpc_ares_request_unref_locked(hr->parent_request);
|
179
186
|
gpr_free(hr->host);
|
180
187
|
gpr_free(hr);
|
181
188
|
}
|
182
189
|
|
183
|
-
static void
|
184
|
-
|
190
|
+
static void on_hostbyname_done_locked(void* arg, int status, int timeouts,
|
191
|
+
struct hostent* hostent) {
|
185
192
|
grpc_ares_hostbyname_request* hr =
|
186
193
|
static_cast<grpc_ares_hostbyname_request*>(arg);
|
187
194
|
grpc_ares_request* r = hr->parent_request;
|
188
|
-
gpr_mu_lock(&r->mu);
|
189
195
|
if (status == ARES_SUCCESS) {
|
190
196
|
GRPC_ERROR_UNREF(r->error);
|
191
197
|
r->error = GRPC_ERROR_NONE;
|
@@ -210,7 +216,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
|
|
210
216
|
memset(&addr, 0, addr_len);
|
211
217
|
memcpy(&addr.sin6_addr, hostent->h_addr_list[i - prev_naddr],
|
212
218
|
sizeof(struct in6_addr));
|
213
|
-
addr.sin6_family = static_cast<
|
219
|
+
addr.sin6_family = static_cast<unsigned char>(hostent->h_addrtype);
|
214
220
|
addr.sin6_port = hr->port;
|
215
221
|
grpc_lb_addresses_set_address(
|
216
222
|
*lb_addresses, i, &addr, addr_len,
|
@@ -231,7 +237,7 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
|
|
231
237
|
memset(&addr, 0, addr_len);
|
232
238
|
memcpy(&addr.sin_addr, hostent->h_addr_list[i - prev_naddr],
|
233
239
|
sizeof(struct in_addr));
|
234
|
-
addr.sin_family = static_cast<
|
240
|
+
addr.sin_family = static_cast<unsigned char>(hostent->h_addrtype);
|
235
241
|
addr.sin_port = hr->port;
|
236
242
|
grpc_lb_addresses_set_address(
|
237
243
|
*lb_addresses, i, &addr, addr_len,
|
@@ -260,34 +266,33 @@ static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
|
|
260
266
|
r->error = grpc_error_add_child(error, r->error);
|
261
267
|
}
|
262
268
|
}
|
263
|
-
|
264
|
-
destroy_hostbyname_request(hr);
|
269
|
+
destroy_hostbyname_request_locked(hr);
|
265
270
|
}
|
266
271
|
|
267
|
-
static void
|
268
|
-
|
272
|
+
static void on_srv_query_done_locked(void* arg, int status, int timeouts,
|
273
|
+
unsigned char* abuf, int alen) {
|
269
274
|
grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
|
270
|
-
|
271
|
-
gpr_log(GPR_DEBUG, "on_query_srv_done_cb");
|
275
|
+
gpr_log(GPR_DEBUG, "on_query_srv_done_locked");
|
272
276
|
if (status == ARES_SUCCESS) {
|
273
|
-
gpr_log(GPR_DEBUG, "
|
277
|
+
gpr_log(GPR_DEBUG, "on_query_srv_done_locked ARES_SUCCESS");
|
274
278
|
struct ares_srv_reply* reply;
|
275
279
|
const int parse_status = ares_parse_srv_reply(abuf, alen, &reply);
|
276
280
|
if (parse_status == ARES_SUCCESS) {
|
277
|
-
ares_channel* channel =
|
281
|
+
ares_channel* channel =
|
282
|
+
grpc_ares_ev_driver_get_channel_locked(r->ev_driver);
|
278
283
|
for (struct ares_srv_reply* srv_it = reply; srv_it != nullptr;
|
279
284
|
srv_it = srv_it->next) {
|
280
|
-
if (
|
281
|
-
grpc_ares_hostbyname_request* hr =
|
285
|
+
if (grpc_ares_query_ipv6()) {
|
286
|
+
grpc_ares_hostbyname_request* hr = create_hostbyname_request_locked(
|
282
287
|
r, srv_it->host, htons(srv_it->port), true /* is_balancer */);
|
283
288
|
ares_gethostbyname(*channel, hr->host, AF_INET6,
|
284
|
-
|
289
|
+
on_hostbyname_done_locked, hr);
|
285
290
|
}
|
286
|
-
grpc_ares_hostbyname_request* hr =
|
291
|
+
grpc_ares_hostbyname_request* hr = create_hostbyname_request_locked(
|
287
292
|
r, srv_it->host, htons(srv_it->port), true /* is_balancer */);
|
288
|
-
ares_gethostbyname(*channel, hr->host, AF_INET,
|
289
|
-
hr);
|
290
|
-
|
293
|
+
ares_gethostbyname(*channel, hr->host, AF_INET,
|
294
|
+
on_hostbyname_done_locked, hr);
|
295
|
+
grpc_ares_ev_driver_start_locked(r->ev_driver);
|
291
296
|
}
|
292
297
|
}
|
293
298
|
if (reply != nullptr) {
|
@@ -305,21 +310,20 @@ static void on_srv_query_done_cb(void* arg, int status, int timeouts,
|
|
305
310
|
r->error = grpc_error_add_child(error, r->error);
|
306
311
|
}
|
307
312
|
}
|
308
|
-
|
313
|
+
grpc_ares_request_unref_locked(r);
|
309
314
|
}
|
310
315
|
|
311
316
|
static const char g_service_config_attribute_prefix[] = "grpc_config=";
|
312
317
|
|
313
|
-
static void
|
314
|
-
|
315
|
-
gpr_log(GPR_DEBUG, "
|
318
|
+
static void on_txt_done_locked(void* arg, int status, int timeouts,
|
319
|
+
unsigned char* buf, int len) {
|
320
|
+
gpr_log(GPR_DEBUG, "on_txt_done_locked");
|
316
321
|
char* error_msg;
|
317
322
|
grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
|
318
323
|
const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1;
|
319
324
|
struct ares_txt_ext* result = nullptr;
|
320
325
|
struct ares_txt_ext* reply = nullptr;
|
321
326
|
grpc_error* error = GRPC_ERROR_NONE;
|
322
|
-
gpr_mu_lock(&r->mu);
|
323
327
|
if (status != ARES_SUCCESS) goto fail;
|
324
328
|
status = ares_parse_txt_reply_ext(buf, len, &reply);
|
325
329
|
if (status != ARES_SUCCESS) goto fail;
|
@@ -364,14 +368,14 @@ fail:
|
|
364
368
|
r->error = grpc_error_add_child(error, r->error);
|
365
369
|
}
|
366
370
|
done:
|
367
|
-
|
368
|
-
grpc_ares_request_unref(r);
|
371
|
+
grpc_ares_request_unref_locked(r);
|
369
372
|
}
|
370
373
|
|
371
|
-
static grpc_ares_request*
|
374
|
+
static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
372
375
|
const char* dns_server, const char* name, const char* default_port,
|
373
376
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
374
|
-
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json
|
377
|
+
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json,
|
378
|
+
grpc_combiner* combiner) {
|
375
379
|
grpc_error* error = GRPC_ERROR_NONE;
|
376
380
|
grpc_ares_hostbyname_request* hr = nullptr;
|
377
381
|
grpc_ares_request* r = nullptr;
|
@@ -400,21 +404,18 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
|
|
400
404
|
}
|
401
405
|
port = gpr_strdup(default_port);
|
402
406
|
}
|
403
|
-
|
404
|
-
grpc_ares_ev_driver* ev_driver;
|
405
|
-
error = grpc_ares_ev_driver_create(&ev_driver, interested_parties);
|
406
|
-
if (error != GRPC_ERROR_NONE) goto error_cleanup;
|
407
|
-
|
408
407
|
r = static_cast<grpc_ares_request*>(gpr_zalloc(sizeof(grpc_ares_request)));
|
409
|
-
|
410
|
-
r->ev_driver = ev_driver;
|
408
|
+
r->ev_driver = nullptr;
|
411
409
|
r->on_done = on_done;
|
412
410
|
r->lb_addrs_out = addrs;
|
413
411
|
r->service_config_json_out = service_config_json;
|
414
412
|
r->success = false;
|
415
413
|
r->error = GRPC_ERROR_NONE;
|
416
|
-
|
417
|
-
|
414
|
+
r->pending_queries = 0;
|
415
|
+
error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
|
416
|
+
combiner, r);
|
417
|
+
if (error != GRPC_ERROR_NONE) goto error_cleanup;
|
418
|
+
channel = grpc_ares_ev_driver_get_channel_locked(r->ev_driver);
|
418
419
|
// If dns_server is specified, use it.
|
419
420
|
if (dns_server != nullptr) {
|
420
421
|
gpr_log(GPR_INFO, "Using DNS server %s", dns_server);
|
@@ -439,7 +440,6 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
|
|
439
440
|
error = grpc_error_set_str(
|
440
441
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("cannot parse authority"),
|
441
442
|
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
442
|
-
gpr_free(r);
|
443
443
|
goto error_cleanup;
|
444
444
|
}
|
445
445
|
int status = ares_set_servers_ports(*channel, &r->dns_server_addr);
|
@@ -449,58 +449,60 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
|
|
449
449
|
ares_strerror(status));
|
450
450
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
451
451
|
gpr_free(error_msg);
|
452
|
-
gpr_free(r);
|
453
452
|
goto error_cleanup;
|
454
453
|
}
|
455
454
|
}
|
456
|
-
|
457
|
-
if (
|
458
|
-
hr =
|
459
|
-
|
460
|
-
ares_gethostbyname(*channel, hr->host, AF_INET6,
|
455
|
+
r->pending_queries = 1;
|
456
|
+
if (grpc_ares_query_ipv6()) {
|
457
|
+
hr = create_hostbyname_request_locked(r, host, strhtons(port),
|
458
|
+
false /* is_balancer */);
|
459
|
+
ares_gethostbyname(*channel, hr->host, AF_INET6, on_hostbyname_done_locked,
|
460
|
+
hr);
|
461
461
|
}
|
462
|
-
hr =
|
463
|
-
|
464
|
-
ares_gethostbyname(*channel, hr->host, AF_INET,
|
462
|
+
hr = create_hostbyname_request_locked(r, host, strhtons(port),
|
463
|
+
false /* is_balancer */);
|
464
|
+
ares_gethostbyname(*channel, hr->host, AF_INET, on_hostbyname_done_locked,
|
465
|
+
hr);
|
465
466
|
if (check_grpclb) {
|
466
467
|
/* Query the SRV record */
|
467
|
-
|
468
|
+
grpc_ares_request_ref_locked(r);
|
468
469
|
char* service_name;
|
469
470
|
gpr_asprintf(&service_name, "_grpclb._tcp.%s", host);
|
470
|
-
ares_query(*channel, service_name, ns_c_in, ns_t_srv,
|
471
|
-
r);
|
471
|
+
ares_query(*channel, service_name, ns_c_in, ns_t_srv,
|
472
|
+
on_srv_query_done_locked, r);
|
472
473
|
gpr_free(service_name);
|
473
474
|
}
|
474
475
|
if (service_config_json != nullptr) {
|
475
|
-
|
476
|
+
grpc_ares_request_ref_locked(r);
|
476
477
|
char* config_name;
|
477
478
|
gpr_asprintf(&config_name, "_grpc_config.%s", host);
|
478
|
-
ares_search(*channel, config_name, ns_c_in, ns_t_txt,
|
479
|
+
ares_search(*channel, config_name, ns_c_in, ns_t_txt, on_txt_done_locked,
|
480
|
+
r);
|
479
481
|
gpr_free(config_name);
|
480
482
|
}
|
481
|
-
|
482
|
-
|
483
|
-
grpc_ares_request_unref(r);
|
483
|
+
grpc_ares_ev_driver_start_locked(r->ev_driver);
|
484
|
+
grpc_ares_request_unref_locked(r);
|
484
485
|
gpr_free(host);
|
485
486
|
gpr_free(port);
|
486
487
|
return r;
|
487
488
|
|
488
489
|
error_cleanup:
|
489
490
|
GRPC_CLOSURE_SCHED(on_done, error);
|
491
|
+
gpr_free(r);
|
490
492
|
gpr_free(host);
|
491
493
|
gpr_free(port);
|
492
494
|
return nullptr;
|
493
495
|
}
|
494
496
|
|
495
|
-
grpc_ares_request* (*
|
497
|
+
grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
496
498
|
const char* dns_server, const char* name, const char* default_port,
|
497
499
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
498
|
-
grpc_lb_addresses** addrs, bool check_grpclb,
|
499
|
-
|
500
|
+
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json,
|
501
|
+
grpc_combiner* combiner) = grpc_dns_lookup_ares_locked_impl;
|
500
502
|
|
501
503
|
void grpc_cancel_ares_request(grpc_ares_request* r) {
|
502
|
-
if (
|
503
|
-
|
504
|
+
if (grpc_dns_lookup_ares_locked == grpc_dns_lookup_ares_locked_impl) {
|
505
|
+
grpc_ares_ev_driver_shutdown_locked(r->ev_driver);
|
504
506
|
}
|
505
507
|
}
|
506
508
|
|
@@ -532,6 +534,8 @@ void grpc_ares_cleanup(void) {
|
|
532
534
|
*/
|
533
535
|
|
534
536
|
typedef struct grpc_resolve_address_ares_request {
|
537
|
+
/* combiner that queries and related callbacks run under */
|
538
|
+
grpc_combiner* combiner;
|
535
539
|
/** the pointer to receive the resolved addresses */
|
536
540
|
grpc_resolved_addresses** addrs_out;
|
537
541
|
/** currently resolving lb addresses */
|
@@ -539,8 +543,14 @@ typedef struct grpc_resolve_address_ares_request {
|
|
539
543
|
/** closure to call when the resolve_address_ares request completes */
|
540
544
|
grpc_closure* on_resolve_address_done;
|
541
545
|
/** a closure wrapping on_dns_lookup_done_cb, which should be invoked when the
|
542
|
-
|
546
|
+
grpc_dns_lookup_ares_locked operation is done. */
|
543
547
|
grpc_closure on_dns_lookup_done;
|
548
|
+
/* target name */
|
549
|
+
const char* name;
|
550
|
+
/* default port to use if none is specified */
|
551
|
+
const char* default_port;
|
552
|
+
/* pollset_set to be driven by */
|
553
|
+
grpc_pollset_set* interested_parties;
|
544
554
|
} grpc_resolve_address_ares_request;
|
545
555
|
|
546
556
|
static void on_dns_lookup_done_cb(void* arg, grpc_error* error) {
|
@@ -564,9 +574,20 @@ static void on_dns_lookup_done_cb(void* arg, grpc_error* error) {
|
|
564
574
|
}
|
565
575
|
GRPC_CLOSURE_SCHED(r->on_resolve_address_done, GRPC_ERROR_REF(error));
|
566
576
|
if (r->lb_addrs != nullptr) grpc_lb_addresses_destroy(r->lb_addrs);
|
577
|
+
GRPC_COMBINER_UNREF(r->combiner, "on_dns_lookup_done_cb");
|
567
578
|
gpr_free(r);
|
568
579
|
}
|
569
580
|
|
581
|
+
static void grpc_resolve_address_invoke_dns_lookup_ares_locked(
|
582
|
+
void* arg, grpc_error* unused_error) {
|
583
|
+
grpc_resolve_address_ares_request* r =
|
584
|
+
static_cast<grpc_resolve_address_ares_request*>(arg);
|
585
|
+
grpc_dns_lookup_ares_locked(
|
586
|
+
nullptr /* dns_server */, r->name, r->default_port, r->interested_parties,
|
587
|
+
&r->on_dns_lookup_done, &r->lb_addrs, false /* check_grpclb */,
|
588
|
+
nullptr /* service_config_json */, r->combiner);
|
589
|
+
}
|
590
|
+
|
570
591
|
static void grpc_resolve_address_ares_impl(const char* name,
|
571
592
|
const char* default_port,
|
572
593
|
grpc_pollset_set* interested_parties,
|
@@ -575,14 +596,18 @@ static void grpc_resolve_address_ares_impl(const char* name,
|
|
575
596
|
grpc_resolve_address_ares_request* r =
|
576
597
|
static_cast<grpc_resolve_address_ares_request*>(
|
577
598
|
gpr_zalloc(sizeof(grpc_resolve_address_ares_request)));
|
599
|
+
r->combiner = grpc_combiner_create();
|
578
600
|
r->addrs_out = addrs;
|
579
601
|
r->on_resolve_address_done = on_done;
|
580
602
|
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done, on_dns_lookup_done_cb, r,
|
581
603
|
grpc_schedule_on_exec_ctx);
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
604
|
+
r->name = name;
|
605
|
+
r->default_port = default_port;
|
606
|
+
r->interested_parties = interested_parties;
|
607
|
+
GRPC_CLOSURE_SCHED(
|
608
|
+
GRPC_CLOSURE_CREATE(grpc_resolve_address_invoke_dns_lookup_ares_locked, r,
|
609
|
+
grpc_combiner_scheduler(r->combiner)),
|
610
|
+
GRPC_ERROR_NONE);
|
586
611
|
}
|
587
612
|
|
588
613
|
void (*grpc_resolve_address_ares)(
|
@@ -28,6 +28,13 @@
|
|
28
28
|
|
29
29
|
extern grpc_core::TraceFlag grpc_trace_cares_address_sorting;
|
30
30
|
|
31
|
+
extern grpc_core::TraceFlag grpc_trace_cares_resolver;
|
32
|
+
|
33
|
+
#define GRPC_CARES_TRACE_LOG(format, ...) \
|
34
|
+
if (grpc_trace_cares_resolver.enabled()) { \
|
35
|
+
gpr_log(GPR_DEBUG, "(c-ares resolver) " format, __VA_ARGS__); \
|
36
|
+
}
|
37
|
+
|
31
38
|
typedef struct grpc_ares_request grpc_ares_request;
|
32
39
|
|
33
40
|
/* Asynchronously resolve \a name. Use \a default_port if a port isn't
|
@@ -48,11 +55,11 @@ extern void (*grpc_resolve_address_ares)(const char* name,
|
|
48
55
|
function. \a on_done may be called directly in this function without being
|
49
56
|
scheduled with \a exec_ctx, so it must not try to acquire locks that are
|
50
57
|
being held by the caller. */
|
51
|
-
extern grpc_ares_request* (*
|
58
|
+
extern grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
52
59
|
const char* dns_server, const char* name, const char* default_port,
|
53
60
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
54
61
|
grpc_lb_addresses** addresses, bool check_grpclb,
|
55
|
-
char** service_config_json);
|
62
|
+
char** service_config_json, grpc_combiner* combiner);
|
56
63
|
|
57
64
|
/* Cancel the pending grpc_ares_request \a request */
|
58
65
|
void grpc_cancel_ares_request(grpc_ares_request* request);
|
@@ -66,6 +73,14 @@ grpc_error* grpc_ares_init(void);
|
|
66
73
|
it has been called the same number of times as grpc_ares_init(). */
|
67
74
|
void grpc_ares_cleanup(void);
|
68
75
|
|
76
|
+
/** Schedules the desired callback for request completion
|
77
|
+
* and destroys the grpc_ares_request */
|
78
|
+
void grpc_ares_complete_request_locked(grpc_ares_request* request);
|
79
|
+
|
80
|
+
/* Indicates whether or not AAAA queries should be attempted. */
|
81
|
+
/* E.g., return false if ipv6 is known to not be available. */
|
82
|
+
bool grpc_ares_query_ipv6();
|
83
|
+
|
69
84
|
/* Exposed only for testing */
|
70
85
|
void grpc_cares_wrapper_test_only_address_sorting_sort(
|
71
86
|
grpc_lb_addresses* lb_addrs);
|
@@ -26,18 +26,19 @@ struct grpc_ares_request {
|
|
26
26
|
char val;
|
27
27
|
};
|
28
28
|
|
29
|
-
static grpc_ares_request*
|
29
|
+
static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
30
30
|
const char* dns_server, const char* name, const char* default_port,
|
31
31
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
32
|
-
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json
|
32
|
+
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json,
|
33
|
+
grpc_combiner* combiner) {
|
33
34
|
return NULL;
|
34
35
|
}
|
35
36
|
|
36
|
-
grpc_ares_request* (*
|
37
|
+
grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
37
38
|
const char* dns_server, const char* name, const char* default_port,
|
38
39
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
39
|
-
grpc_lb_addresses** addrs, bool check_grpclb,
|
40
|
-
|
40
|
+
grpc_lb_addresses** addrs, bool check_grpclb, char** service_config_json,
|
41
|
+
grpc_combiner* combiner) = grpc_dns_lookup_ares_locked_impl;
|
41
42
|
|
42
43
|
void grpc_cancel_ares_request(grpc_ares_request* r) {}
|
43
44
|
|