aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitmodules4
-rw-r--r--BUILD46
-rw-r--r--CMakeLists.txt1421
-rw-r--r--INSTALL.md24
-rw-r--r--Makefile486
-rw-r--r--PYTHON-MANIFEST.in1
-rw-r--r--README.md18
-rwxr-xr-xRakefile3
-rw-r--r--WORKSPACE12
-rw-r--r--binding.gyp34
-rw-r--r--build.yaml72
-rw-r--r--config.m415
-rw-r--r--doc/combiner-explainer.md158
-rw-r--r--doc/core/grpc-error.md160
-rw-r--r--doc/environment_variables.md8
-rw-r--r--doc/g_stands_for.md1
-rw-r--r--doc/http2-interop-test-descriptions.md (renamed from doc/negative-http2-interop-test-descriptions.md)76
-rw-r--r--examples/node/static_codegen/README.md9
-rw-r--r--gRPC-Core.podspec38
-rw-r--r--gRPC-ProtoRPC.podspec2
-rw-r--r--gRPC-RxLibrary.podspec2
-rw-r--r--gRPC.podspec2
-rw-r--r--grpc.def3
-rwxr-xr-xgrpc.gemspec94
-rw-r--r--include/grpc++/support/channel_arguments.h6
-rw-r--r--include/grpc/grpc.h65
-rw-r--r--include/grpc/impl/codegen/atm.h5
-rw-r--r--include/grpc/impl/codegen/grpc_types.h5
-rw-r--r--include/grpc/impl/codegen/port_platform.h8
-rw-r--r--package.json7
-rw-r--r--package.xml21
-rw-r--r--setup.py21
-rw-r--r--src/c-ares/CMakeLists.txt49
-rwxr-xr-xsrc/c-ares/gen_build_yaml.py149
-rw-r--r--src/compiler/csharp_generator.cc77
-rw-r--r--src/compiler/php_generator.cc2
-rw-r--r--src/compiler/python_generator.cc8
-rw-r--r--src/core/ext/census/grpc_filter.c4
-rw-r--r--src/core/ext/client_channel/channel_connectivity.c4
-rw-r--r--src/core/ext/client_channel/client_channel.c188
-rw-r--r--src/core/ext/client_channel/client_channel_plugin.c3
-rw-r--r--src/core/ext/client_channel/connector.h2
-rw-r--r--src/core/ext/client_channel/http_connect_handshaker.c4
-rw-r--r--src/core/ext/client_channel/proxy_mapper_registry.c12
-rw-r--r--src/core/ext/client_channel/resolver_registry.c1
-rw-r--r--src/core/ext/client_channel/retry_throttle.c210
-rw-r--r--src/core/ext/client_channel/retry_throttle.h65
-rw-r--r--src/core/ext/client_channel/subchannel.c70
-rw-r--r--src/core/ext/client_channel/subchannel.h18
-rw-r--r--src/core/ext/lb_policy/grpclb/grpclb.c22
-rw-r--r--src/core/ext/lb_policy/pick_first/pick_first.c27
-rw-r--r--src/core/ext/lb_policy/round_robin/round_robin.c29
-rw-r--r--src/core/ext/load_reporting/load_reporting_filter.c6
-rw-r--r--src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c350
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h65
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c319
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c289
-rw-r--r--src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h63
-rw-r--r--src/core/ext/resolver/dns/native/dns_resolver.c22
-rw-r--r--src/core/ext/transport/chttp2/client/chttp2_connector.c41
-rw-r--r--src/core/ext/transport/chttp2/server/chttp2_server.c4
-rw-r--r--src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c4
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.c262
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_data.c17
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_goaway.c5
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_ping.c2
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_rst_stream.c7
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_settings.c11
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_window_update.c4
-rw-r--r--src/core/ext/transport/chttp2/transport/hpack_parser.c73
-rw-r--r--src/core/ext/transport/chttp2/transport/hpack_table.c4
-rw-r--r--src/core/ext/transport/chttp2/transport/incoming_metadata.c65
-rw-r--r--src/core/ext/transport/chttp2/transport/incoming_metadata.h18
-rw-r--r--src/core/ext/transport/chttp2/transport/internal.h2
-rw-r--r--src/core/ext/transport/chttp2/transport/parsing.c48
-rw-r--r--src/core/ext/transport/cronet/transport/cronet_transport.c115
-rw-r--r--src/core/lib/channel/channel_stack.c36
-rw-r--r--src/core/lib/channel/channel_stack.h23
-rw-r--r--src/core/lib/channel/compress_filter.c2
-rw-r--r--src/core/lib/channel/connected_channel.c9
-rw-r--r--src/core/lib/channel/deadline_filter.c8
-rw-r--r--src/core/lib/channel/handshaker.c5
-rw-r--r--src/core/lib/channel/http_client_filter.c67
-rw-r--r--src/core/lib/channel/http_server_filter.c113
-rw-r--r--src/core/lib/channel/message_size_filter.c13
-rw-r--r--src/core/lib/http/httpcli.c14
-rw-r--r--src/core/lib/http/httpcli_security_connector.c2
-rw-r--r--src/core/lib/http/parser.c88
-rw-r--r--src/core/lib/iomgr/closure.c4
-rw-r--r--src/core/lib/iomgr/combiner.c2
-rw-r--r--src/core/lib/iomgr/error.c88
-rw-r--r--src/core/lib/iomgr/error.h53
-rw-r--r--src/core/lib/iomgr/ev_epoll_linux.c14
-rw-r--r--src/core/lib/iomgr/ev_poll_posix.c12
-rw-r--r--src/core/lib/iomgr/executor.c4
-rw-r--r--src/core/lib/iomgr/load_file.c9
-rw-r--r--src/core/lib/iomgr/port.h4
-rw-r--r--src/core/lib/iomgr/resolve_address_posix.c24
-rw-r--r--src/core/lib/iomgr/resolve_address_uv.c14
-rw-r--r--src/core/lib/iomgr/resolve_address_windows.c4
-rw-r--r--src/core/lib/iomgr/socket_factory_posix.c110
-rw-r--r--src/core/lib/iomgr/socket_factory_posix.h90
-rw-r--r--src/core/lib/iomgr/socket_utils_common_posix.c34
-rw-r--r--src/core/lib/iomgr/socket_utils_posix.h7
-rw-r--r--src/core/lib/iomgr/tcp_client_posix.c22
-rw-r--r--src/core/lib/iomgr/tcp_client_uv.c16
-rw-r--r--src/core/lib/iomgr/tcp_client_windows.c7
-rw-r--r--src/core/lib/iomgr/tcp_posix.c19
-rw-r--r--src/core/lib/iomgr/tcp_server_posix.c445
-rw-r--r--src/core/lib/iomgr/tcp_server_utils_posix.h134
-rw-r--r--src/core/lib/iomgr/tcp_server_utils_posix_common.c221
-rw-r--r--src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c196
-rw-r--r--src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c (renamed from src/core/ext/client_channel/initial_connect_string.c)27
-rw-r--r--src/core/lib/iomgr/tcp_server_uv.c27
-rw-r--r--src/core/lib/iomgr/tcp_server_windows.c11
-rw-r--r--src/core/lib/iomgr/tcp_uv.c15
-rw-r--r--src/core/lib/iomgr/tcp_windows.c22
-rw-r--r--src/core/lib/iomgr/timer_generic.c13
-rw-r--r--src/core/lib/iomgr/timer_uv.c4
-rw-r--r--src/core/lib/iomgr/udp_server.c62
-rw-r--r--src/core/lib/iomgr/udp_server.h2
-rw-r--r--src/core/lib/iomgr/unix_sockets_posix.c2
-rw-r--r--src/core/lib/iomgr/unix_sockets_posix_noop.c3
-rw-r--r--src/core/lib/profiling/basic_timers.c2
-rw-r--r--src/core/lib/security/credentials/google_default/google_default_credentials.c19
-rw-r--r--src/core/lib/security/transport/client_auth_filter.c21
-rw-r--r--src/core/lib/security/transport/secure_endpoint.c11
-rw-r--r--src/core/lib/security/transport/security_connector.c21
-rw-r--r--src/core/lib/security/transport/security_handshaker.c27
-rw-r--r--src/core/lib/security/transport/server_auth_filter.c12
-rw-r--r--src/core/lib/security/transport/tsi_error.c8
-rw-r--r--src/core/lib/security/util/b64.c25
-rw-r--r--src/core/lib/security/util/b64.h14
-rw-r--r--src/core/lib/support/atm.c47
-rw-r--r--src/core/lib/surface/call.c88
-rw-r--r--src/core/lib/surface/channel.c78
-rw-r--r--src/core/lib/surface/channel.h8
-rw-r--r--src/core/lib/surface/completion_queue_factory.c77
-rw-r--r--src/core/lib/surface/completion_queue_factory.h (renamed from src/core/ext/client_channel/initial_connect_string.h)29
-rw-r--r--src/core/lib/surface/lame_client.c12
-rw-r--r--src/core/lib/surface/server.c40
-rw-r--r--src/core/lib/surface/validate_metadata.c12
-rw-r--r--src/core/lib/surface/version.c2
-rw-r--r--src/core/lib/transport/connectivity_state.c3
-rw-r--r--src/core/lib/transport/error_utils.c12
-rw-r--r--src/core/lib/transport/error_utils.h2
-rw-r--r--src/core/lib/transport/metadata_batch.c13
-rw-r--r--src/core/lib/transport/service_config.c12
-rw-r--r--src/core/lib/transport/service_config.h6
-rw-r--r--src/core/lib/transport/transport.c9
-rw-r--r--src/core/lib/transport/transport.h6
-rw-r--r--src/core/lib/transport/transport_impl.h5
-rw-r--r--src/core/plugin_registry/grpc_plugin_registry.c4
-rw-r--r--src/core/plugin_registry/grpc_unsecure_plugin_registry.c4
-rw-r--r--src/cpp/common/channel_arguments.cc31
-rw-r--r--src/cpp/common/channel_filter.h3
-rw-r--r--src/csharp/Grpc.Core/ChannelOptions.cs9
-rw-r--r--src/csharp/Grpc.Examples/MathGrpc.cs82
-rw-r--r--src/csharp/Grpc.HealthCheck/HealthGrpc.cs36
-rw-r--r--src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs52
-rw-r--r--src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs142
-rw-r--r--src/csharp/Grpc.IntegrationTesting/TestGrpc.cs250
-rw-r--r--src/csharp/Grpc.Reflection/ReflectionGrpc.cs30
-rw-r--r--src/node/ext/server_uv.cc2
-rw-r--r--src/node/src/common.js1
-rw-r--r--src/node/src/server.js13
-rw-r--r--src/node/test/surface_test.js26
-rw-r--r--src/objective-c/!ProtoCompiler-gRPCPlugin.podspec4
-rw-r--r--src/objective-c/!ProtoCompiler.podspec4
-rw-r--r--src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m3
-rw-r--r--src/objective-c/tests/CronetUnitTests/CronetUnitTests.m45
-rw-r--r--src/php/lib/Grpc/AbstractCall.php8
-rw-r--r--src/python/grpcio/grpc/__init__.py11
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/security.pxd.pxi2
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi18
-rw-r--r--src/python/grpcio/grpc/_cython/cygrpc.pyx10
-rw-r--r--src/python/grpcio/grpc/_server.py94
-rw-r--r--src/python/grpcio/grpc_core_dependencies.py63
-rw-r--r--src/python/grpcio_health_checking/setup.py4
-rw-r--r--src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py59
-rw-r--r--src/python/grpcio_reflection/setup.py4
-rw-r--r--src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py8
-rw-r--r--src/python/grpcio_tests/tests/interop/_secure_intraop_test.py8
-rw-r--r--src/python/grpcio_tests/tests/interop/methods.py4
-rw-r--r--src/python/grpcio_tests/tests/interop/server.py5
-rw-r--r--src/python/grpcio_tests/tests/qps/qps_worker.py4
-rw-r--r--src/python/grpcio_tests/tests/qps/worker_server.py8
-rw-r--r--src/python/grpcio_tests/tests/reflection/_reflection_servicer_test.py43
-rw-r--r--src/python/grpcio_tests/tests/stress/client.py4
-rw-r--r--src/python/grpcio_tests/tests/tests.json1
-rw-r--r--src/python/grpcio_tests/tests/unit/_resource_exhausted_test.py270
-rw-r--r--src/ruby/.rubocop.yml1
-rw-r--r--src/ruby/end2end/README.md18
-rwxr-xr-xsrc/ruby/end2end/channel_closing_client.rb84
-rwxr-xr-xsrc/ruby/end2end/channel_closing_driver.rb67
-rwxr-xr-xsrc/ruby/end2end/channel_state_client.rb54
-rwxr-xr-xsrc/ruby/end2end/channel_state_driver.rb64
-rwxr-xr-xsrc/ruby/end2end/end2end_common.rb109
-rw-r--r--src/ruby/end2end/gen_protos.sh32
-rw-r--r--src/ruby/end2end/lib/client_control_pb.rb17
-rw-r--r--src/ruby/end2end/lib/client_control_services_pb.rb53
-rw-r--r--src/ruby/end2end/lib/echo_pb.rb18
-rw-r--r--src/ruby/end2end/lib/echo_services_pb.rb52
-rw-r--r--src/ruby/end2end/protos/client_control.proto43
-rw-r--r--src/ruby/end2end/protos/echo.proto46
-rwxr-xr-xsrc/ruby/end2end/sig_handling_client.rb89
-rwxr-xr-xsrc/ruby/end2end/sig_handling_driver.rb61
-rwxr-xr-xsrc/ruby/end2end/sig_int_during_channel_watch_client.rb70
-rwxr-xr-xsrc/ruby/end2end/sig_int_during_channel_watch_driver.rb69
-rw-r--r--src/ruby/ext/grpc/extconf.rb1
-rw-r--r--src/ruby/ext/grpc/rb_channel.c331
-rw-r--r--src/ruby/ext/grpc/rb_grpc_imports.generated.c6
-rw-r--r--src/ruby/ext/grpc/rb_grpc_imports.generated.h9
-rw-r--r--src/ruby/spec/channel_connection_spec.rb141
-rw-r--r--src/ruby/spec/channel_spec.rb29
-rw-r--r--templates/CMakeLists.txt.template97
-rw-r--r--templates/Makefile.template60
-rw-r--r--templates/binding.gyp.template24
-rw-r--r--templates/gRPC-Core.podspec.template10
-rw-r--r--templates/gRPC-ProtoRPC.podspec.template2
-rw-r--r--templates/gRPC-RxLibrary.podspec.template2
-rw-r--r--templates/gRPC.podspec.template2
-rw-r--r--templates/package.json.template7
-rw-r--r--templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.template4
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template2
-rw-r--r--test/build/c-ares.c (renamed from src/core/ext/client_channel/default_initial_connect_string.c)15
-rw-r--r--test/core/bad_client/bad_client.c10
-rw-r--r--test/core/channel/channel_stack_test.c16
-rw-r--r--test/core/client_channel/BUILD7
-rw-r--r--test/core/client_channel/resolvers/dns_resolver_connectivity_test.c16
-rw-r--r--test/core/client_channel/set_initial_connect_string_test.c268
-rw-r--r--test/core/end2end/bad_server_response_test.c2
-rw-r--r--test/core/end2end/connection_refused_test.c2
-rw-r--r--test/core/end2end/end2end_tests.h7
-rw-r--r--test/core/end2end/fixtures/http_proxy_fixture.c2
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer.c12
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6723650944237568bin0 -> 669 bytes
-rw-r--r--test/core/end2end/goaway_server_test.c30
-rw-r--r--test/core/end2end/tests/filter_call_init_fails.c8
-rw-r--r--test/core/end2end/tests/filter_causes_close.c4
-rw-r--r--test/core/end2end/tests/filter_latency.c4
-rw-r--r--test/core/end2end/tests/network_status_change.c4
-rw-r--r--test/core/end2end/tests/resource_quota_server.c4
-rw-r--r--test/core/http/httpcli_test.c4
-rw-r--r--test/core/http/httpscli_test.c4
-rw-r--r--test/core/iomgr/endpoint_tests.c14
-rw-r--r--test/core/iomgr/error_test.c123
-rw-r--r--test/core/iomgr/ev_epoll_linux_test.c2
-rw-r--r--test/core/iomgr/fd_posix_test.c2
-rw-r--r--test/core/iomgr/pollset_set_test.c3
-rw-r--r--test/core/iomgr/tcp_client_posix_test.c5
-rw-r--r--test/core/iomgr/tcp_client_uv_test.c5
-rw-r--r--test/core/iomgr/tcp_server_posix_test.c5
-rw-r--r--test/core/iomgr/tcp_server_uv_test.c3
-rw-r--r--test/core/iomgr/udp_server_test.c89
-rw-r--r--test/core/memory_usage/client.c5
-rw-r--r--test/core/security/secure_endpoint_test.c10
-rw-r--r--test/core/security/ssl_server_fuzzer.c5
-rw-r--r--test/core/support/cpu_test.c7
-rw-r--r--test/core/surface/concurrent_connectivity_test.c3
-rw-r--r--test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112bin0 -> 172032 bytes
-rw-r--r--test/core/util/mock_endpoint.c5
-rw-r--r--test/core/util/passthru_endpoint.c15
-rw-r--r--test/core/util/reconnect_server.c3
-rw-r--r--test/cpp/common/channel_arguments_test.cc23
-rw-r--r--test/cpp/microbenchmarks/bm_call_create.cc234
-rw-r--r--test/cpp/microbenchmarks/bm_chttp2_transport.cc587
-rw-r--r--test/cpp/microbenchmarks/bm_error.cc72
-rw-r--r--test/cpp/microbenchmarks/bm_fullstack_streaming_ping_pong.cc225
-rw-r--r--test/http2_test/http2_base_server.py35
-rw-r--r--test/http2_test/http2_server_health_check.py49
-rw-r--r--test/http2_test/http2_test_server.py31
-rw-r--r--test/http2_test/test_data_frame_padding.py94
-rw-r--r--third_party/cares/ares_build.h254
m---------third_party/cares/cares0
-rw-r--r--third_party/cares/cares.BUILD94
-rw-r--r--third_party/cares/config_darwin/ares_config.h523
-rw-r--r--third_party/cares/config_linux/ares_config.h524
-rw-r--r--tools/buildgen/generate_build_additions.sh1
-rwxr-xr-xtools/buildgen/plugins/expand_bin_attrs.py2
-rwxr-xr-xtools/buildgen/plugins/expand_filegroups.py1
-rw-r--r--tools/buildgen/plugins/make_fuzzer_tests.py2
-rwxr-xr-xtools/distrib/check_copyright.py4
-rw-r--r--tools/distrib/python/grpcio_tools/setup.py4
-rw-r--r--tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile2
-rw-r--r--tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile2
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile2
-rw-r--r--tools/doxygen/Doxyfile.c++3
-rw-r--r--tools/doxygen/Doxyfile.c++.internal3
-rw-r--r--tools/doxygen/Doxyfile.core4
-rw-r--r--tools/doxygen/Doxyfile.core.internal23
-rwxr-xr-xtools/internal_ci/linux/grpc_interop_badserver_java.sh2
-rwxr-xr-xtools/internal_ci/linux/grpc_interop_badserver_python.sh2
-rw-r--r--tools/internal_ci/linux/grpc_portability.cfg2
-rwxr-xr-xtools/jenkins/comment_on_pr.sh45
-rwxr-xr-xtools/jenkins/run_interop.sh2
-rwxr-xr-xtools/jenkins/run_performance.sh5
-rw-r--r--tools/profiling/microbenchmarks/bm_json.py12
-rw-r--r--tools/run_tests/artifacts/build_artifact_node.bat2
-rwxr-xr-xtools/run_tests/artifacts/build_artifact_node.sh2
-rw-r--r--tools/run_tests/generated/sources_and_headers.json119
-rw-r--r--tools/run_tests/generated/tests.json5026
-rwxr-xr-xtools/run_tests/helper_scripts/run_ruby_end2end_tests.sh41
-rw-r--r--tools/run_tests/interop/interop_html_report.template10
-rwxr-xr-xtools/run_tests/python_utils/dockerjob.py20
-rw-r--r--tools/run_tests/python_utils/report_utils.py11
-rwxr-xr-xtools/run_tests/run_interop_tests.py179
-rwxr-xr-xtools/run_tests/run_microbenchmark.py34
-rwxr-xr-xtools/run_tests/run_tests.py13
-rwxr-xr-xtools/run_tests/run_tests_matrix.py34
-rwxr-xr-xtools/run_tests/sanity/check_submodules.sh1
-rw-r--r--tools/tsan_suppressions.txt4
-rw-r--r--vsprojects/buildtests_c.sln28
-rw-r--r--vsprojects/grpc.sln21
-rw-r--r--vsprojects/vcxproj/ares/ares.vcxproj284
-rw-r--r--vsprojects/vcxproj/ares/ares.vcxproj.filters245
-rw-r--r--vsprojects/vcxproj/gpr/gpr.vcxproj2
-rw-r--r--vsprojects/vcxproj/gpr/gpr.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj33
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj.filters63
-rw-r--r--vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj15
-rw-r--r--vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters33
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj31
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters66
-rw-r--r--vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj202
-rw-r--r--vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj.filters21
326 files changed, 18218 insertions, 3248 deletions
diff --git a/.gitmodules b/.gitmodules
index c8ca8ab046..0f003693e4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -23,3 +23,7 @@
[submodule "third_party/boringssl-with-bazel"]
path = third_party/boringssl-with-bazel
url = https://boringssl.googlesource.com/boringssl
+[submodule "third_party/cares/cares"]
+ path = third_party/cares/cares
+ url = https://github.com/c-ares/c-ares.git
+ branch = cares-1_12_0
diff --git a/BUILD b/BUILD
index 5a2e7a72e9..d6598487fb 100644
--- a/BUILD
+++ b/BUILD
@@ -37,11 +37,11 @@ package(default_visibility = ["//visibility:public"])
load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_proto_plugin")
-g_stands_for = "good"
+g_stands_for = "green"
-core_version = "2.0.0-dev"
+core_version = "3.0.0-dev"
-version = "1.1.0-dev"
+version = "1.2.0"
grpc_cc_library(
name = "gpr",
@@ -67,6 +67,7 @@ grpc_cc_library(
"grpc_lb_policy_pick_first",
"grpc_lb_policy_round_robin",
"grpc_load_reporting",
+ "grpc_resolver_dns_ares",
"grpc_resolver_dns_native",
"grpc_resolver_sockaddr",
"grpc_secure",
@@ -309,6 +310,8 @@ grpc_cc_library(
"src/core/lib/profiling/basic_timers.c",
"src/core/lib/profiling/stap_timers.c",
"src/core/lib/support/alloc.c",
+ "src/core/lib/support/arena.c",
+ "src/core/lib/support/atm.c",
"src/core/lib/support/avl.c",
"src/core/lib/support/backoff.c",
"src/core/lib/support/cmdline.c",
@@ -353,6 +356,7 @@ grpc_cc_library(
],
hdrs = [
"src/core/lib/profiling/timers.h",
+ "src/core/lib/support/arena.h",
"src/core/lib/support/backoff.h",
"src/core/lib/support/block_annotate.h",
"src/core/lib/support/env.h",
@@ -469,6 +473,7 @@ grpc_cc_library(
"src/core/lib/iomgr/resolve_address_windows.c",
"src/core/lib/iomgr/resource_quota.c",
"src/core/lib/iomgr/sockaddr_utils.c",
+ "src/core/lib/iomgr/socket_factory_posix.c",
"src/core/lib/iomgr/socket_mutator.c",
"src/core/lib/iomgr/socket_utils_common_posix.c",
"src/core/lib/iomgr/socket_utils_linux.c",
@@ -481,6 +486,9 @@ grpc_cc_library(
"src/core/lib/iomgr/tcp_client_windows.c",
"src/core/lib/iomgr/tcp_posix.c",
"src/core/lib/iomgr/tcp_server_posix.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix_common.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c",
"src/core/lib/iomgr/tcp_server_uv.c",
"src/core/lib/iomgr/tcp_server_windows.c",
"src/core/lib/iomgr/tcp_uv.c",
@@ -503,6 +511,7 @@ grpc_cc_library(
"src/core/lib/json/json_reader.c",
"src/core/lib/json/json_string.c",
"src/core/lib/json/json_writer.c",
+ "src/core/lib/security/util/b64.c",
"src/core/lib/slice/percent_encoding.c",
"src/core/lib/slice/slice.c",
"src/core/lib/slice/slice_buffer.c",
@@ -521,6 +530,7 @@ grpc_cc_library(
"src/core/lib/surface/channel_ping.c",
"src/core/lib/surface/channel_stack_type.c",
"src/core/lib/surface/completion_queue.c",
+ "src/core/lib/surface/completion_queue_factory.c",
"src/core/lib/surface/event_string.c",
"src/core/lib/surface/lame_client.c",
"src/core/lib/surface/metadata_array.c",
@@ -591,6 +601,7 @@ grpc_cc_library(
"src/core/lib/iomgr/sockaddr_posix.h",
"src/core/lib/iomgr/sockaddr_utils.h",
"src/core/lib/iomgr/sockaddr_windows.h",
+ "src/core/lib/iomgr/socket_factory_posix.h",
"src/core/lib/iomgr/socket_mutator.h",
"src/core/lib/iomgr/socket_utils.h",
"src/core/lib/iomgr/socket_utils_posix.h",
@@ -599,6 +610,7 @@ grpc_cc_library(
"src/core/lib/iomgr/tcp_client_posix.h",
"src/core/lib/iomgr/tcp_posix.h",
"src/core/lib/iomgr/tcp_server.h",
+ "src/core/lib/iomgr/tcp_server_utils_posix.h",
"src/core/lib/iomgr/tcp_uv.h",
"src/core/lib/iomgr/tcp_windows.h",
"src/core/lib/iomgr/time_averaged_stats.h",
@@ -618,6 +630,7 @@ grpc_cc_library(
"src/core/lib/json/json_common.h",
"src/core/lib/json/json_reader.h",
"src/core/lib/json/json_writer.h",
+ "src/core/lib/security/util/b64.h",
"src/core/lib/slice/percent_encoding.h",
"src/core/lib/slice/slice_hash_table.h",
"src/core/lib/slice/slice_internal.h",
@@ -629,6 +642,7 @@ grpc_cc_library(
"src/core/lib/surface/channel_init.h",
"src/core/lib/surface/channel_stack_type.h",
"src/core/lib/surface/completion_queue.h",
+ "src/core/lib/surface/completion_queue_factory.h",
"src/core/lib/surface/event_string.h",
"src/core/lib/surface/init.h",
"src/core/lib/surface/lame_client.h",
@@ -679,10 +693,8 @@ grpc_cc_library(
"src/core/ext/client_channel/client_channel_factory.c",
"src/core/ext/client_channel/client_channel_plugin.c",
"src/core/ext/client_channel/connector.c",
- "src/core/ext/client_channel/default_initial_connect_string.c",
"src/core/ext/client_channel/http_connect_handshaker.c",
"src/core/ext/client_channel/http_proxy.c",
- "src/core/ext/client_channel/initial_connect_string.c",
"src/core/ext/client_channel/lb_policy.c",
"src/core/ext/client_channel/lb_policy_factory.c",
"src/core/ext/client_channel/lb_policy_registry.c",
@@ -692,6 +704,7 @@ grpc_cc_library(
"src/core/ext/client_channel/resolver.c",
"src/core/ext/client_channel/resolver_factory.c",
"src/core/ext/client_channel/resolver_registry.c",
+ "src/core/ext/client_channel/retry_throttle.c",
"src/core/ext/client_channel/subchannel.c",
"src/core/ext/client_channel/subchannel_index.c",
"src/core/ext/client_channel/uri_parser.c",
@@ -702,7 +715,6 @@ grpc_cc_library(
"src/core/ext/client_channel/connector.h",
"src/core/ext/client_channel/http_connect_handshaker.h",
"src/core/ext/client_channel/http_proxy.h",
- "src/core/ext/client_channel/initial_connect_string.h",
"src/core/ext/client_channel/lb_policy.h",
"src/core/ext/client_channel/lb_policy_factory.h",
"src/core/ext/client_channel/lb_policy_registry.h",
@@ -712,6 +724,7 @@ grpc_cc_library(
"src/core/ext/client_channel/resolver.h",
"src/core/ext/client_channel/resolver_factory.h",
"src/core/ext/client_channel/resolver_registry.h",
+ "src/core/ext/client_channel/retry_throttle.h",
"src/core/ext/client_channel/subchannel.h",
"src/core/ext/client_channel/subchannel_index.h",
"src/core/ext/client_channel/uri_parser.h",
@@ -841,6 +854,27 @@ grpc_cc_library(
)
grpc_cc_library(
+ name = "grpc_resolver_dns_ares",
+ srcs = [
+ "src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c",
+ ],
+ hdrs = [
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h",
+ ],
+ language = "c",
+ deps = [
+ "grpc_base",
+ "grpc_client_channel",
+ ],
+ external_deps = [
+ "cares",
+ ],
+)
+
+grpc_cc_library(
name = "grpc_resolver_sockaddr",
srcs = [
"src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 180f416609..c9d0098539 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,6 +60,9 @@ endif()
set(gRPC_ZLIB_PROVIDER "module" CACHE STRING "Provider of zlib library")
set_property(CACHE gRPC_ZLIB_PROVIDER PROPERTY STRINGS "module" "package")
+set(gRPC_CARES_PROVIDER "module" CACHE STRING "Provider of c-ares library")
+set_property(CACHE gRPC_CARES_PROVIDER PROPERTY STRINGS "module" "package")
+
set(gRPC_SSL_PROVIDER "module" CACHE STRING "Provider of ssl library")
set_property(CACHE gRPC_SSL_PROVIDER PROPERTY STRINGS "module" "package")
@@ -126,6 +129,37 @@ elseif("${gRPC_ZLIB_PROVIDER}" STREQUAL "package")
set(_gRPC_FIND_ZLIB "if(NOT ZLIB_FOUND)\n find_package(ZLIB)\nendif()")
endif()
+if("${gRPC_CARES_PROVIDER}" STREQUAL "module")
+ if(NOT CARES_ROOT_DIR)
+ set(CARES_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/c-ares)
+ endif()
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} CARES_SYSTEM_NAME)
+ set(CARES_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cares/cares")
+ set(CARES_BUILD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cares")
+ set(CARES_PLATFORM_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/cares/config_${CARES_SYSTEM_NAME}")
+ if(EXISTS "${CARES_ROOT_DIR}/CMakeLists.txt")
+ if("${CARES_SYSTEM_NAME}" MATCHES "windows")
+ add_definitions(-DCARES_STATICLIB=1)
+ add_definitions(-DWIN32_LEAN_AND_MEAN=1)
+ else()
+ add_definitions(-DHAVE_CONFIG_H=1)
+ add_definitions(-D_GNU_SOURCE=1)
+ endif()
+ add_subdirectory(src/c-ares third_party/cares)
+ if(TARGET cares)
+ set(_gRPC_CARES_LIBRARIES cares)
+ endif()
+ else()
+ message(WARNING "gRPC_CARES_PROVIDER is \"module\" but CARES_ROOT_DIR is wrong")
+ endif()
+elseif("${gRPC_CARES_PROVIDER}" STREQUAL "package")
+ find_package(CARES)
+ if(TARGET CARES::CARES)
+ set(_gRPC_CARES_LIBRARIES CARES::CARES)
+ endif()
+ set(_gRPC_FIND_CARES "if(NOT CARES_FOUND)\n find_package(CARES)\nendif()")
+endif()
+
if("${gRPC_PROTOBUF_PROVIDER}" STREQUAL "module")
# Building the protobuf tests require gmock what is not part of a standard protobuf checkout.
# Disable them unless they are explicitly requested from the cmake command line (when we assume
@@ -277,7 +311,7 @@ function(protobuf_generate_grpc_cpp)
file(RELATIVE_PATH REL_FIL ${CMAKE_SOURCE_DIR} ${ABS_FIL})
get_filename_component(REL_DIR ${REL_FIL} DIRECTORY)
set(RELFIL_WE "${REL_DIR}/${FIL_WE}")
-
+
add_custom_command(
OUTPUT "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.cc"
"${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.h"
@@ -293,7 +327,7 @@ function(protobuf_generate_grpc_cpp)
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Running gRPC C++ protocol buffer compiler on ${FIL}"
VERBATIM)
-
+
set_source_files_properties("${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.cc" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.h" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.pb.cc" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.pb.h" PROPERTIES GENERATED TRUE)
endforeach()
endfunction()
@@ -457,7 +491,6 @@ add_dependencies(buildtests_c secure_endpoint_test)
add_dependencies(buildtests_c sequential_connectivity_test)
add_dependencies(buildtests_c server_chttp2_test)
add_dependencies(buildtests_c server_test)
-add_dependencies(buildtests_c set_initial_connect_string_test)
add_dependencies(buildtests_c slice_buffer_test)
add_dependencies(buildtests_c slice_string_helpers_test)
add_dependencies(buildtests_c slice_test)
@@ -584,6 +617,9 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_chttp2_hpack)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+add_dependencies(buildtests_cxx bm_chttp2_transport)
+endif()
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_closure)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
@@ -698,6 +734,7 @@ add_library(gpr
src/core/lib/profiling/stap_timers.c
src/core/lib/support/alloc.c
src/core/lib/support/arena.c
+ src/core/lib/support/atm.c
src/core/lib/support/avl.c
src/core/lib/support/backoff.c
src/core/lib/support/cmdline.c
@@ -761,6 +798,10 @@ target_include_directories(gpr
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -850,6 +891,10 @@ target_include_directories(gpr_test_util
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -910,6 +955,7 @@ add_library(grpc
src/core/lib/iomgr/resolve_address_windows.c
src/core/lib/iomgr/resource_quota.c
src/core/lib/iomgr/sockaddr_utils.c
+ src/core/lib/iomgr/socket_factory_posix.c
src/core/lib/iomgr/socket_mutator.c
src/core/lib/iomgr/socket_utils_common_posix.c
src/core/lib/iomgr/socket_utils_linux.c
@@ -922,6 +968,9 @@ add_library(grpc
src/core/lib/iomgr/tcp_client_windows.c
src/core/lib/iomgr/tcp_posix.c
src/core/lib/iomgr/tcp_server_posix.c
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
src/core/lib/iomgr/tcp_server_uv.c
src/core/lib/iomgr/tcp_server_windows.c
src/core/lib/iomgr/tcp_uv.c
@@ -944,6 +993,7 @@ add_library(grpc
src/core/lib/json/json_reader.c
src/core/lib/json/json_string.c
src/core/lib/json/json_writer.c
+ src/core/lib/security/util/b64.c
src/core/lib/slice/percent_encoding.c
src/core/lib/slice/slice.c
src/core/lib/slice/slice_buffer.c
@@ -962,6 +1012,7 @@ add_library(grpc
src/core/lib/surface/channel_ping.c
src/core/lib/surface/channel_stack_type.c
src/core/lib/surface/completion_queue.c
+ src/core/lib/surface/completion_queue_factory.c
src/core/lib/surface/event_string.c
src/core/lib/surface/lame_client.c
src/core/lib/surface/metadata_array.c
@@ -1025,7 +1076,6 @@ add_library(grpc
src/core/lib/security/transport/security_handshaker.c
src/core/lib/security/transport/server_auth_filter.c
src/core/lib/security/transport/tsi_error.c
- src/core/lib/security/util/b64.c
src/core/lib/security/util/json_util.c
src/core/lib/surface/init_secure.c
src/core/lib/tsi/fake_transport_security.c
@@ -1038,10 +1088,8 @@ add_library(grpc
src/core/ext/client_channel/client_channel_factory.c
src/core/ext/client_channel/client_channel_plugin.c
src/core/ext/client_channel/connector.c
- src/core/ext/client_channel/default_initial_connect_string.c
src/core/ext/client_channel/http_connect_handshaker.c
src/core/ext/client_channel/http_proxy.c
- src/core/ext/client_channel/initial_connect_string.c
src/core/ext/client_channel/lb_policy.c
src/core/ext/client_channel/lb_policy_factory.c
src/core/ext/client_channel/lb_policy_registry.c
@@ -1051,6 +1099,7 @@ add_library(grpc
src/core/ext/client_channel/resolver.c
src/core/ext/client_channel/resolver_factory.c
src/core/ext/client_channel/resolver_registry.c
+ src/core/ext/client_channel/retry_throttle.c
src/core/ext/client_channel/subchannel.c
src/core/ext/client_channel/subchannel_index.c
src/core/ext/client_channel/uri_parser.c
@@ -1068,6 +1117,9 @@ add_library(grpc
third_party/nanopb/pb_encode.c
src/core/ext/lb_policy/pick_first/pick_first.c
src/core/ext/lb_policy/round_robin/round_robin.c
+ src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
+ src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
+ src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
src/core/ext/resolver/dns/native/dns_resolver.c
src/core/ext/resolver/sockaddr/sockaddr_resolver.c
src/core/ext/load_reporting/load_reporting.c
@@ -1109,6 +1161,10 @@ target_include_directories(grpc
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -1116,6 +1172,7 @@ target_link_libraries(grpc
${_gRPC_BASELIB_LIBRARIES}
${_gRPC_SSL_LIBRARIES}
${_gRPC_ZLIB_LIBRARIES}
+ ${_gRPC_CARES_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES}
gpr
)
@@ -1219,6 +1276,7 @@ add_library(grpc_cronet
src/core/lib/iomgr/resolve_address_windows.c
src/core/lib/iomgr/resource_quota.c
src/core/lib/iomgr/sockaddr_utils.c
+ src/core/lib/iomgr/socket_factory_posix.c
src/core/lib/iomgr/socket_mutator.c
src/core/lib/iomgr/socket_utils_common_posix.c
src/core/lib/iomgr/socket_utils_linux.c
@@ -1231,6 +1289,9 @@ add_library(grpc_cronet
src/core/lib/iomgr/tcp_client_windows.c
src/core/lib/iomgr/tcp_posix.c
src/core/lib/iomgr/tcp_server_posix.c
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
src/core/lib/iomgr/tcp_server_uv.c
src/core/lib/iomgr/tcp_server_windows.c
src/core/lib/iomgr/tcp_uv.c
@@ -1253,6 +1314,7 @@ add_library(grpc_cronet
src/core/lib/json/json_reader.c
src/core/lib/json/json_string.c
src/core/lib/json/json_writer.c
+ src/core/lib/security/util/b64.c
src/core/lib/slice/percent_encoding.c
src/core/lib/slice/slice.c
src/core/lib/slice/slice_buffer.c
@@ -1271,6 +1333,7 @@ add_library(grpc_cronet
src/core/lib/surface/channel_ping.c
src/core/lib/surface/channel_stack_type.c
src/core/lib/surface/completion_queue.c
+ src/core/lib/surface/completion_queue_factory.c
src/core/lib/surface/event_string.c
src/core/lib/surface/lame_client.c
src/core/lib/surface/metadata_array.c
@@ -1320,10 +1383,8 @@ add_library(grpc_cronet
src/core/ext/client_channel/client_channel_factory.c
src/core/ext/client_channel/client_channel_plugin.c
src/core/ext/client_channel/connector.c
- src/core/ext/client_channel/default_initial_connect_string.c
src/core/ext/client_channel/http_connect_handshaker.c
src/core/ext/client_channel/http_proxy.c
- src/core/ext/client_channel/initial_connect_string.c
src/core/ext/client_channel/lb_policy.c
src/core/ext/client_channel/lb_policy_factory.c
src/core/ext/client_channel/lb_policy_registry.c
@@ -1333,6 +1394,7 @@ add_library(grpc_cronet
src/core/ext/client_channel/resolver.c
src/core/ext/client_channel/resolver_factory.c
src/core/ext/client_channel/resolver_registry.c
+ src/core/ext/client_channel/retry_throttle.c
src/core/ext/client_channel/subchannel.c
src/core/ext/client_channel/subchannel_index.c
src/core/ext/client_channel/uri_parser.c
@@ -1358,7 +1420,6 @@ add_library(grpc_cronet
src/core/lib/security/transport/security_handshaker.c
src/core/lib/security/transport/server_auth_filter.c
src/core/lib/security/transport/tsi_error.c
- src/core/lib/security/util/b64.c
src/core/lib/security/util/json_util.c
src/core/lib/surface/init_secure.c
src/core/lib/tsi/fake_transport_security.c
@@ -1390,6 +1451,10 @@ target_include_directories(grpc_cronet
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -1519,6 +1584,7 @@ add_library(grpc_test_util
src/core/lib/iomgr/resolve_address_windows.c
src/core/lib/iomgr/resource_quota.c
src/core/lib/iomgr/sockaddr_utils.c
+ src/core/lib/iomgr/socket_factory_posix.c
src/core/lib/iomgr/socket_mutator.c
src/core/lib/iomgr/socket_utils_common_posix.c
src/core/lib/iomgr/socket_utils_linux.c
@@ -1531,6 +1597,9 @@ add_library(grpc_test_util
src/core/lib/iomgr/tcp_client_windows.c
src/core/lib/iomgr/tcp_posix.c
src/core/lib/iomgr/tcp_server_posix.c
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
src/core/lib/iomgr/tcp_server_uv.c
src/core/lib/iomgr/tcp_server_windows.c
src/core/lib/iomgr/tcp_uv.c
@@ -1553,6 +1622,7 @@ add_library(grpc_test_util
src/core/lib/json/json_reader.c
src/core/lib/json/json_string.c
src/core/lib/json/json_writer.c
+ src/core/lib/security/util/b64.c
src/core/lib/slice/percent_encoding.c
src/core/lib/slice/slice.c
src/core/lib/slice/slice_buffer.c
@@ -1571,6 +1641,7 @@ add_library(grpc_test_util
src/core/lib/surface/channel_ping.c
src/core/lib/surface/channel_stack_type.c
src/core/lib/surface/completion_queue.c
+ src/core/lib/surface/completion_queue_factory.c
src/core/lib/surface/event_string.c
src/core/lib/surface/lame_client.c
src/core/lib/surface/metadata_array.c
@@ -1612,6 +1683,10 @@ target_include_directories(grpc_test_util
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -1701,6 +1776,10 @@ target_include_directories(grpc_test_util_unsecure
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -1765,6 +1844,7 @@ add_library(grpc_unsecure
src/core/lib/iomgr/resolve_address_windows.c
src/core/lib/iomgr/resource_quota.c
src/core/lib/iomgr/sockaddr_utils.c
+ src/core/lib/iomgr/socket_factory_posix.c
src/core/lib/iomgr/socket_mutator.c
src/core/lib/iomgr/socket_utils_common_posix.c
src/core/lib/iomgr/socket_utils_linux.c
@@ -1777,6 +1857,9 @@ add_library(grpc_unsecure
src/core/lib/iomgr/tcp_client_windows.c
src/core/lib/iomgr/tcp_posix.c
src/core/lib/iomgr/tcp_server_posix.c
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
src/core/lib/iomgr/tcp_server_uv.c
src/core/lib/iomgr/tcp_server_windows.c
src/core/lib/iomgr/tcp_uv.c
@@ -1799,6 +1882,7 @@ add_library(grpc_unsecure
src/core/lib/json/json_reader.c
src/core/lib/json/json_string.c
src/core/lib/json/json_writer.c
+ src/core/lib/security/util/b64.c
src/core/lib/slice/percent_encoding.c
src/core/lib/slice/slice.c
src/core/lib/slice/slice_buffer.c
@@ -1817,6 +1901,7 @@ add_library(grpc_unsecure
src/core/lib/surface/channel_ping.c
src/core/lib/surface/channel_stack_type.c
src/core/lib/surface/completion_queue.c
+ src/core/lib/surface/completion_queue_factory.c
src/core/lib/surface/event_string.c
src/core/lib/surface/lame_client.c
src/core/lib/surface/metadata_array.c
@@ -1868,10 +1953,8 @@ add_library(grpc_unsecure
src/core/ext/client_channel/client_channel_factory.c
src/core/ext/client_channel/client_channel_plugin.c
src/core/ext/client_channel/connector.c
- src/core/ext/client_channel/default_initial_connect_string.c
src/core/ext/client_channel/http_connect_handshaker.c
src/core/ext/client_channel/http_proxy.c
- src/core/ext/client_channel/initial_connect_string.c
src/core/ext/client_channel/lb_policy.c
src/core/ext/client_channel/lb_policy_factory.c
src/core/ext/client_channel/lb_policy_registry.c
@@ -1881,9 +1964,13 @@ add_library(grpc_unsecure
src/core/ext/client_channel/resolver.c
src/core/ext/client_channel/resolver_factory.c
src/core/ext/client_channel/resolver_registry.c
+ src/core/ext/client_channel/retry_throttle.c
src/core/ext/client_channel/subchannel.c
src/core/ext/client_channel/subchannel_index.c
src/core/ext/client_channel/uri_parser.c
+ src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
+ src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
+ src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
src/core/ext/resolver/dns/native/dns_resolver.c
src/core/ext/resolver/sockaddr/sockaddr_resolver.c
src/core/ext/load_reporting/load_reporting.c
@@ -1934,6 +2021,10 @@ target_include_directories(grpc_unsecure
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -2017,6 +2108,10 @@ target_include_directories(reconnect_server
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -2057,6 +2152,10 @@ target_include_directories(test_tcp_server
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -2136,6 +2235,10 @@ target_include_directories(grpc++
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -2372,6 +2475,7 @@ add_library(grpc++_cronet
src/core/lib/iomgr/resolve_address_windows.c
src/core/lib/iomgr/resource_quota.c
src/core/lib/iomgr/sockaddr_utils.c
+ src/core/lib/iomgr/socket_factory_posix.c
src/core/lib/iomgr/socket_mutator.c
src/core/lib/iomgr/socket_utils_common_posix.c
src/core/lib/iomgr/socket_utils_linux.c
@@ -2384,6 +2488,9 @@ add_library(grpc++_cronet
src/core/lib/iomgr/tcp_client_windows.c
src/core/lib/iomgr/tcp_posix.c
src/core/lib/iomgr/tcp_server_posix.c
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
src/core/lib/iomgr/tcp_server_uv.c
src/core/lib/iomgr/tcp_server_windows.c
src/core/lib/iomgr/tcp_uv.c
@@ -2406,6 +2513,7 @@ add_library(grpc++_cronet
src/core/lib/json/json_reader.c
src/core/lib/json/json_string.c
src/core/lib/json/json_writer.c
+ src/core/lib/security/util/b64.c
src/core/lib/slice/percent_encoding.c
src/core/lib/slice/slice.c
src/core/lib/slice/slice_buffer.c
@@ -2424,6 +2532,7 @@ add_library(grpc++_cronet
src/core/lib/surface/channel_ping.c
src/core/lib/surface/channel_stack_type.c
src/core/lib/surface/completion_queue.c
+ src/core/lib/surface/completion_queue_factory.c
src/core/lib/surface/event_string.c
src/core/lib/surface/lame_client.c
src/core/lib/surface/metadata_array.c
@@ -2449,10 +2558,8 @@ add_library(grpc++_cronet
src/core/ext/client_channel/client_channel_factory.c
src/core/ext/client_channel/client_channel_plugin.c
src/core/ext/client_channel/connector.c
- src/core/ext/client_channel/default_initial_connect_string.c
src/core/ext/client_channel/http_connect_handshaker.c
src/core/ext/client_channel/http_proxy.c
- src/core/ext/client_channel/initial_connect_string.c
src/core/ext/client_channel/lb_policy.c
src/core/ext/client_channel/lb_policy_factory.c
src/core/ext/client_channel/lb_policy_registry.c
@@ -2462,6 +2569,7 @@ add_library(grpc++_cronet
src/core/ext/client_channel/resolver.c
src/core/ext/client_channel/resolver_factory.c
src/core/ext/client_channel/resolver_registry.c
+ src/core/ext/client_channel/retry_throttle.c
src/core/ext/client_channel/subchannel.c
src/core/ext/client_channel/subchannel_index.c
src/core/ext/client_channel/uri_parser.c
@@ -2507,6 +2615,10 @@ target_include_directories(grpc++_cronet
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -2676,6 +2788,10 @@ target_include_directories(grpc++_proto_reflection_desc_db
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -2732,6 +2848,10 @@ target_include_directories(grpc++_reflection
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -2787,6 +2907,10 @@ target_include_directories(grpc++_test_config
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -2860,6 +2984,10 @@ target_include_directories(grpc++_test_util
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -2997,6 +3125,10 @@ target_include_directories(grpc++_unsecure
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -3147,6 +3279,10 @@ target_include_directories(grpc_benchmark
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3202,6 +3338,10 @@ target_include_directories(grpc_cli_libs
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3257,6 +3397,10 @@ target_include_directories(grpc_plugin_support
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -3333,6 +3477,10 @@ target_include_directories(http2_client_main
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3384,6 +3532,10 @@ target_include_directories(interop_client_helper
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3450,6 +3602,10 @@ target_include_directories(interop_client_main
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3497,6 +3653,10 @@ target_include_directories(interop_server_helper
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3562,6 +3722,10 @@ target_include_directories(interop_server_lib
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3609,6 +3773,10 @@ target_include_directories(interop_server_main
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3693,6 +3861,10 @@ target_include_directories(qps
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -3734,6 +3906,10 @@ target_include_directories(grpc_csharp_ext
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -3755,6 +3931,94 @@ endif()
if (gRPC_BUILD_TESTS)
+add_library(ares
+ third_party/cares/cares/ares__close_sockets.c
+ third_party/cares/cares/ares__get_hostent.c
+ third_party/cares/cares/ares__read_line.c
+ third_party/cares/cares/ares__timeval.c
+ third_party/cares/cares/ares_cancel.c
+ third_party/cares/cares/ares_create_query.c
+ third_party/cares/cares/ares_data.c
+ third_party/cares/cares/ares_destroy.c
+ third_party/cares/cares/ares_expand_name.c
+ third_party/cares/cares/ares_expand_string.c
+ third_party/cares/cares/ares_fds.c
+ third_party/cares/cares/ares_free_hostent.c
+ third_party/cares/cares/ares_free_string.c
+ third_party/cares/cares/ares_getenv.c
+ third_party/cares/cares/ares_gethostbyaddr.c
+ third_party/cares/cares/ares_gethostbyname.c
+ third_party/cares/cares/ares_getnameinfo.c
+ third_party/cares/cares/ares_getopt.c
+ third_party/cares/cares/ares_getsock.c
+ third_party/cares/cares/ares_init.c
+ third_party/cares/cares/ares_library_init.c
+ third_party/cares/cares/ares_llist.c
+ third_party/cares/cares/ares_mkquery.c
+ third_party/cares/cares/ares_nowarn.c
+ third_party/cares/cares/ares_options.c
+ third_party/cares/cares/ares_parse_a_reply.c
+ third_party/cares/cares/ares_parse_aaaa_reply.c
+ third_party/cares/cares/ares_parse_mx_reply.c
+ third_party/cares/cares/ares_parse_naptr_reply.c
+ third_party/cares/cares/ares_parse_ns_reply.c
+ third_party/cares/cares/ares_parse_ptr_reply.c
+ third_party/cares/cares/ares_parse_soa_reply.c
+ third_party/cares/cares/ares_parse_srv_reply.c
+ third_party/cares/cares/ares_parse_txt_reply.c
+ third_party/cares/cares/ares_platform.c
+ third_party/cares/cares/ares_process.c
+ third_party/cares/cares/ares_query.c
+ third_party/cares/cares/ares_search.c
+ third_party/cares/cares/ares_send.c
+ third_party/cares/cares/ares_strcasecmp.c
+ third_party/cares/cares/ares_strdup.c
+ third_party/cares/cares/ares_strerror.c
+ third_party/cares/cares/ares_timeout.c
+ third_party/cares/cares/ares_version.c
+ third_party/cares/cares/ares_writev.c
+ third_party/cares/cares/bitncmp.c
+ third_party/cares/cares/inet_net_pton.c
+ third_party/cares/cares/inet_ntop.c
+ third_party/cares/cares/windows_port.c
+)
+
+if(WIN32 AND MSVC)
+ set_target_properties(ares PROPERTIES COMPILE_PDB_NAME "ares"
+ COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+ )
+ if (gRPC_INSTALL)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ares.pdb
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL
+ )
+ endif()
+endif()
+
+
+target_include_directories(ares
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${BENCHMARK}/include
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+)
+
+target_link_libraries(ares
+ ${_gRPC_SSL_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+)
+
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_library(bad_client_test
test/core/bad_client/bad_client.c
)
@@ -3779,6 +4043,10 @@ target_include_directories(bad_client_test
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -3818,6 +4086,10 @@ target_include_directories(bad_ssl_test_server
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -3908,6 +4180,10 @@ target_include_directories(end2end_tests
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -3998,6 +4274,10 @@ target_include_directories(end2end_nosec_tests
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4027,6 +4307,10 @@ target_include_directories(alarm_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4054,6 +4338,10 @@ target_include_directories(algorithm_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4081,6 +4369,10 @@ target_include_directories(alloc_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4106,6 +4398,10 @@ target_include_directories(alpn_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4133,6 +4429,10 @@ target_include_directories(arena_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4158,6 +4458,10 @@ target_include_directories(bad_server_response_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4186,6 +4490,10 @@ target_include_directories(bdp_estimator_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4213,6 +4521,10 @@ target_include_directories(bin_decoder_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4238,6 +4550,10 @@ target_include_directories(bin_encoder_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4263,6 +4579,10 @@ target_include_directories(census_context_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4290,6 +4610,10 @@ target_include_directories(census_resource_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4317,6 +4641,10 @@ target_include_directories(census_trace_context_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4344,6 +4672,10 @@ target_include_directories(channel_create_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4371,6 +4703,10 @@ target_include_directories(chttp2_hpack_encoder_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4398,6 +4734,10 @@ target_include_directories(chttp2_stream_map_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4425,6 +4765,10 @@ target_include_directories(chttp2_varint_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4452,6 +4796,10 @@ target_include_directories(combiner_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4479,6 +4827,10 @@ target_include_directories(compression_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4506,6 +4858,10 @@ target_include_directories(concurrent_connectivity_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4533,6 +4889,10 @@ target_include_directories(connection_refused_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4560,6 +4920,10 @@ target_include_directories(dns_resolver_connectivity_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4587,6 +4951,10 @@ target_include_directories(dns_resolver_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4615,6 +4983,10 @@ target_include_directories(dualstack_socket_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4643,6 +5015,10 @@ target_include_directories(endpoint_pair_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4670,6 +5046,10 @@ target_include_directories(error_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4698,6 +5078,10 @@ target_include_directories(ev_epoll_linux_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4727,6 +5111,10 @@ target_include_directories(fd_conservation_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4756,6 +5144,10 @@ target_include_directories(fd_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4784,6 +5176,10 @@ target_include_directories(fling_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4811,6 +5207,10 @@ target_include_directories(fling_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4839,6 +5239,10 @@ target_include_directories(fling_stream_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4868,6 +5272,10 @@ target_include_directories(fling_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4895,6 +5303,10 @@ target_include_directories(gen_hpack_tables
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4927,6 +5339,10 @@ target_include_directories(gen_legal_metadata_characters
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4957,6 +5373,10 @@ target_include_directories(gen_percent_encoding_tables
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -4989,6 +5409,10 @@ target_include_directories(goaway_server_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5017,6 +5441,10 @@ target_include_directories(gpr_avl_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5042,6 +5470,10 @@ target_include_directories(gpr_backoff_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5067,6 +5499,10 @@ target_include_directories(gpr_cmdline_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5092,6 +5528,10 @@ target_include_directories(gpr_cpu_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5117,6 +5557,10 @@ target_include_directories(gpr_env_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5142,6 +5586,10 @@ target_include_directories(gpr_histogram_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5167,6 +5615,10 @@ target_include_directories(gpr_host_port_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5192,6 +5644,10 @@ target_include_directories(gpr_log_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5217,6 +5673,10 @@ target_include_directories(gpr_mpscq_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5242,6 +5702,10 @@ target_include_directories(gpr_spinlock_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5267,6 +5731,10 @@ target_include_directories(gpr_stack_lockfree_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5292,6 +5760,10 @@ target_include_directories(gpr_string_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5317,6 +5789,10 @@ target_include_directories(gpr_sync_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5342,6 +5818,10 @@ target_include_directories(gpr_thd_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5367,6 +5847,10 @@ target_include_directories(gpr_time_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5392,6 +5876,10 @@ target_include_directories(gpr_tls_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5417,6 +5905,10 @@ target_include_directories(gpr_useful_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5442,6 +5934,10 @@ target_include_directories(grpc_auth_context_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5469,6 +5965,10 @@ target_include_directories(grpc_b64_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5496,6 +5996,10 @@ target_include_directories(grpc_byte_buffer_reader_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5523,6 +6027,10 @@ target_include_directories(grpc_channel_args_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5550,6 +6058,10 @@ target_include_directories(grpc_channel_stack_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5577,6 +6089,10 @@ target_include_directories(grpc_completion_queue_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5604,6 +6120,10 @@ target_include_directories(grpc_completion_queue_threading_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5630,6 +6150,10 @@ target_include_directories(grpc_create_jwt
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5664,6 +6188,10 @@ target_include_directories(grpc_credentials_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5691,6 +6219,10 @@ target_include_directories(grpc_fetch_oauth2
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5718,6 +6250,10 @@ target_include_directories(grpc_invalid_channel_args_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5746,6 +6282,10 @@ target_include_directories(grpc_json_token_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5774,6 +6314,10 @@ target_include_directories(grpc_jwt_verifier_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5800,6 +6344,10 @@ target_include_directories(grpc_print_google_default_creds_token
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5833,6 +6381,10 @@ target_include_directories(grpc_security_connector_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5859,6 +6411,10 @@ target_include_directories(grpc_verify_jwt
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5893,6 +6449,10 @@ target_include_directories(handshake_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5923,6 +6483,10 @@ target_include_directories(handshake_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5952,6 +6516,10 @@ target_include_directories(hpack_parser_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -5979,6 +6547,10 @@ target_include_directories(hpack_table_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6006,6 +6578,10 @@ target_include_directories(http_parser_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6033,6 +6609,10 @@ target_include_directories(httpcli_format_request_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6061,6 +6641,10 @@ target_include_directories(httpcli_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6090,6 +6674,10 @@ target_include_directories(httpscli_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6118,6 +6706,10 @@ target_include_directories(init_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6145,6 +6737,10 @@ target_include_directories(invalid_call_argument_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6172,6 +6768,10 @@ target_include_directories(json_rewrite
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6197,6 +6797,10 @@ target_include_directories(json_rewrite_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6224,6 +6828,10 @@ target_include_directories(json_stream_error_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6251,6 +6859,10 @@ target_include_directories(json_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6278,6 +6890,10 @@ target_include_directories(lame_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6305,6 +6921,10 @@ target_include_directories(lb_policies_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6332,6 +6952,10 @@ target_include_directories(load_file_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6359,6 +6983,10 @@ target_include_directories(memory_profile_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6386,6 +7014,10 @@ target_include_directories(memory_profile_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6414,6 +7046,10 @@ target_include_directories(memory_profile_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6442,6 +7078,10 @@ target_include_directories(message_compress_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6469,6 +7109,10 @@ target_include_directories(mlog_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6496,6 +7140,10 @@ target_include_directories(multiple_server_queues_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6523,6 +7171,10 @@ target_include_directories(murmur_hash_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6548,6 +7200,10 @@ target_include_directories(no_server_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6575,6 +7231,10 @@ target_include_directories(parse_address_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6602,6 +7262,10 @@ target_include_directories(percent_encoding_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6630,6 +7294,10 @@ target_include_directories(pollset_set_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6659,6 +7327,10 @@ target_include_directories(resolve_address_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6687,6 +7359,10 @@ target_include_directories(resolve_address_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6714,6 +7390,10 @@ target_include_directories(resource_quota_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6741,6 +7421,10 @@ target_include_directories(secure_channel_create_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6768,6 +7452,10 @@ target_include_directories(secure_endpoint_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6795,6 +7483,10 @@ target_include_directories(sequential_connectivity_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6822,6 +7514,10 @@ target_include_directories(server_chttp2_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6849,6 +7545,10 @@ target_include_directories(server_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6863,34 +7563,6 @@ target_link_libraries(server_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
-add_executable(set_initial_connect_string_test
- test/core/client_channel/set_initial_connect_string_test.c
-)
-
-
-target_include_directories(set_initial_connect_string_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${BENCHMARK_ROOT_DIR}/include
- PRIVATE ${ZLIB_ROOT_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
-)
-
-target_link_libraries(set_initial_connect_string_test
- ${_gRPC_ALLTARGETS_LIBRARIES}
- test_tcp_server
- grpc_test_util
- grpc
- gpr_test_util
- gpr
-)
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
add_executable(slice_buffer_test
test/core/slice/slice_buffer_test.c
)
@@ -6904,6 +7576,10 @@ target_include_directories(slice_buffer_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6931,6 +7607,10 @@ target_include_directories(slice_string_helpers_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6958,6 +7638,10 @@ target_include_directories(slice_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -6985,6 +7669,10 @@ target_include_directories(sockaddr_resolver_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7012,6 +7700,10 @@ target_include_directories(sockaddr_utils_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7040,6 +7732,10 @@ target_include_directories(socket_utils_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7068,6 +7764,10 @@ target_include_directories(status_conversion_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7095,6 +7795,10 @@ target_include_directories(stream_owned_slice_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7123,6 +7827,10 @@ target_include_directories(tcp_client_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7151,6 +7859,10 @@ target_include_directories(tcp_client_uv_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7179,6 +7891,10 @@ target_include_directories(tcp_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7208,6 +7924,10 @@ target_include_directories(tcp_server_posix_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7236,6 +7956,10 @@ target_include_directories(tcp_server_uv_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7263,6 +7987,10 @@ target_include_directories(time_averaged_stats_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7290,6 +8018,10 @@ target_include_directories(timeout_encoding_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7317,6 +8049,10 @@ target_include_directories(timer_heap_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7344,6 +8080,10 @@ target_include_directories(timer_list_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7371,6 +8111,10 @@ target_include_directories(transport_connectivity_state_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7398,6 +8142,10 @@ target_include_directories(transport_metadata_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7425,6 +8173,10 @@ target_include_directories(transport_pid_controller_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7453,6 +8205,10 @@ target_include_directories(transport_security_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7482,6 +8238,10 @@ target_include_directories(udp_server_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7510,6 +8270,10 @@ target_include_directories(uri_parser_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7538,6 +8302,10 @@ target_include_directories(wakeup_fd_cv_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -7567,6 +8335,10 @@ target_include_directories(alarm_cpp_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7602,6 +8374,10 @@ target_include_directories(async_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7637,6 +8413,10 @@ target_include_directories(auth_property_iterator_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7673,6 +8453,10 @@ target_include_directories(bm_arena
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7712,6 +8496,10 @@ target_include_directories(bm_call_create
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7751,6 +8539,10 @@ target_include_directories(bm_chttp2_hpack
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7776,6 +8568,49 @@ endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+add_executable(bm_chttp2_transport
+ test/cpp/microbenchmarks/bm_chttp2_transport.cc
+ third_party/googletest/src/gtest-all.cc
+)
+
+
+target_include_directories(bm_chttp2_transport
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${BENCHMARK_ROOT_DIR}/include
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+ PRIVATE ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(bm_chttp2_transport
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc_benchmark
+ benchmark
+ grpc++_test_util
+ grpc_test_util
+ grpc++
+ grpc
+ gpr_test_util
+ gpr
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif()
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
add_executable(bm_closure
test/cpp/microbenchmarks/bm_closure.cc
third_party/googletest/src/gtest-all.cc
@@ -7790,6 +8625,10 @@ target_include_directories(bm_closure
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7829,6 +8668,10 @@ target_include_directories(bm_cq
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7868,6 +8711,10 @@ target_include_directories(bm_error
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7907,6 +8754,10 @@ target_include_directories(bm_fullstack_streaming_ping_pong
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7946,6 +8797,10 @@ target_include_directories(bm_fullstack_streaming_pump
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -7985,6 +8840,10 @@ target_include_directories(bm_fullstack_trickle
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8024,6 +8883,10 @@ target_include_directories(bm_fullstack_unary_ping_pong
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8063,6 +8926,10 @@ target_include_directories(bm_metadata
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8102,6 +8969,10 @@ target_include_directories(bm_pollset
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8140,6 +9011,10 @@ target_include_directories(channel_arguments_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8172,6 +9047,10 @@ target_include_directories(channel_filter_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8204,6 +9083,10 @@ target_include_directories(cli_call_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8241,6 +9124,10 @@ target_include_directories(client_crash_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8277,6 +9164,10 @@ target_include_directories(client_crash_test_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8347,6 +9238,10 @@ target_include_directories(codegen_test_full
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8415,6 +9310,10 @@ target_include_directories(codegen_test_minimal
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8444,6 +9343,10 @@ target_include_directories(credentials_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8476,6 +9379,10 @@ target_include_directories(cxx_byte_buffer_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8510,6 +9417,10 @@ target_include_directories(cxx_slice_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8544,6 +9455,10 @@ target_include_directories(cxx_string_ref_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8574,6 +9489,10 @@ target_include_directories(cxx_time_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8608,6 +9527,10 @@ target_include_directories(end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8643,6 +9566,10 @@ target_include_directories(filter_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8678,6 +9605,10 @@ target_include_directories(generic_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8720,6 +9651,10 @@ target_include_directories(golden_file_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8752,6 +9687,10 @@ target_include_directories(grpc_cli
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -8785,6 +9724,10 @@ target_include_directories(grpc_cpp_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8819,6 +9762,10 @@ target_include_directories(grpc_csharp_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8853,6 +9800,10 @@ target_include_directories(grpc_node_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8887,6 +9838,10 @@ target_include_directories(grpc_objective_c_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8921,6 +9876,10 @@ target_include_directories(grpc_php_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8955,6 +9914,10 @@ target_include_directories(grpc_python_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -8989,6 +9952,10 @@ target_include_directories(grpc_ruby_plugin
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
@@ -9039,6 +10006,10 @@ target_include_directories(grpc_tool_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9084,6 +10055,10 @@ target_include_directories(grpclb_api_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9124,6 +10099,10 @@ target_include_directories(grpclb_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9159,6 +10138,10 @@ target_include_directories(health_service_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9194,6 +10177,10 @@ target_include_directories(http2_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9230,6 +10217,10 @@ target_include_directories(hybrid_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9265,6 +10256,10 @@ target_include_directories(interop_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9304,6 +10299,10 @@ target_include_directories(interop_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9345,6 +10344,10 @@ target_include_directories(interop_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9381,6 +10384,10 @@ target_include_directories(json_run_localhost
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9425,6 +10432,10 @@ target_include_directories(metrics_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9458,6 +10469,10 @@ target_include_directories(mock_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9493,6 +10508,10 @@ target_include_directories(noop-benchmark
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9523,6 +10542,10 @@ target_include_directories(proto_server_reflection_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9560,6 +10583,10 @@ target_include_directories(proto_utils_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9592,6 +10619,10 @@ target_include_directories(qps_interarrival_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9629,6 +10660,10 @@ target_include_directories(qps_json_driver
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9667,6 +10702,10 @@ target_include_directories(qps_openloop_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9705,6 +10744,10 @@ target_include_directories(qps_worker
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9763,6 +10806,10 @@ target_include_directories(reconnect_interop_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9820,6 +10867,10 @@ target_include_directories(reconnect_interop_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9858,6 +10909,10 @@ target_include_directories(round_robin_end2end_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9893,6 +10948,10 @@ target_include_directories(secure_auth_context_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9929,6 +10988,10 @@ target_include_directories(secure_sync_unary_ping_pong_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -9966,6 +11029,10 @@ target_include_directories(server_builder_plugin_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10015,6 +11082,10 @@ target_include_directories(server_builder_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10050,6 +11121,10 @@ target_include_directories(server_context_test_spouse_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10085,6 +11160,10 @@ target_include_directories(server_crash_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10121,6 +11200,10 @@ target_include_directories(server_crash_test_client
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10156,6 +11239,10 @@ target_include_directories(shutdown_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10191,6 +11278,10 @@ target_include_directories(status_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10226,6 +11317,10 @@ target_include_directories(streaming_throughput_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10294,6 +11389,10 @@ target_include_directories(stress_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10330,6 +11429,10 @@ target_include_directories(thread_manager_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10363,6 +11466,10 @@ target_include_directories(thread_stress_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10399,6 +11506,10 @@ target_include_directories(writes_per_rpc_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
@@ -10434,6 +11545,10 @@ target_include_directories(public_headers_must_be_c89
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10459,6 +11574,10 @@ target_include_directories(badreq_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10488,6 +11607,10 @@ target_include_directories(connection_prefix_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10517,6 +11640,10 @@ target_include_directories(head_of_line_blocking_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10546,6 +11673,10 @@ target_include_directories(headers_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10575,6 +11706,10 @@ target_include_directories(initial_settings_frame_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10604,6 +11739,10 @@ target_include_directories(large_metadata_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10633,6 +11772,10 @@ target_include_directories(server_registered_method_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10662,6 +11805,10 @@ target_include_directories(simple_request_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10691,6 +11838,10 @@ target_include_directories(unknown_frame_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10720,6 +11871,10 @@ target_include_directories(window_overflow_bad_client_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10750,6 +11905,10 @@ target_include_directories(bad_ssl_cert_server
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10780,6 +11939,10 @@ target_include_directories(bad_ssl_cert_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10808,6 +11971,10 @@ target_include_directories(h2_census_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10836,6 +12003,10 @@ target_include_directories(h2_compress_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10864,6 +12035,10 @@ target_include_directories(h2_fakesec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10893,6 +12068,10 @@ target_include_directories(h2_fd_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10922,6 +12101,10 @@ target_include_directories(h2_full_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10951,6 +12134,10 @@ target_include_directories(h2_full+pipe_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -10980,6 +12167,10 @@ target_include_directories(h2_full+trace_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11008,6 +12199,10 @@ target_include_directories(h2_http_proxy_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11036,6 +12231,10 @@ target_include_directories(h2_load_reporting_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11064,6 +12263,10 @@ target_include_directories(h2_oauth2_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11092,6 +12295,10 @@ target_include_directories(h2_proxy_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11120,6 +12327,10 @@ target_include_directories(h2_sockpair_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11148,6 +12359,10 @@ target_include_directories(h2_sockpair+trace_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11176,6 +12391,10 @@ target_include_directories(h2_sockpair_1byte_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11204,6 +12423,10 @@ target_include_directories(h2_ssl_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11232,6 +12455,10 @@ target_include_directories(h2_ssl_cert_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11260,6 +12487,10 @@ target_include_directories(h2_ssl_proxy_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11289,6 +12520,10 @@ target_include_directories(h2_uds_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11318,6 +12553,10 @@ target_include_directories(h2_census_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11346,6 +12585,10 @@ target_include_directories(h2_compress_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11375,6 +12618,10 @@ target_include_directories(h2_fd_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11404,6 +12651,10 @@ target_include_directories(h2_full_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11433,6 +12684,10 @@ target_include_directories(h2_full+pipe_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11462,6 +12717,10 @@ target_include_directories(h2_full+trace_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11490,6 +12749,10 @@ target_include_directories(h2_http_proxy_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11518,6 +12781,10 @@ target_include_directories(h2_load_reporting_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11546,6 +12813,10 @@ target_include_directories(h2_proxy_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11574,6 +12845,10 @@ target_include_directories(h2_sockpair_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11602,6 +12877,10 @@ target_include_directories(h2_sockpair+trace_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11630,6 +12909,10 @@ target_include_directories(h2_sockpair_1byte_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11659,6 +12942,10 @@ target_include_directories(h2_uds_nosec_test
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11689,6 +12976,10 @@ target_include_directories(api_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11717,6 +13008,10 @@ target_include_directories(client_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11745,6 +13040,10 @@ target_include_directories(hpack_parser_fuzzer_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11773,6 +13072,10 @@ target_include_directories(http_request_fuzzer_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11801,6 +13104,10 @@ target_include_directories(http_response_fuzzer_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11829,6 +13136,10 @@ target_include_directories(json_fuzzer_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11857,6 +13168,10 @@ target_include_directories(nanopb_fuzzer_response_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11885,6 +13200,10 @@ target_include_directories(nanopb_fuzzer_serverlist_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11913,6 +13232,10 @@ target_include_directories(percent_decode_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11941,6 +13264,10 @@ target_include_directories(percent_encode_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11969,6 +13296,10 @@ target_include_directories(server_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -11997,6 +13328,10 @@ target_include_directories(ssl_server_fuzzer_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
@@ -12025,6 +13360,10 @@ target_include_directories(uri_fuzzer_test_one_entry
PRIVATE ${BENCHMARK_ROOT_DIR}/include
PRIVATE ${ZLIB_ROOT_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CARES_BUILD_INCLUDE_DIR}
+ PRIVATE ${CARES_INCLUDE_DIR}
+ PRIVATE ${CARES_PLATFORM_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/cares/cares
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
)
diff --git a/INSTALL.md b/INSTALL.md
index 24f088ea49..89f2f11f9d 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,4 +1,4 @@
-#If you are in a hurry
+# If you are in a hurry
For language-specific installation instructions for gRPC runtime, please
refer to these documents
@@ -14,15 +14,15 @@ refer to these documents
* [Ruby](src/ruby): `gem install grpc`
-#Pre-requisites
+# Pre-requisites
-##Linux
+## Linux
```sh
$ [sudo] apt-get install build-essential autoconf libtool
```
-##Mac OSX
+## Mac OSX
For a Mac system, git is not available by default. You will first need to
install Xcode from the Mac AppStore and then run the following command from a
@@ -32,7 +32,7 @@ terminal:
$ [sudo] xcode-select --install
```
-##Protoc
+## Protoc
By default gRPC uses [protocol buffers](https://github.com/google/protobuf),
you will need the `protoc` compiler to generate stub server and client code.
@@ -43,7 +43,7 @@ repository recursively and it detects that you don't already have it
installed.
-#Build from Source
+# Build from Source
For developers who are interested to contribute, here is how to compile the
gRPC C Core library.
@@ -56,16 +56,16 @@ gRPC C Core library.
$ [sudo] make install
```
-##Windows
+## Windows
There are several ways to build under Windows, of varying complexity depending
on experience with the tools involved.
-###Pre-generated Visual Studio solution
+### Pre-generated Visual Studio solution
The pre-generated VS projects & solution are checked into the repository under the [vsprojects](/vsprojects) directory.
-
-###Building using CMake (with BoringSSL)
+
+### Building using CMake (with BoringSSL)
- Install [CMake](https://cmake.org/download/).
- Install [Active State Perl](http://www.activestate.com/activeperl/) (`choco install activeperl`)
- Install [Ninja](https://ninja-build.org/) (`choco install ninja`)
@@ -81,14 +81,14 @@ The pre-generated VS projects & solution are checked into the repository under t
```
NOTE: Currently you can only use Ninja to build using cmake on Windows (because of the boringssl dependency).
-###msys2 (with mingw)
+### msys2 (with mingw)
The Makefile (and source code) should support msys2's mingw32 and mingw64
compilers. Building with msys2's native compiler is also possible, but
difficult.
This approach requires having [msys2](https://msys2.github.io/) installed.
-
+
```
# Install prerequisites
MSYS2$ pacman -S autoconf automake gcc libtool mingw-w64-x86_64-toolchain perl pkg-config zlib
diff --git a/Makefile b/Makefile
index 2a9cbc382b..ddd1ffb191 100644
--- a/Makefile
+++ b/Makefile
@@ -465,7 +465,7 @@ SHARED_VERSION_CORE = -3
SHARED_VERSION_CPP = -1
SHARED_VERSION_CSHARP = -1
else ifeq ($(SYSTEM),Darwin)
-EXECUTABLE_SUFFIX =
+EXECUTABLE_SUFFIX =
SHARED_EXT_CORE = dylib
SHARED_EXT_CPP = dylib
SHARED_EXT_CSHARP = dylib
@@ -474,7 +474,7 @@ SHARED_VERSION_CORE =
SHARED_VERSION_CPP =
SHARED_VERSION_CSHARP =
else
-EXECUTABLE_SUFFIX =
+EXECUTABLE_SUFFIX =
SHARED_EXT_CORE = so.$(CORE_VERSION)
SHARED_EXT_CPP = so.$(CPP_VERSION)
SHARED_EXT_CSHARP = so.$(CSHARP_VERSION)
@@ -495,6 +495,7 @@ OPENSSL_ALPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.2 openssl
OPENSSL_NPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.1 openssl
ZLIB_CHECK_CMD = $(PKG_CONFIG) --exists zlib
PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.0.0 protobuf
+CARES_CHECK_CMD = $(PKG_CONFIG) --exists libcares
else # HAS_PKG_CONFIG
ifeq ($(SYSTEM),MINGW32)
@@ -508,6 +509,7 @@ OPENSSL_NPN_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/open
BORINGSSL_COMPILE_CHECK_CMD = $(CC) $(CPPFLAGS) -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI) -o $(TMPOUT) test/build/boringssl.c $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/zlib.c -lz $(LDFLAGS)
PROTOBUF_CHECK_CMD = $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(TMPOUT) test/build/protobuf.cc -lprotobuf $(LDFLAGS)
+CARES_CHECK_CMD = $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(TMPOUT) test/build/c-ares.c -lcares $(LDFLAGS)
endif # HAS_PKG_CONFIG
@@ -547,12 +549,17 @@ HAS_SYSTEM_PROTOBUF ?= $(HAS_SYSTEM_PROTOBUF_VERIFY)
ifeq ($(HAS_SYSTEM_PROTOBUF),true)
CACHE_MK += HAS_SYSTEM_PROTOBUF = true,
endif
+HAS_SYSTEM_CARES ?= $(shell $(CARES_CHECK_CMD) 2> /dev/null && echo true || echo false)
+ifeq ($(HAS_SYSTEM_CARES),true)
+CACHE_MK += HAS_SYSTEM_CARES = true,
+endif
else
# override system libraries if the config requires a custom compiled library
HAS_SYSTEM_OPENSSL_ALPN = false
HAS_SYSTEM_OPENSSL_NPN = false
HAS_SYSTEM_ZLIB = false
HAS_SYSTEM_PROTOBUF = false
+HAS_SYSTEM_CARES = false
endif
HAS_PROTOC ?= $(shell $(PROTOC_CHECK_CMD) 2> /dev/null && echo true || echo false)
@@ -611,6 +618,12 @@ else
HAS_EMBEDDED_PROTOBUF = true
endif
+ifeq ($(wildcard third_party/cares/cares/ares.h),)
+HAS_EMBEDDED_CARES = false
+else
+HAS_EMBEDDED_CARES = true
+endif
+
PC_REQUIRES_GRPC =
PC_LIBS_GRPC =
@@ -643,6 +656,37 @@ LIBS += z
endif
endif
+CARES_PKG_CONFIG = false
+
+ifeq ($(HAS_SYSTEM_CARES),false)
+ifeq ($(HAS_EMBEDDED_CARES), true)
+EMBED_CARES ?= true
+else
+DEP_MISSING += cares
+EMBED_CARES ?= broken
+endif
+else
+EMBED_CARES ?= false
+endif
+
+ifeq ($(EMBED_CARES),true)
+CARES_DEP = $(LIBDIR)/$(CONFIG)/libares.a
+CARES_MERGE_OBJS = $(LIBARES_OBJS)
+CARES_MERGE_LIBS = $(LIBDIR)/$(CONFIG)/libares.a
+CPPFLAGS := -Ithird_party/cares -Ithird_party/cares/cares $(CPPFLAGS)
+LDFLAGS := -L$(LIBDIR)/$(CONFIG)/c-ares $(LDFLAGS)
+else
+ifeq ($(HAS_PKG_CONFIG),true)
+PC_REQUIRES_GRPC += libcares
+CPPFLAGS += $(shell $(PKG_CONFIG) --cflags libcares)
+LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libcares)
+LIBS += $(patsubst -l%,%,$(shell $(PKG_CONFIG) --libs-only-l libcares))
+else
+PC_LIBS_GRPC += -lcares
+LIBS += cares
+endif
+endif
+
OPENSSL_PKG_CONFIG = false
PC_REQUIRES_SECURE =
@@ -1018,7 +1062,6 @@ sequential_connectivity_test: $(BINDIR)/$(CONFIG)/sequential_connectivity_test
server_chttp2_test: $(BINDIR)/$(CONFIG)/server_chttp2_test
server_fuzzer: $(BINDIR)/$(CONFIG)/server_fuzzer
server_test: $(BINDIR)/$(CONFIG)/server_test
-set_initial_connect_string_test: $(BINDIR)/$(CONFIG)/set_initial_connect_string_test
slice_buffer_test: $(BINDIR)/$(CONFIG)/slice_buffer_test
slice_string_helpers_test: $(BINDIR)/$(CONFIG)/slice_string_helpers_test
slice_test: $(BINDIR)/$(CONFIG)/slice_test
@@ -1051,6 +1094,7 @@ auth_property_iterator_test: $(BINDIR)/$(CONFIG)/auth_property_iterator_test
bm_arena: $(BINDIR)/$(CONFIG)/bm_arena
bm_call_create: $(BINDIR)/$(CONFIG)/bm_call_create
bm_chttp2_hpack: $(BINDIR)/$(CONFIG)/bm_chttp2_hpack
+bm_chttp2_transport: $(BINDIR)/$(CONFIG)/bm_chttp2_transport
bm_closure: $(BINDIR)/$(CONFIG)/bm_closure
bm_cq: $(BINDIR)/$(CONFIG)/bm_cq
bm_error: $(BINDIR)/$(CONFIG)/bm_error
@@ -1231,6 +1275,7 @@ run_dep_checks:
$(PERFTOOLS_CHECK_CMD) || true
$(PROTOBUF_CHECK_CMD) || true
$(PROTOC_CHECK_VERSION_CMD) || true
+ $(CARES_CHECK_CMD) || true
third_party/protobuf/configure:
$(E) "[AUTOGEN] Preparing protobuf"
@@ -1265,7 +1310,7 @@ plugins: $(PROTOC_PLUGINS)
privatelibs: privatelibs_c privatelibs_cxx
-privatelibs_c: $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libreconnect_server.a $(LIBDIR)/$(CONFIG)/libtest_tcp_server.a $(LIBDIR)/$(CONFIG)/libz.a $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libbad_ssl_test_server.a $(LIBDIR)/$(CONFIG)/libend2end_tests.a $(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a
+privatelibs_c: $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libreconnect_server.a $(LIBDIR)/$(CONFIG)/libtest_tcp_server.a $(LIBDIR)/$(CONFIG)/libz.a $(LIBDIR)/$(CONFIG)/libares.a $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libbad_ssl_test_server.a $(LIBDIR)/$(CONFIG)/libend2end_tests.a $(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a
pc_c: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc.pc
pc_c_unsecure: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc_unsecure.pc
@@ -1383,7 +1428,6 @@ buildtests_c: privatelibs_c \
$(BINDIR)/$(CONFIG)/sequential_connectivity_test \
$(BINDIR)/$(CONFIG)/server_chttp2_test \
$(BINDIR)/$(CONFIG)/server_test \
- $(BINDIR)/$(CONFIG)/set_initial_connect_string_test \
$(BINDIR)/$(CONFIG)/slice_buffer_test \
$(BINDIR)/$(CONFIG)/slice_string_helpers_test \
$(BINDIR)/$(CONFIG)/slice_test \
@@ -1475,6 +1519,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/bm_arena \
$(BINDIR)/$(CONFIG)/bm_call_create \
$(BINDIR)/$(CONFIG)/bm_chttp2_hpack \
+ $(BINDIR)/$(CONFIG)/bm_chttp2_transport \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1592,6 +1637,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/bm_arena \
$(BINDIR)/$(CONFIG)/bm_call_create \
$(BINDIR)/$(CONFIG)/bm_chttp2_hpack \
+ $(BINDIR)/$(CONFIG)/bm_chttp2_transport \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1845,8 +1891,6 @@ test_c: buildtests_c
$(Q) $(BINDIR)/$(CONFIG)/server_chttp2_test || ( echo test server_chttp2_test failed ; exit 1 )
$(E) "[RUN] Testing server_test"
$(Q) $(BINDIR)/$(CONFIG)/server_test || ( echo test server_test failed ; exit 1 )
- $(E) "[RUN] Testing set_initial_connect_string_test"
- $(Q) $(BINDIR)/$(CONFIG)/set_initial_connect_string_test || ( echo test set_initial_connect_string_test failed ; exit 1 )
$(E) "[RUN] Testing slice_buffer_test"
$(Q) $(BINDIR)/$(CONFIG)/slice_buffer_test || ( echo test slice_buffer_test failed ; exit 1 )
$(E) "[RUN] Testing slice_string_helpers_test"
@@ -1939,6 +1983,8 @@ test_cxx: buildtests_cxx
$(Q) $(BINDIR)/$(CONFIG)/bm_call_create || ( echo test bm_call_create failed ; exit 1 )
$(E) "[RUN] Testing bm_chttp2_hpack"
$(Q) $(BINDIR)/$(CONFIG)/bm_chttp2_hpack || ( echo test bm_chttp2_hpack failed ; exit 1 )
+ $(E) "[RUN] Testing bm_chttp2_transport"
+ $(Q) $(BINDIR)/$(CONFIG)/bm_chttp2_transport || ( echo test bm_chttp2_transport failed ; exit 1 )
$(E) "[RUN] Testing bm_closure"
$(Q) $(BINDIR)/$(CONFIG)/bm_closure || ( echo test bm_closure failed ; exit 1 )
$(E) "[RUN] Testing bm_cq"
@@ -2609,6 +2655,7 @@ LIBGPR_SRC = \
src/core/lib/profiling/stap_timers.c \
src/core/lib/support/alloc.c \
src/core/lib/support/arena.c \
+ src/core/lib/support/atm.c \
src/core/lib/support/avl.c \
src/core/lib/support/backoff.c \
src/core/lib/support/cmdline.c \
@@ -2694,7 +2741,7 @@ PUBLIC_HEADERS_C += \
LIBGPR_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGPR_SRC))))
-$(LIBDIR)/$(CONFIG)/libgpr.a: $(ZLIB_DEP) $(LIBGPR_OBJS)
+$(LIBDIR)/$(CONFIG)/libgpr.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBGPR_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgpr.a
@@ -2706,18 +2753,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGPR_OBJS) $(ZLIB_DEP)
+$(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGPR_OBJS) $(ZLIB_DEP) $(CARES_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
-$(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGPR_OBJS) $(ZLIB_DEP)
+$(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGPR_OBJS) $(ZLIB_DEP) $(CARES_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgpr.so.3 -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgpr.so.3 -o $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGPR_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
$(Q) ln -sf $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).so.3
$(Q) ln -sf $(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgpr$(SHARED_VERSION_CORE).so
endif
@@ -2736,7 +2783,7 @@ PUBLIC_HEADERS_C += \
LIBGPR_TEST_UTIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGPR_TEST_UTIL_SRC))))
-$(LIBDIR)/$(CONFIG)/libgpr_test_util.a: $(ZLIB_DEP) $(LIBGPR_TEST_UTIL_OBJS)
+$(LIBDIR)/$(CONFIG)/libgpr_test_util.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBGPR_TEST_UTIL_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgpr_test_util.a
@@ -2802,6 +2849,7 @@ LIBGRPC_SRC = \
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -2814,6 +2862,9 @@ LIBGRPC_SRC = \
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -2836,6 +2887,7 @@ LIBGRPC_SRC = \
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -2854,6 +2906,7 @@ LIBGRPC_SRC = \
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -2917,7 +2970,6 @@ LIBGRPC_SRC = \
src/core/lib/security/transport/security_handshaker.c \
src/core/lib/security/transport/server_auth_filter.c \
src/core/lib/security/transport/tsi_error.c \
- src/core/lib/security/util/b64.c \
src/core/lib/security/util/json_util.c \
src/core/lib/surface/init_secure.c \
src/core/lib/tsi/fake_transport_security.c \
@@ -2930,10 +2982,8 @@ LIBGRPC_SRC = \
src/core/ext/client_channel/client_channel_factory.c \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
- src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_proxy.c \
- src/core/ext/client_channel/initial_connect_string.c \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy_factory.c \
src/core/ext/client_channel/lb_policy_registry.c \
@@ -2943,6 +2993,7 @@ LIBGRPC_SRC = \
src/core/ext/client_channel/resolver.c \
src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_registry.c \
+ src/core/ext/client_channel/retry_throttle.c \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel_index.c \
src/core/ext/client_channel/uri_parser.c \
@@ -2960,6 +3011,9 @@ LIBGRPC_SRC = \
third_party/nanopb/pb_encode.c \
src/core/ext/lb_policy/pick_first/pick_first.c \
src/core/ext/lb_policy/round_robin/round_robin.c \
+ src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c \
src/core/ext/resolver/dns/native/dns_resolver.c \
src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
src/core/ext/load_reporting/load_reporting.c \
@@ -3027,11 +3081,11 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE
else
-$(LIBDIR)/$(CONFIG)/libgrpc.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBGRPC_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBGRPC_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc.a
endif
@@ -3039,18 +3093,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
-$(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
$(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.3
$(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so
endif
@@ -3114,6 +3168,7 @@ LIBGRPC_CRONET_SRC = \
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -3126,6 +3181,9 @@ LIBGRPC_CRONET_SRC = \
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -3148,6 +3206,7 @@ LIBGRPC_CRONET_SRC = \
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -3166,6 +3225,7 @@ LIBGRPC_CRONET_SRC = \
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -3215,10 +3275,8 @@ LIBGRPC_CRONET_SRC = \
src/core/ext/client_channel/client_channel_factory.c \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
- src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_proxy.c \
- src/core/ext/client_channel/initial_connect_string.c \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy_factory.c \
src/core/ext/client_channel/lb_policy_registry.c \
@@ -3228,6 +3286,7 @@ LIBGRPC_CRONET_SRC = \
src/core/ext/client_channel/resolver.c \
src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_registry.c \
+ src/core/ext/client_channel/retry_throttle.c \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel_index.c \
src/core/ext/client_channel/uri_parser.c \
@@ -3253,7 +3312,6 @@ LIBGRPC_CRONET_SRC = \
src/core/lib/security/transport/security_handshaker.c \
src/core/lib/security/transport/server_auth_filter.c \
src/core/lib/security/transport/tsi_error.c \
- src/core/lib/security/util/b64.c \
src/core/lib/security/util/json_util.c \
src/core/lib/surface/init_secure.c \
src/core/lib/tsi/fake_transport_security.c \
@@ -3311,11 +3369,11 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_E
else
-$(LIBDIR)/$(CONFIG)/libgrpc_cronet.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc_cronet.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a $(LIBGRPC_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a $(LIBGRPC_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc_cronet.a
endif
@@ -3323,18 +3381,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_CRONET_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_CRONET_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
-$(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_CRONET_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_CRONET_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_cronet.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_cronet.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_CRONET_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
$(Q) ln -sf $(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).so.3
$(Q) ln -sf $(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_cronet$(SHARED_VERSION_CORE).so
endif
@@ -3417,6 +3475,7 @@ LIBGRPC_TEST_UTIL_SRC = \
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -3429,6 +3488,9 @@ LIBGRPC_TEST_UTIL_SRC = \
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -3451,6 +3513,7 @@ LIBGRPC_TEST_UTIL_SRC = \
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -3469,6 +3532,7 @@ LIBGRPC_TEST_UTIL_SRC = \
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -3576,7 +3640,7 @@ PUBLIC_HEADERS_C += \
LIBGRPC_TEST_UTIL_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_TEST_UTIL_UNSECURE_SRC))))
-$(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a: $(ZLIB_DEP) $(LIBGRPC_TEST_UTIL_UNSECURE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBGRPC_TEST_UTIL_UNSECURE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a
@@ -3643,6 +3707,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -3655,6 +3720,9 @@ LIBGRPC_UNSECURE_SRC = \
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -3677,6 +3745,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -3695,6 +3764,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -3746,10 +3816,8 @@ LIBGRPC_UNSECURE_SRC = \
src/core/ext/client_channel/client_channel_factory.c \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
- src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_proxy.c \
- src/core/ext/client_channel/initial_connect_string.c \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy_factory.c \
src/core/ext/client_channel/lb_policy_registry.c \
@@ -3759,9 +3827,13 @@ LIBGRPC_UNSECURE_SRC = \
src/core/ext/client_channel/resolver.c \
src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_registry.c \
+ src/core/ext/client_channel/retry_throttle.c \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel_index.c \
src/core/ext/client_channel/uri_parser.c \
+ src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c \
src/core/ext/resolver/dns/native/dns_resolver.c \
src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
src/core/ext/load_reporting/load_reporting.c \
@@ -3826,11 +3898,11 @@ PUBLIC_HEADERS_C += \
LIBGRPC_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_UNSECURE_SRC))))
-$(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a: $(ZLIB_DEP) $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a
endif
@@ -3838,18 +3910,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_UNSECURE_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a
+$(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_UNSECURE_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
-$(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_UNSECURE_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a
+$(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_UNSECURE_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_unsecure.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_unsecure.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_UNSECURE_OBJS) $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
$(Q) ln -sf $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).so.3
$(Q) ln -sf $(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure$(SHARED_VERSION_CORE).so
endif
@@ -4103,11 +4175,11 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP
else
-$(LIBDIR)/$(CONFIG)/libgrpc++.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc++.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBGRPC++_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBGRPC++_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++.a
endif
@@ -4115,18 +4187,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc$(SHARED_VERSION_CORE)-dll
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc$(SHARED_VERSION_CORE)-dll
else
-$(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.$(SHARED_EXT_CORE) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.$(SHARED_EXT_CORE) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc
$(Q) ln -sf $(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).so.1
$(Q) ln -sf $(SHARED_PREFIX)grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++$(SHARED_VERSION_CPP).so
endif
@@ -4252,6 +4324,7 @@ LIBGRPC++_CRONET_SRC = \
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -4264,6 +4337,9 @@ LIBGRPC++_CRONET_SRC = \
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -4286,6 +4362,7 @@ LIBGRPC++_CRONET_SRC = \
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -4304,6 +4381,7 @@ LIBGRPC++_CRONET_SRC = \
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -4329,10 +4407,8 @@ LIBGRPC++_CRONET_SRC = \
src/core/ext/client_channel/client_channel_factory.c \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
- src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_proxy.c \
- src/core/ext/client_channel/initial_connect_string.c \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy_factory.c \
src/core/ext/client_channel/lb_policy_registry.c \
@@ -4342,6 +4418,7 @@ LIBGRPC++_CRONET_SRC = \
src/core/ext/client_channel/resolver.c \
src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_registry.c \
+ src/core/ext/client_channel/retry_throttle.c \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel_index.c \
src/core/ext/client_channel/uri_parser.c \
@@ -4496,11 +4573,11 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_
else
-$(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBGRPC++_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBGRPC++_CRONET_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(OPENSSL_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a
endif
@@ -4508,18 +4585,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_CRONET_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_CRONET_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr$(SHARED_VERSION_CORE)-dll -lgrpc_cronet$(SHARED_VERSION_CORE)-dll
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr$(SHARED_VERSION_CORE)-dll -lgrpc_cronet$(SHARED_VERSION_CORE)-dll
else
-$(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_CRONET_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_cronet.$(SHARED_EXT_CORE) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_CRONET_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_cronet.$(SHARED_EXT_CORE) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_cronet
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_cronet
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_cronet.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_cronet
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_cronet.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_CRONET_OBJS) $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_cronet
$(Q) ln -sf $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).so.1
$(Q) ln -sf $(SHARED_PREFIX)grpc++_cronet$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_cronet$(SHARED_VERSION_CPP).so
endif
@@ -4631,18 +4708,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/grpc++$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++$(SHARED_VERSION_CPP)-dll
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++$(SHARED_VERSION_CPP)-dll
else
-$(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgrpc++.$(SHARED_EXT_CPP) $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgrpc++.$(SHARED_EXT_CPP) $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_reflection.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_reflection.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_REFLECTION_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgrpc++
$(Q) ln -sf $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).so.1
$(Q) ln -sf $(SHARED_PREFIX)grpc++_reflection$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_reflection$(SHARED_VERSION_CPP).so
endif
@@ -4977,11 +5054,11 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARE
else
-$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS)
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a
endif
@@ -4989,18 +5066,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE)
+$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr$(SHARED_VERSION_CORE)-dll -lgrpc_unsecure$(SHARED_VERSION_CORE)-dll
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr$(SHARED_VERSION_CORE)-dll -lgrpc_unsecure$(SHARED_VERSION_CORE)-dll
else
-$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.$(SHARED_EXT_CORE)
+$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP): $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.$(SHARED_EXT_CORE)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_unsecure
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_unsecure
else
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_unsecure.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_unsecure
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_unsecure.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBGRPC++_UNSECURE_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) -lgpr -lgrpc_unsecure
$(Q) ln -sf $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).so.1
$(Q) ln -sf $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARED_EXT_CPP) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION_CPP).so
endif
@@ -5146,7 +5223,7 @@ $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBGRPC_PLUGIN_SUPPORT_OBJS)
+$(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBGRPC_PLUGIN_SUPPORT_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a
@@ -5579,18 +5656,18 @@ endif
ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP): $(LIBGRPC_CSHARP_EXT_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP): $(LIBGRPC_CSHARP_EXT_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
-$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP): $(LIBGRPC_CSHARP_EXT_OBJS) $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP): $(LIBGRPC_CSHARP_EXT_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
ifeq ($(SYSTEM),Darwin)
- $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
else
- $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(LDLIBS)
+ $(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.3 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBGRPC_CSHARP_EXT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(LDLIBS)
$(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).so.1
$(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION_CSHARP).$(SHARED_EXT_CSHARP) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION_CSHARP).so
endif
@@ -5918,7 +5995,7 @@ LIBBORINGSSL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename
$(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(LIBBORINGSSL_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl.a
@@ -5956,7 +6033,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_TEST_UTIL_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_TEST_UTIL_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a
@@ -5994,7 +6071,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_AES_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_AES_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a
@@ -6032,7 +6109,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ASN1_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ASN1_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a
@@ -6070,7 +6147,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BASE64_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BASE64_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a
@@ -6108,7 +6185,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BIO_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BIO_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a
@@ -6146,7 +6223,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BN_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BN_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a
@@ -6184,7 +6261,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a
@@ -6222,7 +6299,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a
@@ -6260,7 +6337,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_AEAD_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_AEAD_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a
@@ -6298,7 +6375,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a
@@ -6336,7 +6413,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CMAC_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CMAC_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a
@@ -6365,7 +6442,7 @@ LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(a
$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_constant_time_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_constant_time_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_constant_time_test_lib.a
@@ -6401,7 +6478,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ED25519_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ED25519_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a
@@ -6439,7 +6516,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a
@@ -6477,7 +6554,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_X25519_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_X25519_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a
@@ -6515,7 +6592,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_DH_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_DH_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a
@@ -6553,7 +6630,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a
@@ -6582,7 +6659,7 @@ LIBBORINGSSL_DSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .
$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_dsa_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_DSA_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_dsa_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_DSA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_dsa_test_lib.a
@@ -6618,7 +6695,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EC_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EC_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a
@@ -6647,7 +6724,7 @@ LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffi
$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_example_mul_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_example_mul_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_example_mul_lib.a
@@ -6683,7 +6760,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDH_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDH_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a
@@ -6721,7 +6798,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a
@@ -6759,7 +6836,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a
@@ -6797,7 +6874,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a
@@ -6835,7 +6912,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ERR_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ERR_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a
@@ -6873,7 +6950,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a
@@ -6911,7 +6988,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EVP_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_EVP_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a
@@ -6949,7 +7026,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a
@@ -6978,7 +7055,7 @@ LIBBORINGSSL_HKDF_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix
$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_hkdf_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_HKDF_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_hkdf_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_HKDF_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_hkdf_test_lib.a
@@ -7014,7 +7091,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_HMAC_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_HMAC_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a
@@ -7043,7 +7120,7 @@ LIBBORINGSSL_LHASH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix
$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_lhash_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_LHASH_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_lhash_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_LHASH_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_lhash_test_lib.a
@@ -7079,7 +7156,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_GCM_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_GCM_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a
@@ -7117,7 +7194,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a: protobuf_dep_er
else
-$(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a
@@ -7155,7 +7232,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a
@@ -7193,7 +7270,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a
@@ -7231,7 +7308,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_OBJ_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_OBJ_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a
@@ -7269,7 +7346,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a
@@ -7307,7 +7384,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a
@@ -7345,7 +7422,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a
@@ -7374,7 +7451,7 @@ LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuf
$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_refcount_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_refcount_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_refcount_test_lib.a
@@ -7410,7 +7487,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_RSA_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_RSA_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a
@@ -7439,7 +7516,7 @@ LIBBORINGSSL_THREAD_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffi
$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_thread_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_THREAD_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_thread_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_THREAD_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_thread_test_lib.a
@@ -7466,7 +7543,7 @@ LIBBORINGSSL_PKCS7_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix
$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_pkcs7_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_pkcs7_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_pkcs7_test_lib.a
@@ -7502,7 +7579,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_X509_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_X509_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a
@@ -7531,7 +7608,7 @@ LIBBORINGSSL_TAB_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .
$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_tab_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_TAB_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_tab_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_TAB_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_tab_test_lib.a
@@ -7558,7 +7635,7 @@ LIBBORINGSSL_V3NAME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffi
$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
-$(LIBDIR)/$(CONFIG)/libboringssl_v3name_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_v3name_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_v3name_test_lib.a
@@ -7594,7 +7671,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_SSL_TEST_LIB_OBJS)
+$(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_SSL_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a
@@ -7643,7 +7720,7 @@ $(LIBDIR)/$(CONFIG)/libbenchmark.a: protobuf_dep_error
else
-$(LIBDIR)/$(CONFIG)/libbenchmark.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBENCHMARK_OBJS)
+$(LIBDIR)/$(CONFIG)/libbenchmark.a: $(ZLIB_DEP) $(CARES_DEP) $(PROTOBUF_DEP) $(LIBBENCHMARK_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libbenchmark.a
@@ -7685,7 +7762,7 @@ LIBZ_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBZ_
$(LIBZ_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-implicit-function-declaration $(W_NO_SHIFT_NEGATIVE_VALUE) -fvisibility=hidden
-$(LIBDIR)/$(CONFIG)/libz.a: $(LIBZ_OBJS)
+$(LIBDIR)/$(CONFIG)/libz.a: $(CARES_DEP) $(LIBZ_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libz.a
@@ -7702,6 +7779,81 @@ ifneq ($(NO_DEPS),true)
endif
+LIBARES_SRC = \
+ third_party/cares/cares/ares__close_sockets.c \
+ third_party/cares/cares/ares__get_hostent.c \
+ third_party/cares/cares/ares__read_line.c \
+ third_party/cares/cares/ares__timeval.c \
+ third_party/cares/cares/ares_cancel.c \
+ third_party/cares/cares/ares_create_query.c \
+ third_party/cares/cares/ares_data.c \
+ third_party/cares/cares/ares_destroy.c \
+ third_party/cares/cares/ares_expand_name.c \
+ third_party/cares/cares/ares_expand_string.c \
+ third_party/cares/cares/ares_fds.c \
+ third_party/cares/cares/ares_free_hostent.c \
+ third_party/cares/cares/ares_free_string.c \
+ third_party/cares/cares/ares_getenv.c \
+ third_party/cares/cares/ares_gethostbyaddr.c \
+ third_party/cares/cares/ares_gethostbyname.c \
+ third_party/cares/cares/ares_getnameinfo.c \
+ third_party/cares/cares/ares_getopt.c \
+ third_party/cares/cares/ares_getsock.c \
+ third_party/cares/cares/ares_init.c \
+ third_party/cares/cares/ares_library_init.c \
+ third_party/cares/cares/ares_llist.c \
+ third_party/cares/cares/ares_mkquery.c \
+ third_party/cares/cares/ares_nowarn.c \
+ third_party/cares/cares/ares_options.c \
+ third_party/cares/cares/ares_parse_a_reply.c \
+ third_party/cares/cares/ares_parse_aaaa_reply.c \
+ third_party/cares/cares/ares_parse_mx_reply.c \
+ third_party/cares/cares/ares_parse_naptr_reply.c \
+ third_party/cares/cares/ares_parse_ns_reply.c \
+ third_party/cares/cares/ares_parse_ptr_reply.c \
+ third_party/cares/cares/ares_parse_soa_reply.c \
+ third_party/cares/cares/ares_parse_srv_reply.c \
+ third_party/cares/cares/ares_parse_txt_reply.c \
+ third_party/cares/cares/ares_platform.c \
+ third_party/cares/cares/ares_process.c \
+ third_party/cares/cares/ares_query.c \
+ third_party/cares/cares/ares_search.c \
+ third_party/cares/cares/ares_send.c \
+ third_party/cares/cares/ares_strcasecmp.c \
+ third_party/cares/cares/ares_strdup.c \
+ third_party/cares/cares/ares_strerror.c \
+ third_party/cares/cares/ares_timeout.c \
+ third_party/cares/cares/ares_version.c \
+ third_party/cares/cares/ares_writev.c \
+ third_party/cares/cares/bitncmp.c \
+ third_party/cares/cares/inet_net_pton.c \
+ third_party/cares/cares/inet_ntop.c \
+ third_party/cares/cares/windows_port.c \
+
+PUBLIC_HEADERS_C += \
+
+LIBARES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBARES_SRC))))
+
+$(LIBARES_OBJS): CPPFLAGS += -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DHAVE_CONFIG_H
+$(LIBARES_OBJS): CFLAGS += -Wno-sign-conversion -Wno-invalid-source-encoding
+
+$(LIBDIR)/$(CONFIG)/libares.a: $(ZLIB_DEP) $(LIBARES_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libares.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libares.a $(LIBARES_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libares.a
+endif
+
+
+
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBARES_OBJS:.o=.dep)
+endif
+
+
LIBBAD_CLIENT_TEST_SRC = \
test/core/bad_client/bad_client.c \
@@ -7928,7 +8080,7 @@ PUBLIC_HEADERS_C += \
LIBEND2END_NOSEC_TESTS_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBEND2END_NOSEC_TESTS_SRC))))
-$(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a: $(ZLIB_DEP) $(LIBEND2END_NOSEC_TESTS_OBJS)
+$(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a: $(ZLIB_DEP) $(CARES_DEP) $(LIBEND2END_NOSEC_TESTS_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a
@@ -11693,38 +11845,6 @@ endif
endif
-SET_INITIAL_CONNECT_STRING_TEST_SRC = \
- test/core/client_channel/set_initial_connect_string_test.c \
-
-SET_INITIAL_CONNECT_STRING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SET_INITIAL_CONNECT_STRING_TEST_SRC))))
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL.
-
-$(BINDIR)/$(CONFIG)/set_initial_connect_string_test: openssl_dep_error
-
-else
-
-
-
-$(BINDIR)/$(CONFIG)/set_initial_connect_string_test: $(SET_INITIAL_CONNECT_STRING_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libtest_tcp_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(SET_INITIAL_CONNECT_STRING_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libtest_tcp_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/set_initial_connect_string_test
-
-endif
-
-$(OBJDIR)/$(CONFIG)/test/core/client_channel/set_initial_connect_string_test.o: $(LIBDIR)/$(CONFIG)/libtest_tcp_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
-
-deps_set_initial_connect_string_test: $(SET_INITIAL_CONNECT_STRING_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(SET_INITIAL_CONNECT_STRING_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
SLICE_BUFFER_TEST_SRC = \
test/core/slice/slice_buffer_test.c \
@@ -12815,6 +12935,49 @@ endif
endif
+BM_CHTTP2_TRANSPORT_SRC = \
+ test/cpp/microbenchmarks/bm_chttp2_transport.cc \
+
+BM_CHTTP2_TRANSPORT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BM_CHTTP2_TRANSPORT_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/bm_chttp2_transport: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/bm_chttp2_transport: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/bm_chttp2_transport: $(PROTOBUF_DEP) $(BM_CHTTP2_TRANSPORT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_benchmark.a $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(BM_CHTTP2_TRANSPORT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_benchmark.a $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/bm_chttp2_transport
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_chttp2_transport.o: $(LIBDIR)/$(CONFIG)/libgrpc_benchmark.a $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_bm_chttp2_transport: $(BM_CHTTP2_TRANSPORT_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(BM_CHTTP2_TRANSPORT_OBJS:.o=.dep)
+endif
+endif
+
+
BM_CLOSURE_SRC = \
test/cpp/microbenchmarks/bm_closure.cc \
@@ -18646,7 +18809,6 @@ src/core/lib/security/transport/security_connector.c: $(OPENSSL_DEP)
src/core/lib/security/transport/security_handshaker.c: $(OPENSSL_DEP)
src/core/lib/security/transport/server_auth_filter.c: $(OPENSSL_DEP)
src/core/lib/security/transport/tsi_error.c: $(OPENSSL_DEP)
-src/core/lib/security/util/b64.c: $(OPENSSL_DEP)
src/core/lib/security/util/json_util.c: $(OPENSSL_DEP)
src/core/lib/surface/init_secure.c: $(OPENSSL_DEP)
src/core/lib/tsi/fake_transport_security.c: $(OPENSSL_DEP)
diff --git a/PYTHON-MANIFEST.in b/PYTHON-MANIFEST.in
index adeb390649..846530532d 100644
--- a/PYTHON-MANIFEST.in
+++ b/PYTHON-MANIFEST.in
@@ -7,6 +7,7 @@ graft include/grpc
graft third_party/boringssl
graft third_party/nanopb
graft third_party/zlib
+graft third_party/c-ares
include src/python/grpcio/_spawn_patch.py
include src/python/grpcio/commands.py
include src/python/grpcio/grpc_version.py
diff --git a/README.md b/README.md
index 174e861f59..adcfdf10b8 100644
--- a/README.md
+++ b/README.md
@@ -7,11 +7,11 @@
Copyright 2015 Google Inc.
-#Documentation
+# Documentation
You can find more detailed documentation and examples in the [doc](doc) and [examples](examples) directories respectively.
-#Installation & Testing
+# Installation & Testing
See [INSTALL](INSTALL.md) for installation instructions for various platforms.
@@ -19,7 +19,7 @@ See [tools/run_tests](tools/run_tests) for more guidance on how to run various t
See [Performance dashboard](http://performance-dot-grpc-testing.appspot.com/explore?dashboard=5712453606309888) for the performance numbers for v1.0.x.
-#Repository Structure & Status
+# Repository Structure & Status
This repository contains source code for gRPC libraries for multiple languages written on top of shared C core library [src/core] (src/core).
@@ -37,14 +37,14 @@ Libraries in different languages may be in different states of development. We a
| Objective-C | [src/objective-c] (src/objective-c) | 1.0 |
<small>
-Java source code is in the [grpc-java] (http://github.com/grpc/grpc-java) repository.
-Go source code is in the [grpc-go] (http://github.com/grpc/grpc-go) repository.
+Java source code is in the [grpc-java](http://github.com/grpc/grpc-java) repository.
+Go source code is in the [grpc-go](http://github.com/grpc/grpc-go) repository.
</small>
See [MANIFEST.md](MANIFEST.md) for a listing of top-level items in the
repository.
-#Overview
+# Overview
Remote Procedure Calls (RPCs) provide a useful abstraction for building
@@ -54,7 +54,7 @@ These libraries enable communication between clients and servers using any
combination of the supported languages.
-##Interface
+## Interface
Developers using gRPC typically start with the description of an RPC service
@@ -66,7 +66,7 @@ Interface Definition Language (IDL) for describing both the service interface
and the structure of the payload messages. It is possible to use other
alternatives if desired.
-###Surface API
+### Surface API
Starting from an interface definition in a .proto file, gRPC provides
Protocol Compiler plugins that generate Client- and Server-side APIs.
gRPC users typically call into these APIs on the Client side and implement
@@ -94,7 +94,7 @@ the client and the server can send a stream of messages to each other. The strea
messages are delivered in the order they were sent.
-#Protocol
+# Protocol
The [gRPC protocol](doc/PROTOCOL-HTTP2.md) specifies the abstract requirements for communication between
clients and servers. A concrete embedding over HTTP/2 completes the picture by
diff --git a/Rakefile b/Rakefile
index 12ac12710f..cc02aa130a 100755
--- a/Rakefile
+++ b/Rakefile
@@ -12,7 +12,8 @@ load 'tools/distrib/docker_for_windows.rb'
# Add rubocop style checking tasks
RuboCop::RakeTask.new(:rubocop) do |task|
task.options = ['-c', 'src/ruby/.rubocop.yml']
- task.patterns = ['src/ruby/{lib,spec}/**/*.rb']
+ # add end2end tests to formatter but don't add generated proto _pb.rb's
+ task.patterns = ['src/ruby/{lib,spec}/**/*.rb', 'src/ruby/end2end/*.rb']
end
spec = Gem::Specification.load('grpc.gemspec')
diff --git a/WORKSPACE b/WORKSPACE
index f27159d4af..da63c5fea8 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -29,6 +29,11 @@ bind(
)
bind(
+ name = "cares",
+ actual = "@submodule_cares//:ares",
+)
+
+bind(
name = "gtest",
actual = "@submodule_gtest//:gtest",
)
@@ -67,9 +72,14 @@ local_repository(
path = "third_party/gflags",
)
-# used for tools/grpcz/grpcz_client
git_repository(
name = "mongoose_repo",
commit = "4120a97945b41195a6223a600dae8e3b19bed19e",
remote = "https://github.com/makdharma/mongoose.git"
)
+
+new_local_repository(
+ name = "submodule_cares",
+ path = "third_party/cares",
+ build_file = "third_party/cares/cares.BUILD",
+)
diff --git a/binding.gyp b/binding.gyp
index 59b6b600e9..b91f5f61e2 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -39,11 +39,9 @@
{
'variables': {
'runtime%': 'node',
- # UV integration in C core is disabled by default while bugs are ironed
- # out. It can be re-enabled for one build by setting the npm config
- # variable grpc_uv to true, and it can be re-enabled permanently by
- # setting it to true here.
- 'grpc_uv%': 'false',
+ # UV integration in C core is enabled by default. It can be disabled
+ # by setting this argument to anything else.
+ 'grpc_uv%': 'true',
# Some Node installations use the system installation of OpenSSL, and on
# some systems, the system OpenSSL still does not have ALPN support. This
# will let users recompile gRPC to work without ALPN.
@@ -60,6 +58,9 @@
'conditions': [
['grpc_uv=="true"', {
'defines': [
+ 'GRPC_ARES=0',
+ # Disabling this while bugs are ironed out. Uncomment this to
+ # re-enable libuv integration in C core.
'GRPC_UV'
]
}],
@@ -105,7 +106,8 @@
}],
['OS == "win"', {
"include_dirs": [
- "third_party/zlib"
+ "third_party/zlib",
+ "third_party/cares/cares"
],
"defines": [
'_WIN32_WINNT=0x0600',
@@ -128,7 +130,8 @@
'config': '<!(echo $CONFIG)',
},
'include_dirs': [
- '<(node_root_dir)/deps/zlib'
+ '<(node_root_dir)/deps/zlib',
+ '<(node_root_dir)/deps/cares/include',
],
'conditions': [
['config=="gcov"', {
@@ -529,6 +532,7 @@
}]
],
'targets': [
+
{
'cflags': [
'-std=c99',
@@ -545,6 +549,7 @@
'src/core/lib/profiling/stap_timers.c',
'src/core/lib/support/alloc.c',
'src/core/lib/support/arena.c',
+ 'src/core/lib/support/atm.c',
'src/core/lib/support/avl.c',
'src/core/lib/support/backoff.c',
'src/core/lib/support/cmdline.c',
@@ -606,6 +611,7 @@
'type': 'static_library',
'dependencies': [
'gpr',
+ 'node_modules/cares/deps/cares/cares.gyp:cares',
],
'sources': [
'src/core/lib/surface/init.c',
@@ -656,6 +662,7 @@
'src/core/lib/iomgr/resolve_address_windows.c',
'src/core/lib/iomgr/resource_quota.c',
'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
'src/core/lib/iomgr/socket_mutator.c',
'src/core/lib/iomgr/socket_utils_common_posix.c',
'src/core/lib/iomgr/socket_utils_linux.c',
@@ -668,6 +675,9 @@
'src/core/lib/iomgr/tcp_client_windows.c',
'src/core/lib/iomgr/tcp_posix.c',
'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
'src/core/lib/iomgr/tcp_server_uv.c',
'src/core/lib/iomgr/tcp_server_windows.c',
'src/core/lib/iomgr/tcp_uv.c',
@@ -690,6 +700,7 @@
'src/core/lib/json/json_reader.c',
'src/core/lib/json/json_string.c',
'src/core/lib/json/json_writer.c',
+ 'src/core/lib/security/util/b64.c',
'src/core/lib/slice/percent_encoding.c',
'src/core/lib/slice/slice.c',
'src/core/lib/slice/slice_buffer.c',
@@ -708,6 +719,7 @@
'src/core/lib/surface/channel_ping.c',
'src/core/lib/surface/channel_stack_type.c',
'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
'src/core/lib/surface/event_string.c',
'src/core/lib/surface/lame_client.c',
'src/core/lib/surface/metadata_array.c',
@@ -771,7 +783,6 @@
'src/core/lib/security/transport/security_handshaker.c',
'src/core/lib/security/transport/server_auth_filter.c',
'src/core/lib/security/transport/tsi_error.c',
- 'src/core/lib/security/util/b64.c',
'src/core/lib/security/util/json_util.c',
'src/core/lib/surface/init_secure.c',
'src/core/lib/tsi/fake_transport_security.c',
@@ -784,10 +795,8 @@
'src/core/ext/client_channel/client_channel_factory.c',
'src/core/ext/client_channel/client_channel_plugin.c',
'src/core/ext/client_channel/connector.c',
- 'src/core/ext/client_channel/default_initial_connect_string.c',
'src/core/ext/client_channel/http_connect_handshaker.c',
'src/core/ext/client_channel/http_proxy.c',
- 'src/core/ext/client_channel/initial_connect_string.c',
'src/core/ext/client_channel/lb_policy.c',
'src/core/ext/client_channel/lb_policy_factory.c',
'src/core/ext/client_channel/lb_policy_registry.c',
@@ -797,6 +806,7 @@
'src/core/ext/client_channel/resolver.c',
'src/core/ext/client_channel/resolver_factory.c',
'src/core/ext/client_channel/resolver_registry.c',
+ 'src/core/ext/client_channel/retry_throttle.c',
'src/core/ext/client_channel/subchannel.c',
'src/core/ext/client_channel/subchannel_index.c',
'src/core/ext/client_channel/uri_parser.c',
@@ -814,6 +824,9 @@
'third_party/nanopb/pb_encode.c',
'src/core/ext/lb_policy/pick_first/pick_first.c',
'src/core/ext/lb_policy/round_robin/round_robin.c',
+ 'src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c',
'src/core/ext/resolver/dns/native/dns_resolver.c',
'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
'src/core/ext/load_reporting/load_reporting.c',
@@ -904,6 +917,7 @@
"dependencies": [
"grpc",
"gpr",
+ "node_modules/cares/deps/cares/cares.gyp:cares",
]
},
{
diff --git a/build.yaml b/build.yaml
index 997f55df97..c058733141 100644
--- a/build.yaml
+++ b/build.yaml
@@ -13,7 +13,7 @@ settings:
'#09': Per-language overrides are possible with (eg) ruby_version tag here
'#10': See the expand_version.py for all the quirks here
core_version: 3.0.0-dev
- g_stands_for: green
+ g_stands_for: gentle
version: 1.3.0-dev
filegroups:
- name: census
@@ -103,6 +103,7 @@ filegroups:
- src/core/lib/profiling/stap_timers.c
- src/core/lib/support/alloc.c
- src/core/lib/support/arena.c
+ - src/core/lib/support/atm.c
- src/core/lib/support/avl.c
- src/core/lib/support/backoff.c
- src/core/lib/support/cmdline.c
@@ -222,6 +223,7 @@ filegroups:
- src/core/lib/iomgr/sockaddr_posix.h
- src/core/lib/iomgr/sockaddr_utils.h
- src/core/lib/iomgr/sockaddr_windows.h
+ - src/core/lib/iomgr/socket_factory_posix.h
- src/core/lib/iomgr/socket_mutator.h
- src/core/lib/iomgr/socket_utils.h
- src/core/lib/iomgr/socket_utils_posix.h
@@ -230,6 +232,7 @@ filegroups:
- src/core/lib/iomgr/tcp_client_posix.h
- src/core/lib/iomgr/tcp_posix.h
- src/core/lib/iomgr/tcp_server.h
+ - src/core/lib/iomgr/tcp_server_utils_posix.h
- src/core/lib/iomgr/tcp_uv.h
- src/core/lib/iomgr/tcp_windows.h
- src/core/lib/iomgr/time_averaged_stats.h
@@ -260,6 +263,7 @@ filegroups:
- src/core/lib/surface/channel_init.h
- src/core/lib/surface/channel_stack_type.h
- src/core/lib/surface/completion_queue.h
+ - src/core/lib/surface/completion_queue_factory.h
- src/core/lib/surface/event_string.h
- src/core/lib/surface/init.h
- src/core/lib/surface/lame_client.h
@@ -327,6 +331,7 @@ filegroups:
- src/core/lib/iomgr/resolve_address_windows.c
- src/core/lib/iomgr/resource_quota.c
- src/core/lib/iomgr/sockaddr_utils.c
+ - src/core/lib/iomgr/socket_factory_posix.c
- src/core/lib/iomgr/socket_mutator.c
- src/core/lib/iomgr/socket_utils_common_posix.c
- src/core/lib/iomgr/socket_utils_linux.c
@@ -339,6 +344,9 @@ filegroups:
- src/core/lib/iomgr/tcp_client_windows.c
- src/core/lib/iomgr/tcp_posix.c
- src/core/lib/iomgr/tcp_server_posix.c
+ - src/core/lib/iomgr/tcp_server_utils_posix_common.c
+ - src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
+ - src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
- src/core/lib/iomgr/tcp_server_uv.c
- src/core/lib/iomgr/tcp_server_windows.c
- src/core/lib/iomgr/tcp_uv.c
@@ -361,6 +369,7 @@ filegroups:
- src/core/lib/json/json_reader.c
- src/core/lib/json/json_string.c
- src/core/lib/json/json_writer.c
+ - src/core/lib/security/util/b64.c
- src/core/lib/slice/percent_encoding.c
- src/core/lib/slice/slice.c
- src/core/lib/slice/slice_buffer.c
@@ -379,6 +388,7 @@ filegroups:
- src/core/lib/surface/channel_ping.c
- src/core/lib/surface/channel_stack_type.c
- src/core/lib/surface/completion_queue.c
+ - src/core/lib/surface/completion_queue_factory.c
- src/core/lib/surface/event_string.c
- src/core/lib/surface/lame_client.c
- src/core/lib/surface/metadata_array.c
@@ -409,7 +419,6 @@ filegroups:
- src/core/ext/client_channel/connector.h
- src/core/ext/client_channel/http_connect_handshaker.h
- src/core/ext/client_channel/http_proxy.h
- - src/core/ext/client_channel/initial_connect_string.h
- src/core/ext/client_channel/lb_policy.h
- src/core/ext/client_channel/lb_policy_factory.h
- src/core/ext/client_channel/lb_policy_registry.h
@@ -419,6 +428,7 @@ filegroups:
- src/core/ext/client_channel/resolver.h
- src/core/ext/client_channel/resolver_factory.h
- src/core/ext/client_channel/resolver_registry.h
+ - src/core/ext/client_channel/retry_throttle.h
- src/core/ext/client_channel/subchannel.h
- src/core/ext/client_channel/subchannel_index.h
- src/core/ext/client_channel/uri_parser.h
@@ -428,10 +438,8 @@ filegroups:
- src/core/ext/client_channel/client_channel_factory.c
- src/core/ext/client_channel/client_channel_plugin.c
- src/core/ext/client_channel/connector.c
- - src/core/ext/client_channel/default_initial_connect_string.c
- src/core/ext/client_channel/http_connect_handshaker.c
- src/core/ext/client_channel/http_proxy.c
- - src/core/ext/client_channel/initial_connect_string.c
- src/core/ext/client_channel/lb_policy.c
- src/core/ext/client_channel/lb_policy_factory.c
- src/core/ext/client_channel/lb_policy_registry.c
@@ -441,6 +449,7 @@ filegroups:
- src/core/ext/client_channel/resolver.c
- src/core/ext/client_channel/resolver_factory.c
- src/core/ext/client_channel/resolver_registry.c
+ - src/core/ext/client_channel/retry_throttle.c
- src/core/ext/client_channel/subchannel.c
- src/core/ext/client_channel/subchannel_index.c
- src/core/ext/client_channel/uri_parser.c
@@ -514,6 +523,18 @@ filegroups:
plugin: grpc_load_reporting_plugin
uses:
- grpc_base
+- name: grpc_resolver_dns_ares
+ headers:
+ - src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h
+ - src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h
+ src:
+ - src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
+ - src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
+ - src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
+ plugin: grpc_resolver_dns_ares
+ uses:
+ - grpc_base
+ - grpc_client_channel
- name: grpc_resolver_dns_native
src:
- src/core/ext/resolver/dns/native/dns_resolver.c
@@ -958,6 +979,7 @@ libs:
- grpc_lb_policy_grpclb_secure
- grpc_lb_policy_pick_first
- grpc_lb_policy_round_robin
+ - grpc_resolver_dns_ares
- grpc_resolver_dns_native
- grpc_resolver_sockaddr
- grpc_load_reporting
@@ -1051,6 +1073,7 @@ libs:
- grpc_base
- grpc_transport_chttp2_server_insecure
- grpc_transport_chttp2_client_insecure
+ - grpc_resolver_dns_ares
- grpc_resolver_dns_native
- grpc_resolver_sockaddr
- grpc_load_reporting
@@ -2694,20 +2717,6 @@ targets:
- grpc
- gpr_test_util
- gpr
-- name: set_initial_connect_string_test
- cpu_cost: 0.1
- build: test
- language: c
- src:
- - test/core/client_channel/set_initial_connect_string_test.c
- deps:
- - test_tcp_server
- - grpc_test_util
- - grpc
- - gpr_test_util
- - gpr
- exclude_iomgrs:
- - uv
- name: slice_buffer_test
build: test
language: c
@@ -3124,6 +3133,26 @@ targets:
- mac
- linux
- posix
+- name: bm_chttp2_transport
+ build: test
+ language: c++
+ src:
+ - test/cpp/microbenchmarks/bm_chttp2_transport.cc
+ deps:
+ - grpc_benchmark
+ - benchmark
+ - grpc++_test_util
+ - grpc_test_util
+ - grpc++
+ - grpc
+ - gpr_test_util
+ - gpr
+ args:
+ - --benchmark_min_time=0
+ platforms:
+ - mac
+ - linux
+ - posix
- name: bm_closure
build: test
language: c++
@@ -4296,6 +4325,11 @@ configs:
test_environ:
UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt
defaults:
+ ares:
+ CFLAGS: -Wno-sign-conversion -Wno-invalid-source-encoding
+ CPPFLAGS: -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux)
+ $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden
+ -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DHAVE_CONFIG_H
benchmark:
CPPFLAGS: -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX
boringssl:
@@ -4386,11 +4420,13 @@ python_dependencies:
deps:
- grpc
- gpr
+ - ares
- boringssl
- z
ruby_gem:
deps:
- grpc
- gpr
+ - ares
- boringssl
- z
diff --git a/config.m4 b/config.m4
index f43a031638..b6f0bff7ef 100644
--- a/config.m4
+++ b/config.m4
@@ -40,6 +40,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/profiling/stap_timers.c \
src/core/lib/support/alloc.c \
src/core/lib/support/arena.c \
+ src/core/lib/support/atm.c \
src/core/lib/support/avl.c \
src/core/lib/support/backoff.c \
src/core/lib/support/cmdline.c \
@@ -129,6 +130,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/iomgr/resolve_address_windows.c \
src/core/lib/iomgr/resource_quota.c \
src/core/lib/iomgr/sockaddr_utils.c \
+ src/core/lib/iomgr/socket_factory_posix.c \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_utils_common_posix.c \
src/core/lib/iomgr/socket_utils_linux.c \
@@ -141,6 +143,9 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/iomgr/tcp_client_windows.c \
src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_server_posix.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -163,6 +168,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/json/json_reader.c \
src/core/lib/json/json_string.c \
src/core/lib/json/json_writer.c \
+ src/core/lib/security/util/b64.c \
src/core/lib/slice/percent_encoding.c \
src/core/lib/slice/slice.c \
src/core/lib/slice/slice_buffer.c \
@@ -181,6 +187,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/surface/channel_ping.c \
src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/completion_queue.c \
+ src/core/lib/surface/completion_queue_factory.c \
src/core/lib/surface/event_string.c \
src/core/lib/surface/lame_client.c \
src/core/lib/surface/metadata_array.c \
@@ -244,7 +251,6 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/security/transport/security_handshaker.c \
src/core/lib/security/transport/server_auth_filter.c \
src/core/lib/security/transport/tsi_error.c \
- src/core/lib/security/util/b64.c \
src/core/lib/security/util/json_util.c \
src/core/lib/surface/init_secure.c \
src/core/lib/tsi/fake_transport_security.c \
@@ -257,10 +263,8 @@ if test "$PHP_GRPC" != "no"; then
src/core/ext/client_channel/client_channel_factory.c \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
- src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_proxy.c \
- src/core/ext/client_channel/initial_connect_string.c \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy_factory.c \
src/core/ext/client_channel/lb_policy_registry.c \
@@ -270,6 +274,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/ext/client_channel/resolver.c \
src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_registry.c \
+ src/core/ext/client_channel/retry_throttle.c \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel_index.c \
src/core/ext/client_channel/uri_parser.c \
@@ -287,6 +292,9 @@ if test "$PHP_GRPC" != "no"; then
third_party/nanopb/pb_encode.c \
src/core/ext/lb_policy/pick_first/pick_first.c \
src/core/ext/lb_policy/round_robin/round_robin.c \
+ src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
+ src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c \
src/core/ext/resolver/dns/native/dns_resolver.c \
src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
src/core/ext/load_reporting/load_reporting.c \
@@ -626,6 +634,7 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/pick_first)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/round_robin)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/load_reporting)
+ PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/c_ares)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/native)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/sockaddr)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/alpn)
diff --git a/doc/combiner-explainer.md b/doc/combiner-explainer.md
new file mode 100644
index 0000000000..9e9d077273
--- /dev/null
+++ b/doc/combiner-explainer.md
@@ -0,0 +1,158 @@
+# Combiner Explanation
+## Talk by ctiller, notes by vjpai
+
+Typical way of doing critical section
+
+```
+mu.lock()
+do_stuff()
+mu.unlock()
+```
+
+An alternative way of doing it is
+
+```
+class combiner {
+ run(f) {
+ mu.lock()
+ f()
+ mu.unlock()
+ }
+ mutex mu;
+}
+
+combiner.run(do_stuff)
+```
+
+If you have two threads calling combiner, there will be some kind of
+queuing in place. It's called `combiner` because you can pass in more
+than one do_stuff at once and they will run under a common `mu`.
+
+The implementation described above has the issue that you're blocking a thread
+for a period of time, and this is considered harmful because it's an application thread that you're blocking.
+
+Instead, get a new property:
+* Keep things running in serial execution
+* Don't ever sleep the thread
+* But maybe allow things to end up running on a different thread from where they were started
+* This means that `do_stuff` doesn't necessarily run to completion when `combiner.run` is invoked
+
+```
+class combiner {
+ mpscq q; // multi-producer single-consumer queue can be made non-blocking
+ state s; // is it empty or executing
+
+ run(f) {
+ if (q.push(f)) {
+ // q.push returns true if it's the first thing
+ while (q.pop(&f)) { // modulo some extra work to avoid races
+ f();
+ }
+ }
+ }
+}
+```
+
+The basic idea is that the first one to push onto the combiner
+executes the work and then keeps executing functions from the queue
+until the combiner is drained.
+
+Our combiner does some additional work, with the motivation of write-batching.
+
+We have a second tier of `run` called `run_finally`. Anything queued
+onto `run_finally` runs after we have drained the queue. That means
+that there is essentially a finally-queue. This is not guaranteed to
+be final, but it's best-effort. In the process of running the finally
+item, we might put something onto the main combiner queue and so we'll
+need to re-enter.
+
+`chttp2` runs all ops in the run state except if it sees a write it puts that into a finally. That way anything else that gets put into the combiner can add to that write.
+
+```
+class combiner {
+ mpscq q; // multi-producer single-consumer queue can be made non-blocking
+ state s; // is it empty or executing
+ queue finally; // you can only do run_finally when you are already running something from the combiner
+
+ run(f) {
+ if (q.push(f)) {
+ // q.push returns true if it's the first thing
+ loop:
+ while (q.pop(&f)) { // modulo some extra work to avoid races
+ f();
+ }
+ while (finally.pop(&f)) {
+ f();
+ }
+ goto loop;
+ }
+ }
+}
+```
+
+So that explains how combiners work in general. In gRPC, there is
+`start_batch(..., tag)` and then work only gets activated by somebody
+calling `cq::next` which returns a tag. This gives an API-level
+guarantee that there will be a thread doing polling to actually make
+work happen. However, some operations are not covered by a poller
+thread, such as cancellation that doesn't have a completion. Other
+callbacks that don't have a completion are the internal work that gets
+done before the batch gets completed. We need a condition called
+`covered_by_poller` that means that the item will definitely need some
+thread at some point to call `cq::next` . This includes those
+callbacks that directly cause a completion but also those that are
+indirectly required before getting a completion. If we can't tell for
+sure for a specific path, we have to assumed it is not covered by
+poller.
+
+The above combiner has the problem that it keeps draining for a
+potentially infinite amount of time and that can lead to a huge tail
+latency for some operations. So we can tweak it by returning to the application
+if we know that it is valid to do so:
+
+```
+while (q.pop(&f)) {
+ f();
+ if (control_can_be_returned && some_still_queued_thing_is_covered_by_poller) {
+ offload_combiner_work_to_some_other_thread();
+ }
+}
+```
+
+`offload` is more than `break`; it does `break` but also causes some
+other thread that is currently waiting on a poll to break out of its
+poll. This is done by setting up a per-polling-island work-queue
+(distributor) wakeup FD. The work-queue is the converse of the combiner; it
+tries to spray events onto as many threads as possible to get as much concurrency as possible.
+
+So `offload` really does:
+
+```
+ workqueue.run(continue_from_while_loop);
+ break;
+```
+
+This needs us to add another class variable for a `workqueue`
+(which is really conceptually a distributor).
+
+```
+workqueue::run(f) {
+ q.push(f)
+ eventfd.wakeup()
+}
+
+workqueue::readable() {
+ eventfd.consume();
+ q.pop(&f);
+ f();
+ if (!q.empty()) {
+ eventfd.wakeup(); // spray across as many threads as are waiting on this workqueue
+ }
+}
+```
+
+In principle, `run_finally` could get starved, but this hasn't
+happened in practice. If we were concerned about this, we could put a
+limit on how many things come off the regular `q` before the `finally`
+queue gets processed.
+
diff --git a/doc/core/grpc-error.md b/doc/core/grpc-error.md
new file mode 100644
index 0000000000..c05d1dd909
--- /dev/null
+++ b/doc/core/grpc-error.md
@@ -0,0 +1,160 @@
+# gRPC Error
+
+## Background
+
+`grpc_error` is the c-core's opaque representation of an error. It holds a
+collection of integers, strings, timestamps, and child errors that related to
+the final error.
+
+always present are:
+
+* GRPC_ERROR_STR_FILE and GRPC_ERROR_INT_FILE_LINE - the source location where
+ the error was generated
+* GRPC_ERROR_STR_DESCRIPTION - a human readable description of the error
+* GRPC_ERROR_TIME_CREATED - a timestamp indicating when the error happened
+
+An error can also have children; these are other errors that are believed to
+have contributed to this one. By accumulating children, we can begin to root
+cause high level failures from low level failures, without having to derive
+execution paths from log lines.
+
+grpc_errors are refcounted objects, which means they need strict ownership
+semantics. An extra ref on an error can cause a memory leak, and a missing ref
+can cause a crash.
+
+This document serves as a detailed overview of grpc_error's ownership rules. It
+should help people use the errors, as well as help people debug refcount related
+errors.
+
+## Clarification of Ownership
+
+If a particular function is said to "own" an error, that means it has the
+responsibility of calling unref on the error. A function may have access to an
+error without ownership of it.
+
+This means the function may use the error, but must not call unref on it, since
+that will be done elsewhere in the code. A function that does not own an error
+may explicitly take ownership of it by manually calling GRPC_ERROR_REF.
+
+## Ownership Rules
+
+There are three rules of error ownership, which we will go over in detail.
+
+* If `grpc_error` is returned by a function, the caller owns a ref to that
+ instance.
+* If a `grpc_error` is passed to a `grpc_closure` callback function, then that
+ function does not own a ref to the error.
+* if a `grpc_error` is passed to *any other function*, then that function
+ takes ownership of the error.
+
+### Rule 1
+
+> If `grpc_error` is returned by a function, the caller owns a ref to that
+> instance.*
+
+For example, in the following code block, error1 and error2 are owned by the
+current function.
+
+```C
+grpc_error* error1 = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occured");
+grpc_error* error2 = some_operation_that_might_fail(...);
+```
+
+The current function would have to explicitly call GRPC_ERROR_UNREF on the
+errors, or pass them along to a function that would take over the ownership.
+
+### Rule 2
+
+> If a `grpc_error` is passed to a `grpc_closure` callback function, then that
+> function does not own a ref to the error.
+
+A `grpc_closure` callback function is any function that has the signature:
+
+```C
+void (*cb)(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error);
+```
+
+This means that the error ownership is NOT transferred when a functions calls:
+
+```C
+c->cb(exec_ctx, c->cb_arg, err);
+```
+
+The caller is still responsible for unref-ing the error.
+
+However, the above line is currently being phased out! It is safer to invoke
+callbacks with `grpc_closure_run` and `grpc_closure_sched`. These functions are
+not callbacks, so they will take ownership of the error passed to them.
+
+```C
+grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occured");
+grpc_closure_run(exec_ctx, cb, error);
+// current function no longer has ownership of the error
+```
+
+If you schedule or run a closure, but still need ownership of the error, then
+you must explicitly take a reference.
+
+```C
+grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occured");
+grpc_closure_run(exec_ctx, cb, GRPC_ERROR_REF(error));
+// do some other things with the error
+GRPC_ERROR_UNREF(error);
+```
+
+Rule 2 is more important to keep in mind when **implementing** `grpc_closure`
+callback functions. You must keep in mind that you do not own the error, and
+must not unref it. More importantly, you cannot pass it to any function that
+would take ownership of the error, without explicitly taking ownership yourself.
+For example:
+
+```C
+void on_some_action(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
+ // this would cause a crash, because some_function will unref the error,
+ // and the caller of this callback will also unref it.
+ some_function(error);
+
+ // this callback function must take ownership, so it can give that
+ // ownership to the function it is calling.
+ some_function(GRPC_ERROR_REF(error));
+}
+```
+
+### Rule 3
+
+> if a `grpc_error` is passed to *any other function*, then that function takes
+> ownership of the error.
+
+Take the following example:
+
+```C
+grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error occured");
+// do some things
+some_function(error);
+// can't use error anymore! might be gone.
+```
+
+When some_function is called, it takes over the ownership of the error, and it
+will eventually unref it. So the caller can no longer safely use the error.
+
+If the caller needed to keep using the error (or passing it to other functions),
+if would have to take on a reference to it. This is a common pattern seen.
+
+```C
+void func() {
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Some error");
+ some_function(GRPC_ERROR_REF(error));
+ // do things
+ some_other_function(GRPC_ERROR_REF(error));
+ // do more things
+ some_last_function(error);
+}
+```
+
+The last call takes ownership and will eventually give the error its final
+unref.
+
+When **implementing** a function that takes an error (and is not a
+`grpc_closure` callback function), you must ensure the error is unref-ed either
+by doing it explicitly with GRPC_ERROR_UNREF, or by passing the error to a
+function that takes over the ownership.
diff --git a/doc/environment_variables.md b/doc/environment_variables.md
index a380673233..513936d660 100644
--- a/doc/environment_variables.md
+++ b/doc/environment_variables.md
@@ -69,3 +69,11 @@ some configuration as environment variables that can be set.
- DEBUG - log all gRPC messages
- INFO - log INFO and ERROR message
- ERROR - log only errors
+
+* GRPC_DNS_RESOLVER
+ Declares which DNS resolver to use. The default is ares if gRPC is built with
+ c-ares support. Otherwise, the value of this environment variable is ignored.
+ Available DNS resolver include:
+ - native (default)- a DNS resolver based around getaddrinfo(), creates a new thread to
+ perform name resolution
+ - ares - a DNS resolver based around the c-ares library
diff --git a/doc/g_stands_for.md b/doc/g_stands_for.md
index 53a1fdf193..d2fc7a50f9 100644
--- a/doc/g_stands_for.md
+++ b/doc/g_stands_for.md
@@ -7,3 +7,4 @@ future), and the corresponding version numbers that used them:
- 1.0 'g' stands for 'gRPC'
- 1.1 'g' stands for 'good'
- 1.2 'g' stands for 'green'
+- 1.3 'g' stands for 'gentle'
diff --git a/doc/negative-http2-interop-test-descriptions.md b/doc/http2-interop-test-descriptions.md
index b64fe6a024..435a8de709 100644
--- a/doc/negative-http2-interop-test-descriptions.md
+++ b/doc/http2-interop-test-descriptions.md
@@ -193,3 +193,79 @@ Server Procedure:
1. Sets MAX_CONCURRENT_STREAMS to one after the connection is made.
*The assertion that the MAX_CONCURRENT_STREAMS limit is upheld occurs in the http2 library we used.*
+
+### data_frame_padding
+
+This test verifies that the client can correctly receive padded http2 data
+frames. It also stresses the client's flow control (there is a high chance
+that the sender will deadlock if the client's flow control logic doesn't
+correctly account for padding).
+
+Client Procedure:
+(Note this is the same procedure as in the "large_unary" gRPC interop tests.
+Clients should use their "large_unary" gRPC interop test implementations.)
+Procedure:
+ 1. Client calls UnaryCall with:
+
+ ```
+ {
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+
+Client asserts:
+* call was successful
+* response payload body is 314159 bytes in size
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response message against a golden response
+
+Server Procedure:
+ 1. Reply to the client's request with a `SimpleResponse`, with a payload
+ body length of `SimpleRequest.response_size`. But send it across specific
+ http2 data frames as follows:
+ * Each http2 data frame contains a 5 byte payload and 255 bytes of padding.
+
+ * Note the 5 byte payload and 255 byte padding are partly arbitrary,
+ and other numbers are also ok. With 255 bytes of padding for each 5 bytes of
+ payload containing actual gRPC message, the 300KB response size will
+ multiply into around 15 megabytes of flow control debt, which should stress
+ flow control accounting.
+
+### no_df_padding_sanity_test
+
+This test verifies that the client can correctly receive a series of small
+data frames. Note that this test is intentionally a slight variation of
+"data_frame_padding", with the only difference being that this test doesn't use data
+frame padding when the response is sent. This test is primarily meant to
+prove correctness of the http2 server implementation and highlight failures
+of the "data_frame_padding" test.
+
+Client Procedure:
+(Note this is the same procedure as in the "large_unary" gRPC interop tests.
+Clients should use their "large_unary" gRPC interop test implementations.)
+Procedure:
+ 1. Client calls UnaryCall with:
+
+ ```
+ {
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+
+Client asserts:
+* call was successful
+* response payload body is 314159 bytes in size
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response message against a golden response
+
+Server Procedure:
+ 1. Reply to the client's request with a `SimpleResponse`, with a payload
+ body length of `SimpleRequest.response_size`. But send it across series of
+ http2 data frames that contain 5 bytes of "payload" and zero bytes of
+ "padding" (the padding flags on the data frames should not be set).
diff --git a/examples/node/static_codegen/README.md b/examples/node/static_codegen/README.md
index fc97d34a38..0441b27f25 100644
--- a/examples/node/static_codegen/README.md
+++ b/examples/node/static_codegen/README.md
@@ -1,7 +1,8 @@
-This is the static code generation variant of the Node examples. Code in these examples is pre-generated using protoc and the Node gRPC protoc plugin, and the generated code can be found in various `*_pb.js` files. The command line sequence for generating those files is as follows (assuming that `protoc` and `grpc_node_plugin` are present, and starting in the base directory of this package):
+This is the static code generation variant of the Node examples. Code in these examples is pre-generated using protoc and the Node gRPC protoc plugin, and the generated code can be found in various `*_pb.js` files. The command line sequence for generating those files is as follows (assuming that `protoc` and `grpc_node_plugin` are present, and starting in the directory which contains this README.md file):
```sh
-cd ../protos
-protoc --js_out=import_style=commonjs,binary:../node/static_codegen/ --grpc_out=../node/static_codegen --plugin=protoc-gen-grpc=grpc_node_plugin helloworld.proto
-protoc --js_out=import_style=commonjs,binary:../node/static_codegen/route_guide/ --grpc_out=../node/static_codegen/route_guide/ --plugin=protoc-gen-grpc=grpc_node_plugin route_guide.proto
+cd ../../protos
+npm install -g grpc-tools
+grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/ --grpc_out=../node/static_codegen --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` helloworld.proto
+grpc_tools_node_protoc --js_out=import_style=commonjs,binary:../node/static_codegen/route_guide/ --grpc_out=../node/static_codegen/route_guide/ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` route_guide.proto
```
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 8a5dcbb99c..8ea9e5fbde 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -51,7 +51,7 @@ Pod::Spec.new do |s|
:submodules => true,
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
s.requires_arc = false
@@ -104,6 +104,7 @@ Pod::Spec.new do |s|
}
s.default_subspecs = 'Interface', 'Implementation'
+ s.compiler_flags = '-DGRPC_ARES=0'
# Like many other C libraries, gRPC-Core has its public headers under `include/<libname>/` and its
# sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't
@@ -213,6 +214,7 @@ Pod::Spec.new do |s|
'src/core/lib/profiling/stap_timers.c',
'src/core/lib/support/alloc.c',
'src/core/lib/support/arena.c',
+ 'src/core/lib/support/atm.c',
'src/core/lib/support/avl.c',
'src/core/lib/support/backoff.c',
'src/core/lib/support/cmdline.c',
@@ -303,6 +305,7 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/sockaddr_posix.h',
'src/core/lib/iomgr/sockaddr_utils.h',
'src/core/lib/iomgr/sockaddr_windows.h',
+ 'src/core/lib/iomgr/socket_factory_posix.h',
'src/core/lib/iomgr/socket_mutator.h',
'src/core/lib/iomgr/socket_utils.h',
'src/core/lib/iomgr/socket_utils_posix.h',
@@ -311,6 +314,7 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/tcp_client_posix.h',
'src/core/lib/iomgr/tcp_posix.h',
'src/core/lib/iomgr/tcp_server.h',
+ 'src/core/lib/iomgr/tcp_server_utils_posix.h',
'src/core/lib/iomgr/tcp_uv.h',
'src/core/lib/iomgr/tcp_windows.h',
'src/core/lib/iomgr/time_averaged_stats.h',
@@ -341,6 +345,7 @@ Pod::Spec.new do |s|
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.h',
'src/core/lib/surface/completion_queue.h',
+ 'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.h',
'src/core/lib/surface/init.h',
'src/core/lib/surface/lame_client.h',
@@ -410,7 +415,6 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/connector.h',
'src/core/ext/client_channel/http_connect_handshaker.h',
'src/core/ext/client_channel/http_proxy.h',
- 'src/core/ext/client_channel/initial_connect_string.h',
'src/core/ext/client_channel/lb_policy.h',
'src/core/ext/client_channel/lb_policy_factory.h',
'src/core/ext/client_channel/lb_policy_registry.h',
@@ -420,6 +424,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/resolver.h',
'src/core/ext/client_channel/resolver_factory.h',
'src/core/ext/client_channel/resolver_registry.h',
+ 'src/core/ext/client_channel/retry_throttle.h',
'src/core/ext/client_channel/subchannel.h',
'src/core/ext/client_channel/subchannel_index.h',
'src/core/ext/client_channel/uri_parser.h',
@@ -432,6 +437,8 @@ Pod::Spec.new do |s|
'third_party/nanopb/pb_common.h',
'third_party/nanopb/pb_decode.h',
'third_party/nanopb/pb_encode.h',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h',
'src/core/ext/load_reporting/load_reporting.h',
'src/core/ext/load_reporting/load_reporting_filter.h',
'src/core/ext/census/aggregation.h',
@@ -498,6 +505,7 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/resolve_address_windows.c',
'src/core/lib/iomgr/resource_quota.c',
'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
'src/core/lib/iomgr/socket_mutator.c',
'src/core/lib/iomgr/socket_utils_common_posix.c',
'src/core/lib/iomgr/socket_utils_linux.c',
@@ -510,6 +518,9 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/tcp_client_windows.c',
'src/core/lib/iomgr/tcp_posix.c',
'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
'src/core/lib/iomgr/tcp_server_uv.c',
'src/core/lib/iomgr/tcp_server_windows.c',
'src/core/lib/iomgr/tcp_uv.c',
@@ -532,6 +543,7 @@ Pod::Spec.new do |s|
'src/core/lib/json/json_reader.c',
'src/core/lib/json/json_string.c',
'src/core/lib/json/json_writer.c',
+ 'src/core/lib/security/util/b64.c',
'src/core/lib/slice/percent_encoding.c',
'src/core/lib/slice/slice.c',
'src/core/lib/slice/slice_buffer.c',
@@ -550,6 +562,7 @@ Pod::Spec.new do |s|
'src/core/lib/surface/channel_ping.c',
'src/core/lib/surface/channel_stack_type.c',
'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
'src/core/lib/surface/event_string.c',
'src/core/lib/surface/lame_client.c',
'src/core/lib/surface/metadata_array.c',
@@ -613,7 +626,6 @@ Pod::Spec.new do |s|
'src/core/lib/security/transport/security_handshaker.c',
'src/core/lib/security/transport/server_auth_filter.c',
'src/core/lib/security/transport/tsi_error.c',
- 'src/core/lib/security/util/b64.c',
'src/core/lib/security/util/json_util.c',
'src/core/lib/surface/init_secure.c',
'src/core/lib/tsi/fake_transport_security.c',
@@ -626,10 +638,8 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/client_channel_factory.c',
'src/core/ext/client_channel/client_channel_plugin.c',
'src/core/ext/client_channel/connector.c',
- 'src/core/ext/client_channel/default_initial_connect_string.c',
'src/core/ext/client_channel/http_connect_handshaker.c',
'src/core/ext/client_channel/http_proxy.c',
- 'src/core/ext/client_channel/initial_connect_string.c',
'src/core/ext/client_channel/lb_policy.c',
'src/core/ext/client_channel/lb_policy_factory.c',
'src/core/ext/client_channel/lb_policy_registry.c',
@@ -639,6 +649,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/resolver.c',
'src/core/ext/client_channel/resolver_factory.c',
'src/core/ext/client_channel/resolver_registry.c',
+ 'src/core/ext/client_channel/retry_throttle.c',
'src/core/ext/client_channel/subchannel.c',
'src/core/ext/client_channel/subchannel_index.c',
'src/core/ext/client_channel/uri_parser.c',
@@ -656,6 +667,9 @@ Pod::Spec.new do |s|
'third_party/nanopb/pb_encode.c',
'src/core/ext/lb_policy/pick_first/pick_first.c',
'src/core/ext/lb_policy/round_robin/round_robin.c',
+ 'src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c',
'src/core/ext/resolver/dns/native/dns_resolver.c',
'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
'src/core/ext/load_reporting/load_reporting.c',
@@ -739,6 +753,7 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/sockaddr_posix.h',
'src/core/lib/iomgr/sockaddr_utils.h',
'src/core/lib/iomgr/sockaddr_windows.h',
+ 'src/core/lib/iomgr/socket_factory_posix.h',
'src/core/lib/iomgr/socket_mutator.h',
'src/core/lib/iomgr/socket_utils.h',
'src/core/lib/iomgr/socket_utils_posix.h',
@@ -747,6 +762,7 @@ Pod::Spec.new do |s|
'src/core/lib/iomgr/tcp_client_posix.h',
'src/core/lib/iomgr/tcp_posix.h',
'src/core/lib/iomgr/tcp_server.h',
+ 'src/core/lib/iomgr/tcp_server_utils_posix.h',
'src/core/lib/iomgr/tcp_uv.h',
'src/core/lib/iomgr/tcp_windows.h',
'src/core/lib/iomgr/time_averaged_stats.h',
@@ -777,6 +793,7 @@ Pod::Spec.new do |s|
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.h',
'src/core/lib/surface/completion_queue.h',
+ 'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.h',
'src/core/lib/surface/init.h',
'src/core/lib/surface/lame_client.h',
@@ -846,7 +863,6 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/connector.h',
'src/core/ext/client_channel/http_connect_handshaker.h',
'src/core/ext/client_channel/http_proxy.h',
- 'src/core/ext/client_channel/initial_connect_string.h',
'src/core/ext/client_channel/lb_policy.h',
'src/core/ext/client_channel/lb_policy_factory.h',
'src/core/ext/client_channel/lb_policy_registry.h',
@@ -856,6 +872,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_channel/resolver.h',
'src/core/ext/client_channel/resolver_factory.h',
'src/core/ext/client_channel/resolver_registry.h',
+ 'src/core/ext/client_channel/retry_throttle.h',
'src/core/ext/client_channel/subchannel.h',
'src/core/ext/client_channel/subchannel_index.h',
'src/core/ext/client_channel/uri_parser.h',
@@ -868,6 +885,8 @@ Pod::Spec.new do |s|
'third_party/nanopb/pb_common.h',
'third_party/nanopb/pb_decode.h',
'third_party/nanopb/pb_encode.h',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h',
'src/core/ext/load_reporting/load_reporting.h',
'src/core/ext/load_reporting/load_reporting_filter.h',
'src/core/ext/census/aggregation.h',
@@ -890,8 +909,7 @@ Pod::Spec.new do |s|
s.subspec 'Cronet-Interface' do |ss|
ss.header_mappings_dir = 'include/grpc'
- ss.source_files = 'include/grpc/grpc_cronet.h',
- 'src/core/ext/transport/cronet/transport/cronet_transport.h'
+ ss.source_files = 'include/grpc/grpc_cronet.h'
end
s.subspec 'Cronet-Implementation' do |ss|
@@ -902,7 +920,7 @@ Pod::Spec.new do |s|
ss.dependency "#{s.name}/Cronet-Interface", version
ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
- 'src/core/ext/transport/cronet/transport/cronet_transport.c',
+ 'src/core/ext/transport/cronet/transport/cronet_transport.{c,h}',
'third_party/objective_c/Cronet/bidirectional_stream_c.h'
end
@@ -917,7 +935,7 @@ Pod::Spec.new do |s|
'test/core/end2end/end2end_test_utils.c',
'test/core/end2end/tests/*.{c,h}',
'test/core/end2end/data/*.{c,h}',
- 'test/core/util/debugger_macros.c',
+ 'test/core/util/debugger_macros.{c,h}',
'test/core/util/test_config.{c,h}',
'test/core/util/port.h',
'test/core/util/port.c',
diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec
index 6ca9fcd342..1940015782 100644
--- a/gRPC-ProtoRPC.podspec
+++ b/gRPC-ProtoRPC.podspec
@@ -48,7 +48,7 @@ Pod::Spec.new do |s|
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'ProtoRPC'
diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec
index 51b52c0c44..841a853363 100644
--- a/gRPC-RxLibrary.podspec
+++ b/gRPC-RxLibrary.podspec
@@ -48,7 +48,7 @@ Pod::Spec.new do |s|
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'RxLibrary'
diff --git a/gRPC.podspec b/gRPC.podspec
index 83a86803eb..08ea79118d 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -47,7 +47,7 @@ Pod::Spec.new do |s|
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'GRPCClient'
diff --git a/grpc.def b/grpc.def
index 30d60b0d06..1589316a58 100644
--- a/grpc.def
+++ b/grpc.def
@@ -53,6 +53,9 @@ EXPORTS
grpc_shutdown
grpc_version_string
grpc_g_stands_for
+ grpc_completion_queue_factory_lookup
+ grpc_completion_queue_create_for_next
+ grpc_completion_queue_create_for_pluck
grpc_completion_queue_create
grpc_completion_queue_next
grpc_completion_queue_pluck
diff --git a/grpc.gemspec b/grpc.gemspec
index 825c23d7a8..06da332bed 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -99,6 +99,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/profiling/stap_timers.c )
s.files += %w( src/core/lib/support/alloc.c )
s.files += %w( src/core/lib/support/arena.c )
+ s.files += %w( src/core/lib/support/atm.c )
s.files += %w( src/core/lib/support/avl.c )
s.files += %w( src/core/lib/support/backoff.c )
s.files += %w( src/core/lib/support/cmdline.c )
@@ -220,6 +221,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/iomgr/sockaddr_posix.h )
s.files += %w( src/core/lib/iomgr/sockaddr_utils.h )
s.files += %w( src/core/lib/iomgr/sockaddr_windows.h )
+ s.files += %w( src/core/lib/iomgr/socket_factory_posix.h )
s.files += %w( src/core/lib/iomgr/socket_mutator.h )
s.files += %w( src/core/lib/iomgr/socket_utils.h )
s.files += %w( src/core/lib/iomgr/socket_utils_posix.h )
@@ -228,6 +230,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/iomgr/tcp_client_posix.h )
s.files += %w( src/core/lib/iomgr/tcp_posix.h )
s.files += %w( src/core/lib/iomgr/tcp_server.h )
+ s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix.h )
s.files += %w( src/core/lib/iomgr/tcp_uv.h )
s.files += %w( src/core/lib/iomgr/tcp_windows.h )
s.files += %w( src/core/lib/iomgr/time_averaged_stats.h )
@@ -258,6 +261,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/surface/channel_init.h )
s.files += %w( src/core/lib/surface/channel_stack_type.h )
s.files += %w( src/core/lib/surface/completion_queue.h )
+ s.files += %w( src/core/lib/surface/completion_queue_factory.h )
s.files += %w( src/core/lib/surface/event_string.h )
s.files += %w( src/core/lib/surface/init.h )
s.files += %w( src/core/lib/surface/lame_client.h )
@@ -327,7 +331,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_channel/connector.h )
s.files += %w( src/core/ext/client_channel/http_connect_handshaker.h )
s.files += %w( src/core/ext/client_channel/http_proxy.h )
- s.files += %w( src/core/ext/client_channel/initial_connect_string.h )
s.files += %w( src/core/ext/client_channel/lb_policy.h )
s.files += %w( src/core/ext/client_channel/lb_policy_factory.h )
s.files += %w( src/core/ext/client_channel/lb_policy_registry.h )
@@ -337,6 +340,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_channel/resolver.h )
s.files += %w( src/core/ext/client_channel/resolver_factory.h )
s.files += %w( src/core/ext/client_channel/resolver_registry.h )
+ s.files += %w( src/core/ext/client_channel/retry_throttle.h )
s.files += %w( src/core/ext/client_channel/subchannel.h )
s.files += %w( src/core/ext/client_channel/subchannel_index.h )
s.files += %w( src/core/ext/client_channel/uri_parser.h )
@@ -349,6 +353,8 @@ Gem::Specification.new do |s|
s.files += %w( third_party/nanopb/pb_common.h )
s.files += %w( third_party/nanopb/pb_decode.h )
s.files += %w( third_party/nanopb/pb_encode.h )
+ s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h )
+ s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h )
s.files += %w( src/core/ext/load_reporting/load_reporting.h )
s.files += %w( src/core/ext/load_reporting/load_reporting_filter.h )
s.files += %w( src/core/ext/census/aggregation.h )
@@ -415,6 +421,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/iomgr/resolve_address_windows.c )
s.files += %w( src/core/lib/iomgr/resource_quota.c )
s.files += %w( src/core/lib/iomgr/sockaddr_utils.c )
+ s.files += %w( src/core/lib/iomgr/socket_factory_posix.c )
s.files += %w( src/core/lib/iomgr/socket_mutator.c )
s.files += %w( src/core/lib/iomgr/socket_utils_common_posix.c )
s.files += %w( src/core/lib/iomgr/socket_utils_linux.c )
@@ -427,6 +434,9 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/iomgr/tcp_client_windows.c )
s.files += %w( src/core/lib/iomgr/tcp_posix.c )
s.files += %w( src/core/lib/iomgr/tcp_server_posix.c )
+ s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_common.c )
+ s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c )
+ s.files += %w( src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c )
s.files += %w( src/core/lib/iomgr/tcp_server_uv.c )
s.files += %w( src/core/lib/iomgr/tcp_server_windows.c )
s.files += %w( src/core/lib/iomgr/tcp_uv.c )
@@ -449,6 +459,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/json/json_reader.c )
s.files += %w( src/core/lib/json/json_string.c )
s.files += %w( src/core/lib/json/json_writer.c )
+ s.files += %w( src/core/lib/security/util/b64.c )
s.files += %w( src/core/lib/slice/percent_encoding.c )
s.files += %w( src/core/lib/slice/slice.c )
s.files += %w( src/core/lib/slice/slice_buffer.c )
@@ -467,6 +478,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/surface/channel_ping.c )
s.files += %w( src/core/lib/surface/channel_stack_type.c )
s.files += %w( src/core/lib/surface/completion_queue.c )
+ s.files += %w( src/core/lib/surface/completion_queue_factory.c )
s.files += %w( src/core/lib/surface/event_string.c )
s.files += %w( src/core/lib/surface/lame_client.c )
s.files += %w( src/core/lib/surface/metadata_array.c )
@@ -530,7 +542,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/security/transport/security_handshaker.c )
s.files += %w( src/core/lib/security/transport/server_auth_filter.c )
s.files += %w( src/core/lib/security/transport/tsi_error.c )
- s.files += %w( src/core/lib/security/util/b64.c )
s.files += %w( src/core/lib/security/util/json_util.c )
s.files += %w( src/core/lib/surface/init_secure.c )
s.files += %w( src/core/lib/tsi/fake_transport_security.c )
@@ -543,10 +554,8 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_channel/client_channel_factory.c )
s.files += %w( src/core/ext/client_channel/client_channel_plugin.c )
s.files += %w( src/core/ext/client_channel/connector.c )
- s.files += %w( src/core/ext/client_channel/default_initial_connect_string.c )
s.files += %w( src/core/ext/client_channel/http_connect_handshaker.c )
s.files += %w( src/core/ext/client_channel/http_proxy.c )
- s.files += %w( src/core/ext/client_channel/initial_connect_string.c )
s.files += %w( src/core/ext/client_channel/lb_policy.c )
s.files += %w( src/core/ext/client_channel/lb_policy_factory.c )
s.files += %w( src/core/ext/client_channel/lb_policy_registry.c )
@@ -556,6 +565,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_channel/resolver.c )
s.files += %w( src/core/ext/client_channel/resolver_factory.c )
s.files += %w( src/core/ext/client_channel/resolver_registry.c )
+ s.files += %w( src/core/ext/client_channel/retry_throttle.c )
s.files += %w( src/core/ext/client_channel/subchannel.c )
s.files += %w( src/core/ext/client_channel/subchannel_index.c )
s.files += %w( src/core/ext/client_channel/uri_parser.c )
@@ -573,6 +583,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/nanopb/pb_encode.c )
s.files += %w( src/core/ext/lb_policy/pick_first/pick_first.c )
s.files += %w( src/core/ext/lb_policy/round_robin/round_robin.c )
+ s.files += %w( src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c )
+ s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c )
+ s.files += %w( src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c )
s.files += %w( src/core/ext/resolver/dns/native/dns_resolver.c )
s.files += %w( src/core/ext/resolver/sockaddr/sockaddr_resolver.c )
s.files += %w( src/core/ext/load_reporting/load_reporting.c )
@@ -1026,4 +1039,77 @@ Gem::Specification.new do |s|
s.files += %w( third_party/zlib/trees.c )
s.files += %w( third_party/zlib/uncompr.c )
s.files += %w( third_party/zlib/zutil.c )
+ s.files += %w( third_party/cares/cares/ares.h )
+ s.files += %w( third_party/cares/cares/ares_data.h )
+ s.files += %w( third_party/cares/cares/ares_dns.h )
+ s.files += %w( third_party/cares/cares/ares_getenv.h )
+ s.files += %w( third_party/cares/cares/ares_getopt.h )
+ s.files += %w( third_party/cares/cares/ares_inet_net_pton.h )
+ s.files += %w( third_party/cares/cares/ares_iphlpapi.h )
+ s.files += %w( third_party/cares/cares/ares_ipv6.h )
+ s.files += %w( third_party/cares/cares/ares_library_init.h )
+ s.files += %w( third_party/cares/cares/ares_llist.h )
+ s.files += %w( third_party/cares/cares/ares_nowarn.h )
+ s.files += %w( third_party/cares/cares/ares_platform.h )
+ s.files += %w( third_party/cares/cares/ares_private.h )
+ s.files += %w( third_party/cares/cares/ares_rules.h )
+ s.files += %w( third_party/cares/cares/ares_setup.h )
+ s.files += %w( third_party/cares/cares/ares_strcasecmp.h )
+ s.files += %w( third_party/cares/cares/ares_strdup.h )
+ s.files += %w( third_party/cares/cares/ares_version.h )
+ s.files += %w( third_party/cares/cares/bitncmp.h )
+ s.files += %w( third_party/cares/cares/config-win32.h )
+ s.files += %w( third_party/cares/cares/setup_once.h )
+ s.files += %w( third_party/cares/ares_build.h )
+ s.files += %w( third_party/cares/config_linux/ares_config.h )
+ s.files += %w( third_party/cares/config_darwin/ares_config.h )
+ s.files += %w( third_party/cares/cares/ares__close_sockets.c )
+ s.files += %w( third_party/cares/cares/ares__get_hostent.c )
+ s.files += %w( third_party/cares/cares/ares__read_line.c )
+ s.files += %w( third_party/cares/cares/ares__timeval.c )
+ s.files += %w( third_party/cares/cares/ares_cancel.c )
+ s.files += %w( third_party/cares/cares/ares_create_query.c )
+ s.files += %w( third_party/cares/cares/ares_data.c )
+ s.files += %w( third_party/cares/cares/ares_destroy.c )
+ s.files += %w( third_party/cares/cares/ares_expand_name.c )
+ s.files += %w( third_party/cares/cares/ares_expand_string.c )
+ s.files += %w( third_party/cares/cares/ares_fds.c )
+ s.files += %w( third_party/cares/cares/ares_free_hostent.c )
+ s.files += %w( third_party/cares/cares/ares_free_string.c )
+ s.files += %w( third_party/cares/cares/ares_getenv.c )
+ s.files += %w( third_party/cares/cares/ares_gethostbyaddr.c )
+ s.files += %w( third_party/cares/cares/ares_gethostbyname.c )
+ s.files += %w( third_party/cares/cares/ares_getnameinfo.c )
+ s.files += %w( third_party/cares/cares/ares_getopt.c )
+ s.files += %w( third_party/cares/cares/ares_getsock.c )
+ s.files += %w( third_party/cares/cares/ares_init.c )
+ s.files += %w( third_party/cares/cares/ares_library_init.c )
+ s.files += %w( third_party/cares/cares/ares_llist.c )
+ s.files += %w( third_party/cares/cares/ares_mkquery.c )
+ s.files += %w( third_party/cares/cares/ares_nowarn.c )
+ s.files += %w( third_party/cares/cares/ares_options.c )
+ s.files += %w( third_party/cares/cares/ares_parse_a_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_aaaa_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_mx_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_naptr_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_ns_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_ptr_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_soa_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_srv_reply.c )
+ s.files += %w( third_party/cares/cares/ares_parse_txt_reply.c )
+ s.files += %w( third_party/cares/cares/ares_platform.c )
+ s.files += %w( third_party/cares/cares/ares_process.c )
+ s.files += %w( third_party/cares/cares/ares_query.c )
+ s.files += %w( third_party/cares/cares/ares_search.c )
+ s.files += %w( third_party/cares/cares/ares_send.c )
+ s.files += %w( third_party/cares/cares/ares_strcasecmp.c )
+ s.files += %w( third_party/cares/cares/ares_strdup.c )
+ s.files += %w( third_party/cares/cares/ares_strerror.c )
+ s.files += %w( third_party/cares/cares/ares_timeout.c )
+ s.files += %w( third_party/cares/cares/ares_version.c )
+ s.files += %w( third_party/cares/cares/ares_writev.c )
+ s.files += %w( third_party/cares/cares/bitncmp.c )
+ s.files += %w( third_party/cares/cares/inet_net_pton.c )
+ s.files += %w( third_party/cares/cares/inet_ntop.c )
+ s.files += %w( third_party/cares/cares/windows_port.c )
end
diff --git a/include/grpc++/support/channel_arguments.h b/include/grpc++/support/channel_arguments.h
index efdf7772ad..61307d6194 100644
--- a/include/grpc++/support/channel_arguments.h
+++ b/include/grpc++/support/channel_arguments.h
@@ -54,7 +54,7 @@ class ResourceQuota;
class ChannelArguments {
public:
ChannelArguments();
- ~ChannelArguments() {}
+ ~ChannelArguments();
ChannelArguments(const ChannelArguments& other);
ChannelArguments& operator=(ChannelArguments other) {
@@ -117,10 +117,10 @@ class ChannelArguments {
/// Return (by value) a c grpc_channel_args structure which points to
/// arguments owned by this ChannelArguments instance
- grpc_channel_args c_channel_args() {
+ grpc_channel_args c_channel_args() const {
grpc_channel_args out;
out.num_args = args_.size();
- out.args = args_.empty() ? NULL : &args_[0];
+ out.args = args_.empty() ? NULL : const_cast<grpc_arg*>(&args_[0]);
return out;
}
diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h
index 1b33d48c02..e088435d6c 100644
--- a/include/grpc/grpc.h
+++ b/include/grpc/grpc.h
@@ -93,6 +93,71 @@ GRPCAPI const char *grpc_version_string(void);
/** Return a string specifying what the 'g' in gRPC stands for */
GRPCAPI const char *grpc_g_stands_for(void);
+/** Specifies the type of APIs to use to pop events from the completion queue */
+typedef enum {
+ /* Events are popped out by calling grpc_completion_queue_next() API ONLY */
+ GRPC_CQ_NEXT = 1,
+
+ /* Events are popped out by calling grpc_completion_queue_pluck() API ONLY */
+ GRPC_CQ_PLUCK
+} grpc_cq_completion_type;
+
+/** Completion queues internally MAY maintain a set of file descriptors in a
+ structure called 'pollset'. This enum specifies if a completion queue has an
+ associated pollset and any restrictions on the type of file descriptors that
+ can be present in the pollset.
+
+ I/O progress can only be made when grpc_completion_queue_next() or
+ grpc_completion_queue_pluck() are called on the completion queue (unless the
+ grpc_cq_polling_type is GRPC_CQ_NON_POLLING) and hence it is very important
+ to actively call these APIs */
+typedef enum {
+ /** The completion queue will have an associated pollset and there is no
+ restriction on the type of file descriptors the pollset may contain */
+ GRPC_CQ_DEFAULT_POLLING,
+
+ /* Similar to GRPC_CQ_DEFAULT_POLLING except that the completion queues will
+ not contain any 'listening file descriptors' (i.e file descriptors used to
+ listen to incoming channels) */
+ GRPC_CQ_NON_LISTENING,
+
+ /* The completion queue will not have an associated pollset. Note that
+ grpc_completion_queue_next() or grpc_completion_queue_pluck() MUST still be
+ called to pop events from the completion queue; it is not required to call
+ them actively to make I/O progress */
+ GRPC_CQ_NON_POLLING
+} grpc_cq_polling_type;
+
+#define GRPC_CQ_CURRENT_VERSION 1
+typedef struct grpc_completion_queue_attributes {
+ /* The version number of this structure. More fields might be added to this
+ structure in future. */
+ int version; /* Set to GRPC_CQ_CURRENT_VERSION */
+
+ grpc_cq_completion_type cq_completion_type;
+
+ grpc_cq_polling_type cq_polling_type;
+} grpc_completion_queue_attributes;
+
+/** The completion queue factory structure is opaque to the callers of grpc */
+typedef struct grpc_completion_queue_factory grpc_completion_queue_factory;
+
+/** Returns the completion queue factory based on the attributes. MAY return a
+ NULL if no factory can be found */
+GRPCAPI const grpc_completion_queue_factory *
+grpc_completion_queue_factory_lookup(
+ const grpc_completion_queue_attributes *attributes);
+
+/** Helper function to create a completion queue with grpc_cq_completion_type
+ of GRPC_CQ_NEXT and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */
+GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_next(
+ void *reserved);
+
+/** Helper function to create a completion queue with grpc_cq_completion_type
+ of GRPC_CQ_PLUCK and grpc_cq_polling_type of GRPC_CQ_DEFAULT_POLLING */
+GRPCAPI grpc_completion_queue *grpc_completion_queue_create_for_pluck(
+ void *reserved);
+
/** Create a completion queue */
GRPCAPI grpc_completion_queue *grpc_completion_queue_create(void *reserved);
diff --git a/include/grpc/impl/codegen/atm.h b/include/grpc/impl/codegen/atm.h
index ae00fb0f16..4bd572d6d1 100644
--- a/include/grpc/impl/codegen/atm.h
+++ b/include/grpc/impl/codegen/atm.h
@@ -92,4 +92,9 @@
#error could not determine platform for atm
#endif
+/** Adds \a delta to \a *value, clamping the result to the range specified
+ by \a min and \a max. Returns the new value. */
+gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm *value, gpr_atm delta,
+ gpr_atm min, gpr_atm max);
+
#endif /* GRPC_IMPL_CODEGEN_ATM_H */
diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h
index e5c731304c..887c176f1a 100644
--- a/include/grpc/impl/codegen/grpc_types.h
+++ b/include/grpc/impl/codegen/grpc_types.h
@@ -87,6 +87,9 @@ typedef struct grpc_call grpc_call;
/** The Socket Mutator interface allows changes on socket options */
typedef struct grpc_socket_mutator grpc_socket_mutator;
+/** The Socket Factory interface creates and binds sockets */
+typedef struct grpc_socket_factory grpc_socket_factory;
+
/** Type specifier for grpc_arg */
typedef enum {
GRPC_ARG_STRING,
@@ -240,6 +243,8 @@ typedef struct {
#define GRPC_ARG_LB_POLICY_NAME "grpc.lb_policy_name"
/** The grpc_socket_mutator instance that set the socket options. A pointer. */
#define GRPC_ARG_SOCKET_MUTATOR "grpc.socket_mutator"
+/** The grpc_socket_factory instance to create and bind sockets. A pointer. */
+#define GRPC_ARG_SOCKET_FACTORY "grpc.socket_factory"
/** If non-zero, Cronet transport will coalesce packets to fewer frames when
* possible. */
#define GRPC_ARG_USE_CRONET_PACKET_COALESCING \
diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index e565cd31d7..086394648f 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -364,6 +364,14 @@ typedef unsigned __int64 uint64_t;
power of two */
#define GPR_MAX_ALIGNMENT 16
+#ifndef GRPC_ARES
+#ifdef GPR_WINDOWS
+#define GRPC_ARES 0
+#else
+#define GRPC_ARES 1
+#endif
+#endif
+
#ifndef GRPC_MUST_USE_RESULT
#if defined(__GNUC__) && !defined(__MINGW32__)
#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
diff --git a/package.json b/package.json
index 8c0854b1d2..666e819fb5 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"electron-build": "./node_modules/.bin/node-pre-gyp configure build --runtime=electron --disturl=https://atom.io/download/atom-shell",
"gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
- "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build"
+ "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build --library=static_library"
},
"bundledDependencies": [
"node-pre-gyp"
@@ -34,7 +34,8 @@
"lodash": "^4.15.0",
"nan": "^2.0.0",
"node-pre-gyp": "^0.6.0",
- "protobufjs": "^5.0.0"
+ "protobufjs": "^5.0.0",
+ "cares": "^1.1.5"
},
"devDependencies": {
"async": "^2.0.1",
@@ -52,7 +53,7 @@
"poisson-process": "^0.2.1"
},
"engines": {
- "node": ">=1.1.0"
+ "node": ">=4"
},
"binary": {
"module_name": "grpc_node",
diff --git a/package.xml b/package.xml
index 67669286c3..5d58584555 100644
--- a/package.xml
+++ b/package.xml
@@ -108,6 +108,7 @@
<file baseinstalldir="/" name="src/core/lib/profiling/stap_timers.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/alloc.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/arena.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/support/atm.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/avl.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/backoff.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/cmdline.c" role="src" />
@@ -229,6 +230,7 @@
<file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_posix.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_utils.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/socket_factory_posix.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_mutator.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_posix.h" role="src" />
@@ -237,6 +239,7 @@
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_posix.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_posix.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_uv.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_windows.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/time_averaged_stats.h" role="src" />
@@ -267,6 +270,7 @@
<file baseinstalldir="/" name="src/core/lib/surface/channel_init.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/channel_stack_type.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/completion_queue.h" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/surface/completion_queue_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/event_string.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/init.h" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/lame_client.h" role="src" />
@@ -336,7 +340,6 @@
<file baseinstalldir="/" name="src/core/ext/client_channel/connector.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/http_connect_handshaker.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/http_proxy.h" role="src" />
- <file baseinstalldir="/" name="src/core/ext/client_channel/initial_connect_string.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy_registry.h" role="src" />
@@ -346,6 +349,7 @@
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver_registry.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/client_channel/retry_throttle.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/subchannel.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/subchannel_index.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/uri_parser.h" role="src" />
@@ -358,6 +362,8 @@
<file baseinstalldir="/" name="third_party/nanopb/pb_common.h" role="src" />
<file baseinstalldir="/" name="third_party/nanopb/pb_decode.h" role="src" />
<file baseinstalldir="/" name="third_party/nanopb/pb_encode.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/load_reporting/load_reporting.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/load_reporting/load_reporting_filter.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/census/aggregation.h" role="src" />
@@ -424,6 +430,7 @@
<file baseinstalldir="/" name="src/core/lib/iomgr/resolve_address_windows.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/resource_quota.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/sockaddr_utils.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/socket_factory_posix.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_mutator.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_common_posix.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/socket_utils_linux.c" role="src" />
@@ -436,6 +443,9 @@
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_client_windows.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_posix.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_common.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_uv.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_server_windows.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/iomgr/tcp_uv.c" role="src" />
@@ -458,6 +468,7 @@
<file baseinstalldir="/" name="src/core/lib/json/json_reader.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/json/json_string.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/json/json_writer.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/security/util/b64.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/slice/percent_encoding.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/slice/slice.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/slice/slice_buffer.c" role="src" />
@@ -476,6 +487,7 @@
<file baseinstalldir="/" name="src/core/lib/surface/channel_ping.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/channel_stack_type.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/completion_queue.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/surface/completion_queue_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/event_string.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/lame_client.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/metadata_array.c" role="src" />
@@ -539,7 +551,6 @@
<file baseinstalldir="/" name="src/core/lib/security/transport/security_handshaker.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/transport/server_auth_filter.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/transport/tsi_error.c" role="src" />
- <file baseinstalldir="/" name="src/core/lib/security/util/b64.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/security/util/json_util.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/surface/init_secure.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/tsi/fake_transport_security.c" role="src" />
@@ -552,10 +563,8 @@
<file baseinstalldir="/" name="src/core/ext/client_channel/client_channel_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/client_channel_plugin.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/connector.c" role="src" />
- <file baseinstalldir="/" name="src/core/ext/client_channel/default_initial_connect_string.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/http_connect_handshaker.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/http_proxy.c" role="src" />
- <file baseinstalldir="/" name="src/core/ext/client_channel/initial_connect_string.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/lb_policy_registry.c" role="src" />
@@ -565,6 +574,7 @@
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/resolver_registry.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/client_channel/retry_throttle.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/subchannel.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/subchannel_index.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_channel/uri_parser.c" role="src" />
@@ -582,6 +592,9 @@
<file baseinstalldir="/" name="third_party/nanopb/pb_encode.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/lb_policy/pick_first/pick_first.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/lb_policy/round_robin/round_robin.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/resolver/dns/native/dns_resolver.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/resolver/sockaddr/sockaddr_resolver.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/load_reporting/load_reporting.c" role="src" />
diff --git a/setup.py b/setup.py
index d5b843fdac..e050646475 100644
--- a/setup.py
+++ b/setup.py
@@ -52,6 +52,13 @@ PYTHON_STEM = os.path.join('src', 'python', 'grpcio')
CORE_INCLUDE = ('include', '.',)
BORINGSSL_INCLUDE = (os.path.join('third_party', 'boringssl', 'include'),)
ZLIB_INCLUDE = (os.path.join('third_party', 'zlib'),)
+CARES_INCLUDE = (
+ os.path.join('third_party', 'cares'),
+ os.path.join('third_party', 'cares', 'cares'),)
+if 'linux' in sys.platform:
+ CARES_INCLUDE += (os.path.join('third_party', 'cares', 'config_linux'),)
+if 'darwin' in sys.platform:
+ CARES_INCLUDE += (os.path.join('third_party', 'cares', 'config_darwin'),)
README = os.path.join(PYTHON_STEM, 'README.rst')
# Ensure we're in the proper directory whether or not we're being used by pip.
@@ -136,7 +143,8 @@ CYTHON_HELPER_C_FILES = ()
CORE_C_FILES = tuple(grpc_core_dependencies.CORE_SOURCE_FILES)
EXTENSION_INCLUDE_DIRECTORIES = (
- (PYTHON_STEM,) + CORE_INCLUDE + BORINGSSL_INCLUDE + ZLIB_INCLUDE)
+ (PYTHON_STEM,) + CORE_INCLUDE + BORINGSSL_INCLUDE + ZLIB_INCLUDE +
+ CARES_INCLUDE)
EXTENSION_LIBRARIES = ()
if "linux" in sys.platform:
@@ -150,13 +158,15 @@ DEFINE_MACROS = (
('OPENSSL_NO_ASM', 1), ('_WIN32_WINNT', 0x600),
('GPR_BACKWARDS_COMPATIBILITY_MODE', 1),)
if "win32" in sys.platform:
- DEFINE_MACROS += (('WIN32_LEAN_AND_MEAN', 1),)
+ DEFINE_MACROS += (('WIN32_LEAN_AND_MEAN', 1), ('CARES_STATICLIB', 1),)
if '64bit' in platform.architecture()[0]:
DEFINE_MACROS += (('MS_WIN64', 1),)
elif sys.version_info >= (3, 5):
# For some reason, this is needed to get access to inet_pton/inet_ntop
# on msvc, but only for 32 bits
DEFINE_MACROS += (('NTDDI_VERSION', 0x06000000),)
+else:
+ DEFINE_MACROS += (('HAVE_CONFIG_H', 1),)
LDFLAGS = tuple(EXTRA_LINK_ARGS)
CFLAGS = tuple(EXTRA_COMPILE_ARGS)
@@ -206,14 +216,13 @@ PACKAGE_DIRECTORIES = {
INSTALL_REQUIRES = (
'six>=1.5.2',
- 'enum34>=1.0.4',
# TODO(atash): eventually split the grpcio package into a metapackage
# depending on protobuf and the runtime component (independent of protobuf)
'protobuf>=3.2.0',
)
if not PY3:
- INSTALL_REQUIRES += ('futures>=2.2.0',)
+ INSTALL_REQUIRES += ('futures>=2.2.0', 'enum34>=1.0.4')
SETUP_REQUIRES = INSTALL_REQUIRES + (
'sphinx>=1.3',
@@ -265,6 +274,10 @@ PACKAGES = setuptools.find_packages(PYTHON_STEM)
setuptools.setup(
name='grpcio',
version=grpc_version.VERSION,
+ description='HTTP/2-based RPC framework',
+ author='The gRPC Authors',
+ author_email='grpc-io@googlegroups.com',
+ url='http://www.grpc.io',
license=LICENSE,
long_description=open(README).read(),
ext_modules=CYTHON_EXTENSION_MODULES,
diff --git a/src/c-ares/CMakeLists.txt b/src/c-ares/CMakeLists.txt
new file mode 100644
index 0000000000..22acd51048
--- /dev/null
+++ b/src/c-ares/CMakeLists.txt
@@ -0,0 +1,49 @@
+# c-ares cmake file for gRPC
+#
+# This is currently very experimental, and unsupported.
+#
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+string(TOLOWER ${CMAKE_SYSTEM_NAME} cares_system_name)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares/cares)
+
+if(${cares_system_name} MATCHES windows)
+ add_definitions(-DCARES_STATICLIB=1)
+ add_definitions(-DWIN32_LEAN_AND_MEAN=1)
+else()
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/cares/config_${cares_system_name})
+ add_definitions(-DHAVE_CONFIG_H=1)
+ add_definitions(-D_GNU_SOURCE=1)
+endif()
+
+file(GLOB lib_sources ../../third_party/cares/cares/*.c)
+add_library(cares ${lib_sources})
diff --git a/src/c-ares/gen_build_yaml.py b/src/c-ares/gen_build_yaml.py
new file mode 100755
index 0000000000..b2ae971f37
--- /dev/null
+++ b/src/c-ares/gen_build_yaml.py
@@ -0,0 +1,149 @@
+#!/usr/bin/env python2.7
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import re
+import os
+import sys
+import yaml
+
+os.chdir(os.path.dirname(sys.argv[0])+'/../..')
+
+out = {}
+
+try:
+ def gen_ares_build(x):
+ subprocess.call("third_party/cares/cares/buildconf", shell=True)
+ subprocess.call("third_party/cares/cares/configure", shell=True)
+
+ def config_platform(x):
+ if 'linux' in sys.platform:
+ return 'src/cares/cares/config_linux/ares_config.h'
+ if 'darwin' in sys.platform:
+ return 'src/cares/cares/config_darwin/ares_config.h'
+ if not os.path.isfile('third_party/cares/cares/ares_config.h'):
+ gen_ares_build(x)
+ return 'third_party/cares/cares/ares_config.h'
+
+ def ares_build(x):
+ if os.path.isfile('src/cares/cares/ares_build.h'):
+ return 'src/cares/cares/ares_build.h'
+ if not os.path.isfile('third_party/cares/cares/ares_build.h'):
+ gen_ares_build(x)
+ return 'third_party/cares/cares/ares_build.h'
+
+ out['libs'] = [{
+ 'name': 'ares',
+ 'defaults': 'ares',
+ 'build': 'private',
+ 'language': 'c',
+ 'secure': 'no',
+ 'src': [
+ "third_party/cares/cares/ares__close_sockets.c",
+ "third_party/cares/cares/ares__get_hostent.c",
+ "third_party/cares/cares/ares__read_line.c",
+ "third_party/cares/cares/ares__timeval.c",
+ "third_party/cares/cares/ares_cancel.c",
+ "third_party/cares/cares/ares_create_query.c",
+ "third_party/cares/cares/ares_data.c",
+ "third_party/cares/cares/ares_destroy.c",
+ "third_party/cares/cares/ares_expand_name.c",
+ "third_party/cares/cares/ares_expand_string.c",
+ "third_party/cares/cares/ares_fds.c",
+ "third_party/cares/cares/ares_free_hostent.c",
+ "third_party/cares/cares/ares_free_string.c",
+ "third_party/cares/cares/ares_getenv.c",
+ "third_party/cares/cares/ares_gethostbyaddr.c",
+ "third_party/cares/cares/ares_gethostbyname.c",
+ "third_party/cares/cares/ares_getnameinfo.c",
+ "third_party/cares/cares/ares_getopt.c",
+ "third_party/cares/cares/ares_getsock.c",
+ "third_party/cares/cares/ares_init.c",
+ "third_party/cares/cares/ares_library_init.c",
+ "third_party/cares/cares/ares_llist.c",
+ "third_party/cares/cares/ares_mkquery.c",
+ "third_party/cares/cares/ares_nowarn.c",
+ "third_party/cares/cares/ares_options.c",
+ "third_party/cares/cares/ares_parse_a_reply.c",
+ "third_party/cares/cares/ares_parse_aaaa_reply.c",
+ "third_party/cares/cares/ares_parse_mx_reply.c",
+ "third_party/cares/cares/ares_parse_naptr_reply.c",
+ "third_party/cares/cares/ares_parse_ns_reply.c",
+ "third_party/cares/cares/ares_parse_ptr_reply.c",
+ "third_party/cares/cares/ares_parse_soa_reply.c",
+ "third_party/cares/cares/ares_parse_srv_reply.c",
+ "third_party/cares/cares/ares_parse_txt_reply.c",
+ "third_party/cares/cares/ares_platform.c",
+ "third_party/cares/cares/ares_process.c",
+ "third_party/cares/cares/ares_query.c",
+ "third_party/cares/cares/ares_search.c",
+ "third_party/cares/cares/ares_send.c",
+ "third_party/cares/cares/ares_strcasecmp.c",
+ "third_party/cares/cares/ares_strdup.c",
+ "third_party/cares/cares/ares_strerror.c",
+ "third_party/cares/cares/ares_timeout.c",
+ "third_party/cares/cares/ares_version.c",
+ "third_party/cares/cares/ares_writev.c",
+ "third_party/cares/cares/bitncmp.c",
+ "third_party/cares/cares/inet_net_pton.c",
+ "third_party/cares/cares/inet_ntop.c",
+ "third_party/cares/cares/windows_port.c",
+ ],
+ 'headers': [
+ "third_party/cares/cares/ares.h",
+ "third_party/cares/cares/ares_data.h",
+ "third_party/cares/cares/ares_dns.h",
+ "third_party/cares/cares/ares_getenv.h",
+ "third_party/cares/cares/ares_getopt.h",
+ "third_party/cares/cares/ares_inet_net_pton.h",
+ "third_party/cares/cares/ares_iphlpapi.h",
+ "third_party/cares/cares/ares_ipv6.h",
+ "third_party/cares/cares/ares_library_init.h",
+ "third_party/cares/cares/ares_llist.h",
+ "third_party/cares/cares/ares_nowarn.h",
+ "third_party/cares/cares/ares_platform.h",
+ "third_party/cares/cares/ares_private.h",
+ "third_party/cares/cares/ares_rules.h",
+ "third_party/cares/cares/ares_setup.h",
+ "third_party/cares/cares/ares_strcasecmp.h",
+ "third_party/cares/cares/ares_strdup.h",
+ "third_party/cares/cares/ares_version.h",
+ "third_party/cares/cares/bitncmp.h",
+ "third_party/cares/cares/config-win32.h",
+ "third_party/cares/cares/setup_once.h",
+ "third_party/cares/ares_build.h",
+ "third_party/cares/config_linux/ares_config.h",
+ "third_party/cares/config_darwin/ares_config.h"
+ ],
+ }]
+except:
+ pass
+
+print yaml.dump(out)
diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index cc7a7a96ae..ce1e6b94c3 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -203,13 +203,13 @@ std::string GetServerClassName(const ServiceDescriptor *service) {
std::string GetCSharpMethodType(MethodType method_type) {
switch (method_type) {
case METHODTYPE_NO_STREAMING:
- return "MethodType.Unary";
+ return "grpc::MethodType.Unary";
case METHODTYPE_CLIENT_STREAMING:
- return "MethodType.ClientStreaming";
+ return "grpc::MethodType.ClientStreaming";
case METHODTYPE_SERVER_STREAMING:
- return "MethodType.ServerStreaming";
+ return "grpc::MethodType.ServerStreaming";
case METHODTYPE_BIDI_STREAMING:
- return "MethodType.DuplexStreaming";
+ return "grpc::MethodType.DuplexStreaming";
}
GOOGLE_LOG(FATAL) << "Can't get here.";
return "";
@@ -243,16 +243,19 @@ std::string GetAccessLevel(bool internal_access) {
std::string GetMethodReturnTypeClient(const MethodDescriptor *method) {
switch (GetMethodType(method)) {
case METHODTYPE_NO_STREAMING:
- return "AsyncUnaryCall<" + GetClassName(method->output_type()) + ">";
+ return "grpc::AsyncUnaryCall<" + GetClassName(method->output_type()) +
+ ">";
case METHODTYPE_CLIENT_STREAMING:
- return "AsyncClientStreamingCall<" + GetClassName(method->input_type()) +
- ", " + GetClassName(method->output_type()) + ">";
+ return "grpc::AsyncClientStreamingCall<" +
+ GetClassName(method->input_type()) + ", " +
+ GetClassName(method->output_type()) + ">";
case METHODTYPE_SERVER_STREAMING:
- return "AsyncServerStreamingCall<" + GetClassName(method->output_type()) +
- ">";
+ return "grpc::AsyncServerStreamingCall<" +
+ GetClassName(method->output_type()) + ">";
case METHODTYPE_BIDI_STREAMING:
- return "AsyncDuplexStreamingCall<" + GetClassName(method->input_type()) +
- ", " + GetClassName(method->output_type()) + ">";
+ return "grpc::AsyncDuplexStreamingCall<" +
+ GetClassName(method->input_type()) + ", " +
+ GetClassName(method->output_type()) + ">";
}
GOOGLE_LOG(FATAL) << "Can't get here.";
return "";
@@ -265,7 +268,7 @@ std::string GetMethodRequestParamServer(const MethodDescriptor *method) {
return GetClassName(method->input_type()) + " request";
case METHODTYPE_CLIENT_STREAMING:
case METHODTYPE_BIDI_STREAMING:
- return "IAsyncStreamReader<" + GetClassName(method->input_type()) +
+ return "grpc::IAsyncStreamReader<" + GetClassName(method->input_type()) +
"> requestStream";
}
GOOGLE_LOG(FATAL) << "Can't get here.";
@@ -293,8 +296,8 @@ std::string GetMethodResponseStreamMaybe(const MethodDescriptor *method) {
return "";
case METHODTYPE_SERVER_STREAMING:
case METHODTYPE_BIDI_STREAMING:
- return ", IServerStreamWriter<" + GetClassName(method->output_type()) +
- "> responseStream";
+ return ", grpc::IServerStreamWriter<" +
+ GetClassName(method->output_type()) + "> responseStream";
}
GOOGLE_LOG(FATAL) << "Can't get here.";
return "";
@@ -325,8 +328,8 @@ void GenerateMarshallerFields(Printer *out, const ServiceDescriptor *service) {
for (size_t i = 0; i < used_messages.size(); i++) {
const Descriptor *message = used_messages[i];
out->Print(
- "static readonly Marshaller<$type$> $fieldname$ = "
- "Marshallers.Create((arg) => "
+ "static readonly grpc::Marshaller<$type$> $fieldname$ = "
+ "grpc::Marshallers.Create((arg) => "
"global::Google.Protobuf.MessageExtensions.ToByteArray(arg), "
"$type$.Parser.ParseFrom);\n",
"fieldname", GetMarshallerFieldName(message), "type",
@@ -337,8 +340,8 @@ void GenerateMarshallerFields(Printer *out, const ServiceDescriptor *service) {
void GenerateStaticMethodField(Printer *out, const MethodDescriptor *method) {
out->Print(
- "static readonly Method<$request$, $response$> $fieldname$ = new "
- "Method<$request$, $response$>(\n",
+ "static readonly grpc::Method<$request$, $response$> $fieldname$ = new "
+ "grpc::Method<$request$, $response$>(\n",
"fieldname", GetMethodFieldName(method), "request",
GetClassName(method->input_type()), "response",
GetClassName(method->output_type()));
@@ -389,7 +392,7 @@ void GenerateServerClass(Printer *out, const ServiceDescriptor *service) {
out->Print(
"public virtual $returntype$ "
"$methodname$($request$$response_stream_maybe$, "
- "ServerCallContext context)\n",
+ "grpc::ServerCallContext context)\n",
"methodname", method->name(), "returntype",
GetMethodReturnTypeServer(method), "request",
GetMethodRequestParamServer(method), "response_stream_maybe",
@@ -397,8 +400,8 @@ void GenerateServerClass(Printer *out, const ServiceDescriptor *service) {
out->Print("{\n");
out->Indent();
out->Print(
- "throw new RpcException("
- "new Status(StatusCode.Unimplemented, \"\"));\n");
+ "throw new grpc::RpcException("
+ "new grpc::Status(grpc::StatusCode.Unimplemented, \"\"));\n");
out->Outdent();
out->Print("}\n\n");
}
@@ -410,7 +413,7 @@ void GenerateServerClass(Printer *out, const ServiceDescriptor *service) {
void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
out->Print("/// <summary>Client for $servicename$</summary>\n", "servicename",
GetServiceClassName(service));
- out->Print("public partial class $name$ : ClientBase<$name$>\n", "name",
+ out->Print("public partial class $name$ : grpc::ClientBase<$name$>\n", "name",
GetClientClassName(service));
out->Print("{\n");
out->Indent();
@@ -421,7 +424,7 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
"/// <param name=\"channel\">The channel to use to make remote "
"calls.</param>\n",
"servicename", GetServiceClassName(service));
- out->Print("public $name$(Channel channel) : base(channel)\n", "name",
+ out->Print("public $name$(grpc::Channel channel) : base(channel)\n", "name",
GetClientClassName(service));
out->Print("{\n");
out->Print("}\n");
@@ -431,8 +434,9 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
"/// <param name=\"callInvoker\">The callInvoker to use to make remote "
"calls.</param>\n",
"servicename", GetServiceClassName(service));
- out->Print("public $name$(CallInvoker callInvoker) : base(callInvoker)\n",
- "name", GetClientClassName(service));
+ out->Print(
+ "public $name$(grpc::CallInvoker callInvoker) : base(callInvoker)\n",
+ "name", GetClientClassName(service));
out->Print("{\n");
out->Print("}\n");
out->Print(
@@ -461,7 +465,8 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
// unary calls have an extra synchronous stub method
GenerateDocCommentClientMethod(out, method, true, false);
out->Print(
- "public virtual $response$ $methodname$($request$ request, Metadata "
+ "public virtual $response$ $methodname$($request$ request, "
+ "grpc::Metadata "
"headers = null, DateTime? deadline = null, CancellationToken "
"cancellationToken = default(CancellationToken))\n",
"methodname", method->name(), "request",
@@ -470,7 +475,8 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
out->Print("{\n");
out->Indent();
out->Print(
- "return $methodname$(request, new CallOptions(headers, deadline, "
+ "return $methodname$(request, new grpc::CallOptions(headers, "
+ "deadline, "
"cancellationToken));\n",
"methodname", method->name());
out->Outdent();
@@ -480,7 +486,7 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
GenerateDocCommentClientMethod(out, method, true, true);
out->Print(
"public virtual $response$ $methodname$($request$ request, "
- "CallOptions options)\n",
+ "grpc::CallOptions options)\n",
"methodname", method->name(), "request",
GetClassName(method->input_type()), "response",
GetClassName(method->output_type()));
@@ -500,7 +506,8 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
}
GenerateDocCommentClientMethod(out, method, false, false);
out->Print(
- "public virtual $returntype$ $methodname$($request_maybe$Metadata "
+ "public virtual $returntype$ "
+ "$methodname$($request_maybe$grpc::Metadata "
"headers = null, DateTime? deadline = null, CancellationToken "
"cancellationToken = default(CancellationToken))\n",
"methodname", method_name, "request_maybe",
@@ -510,7 +517,8 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
out->Indent();
out->Print(
- "return $methodname$($request_maybe$new CallOptions(headers, deadline, "
+ "return $methodname$($request_maybe$new grpc::CallOptions(headers, "
+ "deadline, "
"cancellationToken));\n",
"methodname", method_name, "request_maybe",
GetMethodRequestParamMaybe(method, true));
@@ -520,7 +528,8 @@ void GenerateClientStub(Printer *out, const ServiceDescriptor *service) {
// overload taking CallOptions as a param
GenerateDocCommentClientMethod(out, method, false, true);
out->Print(
- "public virtual $returntype$ $methodname$($request_maybe$CallOptions "
+ "public virtual $returntype$ "
+ "$methodname$($request_maybe$grpc::CallOptions "
"options)\n",
"methodname", method_name, "request_maybe",
GetMethodRequestParamMaybe(method), "returntype",
@@ -587,13 +596,13 @@ void GenerateBindServiceMethod(Printer *out, const ServiceDescriptor *service) {
"/// <param name=\"serviceImpl\">An object implementing the server-side"
" handling logic.</param>\n");
out->Print(
- "public static ServerServiceDefinition BindService($implclass$ "
+ "public static grpc::ServerServiceDefinition BindService($implclass$ "
"serviceImpl)\n",
"implclass", GetServerClassName(service));
out->Print("{\n");
out->Indent();
- out->Print("return ServerServiceDefinition.CreateBuilder()\n");
+ out->Print("return grpc::ServerServiceDefinition.CreateBuilder()\n");
out->Indent();
out->Indent();
for (int i = 0; i < service->method_count(); i++) {
@@ -681,7 +690,7 @@ grpc::string GetServices(const FileDescriptor *file, bool generate_client,
out.Print("using System;\n");
out.Print("using System.Threading;\n");
out.Print("using System.Threading.Tasks;\n");
- out.Print("using Grpc.Core;\n");
+ out.Print("using grpc = global::Grpc.Core;\n");
out.Print("\n");
out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
diff --git a/src/compiler/php_generator.cc b/src/compiler/php_generator.cc
index fba8cbaa97..7d51d40301 100644
--- a/src/compiler/php_generator.cc
+++ b/src/compiler/php_generator.cc
@@ -118,7 +118,7 @@ void PrintService(const ServiceDescriptor *service, Printer *out) {
out->Print(
"/**\n * @param string $$hostname hostname\n"
" * @param array $$opts channel options\n"
- " * @param Grpc\\Channel $$channel (optional) re-use channel "
+ " * @param \\Grpc\\Channel $$channel (optional) re-use channel "
"object\n */\n"
"public function __construct($$hostname, $$opts, "
"$$channel = null) {\n");
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 242ce06a16..49d90fd36e 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -647,15 +647,15 @@ bool PrivateGenerator::PrintBetaPreamble() {
"Package", config.beta_package_root);
out->Print("from $Package$ import interfaces as beta_interfaces\n", "Package",
config.beta_package_root);
+ out->Print("from grpc.framework.common import cardinality\n");
+ out->Print(
+ "from grpc.framework.interfaces.face import utilities as "
+ "face_utilities\n");
return true;
}
bool PrivateGenerator::PrintPreamble() {
out->Print("import $Package$\n", "Package", config.grpc_package_root);
- out->Print("from grpc.framework.common import cardinality\n");
- out->Print(
- "from grpc.framework.interfaces.face import utilities as "
- "face_utilities\n");
if (generate_in_pb2_grpc) {
out->Print("\n");
StringPairSet imports_set;
diff --git a/src/core/ext/census/grpc_filter.c b/src/core/ext/census/grpc_filter.c
index b80d831557..fc29dbd454 100644
--- a/src/core/ext/census/grpc_filter.c
+++ b/src/core/ext/census/grpc_filter.c
@@ -138,7 +138,7 @@ static grpc_error *client_init_call_elem(grpc_exec_ctx *exec_ctx,
static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *d = elem->call_data;
GPR_ASSERT(d != NULL);
/* TODO(hongyu): record rpc client stats and census_rpc_end_op here */
@@ -160,7 +160,7 @@ static grpc_error *server_init_call_elem(grpc_exec_ctx *exec_ctx,
static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *d = elem->call_data;
GPR_ASSERT(d != NULL);
/* TODO(hongyu): record rpc server stats and census_tracing_end_op here */
diff --git a/src/core/ext/client_channel/channel_connectivity.c b/src/core/ext/client_channel/channel_connectivity.c
index dd70bc2c6c..f6cb3b9115 100644
--- a/src/core/ext/client_channel/channel_connectivity.c
+++ b/src/core/ext/client_channel/channel_connectivity.c
@@ -139,8 +139,8 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w,
error = GRPC_ERROR_NONE;
} else {
if (error == GRPC_ERROR_NONE) {
- error =
- GRPC_ERROR_CREATE("Timed out waiting for connection state change");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Timed out waiting for connection state change");
} else if (error == GRPC_ERROR_CANCELLED) {
error = GRPC_ERROR_NONE;
}
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index f2475cf6ae..435a3ab0fe 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -47,6 +47,7 @@
#include "src/core/ext/client_channel/lb_policy_registry.h"
#include "src/core/ext/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/client_channel/resolver_registry.h"
+#include "src/core/ext/client_channel/retry_throttle.h"
#include "src/core/ext/client_channel/subchannel.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/connected_channel.h"
@@ -189,6 +190,8 @@ typedef struct client_channel_channel_data {
grpc_combiner *combiner;
/** currently active load balancer */
grpc_lb_policy *lb_policy;
+ /** retry throttle data */
+ grpc_server_retry_throttle_data *retry_throttle_data;
/** maps method names to method_parameters structs */
grpc_slice_hash_table *method_params_table;
/** incoming resolver result - set by resolver.next() */
@@ -284,6 +287,65 @@ static void watch_lb_policy_locked(grpc_exec_ctx *exec_ctx, channel_data *chand,
&w->on_changed);
}
+typedef struct {
+ char *server_name;
+ grpc_server_retry_throttle_data *retry_throttle_data;
+} service_config_parsing_state;
+
+static void parse_retry_throttle_params(const grpc_json *field, void *arg) {
+ service_config_parsing_state *parsing_state = arg;
+ if (strcmp(field->key, "retryThrottling") == 0) {
+ if (parsing_state->retry_throttle_data != NULL) return; // Duplicate.
+ if (field->type != GRPC_JSON_OBJECT) return;
+ int max_milli_tokens = 0;
+ int milli_token_ratio = 0;
+ for (grpc_json *sub_field = field->child; sub_field != NULL;
+ sub_field = sub_field->next) {
+ if (sub_field->key == NULL) return;
+ if (strcmp(sub_field->key, "maxTokens") == 0) {
+ if (max_milli_tokens != 0) return; // Duplicate.
+ if (sub_field->type != GRPC_JSON_NUMBER) return;
+ max_milli_tokens = gpr_parse_nonnegative_int(sub_field->value);
+ if (max_milli_tokens == -1) return;
+ max_milli_tokens *= 1000;
+ } else if (strcmp(sub_field->key, "tokenRatio") == 0) {
+ if (milli_token_ratio != 0) return; // Duplicate.
+ if (sub_field->type != GRPC_JSON_NUMBER) return;
+ // We support up to 3 decimal digits.
+ size_t whole_len = strlen(sub_field->value);
+ uint32_t multiplier = 1;
+ uint32_t decimal_value = 0;
+ const char *decimal_point = strchr(sub_field->value, '.');
+ if (decimal_point != NULL) {
+ whole_len = (size_t)(decimal_point - sub_field->value);
+ multiplier = 1000;
+ size_t decimal_len = strlen(decimal_point + 1);
+ if (decimal_len > 3) decimal_len = 3;
+ if (!gpr_parse_bytes_to_uint32(decimal_point + 1, decimal_len,
+ &decimal_value)) {
+ return;
+ }
+ uint32_t decimal_multiplier = 1;
+ for (size_t i = 0; i < (3 - decimal_len); ++i) {
+ decimal_multiplier *= 10;
+ }
+ decimal_value *= decimal_multiplier;
+ }
+ uint32_t whole_value;
+ if (!gpr_parse_bytes_to_uint32(sub_field->value, whole_len,
+ &whole_value)) {
+ return;
+ }
+ milli_token_ratio = (int)((whole_value * multiplier) + decimal_value);
+ if (milli_token_ratio <= 0) return;
+ }
+ }
+ parsing_state->retry_throttle_data =
+ grpc_retry_throttle_map_get_data_for_server(
+ parsing_state->server_name, max_milli_tokens, milli_token_ratio);
+ }
+}
+
static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
void *arg, grpc_error *error) {
channel_data *chand = arg;
@@ -293,8 +355,11 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
grpc_slice_hash_table *method_params_table = NULL;
grpc_connectivity_state state = GRPC_CHANNEL_TRANSIENT_FAILURE;
bool exit_idle = false;
- grpc_error *state_error = GRPC_ERROR_CREATE("No load balancing policy");
+ grpc_error *state_error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("No load balancing policy");
char *service_config_json = NULL;
+ service_config_parsing_state parsing_state;
+ memset(&parsing_state, 0, sizeof(parsing_state));
if (chand->resolver_result != NULL) {
// Find LB policy name.
@@ -355,6 +420,19 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
grpc_service_config *service_config =
grpc_service_config_create(service_config_json);
if (service_config != NULL) {
+ channel_arg =
+ grpc_channel_args_find(chand->resolver_result, GRPC_ARG_SERVER_URI);
+ GPR_ASSERT(channel_arg != NULL);
+ GPR_ASSERT(channel_arg->type == GRPC_ARG_STRING);
+ grpc_uri *uri =
+ grpc_uri_parse(exec_ctx, channel_arg->value.string, true);
+ GPR_ASSERT(uri->path[0] != '\0');
+ parsing_state.server_name =
+ uri->path[0] == '/' ? uri->path + 1 : uri->path;
+ grpc_service_config_parse_global_params(
+ service_config, parse_retry_throttle_params, &parsing_state);
+ parsing_state.server_name = NULL;
+ grpc_uri_destroy(uri);
method_params_table = grpc_service_config_create_method_config_table(
exec_ctx, service_config, method_parameters_create_from_json,
&method_parameters_vtable);
@@ -386,6 +464,11 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
chand->info_service_config_json = service_config_json;
}
gpr_mu_unlock(&chand->info_mu);
+
+ if (chand->retry_throttle_data != NULL) {
+ grpc_server_retry_throttle_data_unref(chand->retry_throttle_data);
+ }
+ chand->retry_throttle_data = parsing_state.retry_throttle_data;
if (chand->method_params_table != NULL) {
grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table);
}
@@ -393,9 +476,9 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
if (lb_policy != NULL) {
grpc_closure_list_sched(exec_ctx, &chand->waiting_for_config_closures);
} else if (chand->resolver == NULL /* disconnected */) {
- grpc_closure_list_fail_all(
- &chand->waiting_for_config_closures,
- GRPC_ERROR_CREATE_REFERENCING("Channel disconnected", &error, 1));
+ grpc_closure_list_fail_all(&chand->waiting_for_config_closures,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Channel disconnected", &error, 1));
grpc_closure_list_sched(exec_ctx, &chand->waiting_for_config_closures);
}
if (lb_policy != NULL && chand->exit_idle_when_lb_policy_arrives) {
@@ -423,8 +506,8 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
grpc_error *refs[] = {error, state_error};
set_channel_connectivity_state_locked(
exec_ctx, chand, GRPC_CHANNEL_SHUTDOWN,
- GRPC_ERROR_CREATE_REFERENCING("Got config after disconnection", refs,
- GPR_ARRAY_SIZE(refs)),
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Got config after disconnection", refs, GPR_ARRAY_SIZE(refs)),
"resolver_gone");
}
@@ -463,8 +546,9 @@ static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
if (op->send_ping != NULL) {
if (chand->lb_policy == NULL) {
- grpc_closure_sched(exec_ctx, op->send_ping,
- GRPC_ERROR_CREATE("Ping with no load balancing"));
+ grpc_closure_sched(
+ exec_ctx, op->send_ping,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Ping with no load balancing"));
} else {
grpc_lb_policy_ping_one_locked(exec_ctx, chand->lb_policy, op->send_ping);
op->bind_pollset = NULL;
@@ -579,7 +663,7 @@ static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx,
if (proxy_name != NULL) gpr_free(proxy_name);
if (new_args != NULL) grpc_channel_args_destroy(exec_ctx, new_args);
if (chand->resolver == NULL) {
- return GRPC_ERROR_CREATE("resolver creation failed");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("resolver creation failed");
}
return GRPC_ERROR_NONE;
}
@@ -613,6 +697,9 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
}
gpr_free(chand->info_lb_policy_name);
gpr_free(chand->info_service_config_json);
+ if (chand->retry_throttle_data != NULL) {
+ grpc_server_retry_throttle_data_unref(chand->retry_throttle_data);
+ }
if (chand->method_params_table != NULL) {
grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table);
}
@@ -654,6 +741,7 @@ typedef struct client_channel_call_data {
grpc_slice path; // Request path.
gpr_timespec call_start_time;
gpr_timespec deadline;
+ grpc_server_retry_throttle_data *retry_throttle_data;
method_parameters *method_params;
grpc_error *cancel_error;
@@ -661,6 +749,7 @@ typedef struct client_channel_call_data {
/** either 0 for no call, 1 for cancelled, or a pointer to a
grpc_subchannel_call */
gpr_atm subchannel_call;
+ gpr_arena *arena;
subchannel_creation_phase creation_phase;
grpc_connected_subchannel *connected_subchannel;
@@ -675,6 +764,9 @@ typedef struct client_channel_call_data {
grpc_call_stack *owning_call;
grpc_linked_mdelem lb_token_mdelem;
+
+ grpc_closure on_complete;
+ grpc_closure *original_on_complete;
} call_data;
grpc_subchannel_call *grpc_client_channel_get_subchannel_call(
@@ -727,7 +819,7 @@ static void retry_waiting_locked(grpc_exec_ctx *exec_ctx, call_data *calld) {
gpr_free(ops);
}
-// Sets calld->method_params.
+// Sets calld->method_params and calld->retry_throttle_data.
// If the method params specify a timeout, populates
// *per_method_deadline and returns true.
static bool set_call_method_params_from_service_config_locked(
@@ -735,6 +827,10 @@ static bool set_call_method_params_from_service_config_locked(
gpr_timespec *per_method_deadline) {
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data;
+ if (chand->retry_throttle_data != NULL) {
+ calld->retry_throttle_data =
+ grpc_server_retry_throttle_data_ref(chand->retry_throttle_data);
+ }
if (chand->method_params_table != NULL) {
calld->method_params = grpc_method_config_table_get(
exec_ctx, chand->method_params_table, calld->path);
@@ -780,12 +876,14 @@ static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg,
calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
if (calld->connected_subchannel == NULL) {
gpr_atm_no_barrier_store(&calld->subchannel_call, 1);
- fail_locked(exec_ctx, calld, GRPC_ERROR_CREATE_REFERENCING(
- "Failed to create subchannel", &error, 1));
+ fail_locked(exec_ctx, calld,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed to create subchannel", &error, 1));
} else if (GET_CALL(calld) == CANCELLED_CALL) {
/* already cancelled before subchannel became ready */
- grpc_error *cancellation_error = GRPC_ERROR_CREATE_REFERENCING(
- "Cancelled before creating subchannel", &error, 1);
+ grpc_error *cancellation_error =
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Cancelled before creating subchannel", &error, 1);
/* if due to deadline, attach the deadline exceeded status to the error */
if (gpr_time_cmp(calld->deadline, gpr_now(GPR_CLOCK_MONOTONIC)) < 0) {
cancellation_error =
@@ -796,9 +894,14 @@ static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg,
} else {
/* Create call on subchannel. */
grpc_subchannel_call *subchannel_call = NULL;
+ const grpc_connected_subchannel_call_args call_args = {
+ .pollent = calld->pollent,
+ .path = calld->path,
+ .start_time = calld->call_start_time,
+ .deadline = calld->deadline,
+ .arena = calld->arena};
grpc_error *new_error = grpc_connected_subchannel_create_call(
- exec_ctx, calld->connected_subchannel, calld->pollent, calld->path,
- calld->call_start_time, calld->deadline, &subchannel_call);
+ exec_ctx, calld->connected_subchannel, &call_args, &subchannel_call);
if (new_error != GRPC_ERROR_NONE) {
new_error = grpc_error_add_child(new_error, error);
subchannel_call = CANCELLED_CALL;
@@ -882,9 +985,9 @@ static bool pick_subchannel_locked(
cpa = closure->cb_arg;
if (cpa->connected_subchannel == connected_subchannel) {
cpa->connected_subchannel = NULL;
- grpc_closure_sched(
- exec_ctx, cpa->on_ready,
- GRPC_ERROR_CREATE_REFERENCING("Pick cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, cpa->on_ready,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick cancelled", &error, 1));
}
}
GPR_TIMER_END("pick_subchannel", 0);
@@ -941,7 +1044,8 @@ static bool pick_subchannel_locked(
grpc_closure_list_append(&chand->waiting_for_config_closures, &cpa->closure,
GRPC_ERROR_NONE);
} else {
- grpc_closure_sched(exec_ctx, on_ready, GRPC_ERROR_CREATE("Disconnected"));
+ grpc_closure_sched(exec_ctx, on_ready,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Disconnected"));
}
GPR_TIMER_END("pick_subchannel", 0);
@@ -1025,9 +1129,14 @@ static void start_transport_stream_op_locked_inner(grpc_exec_ctx *exec_ctx,
if (calld->creation_phase == GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING &&
calld->connected_subchannel != NULL) {
grpc_subchannel_call *subchannel_call = NULL;
+ const grpc_connected_subchannel_call_args call_args = {
+ .pollent = calld->pollent,
+ .path = calld->path,
+ .start_time = calld->call_start_time,
+ .deadline = calld->deadline,
+ .arena = calld->arena};
grpc_error *error = grpc_connected_subchannel_create_call(
- exec_ctx, calld->connected_subchannel, calld->pollent, calld->path,
- calld->call_start_time, calld->deadline, &subchannel_call);
+ exec_ctx, calld->connected_subchannel, &call_args, &subchannel_call);
if (error != GRPC_ERROR_NONE) {
subchannel_call = CANCELLED_CALL;
fail_locked(exec_ctx, calld, GRPC_ERROR_REF(error));
@@ -1045,6 +1154,26 @@ static void start_transport_stream_op_locked_inner(grpc_exec_ctx *exec_ctx,
add_waiting_locked(calld, op);
}
+static void on_complete(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
+ grpc_call_element *elem = arg;
+ call_data *calld = elem->call_data;
+ if (calld->retry_throttle_data != NULL) {
+ if (error == GRPC_ERROR_NONE) {
+ grpc_server_retry_throttle_data_record_success(
+ calld->retry_throttle_data);
+ } else {
+ // TODO(roth): In a subsequent PR, check the return value here and
+ // decide whether or not to retry. Note that we should only
+ // record failures whose statuses match the configured retryable
+ // or non-fatal status codes.
+ grpc_server_retry_throttle_data_record_failure(
+ calld->retry_throttle_data);
+ }
+ }
+ grpc_closure_run(exec_ctx, calld->original_on_complete,
+ GRPC_ERROR_REF(error));
+}
+
static void start_transport_stream_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error_ignored) {
GPR_TIMER_BEGIN("start_transport_stream_op_locked", 0);
@@ -1053,6 +1182,14 @@ static void start_transport_stream_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
grpc_call_element *elem = op->handler_private.args[0];
call_data *calld = elem->call_data;
+ if (op->recv_trailing_metadata != NULL) {
+ GPR_ASSERT(op->on_complete != NULL);
+ calld->original_on_complete = op->on_complete;
+ grpc_closure_init(&calld->on_complete, on_complete, elem,
+ grpc_schedule_on_exec_ctx);
+ op->on_complete = &calld->on_complete;
+ }
+
start_transport_stream_op_locked_inner(exec_ctx, op, elem);
GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call,
@@ -1114,6 +1251,7 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
calld->call_start_time = args->start_time;
calld->deadline = gpr_convert_clock_type(args->deadline, GPR_CLOCK_MONOTONIC);
calld->owning_call = args->call_stack;
+ calld->arena = args->arena;
grpc_deadline_state_start(exec_ctx, elem, calld->deadline);
return GRPC_ERROR_NONE;
}
@@ -1122,7 +1260,7 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *then_schedule_closure) {
call_data *calld = elem->call_data;
grpc_deadline_state_destroy(exec_ctx, elem);
grpc_slice_unref_internal(exec_ctx, calld->path);
@@ -1132,6 +1270,8 @@ static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx,
GRPC_ERROR_UNREF(calld->cancel_error);
grpc_subchannel_call *call = GET_CALL(calld);
if (call != NULL && call != CANCELLED_CALL) {
+ grpc_subchannel_call_set_cleanup_closure(call, then_schedule_closure);
+ then_schedule_closure = NULL;
GRPC_SUBCHANNEL_CALL_UNREF(exec_ctx, call, "client_channel_destroy_call");
}
GPR_ASSERT(calld->creation_phase == GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING);
@@ -1141,7 +1281,7 @@ static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx,
"picked");
}
gpr_free(calld->waiting_ops);
- gpr_free(and_free_memory);
+ grpc_closure_sched(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE);
}
static void cc_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/ext/client_channel/client_channel_plugin.c b/src/core/ext/client_channel/client_channel_plugin.c
index 28d3b63f99..f51277d0b2 100644
--- a/src/core/ext/client_channel/client_channel_plugin.c
+++ b/src/core/ext/client_channel/client_channel_plugin.c
@@ -43,6 +43,7 @@
#include "src/core/ext/client_channel/lb_policy_registry.h"
#include "src/core/ext/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/client_channel/resolver_registry.h"
+#include "src/core/ext/client_channel/retry_throttle.h"
#include "src/core/ext/client_channel/subchannel_index.h"
#include "src/core/lib/surface/channel_init.h"
@@ -82,6 +83,7 @@ static bool set_default_host_if_unset(grpc_exec_ctx *exec_ctx,
void grpc_client_channel_init(void) {
grpc_lb_policy_registry_init();
grpc_resolver_registry_init();
+ grpc_retry_throttle_map_init();
grpc_proxy_mapper_registry_init();
grpc_register_http_proxy_mapper();
grpc_subchannel_index_init();
@@ -96,6 +98,7 @@ void grpc_client_channel_shutdown(void) {
grpc_subchannel_index_shutdown();
grpc_channel_init_shutdown();
grpc_proxy_mapper_registry_shutdown();
+ grpc_retry_throttle_map_shutdown();
grpc_resolver_registry_shutdown();
grpc_lb_policy_registry_shutdown();
}
diff --git a/src/core/ext/client_channel/connector.h b/src/core/ext/client_channel/connector.h
index 9bff41f003..94b5fb5c9e 100644
--- a/src/core/ext/client_channel/connector.h
+++ b/src/core/ext/client_channel/connector.h
@@ -48,8 +48,6 @@ struct grpc_connector {
typedef struct {
/** set of pollsets interested in this connection */
grpc_pollset_set *interested_parties;
- /** initial connect string to send */
- grpc_slice initial_connect_string;
/** deadline for connection */
gpr_timespec deadline;
/** channel arguments (to be passed to transport) */
diff --git a/src/core/ext/client_channel/http_connect_handshaker.c b/src/core/ext/client_channel/http_connect_handshaker.c
index 58ab233f1b..778d76c39f 100644
--- a/src/core/ext/client_channel/http_connect_handshaker.c
+++ b/src/core/ext/client_channel/http_connect_handshaker.c
@@ -116,7 +116,7 @@ static void handshake_failed_locked(grpc_exec_ctx* exec_ctx,
// If we were shut down after an endpoint operation succeeded but
// before the endpoint callback was invoked, we need to generate our
// own error.
- error = GRPC_ERROR_CREATE("Handshaker shutdown");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
}
if (!handshaker->shutdown) {
// TODO(ctiller): It is currently necessary to shutdown endpoints
@@ -226,7 +226,7 @@ static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg,
char* msg;
gpr_asprintf(&msg, "HTTP proxy returned response code %d",
handshaker->http_response.status);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
handshake_failed_locked(exec_ctx, handshaker, error);
goto done;
diff --git a/src/core/ext/client_channel/proxy_mapper_registry.c b/src/core/ext/client_channel/proxy_mapper_registry.c
index 2c44b9d490..0935ddbdbd 100644
--- a/src/core/ext/client_channel/proxy_mapper_registry.c
+++ b/src/core/ext/client_channel/proxy_mapper_registry.c
@@ -94,6 +94,14 @@ static void grpc_proxy_mapper_list_destroy(grpc_proxy_mapper_list* list) {
grpc_proxy_mapper_destroy(list->list[i]);
}
gpr_free(list->list);
+ // Clean up in case we re-initialze later.
+ // TODO(ctiller): This should ideally live in
+ // grpc_proxy_mapper_registry_init(). However, if we did this there,
+ // then we would do it AFTER we start registering proxy mappers from
+ // third-party plugins, so they'd never show up (and would leak memory).
+ // We probably need some sort of dependency system for plugins to fix
+ // this.
+ memset(list, 0, sizeof(*list));
}
//
@@ -102,9 +110,7 @@ static void grpc_proxy_mapper_list_destroy(grpc_proxy_mapper_list* list) {
static grpc_proxy_mapper_list g_proxy_mapper_list;
-void grpc_proxy_mapper_registry_init() {
- memset(&g_proxy_mapper_list, 0, sizeof(g_proxy_mapper_list));
-}
+void grpc_proxy_mapper_registry_init() {}
void grpc_proxy_mapper_registry_shutdown() {
grpc_proxy_mapper_list_destroy(&g_proxy_mapper_list);
diff --git a/src/core/ext/client_channel/resolver_registry.c b/src/core/ext/client_channel/resolver_registry.c
index 3c5a6fb3ff..0f074a3386 100644
--- a/src/core/ext/client_channel/resolver_registry.c
+++ b/src/core/ext/client_channel/resolver_registry.c
@@ -93,7 +93,6 @@ static grpc_resolver_factory *lookup_factory(const char *name) {
return g_all_of_the_resolvers[i];
}
}
-
return NULL;
}
diff --git a/src/core/ext/client_channel/retry_throttle.c b/src/core/ext/client_channel/retry_throttle.c
new file mode 100644
index 0000000000..8926c3d782
--- /dev/null
+++ b/src/core/ext/client_channel/retry_throttle.c
@@ -0,0 +1,210 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/ext/client_channel/retry_throttle.h"
+
+#include <limits.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/atm.h>
+#include <grpc/support/avl.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/sync.h>
+
+//
+// server_retry_throttle_data
+//
+
+struct grpc_server_retry_throttle_data {
+ gpr_refcount refs;
+ int max_milli_tokens;
+ int milli_token_ratio;
+ gpr_atm milli_tokens;
+ // A pointer to the replacement for this grpc_server_retry_throttle_data
+ // entry. If non-NULL, then this entry is stale and must not be used.
+ // We hold a reference to the replacement.
+ gpr_atm replacement;
+};
+
+static void get_replacement_throttle_data_if_needed(
+ grpc_server_retry_throttle_data** throttle_data) {
+ while (true) {
+ grpc_server_retry_throttle_data* new_throttle_data =
+ (grpc_server_retry_throttle_data*)gpr_atm_acq_load(
+ &(*throttle_data)->replacement);
+ if (new_throttle_data == NULL) return;
+ *throttle_data = new_throttle_data;
+ }
+}
+
+bool grpc_server_retry_throttle_data_record_failure(
+ grpc_server_retry_throttle_data* throttle_data) {
+ // First, check if we are stale and need to be replaced.
+ get_replacement_throttle_data_if_needed(&throttle_data);
+ // We decrement milli_tokens by 1000 (1 token) for each failure.
+ const int new_value = (int)gpr_atm_no_barrier_clamped_add(
+ &throttle_data->milli_tokens, (gpr_atm)-1000, (gpr_atm)0,
+ (gpr_atm)throttle_data->max_milli_tokens);
+ // Retries are allowed as long as the new value is above the threshold
+ // (max_milli_tokens / 2).
+ return new_value > throttle_data->max_milli_tokens / 2;
+}
+
+void grpc_server_retry_throttle_data_record_success(
+ grpc_server_retry_throttle_data* throttle_data) {
+ // First, check if we are stale and need to be replaced.
+ get_replacement_throttle_data_if_needed(&throttle_data);
+ // We increment milli_tokens by milli_token_ratio for each success.
+ gpr_atm_no_barrier_clamped_add(
+ &throttle_data->milli_tokens, (gpr_atm)throttle_data->milli_token_ratio,
+ (gpr_atm)0, (gpr_atm)throttle_data->max_milli_tokens);
+}
+
+grpc_server_retry_throttle_data* grpc_server_retry_throttle_data_ref(
+ grpc_server_retry_throttle_data* throttle_data) {
+ gpr_ref(&throttle_data->refs);
+ return throttle_data;
+}
+
+void grpc_server_retry_throttle_data_unref(
+ grpc_server_retry_throttle_data* throttle_data) {
+ if (gpr_unref(&throttle_data->refs)) {
+ grpc_server_retry_throttle_data* replacement =
+ (grpc_server_retry_throttle_data*)gpr_atm_acq_load(
+ &throttle_data->replacement);
+ if (replacement != NULL) {
+ grpc_server_retry_throttle_data_unref(replacement);
+ }
+ gpr_free(throttle_data);
+ }
+}
+
+static grpc_server_retry_throttle_data* grpc_server_retry_throttle_data_create(
+ int max_milli_tokens, int milli_token_ratio,
+ grpc_server_retry_throttle_data* old_throttle_data) {
+ grpc_server_retry_throttle_data* throttle_data =
+ gpr_malloc(sizeof(*throttle_data));
+ memset(throttle_data, 0, sizeof(*throttle_data));
+ gpr_ref_init(&throttle_data->refs, 1);
+ throttle_data->max_milli_tokens = max_milli_tokens;
+ throttle_data->milli_token_ratio = milli_token_ratio;
+ int initial_milli_tokens = max_milli_tokens;
+ // If there was a pre-existing entry for this server name, initialize
+ // the token count by scaling proportionately to the old data. This
+ // ensures that if we're already throttling retries on the old scale,
+ // we will start out doing the same thing on the new one.
+ if (old_throttle_data != NULL) {
+ double token_fraction =
+ (int)gpr_atm_acq_load(&old_throttle_data->milli_tokens) /
+ (double)old_throttle_data->max_milli_tokens;
+ initial_milli_tokens = (int)(token_fraction * max_milli_tokens);
+ }
+ gpr_atm_rel_store(&throttle_data->milli_tokens,
+ (gpr_atm)initial_milli_tokens);
+ // If there was a pre-existing entry, mark it as stale and give it a
+ // pointer to the new entry, which is its replacement.
+ if (old_throttle_data != NULL) {
+ grpc_server_retry_throttle_data_ref(throttle_data);
+ gpr_atm_rel_store(&old_throttle_data->replacement, (gpr_atm)throttle_data);
+ }
+ return throttle_data;
+}
+
+//
+// avl vtable for string -> server_retry_throttle_data map
+//
+
+static void* copy_server_name(void* key) { return gpr_strdup(key); }
+
+static long compare_server_name(void* key1, void* key2) {
+ return strcmp(key1, key2);
+}
+
+static void destroy_server_retry_throttle_data(void* value) {
+ grpc_server_retry_throttle_data* throttle_data = value;
+ grpc_server_retry_throttle_data_unref(throttle_data);
+}
+
+static void* copy_server_retry_throttle_data(void* value) {
+ grpc_server_retry_throttle_data* throttle_data = value;
+ return grpc_server_retry_throttle_data_ref(throttle_data);
+}
+
+static const gpr_avl_vtable avl_vtable = {
+ gpr_free /* destroy_key */, copy_server_name, compare_server_name,
+ destroy_server_retry_throttle_data, copy_server_retry_throttle_data};
+
+//
+// server_retry_throttle_map
+//
+
+static gpr_mu g_mu;
+static gpr_avl g_avl;
+
+void grpc_retry_throttle_map_init() {
+ gpr_mu_init(&g_mu);
+ g_avl = gpr_avl_create(&avl_vtable);
+}
+
+void grpc_retry_throttle_map_shutdown() {
+ gpr_mu_destroy(&g_mu);
+ gpr_avl_unref(g_avl);
+}
+
+grpc_server_retry_throttle_data* grpc_retry_throttle_map_get_data_for_server(
+ const char* server_name, int max_milli_tokens, int milli_token_ratio) {
+ gpr_mu_lock(&g_mu);
+ grpc_server_retry_throttle_data* throttle_data =
+ gpr_avl_get(g_avl, (char*)server_name);
+ if (throttle_data == NULL) {
+ // Entry not found. Create a new one.
+ throttle_data = grpc_server_retry_throttle_data_create(
+ max_milli_tokens, milli_token_ratio, NULL);
+ g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data);
+ } else {
+ if (throttle_data->max_milli_tokens != max_milli_tokens ||
+ throttle_data->milli_token_ratio != milli_token_ratio) {
+ // Entry found but with old parameters. Create a new one based on
+ // the original one.
+ throttle_data = grpc_server_retry_throttle_data_create(
+ max_milli_tokens, milli_token_ratio, throttle_data);
+ g_avl = gpr_avl_add(g_avl, (char*)server_name, throttle_data);
+ } else {
+ // Entry found. Increase refcount.
+ grpc_server_retry_throttle_data_ref(throttle_data);
+ }
+ }
+ gpr_mu_unlock(&g_mu);
+ return throttle_data;
+}
diff --git a/src/core/ext/client_channel/retry_throttle.h b/src/core/ext/client_channel/retry_throttle.h
new file mode 100644
index 0000000000..f9971faf65
--- /dev/null
+++ b/src/core/ext/client_channel/retry_throttle.h
@@ -0,0 +1,65 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_RETRY_THROTTLE_H
+#define GRPC_CORE_EXT_CLIENT_CHANNEL_RETRY_THROTTLE_H
+
+#include <stdbool.h>
+
+/// Tracks retry throttling data for an individual server name.
+typedef struct grpc_server_retry_throttle_data grpc_server_retry_throttle_data;
+
+/// Records a failure. Returns true if it's okay to send a retry.
+bool grpc_server_retry_throttle_data_record_failure(
+ grpc_server_retry_throttle_data* throttle_data);
+/// Records a success.
+void grpc_server_retry_throttle_data_record_success(
+ grpc_server_retry_throttle_data* throttle_data);
+
+grpc_server_retry_throttle_data* grpc_server_retry_throttle_data_ref(
+ grpc_server_retry_throttle_data* throttle_data);
+void grpc_server_retry_throttle_data_unref(
+ grpc_server_retry_throttle_data* throttle_data);
+
+/// Initializes global map of failure data for each server name.
+void grpc_retry_throttle_map_init();
+/// Shuts down global map of failure data for each server name.
+void grpc_retry_throttle_map_shutdown();
+
+/// Returns a reference to the failure data for \a server_name, creating
+/// a new entry if needed.
+/// Caller must eventually unref via \a grpc_server_retry_throttle_data_unref().
+grpc_server_retry_throttle_data* grpc_retry_throttle_map_get_data_for_server(
+ const char* server_name, int max_milli_tokens, int milli_token_ratio);
+
+#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_RETRY_THROTTLE_H */
diff --git a/src/core/ext/client_channel/subchannel.c b/src/core/ext/client_channel/subchannel.c
index 5df0a9060d..063c0badff 100644
--- a/src/core/ext/client_channel/subchannel.c
+++ b/src/core/ext/client_channel/subchannel.c
@@ -41,7 +41,6 @@
#include <grpc/support/string_util.h>
#include "src/core/ext/client_channel/client_channel.h"
-#include "src/core/ext/client_channel/initial_connect_string.h"
#include "src/core/ext/client_channel/parse_address.h"
#include "src/core/ext/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/client_channel/subchannel_index.h"
@@ -103,9 +102,6 @@ struct grpc_subchannel {
grpc_subchannel_key *key;
- /** initial string to send to peer */
- grpc_slice initial_connect_string;
-
/** set during connection */
grpc_connect_out_args connecting_result;
@@ -148,6 +144,7 @@ struct grpc_subchannel {
struct grpc_subchannel_call {
grpc_connected_subchannel *connection;
+ grpc_closure *schedule_closure_after_destroy;
};
#define SUBCHANNEL_CALL_TO_CALL_STACK(call) ((grpc_call_stack *)((call) + 1))
@@ -214,7 +211,6 @@ static void subchannel_destroy(grpc_exec_ctx *exec_ctx, void *arg,
grpc_subchannel *c = arg;
gpr_free((void *)c->filters);
grpc_channel_args_destroy(exec_ctx, c->args);
- grpc_slice_unref_internal(exec_ctx, c->initial_connect_string);
grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker);
grpc_connector_unref(exec_ctx, c->connector);
grpc_pollset_set_destroy(exec_ctx, c->pollset_set);
@@ -273,8 +269,9 @@ static void disconnect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) {
gpr_mu_lock(&c->mu);
GPR_ASSERT(!c->disconnected);
c->disconnected = true;
- grpc_connector_shutdown(exec_ctx, c->connector,
- GRPC_ERROR_CREATE("Subchannel disconnected"));
+ grpc_connector_shutdown(
+ exec_ctx, c->connector,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Subchannel disconnected"));
con = GET_CONNECTED_SUBCHANNEL(c, no_barrier);
if (con != NULL) {
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, con, "connection");
@@ -332,7 +329,6 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
c->pollset_set = grpc_pollset_set_create();
grpc_resolved_address *addr = gpr_malloc(sizeof(*addr));
grpc_get_subchannel_address_arg(exec_ctx, args->args, addr);
- grpc_set_initial_connect_string(&addr, &c->initial_connect_string);
grpc_resolved_address *new_address = NULL;
grpc_channel_args *new_args = NULL;
if (grpc_proxy_mappers_map_address(exec_ctx, addr, args->args, &new_address,
@@ -340,17 +336,15 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(new_address != NULL);
gpr_free(addr);
addr = new_address;
- if (new_args != NULL) c->args = new_args;
- }
- if (c->args == NULL) {
- static const char *keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS};
- grpc_arg new_arg = grpc_create_subchannel_address_arg(addr);
- c->args = grpc_channel_args_copy_and_add_and_remove(
- args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &new_arg,
- 1);
- gpr_free(new_arg.value.string);
}
+ static const char *keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS};
+ grpc_arg new_arg = grpc_create_subchannel_address_arg(addr);
gpr_free(addr);
+ c->args = grpc_channel_args_copy_and_add_and_remove(
+ new_args != NULL ? new_args : args->args, keys_to_remove,
+ GPR_ARRAY_SIZE(keys_to_remove), &new_arg, 1);
+ gpr_free(new_arg.value.string);
+ if (new_args != NULL) grpc_channel_args_destroy(exec_ctx, new_args);
c->root_external_state_watcher.next = c->root_external_state_watcher.prev =
&c->root_external_state_watcher;
grpc_closure_init(&c->connected, subchannel_connected, c,
@@ -405,7 +399,6 @@ static void continue_connect_locked(grpc_exec_ctx *exec_ctx,
args.interested_parties = c->pollset_set;
args.deadline = c->next_attempt;
args.channel_args = c->args;
- args.initial_connect_string = c->initial_connect_string;
grpc_connectivity_state_set(exec_ctx, &c->state_tracker,
GRPC_CHANNEL_CONNECTING, GRPC_ERROR_NONE,
@@ -445,7 +438,8 @@ static void on_alarm(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
gpr_mu_lock(&c->mu);
c->have_alarm = false;
if (c->disconnected) {
- error = GRPC_ERROR_CREATE_REFERENCING("Disconnected", &error, 1);
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Disconnected",
+ &error, 1);
} else {
GRPC_ERROR_REF(error);
}
@@ -696,9 +690,9 @@ static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg,
} else {
grpc_connectivity_state_set(
exec_ctx, &c->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE,
- grpc_error_set_int(
- GRPC_ERROR_CREATE_REFERENCING("Connect Failed", &error, 1),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
+ grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Connect Failed", &error, 1),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
"connect_failed");
const char *errmsg = grpc_error_string(error);
@@ -719,13 +713,22 @@ static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg,
static void subchannel_call_destroy(grpc_exec_ctx *exec_ctx, void *call,
grpc_error *error) {
grpc_subchannel_call *c = call;
+ GPR_ASSERT(c->schedule_closure_after_destroy != NULL);
GPR_TIMER_BEGIN("grpc_subchannel_call_unref.destroy", 0);
grpc_connected_subchannel *connection = c->connection;
- grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), NULL, c);
+ grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), NULL,
+ c->schedule_closure_after_destroy);
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, connection, "subchannel_call");
GPR_TIMER_END("grpc_subchannel_call_unref.destroy", 0);
}
+void grpc_subchannel_call_set_cleanup_closure(grpc_subchannel_call *call,
+ grpc_closure *closure) {
+ GPR_ASSERT(call->schedule_closure_after_destroy == NULL);
+ GPR_ASSERT(closure != NULL);
+ call->schedule_closure_after_destroy = closure;
+}
+
void grpc_subchannel_call_ref(
grpc_subchannel_call *c GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
GRPC_CALL_STACK_REF(SUBCHANNEL_CALL_TO_CALL_STACK(c), REF_REASON);
@@ -761,15 +764,22 @@ grpc_connected_subchannel *grpc_subchannel_get_connected_subchannel(
grpc_error *grpc_connected_subchannel_create_call(
grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *con,
- grpc_polling_entity *pollent, grpc_slice path, gpr_timespec start_time,
- gpr_timespec deadline, grpc_subchannel_call **call) {
+ const grpc_connected_subchannel_call_args *args,
+ grpc_subchannel_call **call) {
grpc_channel_stack *chanstk = CHANNEL_STACK_FROM_CONNECTION(con);
- *call = gpr_zalloc(sizeof(grpc_subchannel_call) + chanstk->call_stack_size);
+ *call = gpr_arena_alloc(
+ args->arena, sizeof(grpc_subchannel_call) + chanstk->call_stack_size);
grpc_call_stack *callstk = SUBCHANNEL_CALL_TO_CALL_STACK(*call);
(*call)->connection = con; // Ref is added below.
- grpc_error *error =
- grpc_call_stack_init(exec_ctx, chanstk, 1, subchannel_call_destroy, *call,
- NULL, NULL, path, start_time, deadline, callstk);
+ const grpc_call_element_args call_args = {.call_stack = callstk,
+ .server_transport_data = NULL,
+ .context = NULL,
+ .path = args->path,
+ .start_time = args->start_time,
+ .deadline = args->deadline,
+ .arena = args->arena};
+ grpc_error *error = grpc_call_stack_init(
+ exec_ctx, chanstk, 1, subchannel_call_destroy, *call, &call_args);
if (error != GRPC_ERROR_NONE) {
const char *error_string = grpc_error_string(error);
gpr_log(GPR_ERROR, "error: %s", error_string);
@@ -778,7 +788,7 @@ grpc_error *grpc_connected_subchannel_create_call(
return error;
}
GRPC_CONNECTED_SUBCHANNEL_REF(con, "subchannel_call");
- grpc_call_stack_set_pollset_or_pollset_set(exec_ctx, callstk, pollent);
+ grpc_call_stack_set_pollset_or_pollset_set(exec_ctx, callstk, args->pollent);
return GRPC_ERROR_NONE;
}
diff --git a/src/core/ext/client_channel/subchannel.h b/src/core/ext/client_channel/subchannel.h
index 6a70a76467..3e64a2507c 100644
--- a/src/core/ext/client_channel/subchannel.h
+++ b/src/core/ext/client_channel/subchannel.h
@@ -37,6 +37,7 @@
#include "src/core/ext/client_channel/connector.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/support/arena.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/metadata.h"
@@ -112,10 +113,18 @@ void grpc_subchannel_call_unref(grpc_exec_ctx *exec_ctx,
GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
/** construct a subchannel call */
+typedef struct {
+ grpc_polling_entity *pollent;
+ grpc_slice path;
+ gpr_timespec start_time;
+ gpr_timespec deadline;
+ gpr_arena *arena;
+} grpc_connected_subchannel_call_args;
+
grpc_error *grpc_connected_subchannel_create_call(
grpc_exec_ctx *exec_ctx, grpc_connected_subchannel *connected_subchannel,
- grpc_polling_entity *pollent, grpc_slice path, gpr_timespec start_time,
- gpr_timespec deadline, grpc_subchannel_call **subchannel_call);
+ const grpc_connected_subchannel_call_args *args,
+ grpc_subchannel_call **subchannel_call);
/** process a transport level op */
void grpc_connected_subchannel_process_transport_op(
@@ -154,6 +163,11 @@ void grpc_subchannel_call_process_op(grpc_exec_ctx *exec_ctx,
char *grpc_subchannel_call_get_peer(grpc_exec_ctx *exec_ctx,
grpc_subchannel_call *subchannel_call);
+/** Must be called once per call. Sets the 'then_schedule_closure' argument for
+ call stack destruction. */
+void grpc_subchannel_call_set_cleanup_closure(
+ grpc_subchannel_call *subchannel_call, grpc_closure *closure);
+
grpc_call_stack *grpc_subchannel_call_get_call_stack(
grpc_subchannel_call *subchannel_call);
diff --git a/src/core/ext/lb_policy/grpclb/grpclb.c b/src/core/ext/lb_policy/grpclb/grpclb.c
index d612591f2e..601b0e643b 100644
--- a/src/core/ext/lb_policy/grpclb/grpclb.c
+++ b/src/core/ext/lb_policy/grpclb/grpclb.c
@@ -925,7 +925,7 @@ static void glb_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) {
}
grpc_connectivity_state_set(
exec_ctx, &glb_policy->state_tracker, GRPC_CHANNEL_SHUTDOWN,
- GRPC_ERROR_CREATE("Channel Shutdown"), "glb_shutdown");
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown"), "glb_shutdown");
/* We need a copy of the lb_call pointer because we can't cancell the call
* while holding glb_policy->mu: lb_on_server_status_received, invoked due to
* the cancel, needs to acquire that same lock */
@@ -965,9 +965,9 @@ static void glb_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
pending_pick *next = pp->next;
if (pp->target == target) {
*target = NULL;
- grpc_closure_sched(
- exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure,
- GRPC_ERROR_CREATE_REFERENCING("Pick Cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick Cancelled", &error, 1));
} else {
pp->next = glb_policy->pending_picks;
glb_policy->pending_picks = pp;
@@ -989,9 +989,9 @@ static void glb_cancel_picks_locked(grpc_exec_ctx *exec_ctx,
pending_pick *next = pp->next;
if ((pp->pick_args.initial_metadata_flags & initial_metadata_flags_mask) ==
initial_metadata_flags_eq) {
- grpc_closure_sched(
- exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure,
- GRPC_ERROR_CREATE_REFERENCING("Pick Cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, &pp->wrapped_on_complete_arg.wrapper_closure,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick Cancelled", &error, 1));
} else {
pp->next = glb_policy->pending_picks;
glb_policy->pending_picks = pp;
@@ -1023,10 +1023,10 @@ static int glb_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
grpc_closure *on_complete) {
if (pick_args->lb_token_mdelem_storage == NULL) {
*target = NULL;
- grpc_closure_sched(
- exec_ctx, on_complete,
- GRPC_ERROR_CREATE("No mdelem storage for the LB token. Load reporting "
- "won't work without it. Failing"));
+ grpc_closure_sched(exec_ctx, on_complete,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No mdelem storage for the LB token. Load reporting "
+ "won't work without it. Failing"));
return 0;
}
diff --git a/src/core/ext/lb_policy/pick_first/pick_first.c b/src/core/ext/lb_policy/pick_first/pick_first.c
index e2a66d16bd..fc65dfdcb9 100644
--- a/src/core/ext/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/lb_policy/pick_first/pick_first.c
@@ -101,7 +101,7 @@ static void pf_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) {
p->pending_picks = NULL;
grpc_connectivity_state_set(
exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN,
- GRPC_ERROR_CREATE("Channel shutdown"), "shutdown");
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel shutdown"), "shutdown");
/* cancel subscription */
if (p->selected != NULL) {
grpc_connected_subchannel_notify_on_state_change(
@@ -131,9 +131,9 @@ static void pf_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
pending_pick *next = pp->next;
if (pp->target == target) {
*target = NULL;
- grpc_closure_sched(
- exec_ctx, pp->on_complete,
- GRPC_ERROR_CREATE_REFERENCING("Pick Cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, pp->on_complete,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick Cancelled", &error, 1));
gpr_free(pp);
} else {
pp->next = p->pending_picks;
@@ -156,9 +156,9 @@ static void pf_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
pending_pick *next = pp->next;
if ((pp->initial_metadata_flags & initial_metadata_flags_mask) ==
initial_metadata_flags_eq) {
- grpc_closure_sched(
- exec_ctx, pp->on_complete,
- GRPC_ERROR_CREATE_REFERENCING("Pick Cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, pp->on_complete,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick Cancelled", &error, 1));
gpr_free(pp);
} else {
pp->next = p->pending_picks;
@@ -325,8 +325,8 @@ static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg,
if (p->num_subchannels == 0) {
grpc_connectivity_state_set(
exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN,
- GRPC_ERROR_CREATE_REFERENCING("Pick first exhausted channels",
- &error, 1),
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick first exhausted channels", &error, 1),
"no_more_channels");
while ((pp = p->pending_picks)) {
p->pending_picks = pp->next;
@@ -373,7 +373,8 @@ static void pf_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
if (p->selected) {
grpc_connected_subchannel_ping(exec_ctx, p->selected, closure);
} else {
- grpc_closure_sched(exec_ctx, closure, GRPC_ERROR_CREATE("Not connected"));
+ grpc_closure_sched(exec_ctx, closure,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Not connected"));
}
}
@@ -423,11 +424,13 @@ static grpc_lb_policy *create_pick_first(grpc_exec_ctx *exec_ctx,
"This LB policy doesn't support user data. It will be ignored");
}
+ static const char *keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS};
memset(&sc_args, 0, sizeof(grpc_subchannel_args));
grpc_arg addr_arg =
grpc_create_subchannel_address_arg(&addresses->addresses[i].address);
- grpc_channel_args *new_args =
- grpc_channel_args_copy_and_add(args->args, &addr_arg, 1);
+ grpc_channel_args *new_args = grpc_channel_args_copy_and_add_and_remove(
+ args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg,
+ 1);
gpr_free(addr_arg.value.string);
sc_args.args = new_args;
grpc_subchannel *subchannel = grpc_client_channel_factory_create_subchannel(
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index f2d1d46179..a62082a2ff 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -320,13 +320,14 @@ static void rr_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol) {
while ((pp = p->pending_picks)) {
p->pending_picks = pp->next;
*pp->target = NULL;
- grpc_closure_sched(exec_ctx, pp->on_complete,
- GRPC_ERROR_CREATE("Channel Shutdown"));
+ grpc_closure_sched(
+ exec_ctx, pp->on_complete,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown"));
gpr_free(pp);
}
grpc_connectivity_state_set(
exec_ctx, &p->state_tracker, GRPC_CHANNEL_SHUTDOWN,
- GRPC_ERROR_CREATE("Channel Shutdown"), "rr_shutdown");
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Shutdown"), "rr_shutdown");
for (i = 0; i < p->num_subchannels; i++) {
subchannel_data *sd = p->subchannels[i];
grpc_subchannel_notify_on_state_change(exec_ctx, sd->subchannel, NULL, NULL,
@@ -345,9 +346,9 @@ static void rr_cancel_pick_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
pending_pick *next = pp->next;
if (pp->target == target) {
*target = NULL;
- grpc_closure_sched(
- exec_ctx, pp->on_complete,
- GRPC_ERROR_CREATE_REFERENCING("Pick cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, pp->on_complete,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick cancelled", &error, 1));
gpr_free(pp);
} else {
pp->next = p->pending_picks;
@@ -371,9 +372,9 @@ static void rr_cancel_picks_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
if ((pp->initial_metadata_flags & initial_metadata_flags_mask) ==
initial_metadata_flags_eq) {
*pp->target = NULL;
- grpc_closure_sched(
- exec_ctx, pp->on_complete,
- GRPC_ERROR_CREATE_REFERENCING("Pick cancelled", &error, 1));
+ grpc_closure_sched(exec_ctx, pp->on_complete,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Pick cancelled", &error, 1));
gpr_free(pp);
} else {
pp->next = p->pending_picks;
@@ -661,8 +662,8 @@ static void rr_ping_one_locked(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol,
grpc_connected_subchannel_ping(exec_ctx, target, closure);
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, target, "rr_picked");
} else {
- grpc_closure_sched(exec_ctx, closure,
- GRPC_ERROR_CREATE("Round Robin not connected"));
+ grpc_closure_sched(exec_ctx, closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Round Robin not connected"));
}
}
@@ -709,11 +710,13 @@ static grpc_lb_policy *round_robin_create(grpc_exec_ctx *exec_ctx,
/* Skip balancer addresses, since we only know how to handle backends. */
if (addresses->addresses[i].is_balancer) continue;
+ static const char *keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS};
memset(&sc_args, 0, sizeof(grpc_subchannel_args));
grpc_arg addr_arg =
grpc_create_subchannel_address_arg(&addresses->addresses[i].address);
- grpc_channel_args *new_args =
- grpc_channel_args_copy_and_add(args->args, &addr_arg, 1);
+ grpc_channel_args *new_args = grpc_channel_args_copy_and_add_and_remove(
+ args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg,
+ 1);
gpr_free(addr_arg.value.string);
sc_args.args = new_args;
grpc_subchannel *subchannel = grpc_client_channel_factory_create_subchannel(
diff --git a/src/core/ext/load_reporting/load_reporting_filter.c b/src/core/ext/load_reporting/load_reporting_filter.c
index c2750634a5..ea57c85c3a 100644
--- a/src/core/ext/load_reporting/load_reporting_filter.c
+++ b/src/core/ext/load_reporting/load_reporting_filter.c
@@ -78,8 +78,8 @@ static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data,
GRPC_MDVALUE(calld->recv_initial_metadata->idx.named.path->md));
calld->have_service_method = true;
} else {
- err =
- grpc_error_add_child(err, GRPC_ERROR_CREATE("Missing :path header"));
+ err = grpc_error_add_child(
+ err, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing :path header"));
}
if (calld->recv_initial_metadata->idx.named.lb_token != NULL) {
calld->initial_md_string = grpc_slice_ref_internal(
@@ -123,7 +123,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *calld = elem->call_data;
/* TODO(dgq): do something with the data
diff --git a/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c b/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
new file mode 100644
index 0000000000..f27da231f5
--- /dev/null
+++ b/src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c
@@ -0,0 +1,350 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+#if GRPC_ARES == 1 && !defined(GRPC_UV)
+
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/ext/client_channel/http_connect_handshaker.h"
+#include "src/core/ext/client_channel/lb_policy_registry.h"
+#include "src/core/ext/client_channel/resolver_registry.h"
+#include "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/support/backoff.h"
+#include "src/core/lib/support/env.h"
+#include "src/core/lib/support/string.h"
+
+#define GRPC_DNS_MIN_CONNECT_TIMEOUT_SECONDS 1
+#define GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS 1
+#define GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER 1.6
+#define GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS 120
+#define GRPC_DNS_RECONNECT_JITTER 0.2
+
+typedef struct {
+ /** base class: must be first */
+ grpc_resolver base;
+ /** name to resolve (usually the same as target_name) */
+ char *name_to_resolve;
+ /** default port to use */
+ char *default_port;
+ /** channel args. */
+ grpc_channel_args *channel_args;
+ /** pollset_set to drive the name resolution process */
+ grpc_pollset_set *interested_parties;
+
+ /** Closures used by the combiner */
+ grpc_closure dns_ares_on_retry_timer_locked;
+ grpc_closure dns_ares_on_resolved_locked;
+
+ /** Combiner guarding the rest of the state */
+ grpc_combiner *combiner;
+ /** are we currently resolving? */
+ bool resolving;
+ /** which version of the result have we published? */
+ int published_version;
+ /** which version of the result is current? */
+ int resolved_version;
+ /** pending next completion, or NULL */
+ grpc_closure *next_completion;
+ /** target result address for next completion */
+ grpc_channel_args **target_result;
+ /** current (fully resolved) result */
+ grpc_channel_args *resolved_result;
+ /** retry timer */
+ bool have_retry_timer;
+ grpc_timer retry_timer;
+ /** retry backoff state */
+ gpr_backoff backoff_state;
+
+ /** currently resolving addresses */
+ grpc_resolved_addresses *addresses;
+} ares_dns_resolver;
+
+static void dns_ares_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
+
+static void dns_ares_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+ ares_dns_resolver *r);
+static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
+ ares_dns_resolver *r);
+
+static void dns_ares_shutdown_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
+static void dns_ares_channel_saw_error_locked(grpc_exec_ctx *exec_ctx,
+ grpc_resolver *r);
+static void dns_ares_next_locked(grpc_exec_ctx *exec_ctx, grpc_resolver *r,
+ grpc_channel_args **target_result,
+ grpc_closure *on_complete);
+
+static const grpc_resolver_vtable dns_ares_resolver_vtable = {
+ dns_ares_destroy, dns_ares_shutdown_locked,
+ dns_ares_channel_saw_error_locked, dns_ares_next_locked};
+
+static void dns_ares_shutdown_locked(grpc_exec_ctx *exec_ctx,
+ grpc_resolver *resolver) {
+ ares_dns_resolver *r = (ares_dns_resolver *)resolver;
+ if (r->have_retry_timer) {
+ grpc_timer_cancel(exec_ctx, &r->retry_timer);
+ }
+ if (r->next_completion != NULL) {
+ *r->target_result = NULL;
+ grpc_closure_sched(
+ exec_ctx, r->next_completion,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown"));
+ r->next_completion = NULL;
+ }
+}
+
+static void dns_ares_channel_saw_error_locked(grpc_exec_ctx *exec_ctx,
+ grpc_resolver *resolver) {
+ ares_dns_resolver *r = (ares_dns_resolver *)resolver;
+ if (!r->resolving) {
+ gpr_backoff_reset(&r->backoff_state);
+ dns_ares_start_resolving_locked(exec_ctx, r);
+ }
+}
+
+static void dns_ares_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
+ ares_dns_resolver *r = arg;
+ r->have_retry_timer = false;
+ if (error == GRPC_ERROR_NONE) {
+ if (!r->resolving) {
+ dns_ares_start_resolving_locked(exec_ctx, r);
+ }
+ }
+ GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "retry-timer");
+}
+
+static void dns_ares_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
+ ares_dns_resolver *r = arg;
+ grpc_channel_args *result = NULL;
+ GPR_ASSERT(r->resolving);
+ r->resolving = false;
+ if (r->addresses != NULL) {
+ grpc_lb_addresses *addresses = grpc_lb_addresses_create(
+ r->addresses->naddrs, NULL /* user_data_vtable */);
+ for (size_t i = 0; i < r->addresses->naddrs; ++i) {
+ grpc_lb_addresses_set_address(
+ addresses, i, &r->addresses->addrs[i].addr,
+ r->addresses->addrs[i].len, false /* is_balancer */,
+ NULL /* balancer_name */, NULL /* user_data */);
+ }
+ grpc_arg new_arg = grpc_lb_addresses_create_channel_arg(addresses);
+ result = grpc_channel_args_copy_and_add(r->channel_args, &new_arg, 1);
+ grpc_resolved_addresses_destroy(r->addresses);
+ grpc_lb_addresses_destroy(exec_ctx, addresses);
+ } else {
+ gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC);
+ gpr_timespec next_try = gpr_backoff_step(&r->backoff_state, now);
+ gpr_timespec timeout = gpr_time_sub(next_try, now);
+ gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
+ grpc_error_string(error));
+ GPR_ASSERT(!r->have_retry_timer);
+ r->have_retry_timer = true;
+ GRPC_RESOLVER_REF(&r->base, "retry-timer");
+ if (gpr_time_cmp(timeout, gpr_time_0(timeout.clock_type)) > 0) {
+ gpr_log(GPR_DEBUG, "retrying in %" PRId64 ".%09d seconds", timeout.tv_sec,
+ timeout.tv_nsec);
+ } else {
+ gpr_log(GPR_DEBUG, "retrying immediately");
+ }
+ grpc_timer_init(exec_ctx, &r->retry_timer, next_try,
+ &r->dns_ares_on_retry_timer_locked, now);
+ }
+ if (r->resolved_result != NULL) {
+ grpc_channel_args_destroy(exec_ctx, r->resolved_result);
+ }
+ r->resolved_result = result;
+ r->resolved_version++;
+ dns_ares_maybe_finish_next_locked(exec_ctx, r);
+ GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "dns-resolving");
+}
+
+static void dns_ares_next_locked(grpc_exec_ctx *exec_ctx,
+ grpc_resolver *resolver,
+ grpc_channel_args **target_result,
+ grpc_closure *on_complete) {
+ gpr_log(GPR_DEBUG, "dns_ares_next is called.");
+ ares_dns_resolver *r = (ares_dns_resolver *)resolver;
+ GPR_ASSERT(!r->next_completion);
+ r->next_completion = on_complete;
+ r->target_result = target_result;
+ if (r->resolved_version == 0 && !r->resolving) {
+ gpr_backoff_reset(&r->backoff_state);
+ dns_ares_start_resolving_locked(exec_ctx, r);
+ } else {
+ dns_ares_maybe_finish_next_locked(exec_ctx, r);
+ }
+}
+
+static void dns_ares_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+ ares_dns_resolver *r) {
+ GRPC_RESOLVER_REF(&r->base, "dns-resolving");
+ GPR_ASSERT(!r->resolving);
+ r->resolving = true;
+ r->addresses = NULL;
+ grpc_resolve_address(exec_ctx, r->name_to_resolve, r->default_port,
+ r->interested_parties, &r->dns_ares_on_resolved_locked,
+ &r->addresses);
+}
+
+static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
+ ares_dns_resolver *r) {
+ if (r->next_completion != NULL &&
+ r->resolved_version != r->published_version) {
+ *r->target_result = r->resolved_result == NULL
+ ? NULL
+ : grpc_channel_args_copy(r->resolved_result);
+ grpc_closure_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE);
+ r->next_completion = NULL;
+ r->published_version = r->resolved_version;
+ }
+}
+
+static void dns_ares_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) {
+ gpr_log(GPR_DEBUG, "dns_ares_destroy");
+ ares_dns_resolver *r = (ares_dns_resolver *)gr;
+ if (r->resolved_result != NULL) {
+ grpc_channel_args_destroy(exec_ctx, r->resolved_result);
+ }
+ grpc_pollset_set_destroy(exec_ctx, r->interested_parties);
+ gpr_free(r->name_to_resolve);
+ gpr_free(r->default_port);
+ grpc_channel_args_destroy(exec_ctx, r->channel_args);
+ gpr_free(r);
+}
+
+static grpc_resolver *dns_ares_create(grpc_exec_ctx *exec_ctx,
+ grpc_resolver_args *args,
+ const char *default_port) {
+ // Get name from args.
+ const char *path = args->uri->path;
+ if (0 != strcmp(args->uri->authority, "")) {
+ gpr_log(GPR_ERROR, "authority based dns uri's not supported");
+ return NULL;
+ }
+ if (path[0] == '/') ++path;
+ // Create resolver.
+ ares_dns_resolver *r = gpr_zalloc(sizeof(ares_dns_resolver));
+ grpc_resolver_init(&r->base, &dns_ares_resolver_vtable, args->combiner);
+ r->name_to_resolve = gpr_strdup(path);
+ r->default_port = gpr_strdup(default_port);
+ r->channel_args = grpc_channel_args_copy(args->args);
+ r->interested_parties = grpc_pollset_set_create();
+ if (args->pollset_set != NULL) {
+ grpc_pollset_set_add_pollset_set(exec_ctx, r->interested_parties,
+ args->pollset_set);
+ }
+ gpr_backoff_init(&r->backoff_state, GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS,
+ GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER,
+ GRPC_DNS_RECONNECT_JITTER,
+ GRPC_DNS_MIN_CONNECT_TIMEOUT_SECONDS * 1000,
+ GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000);
+ grpc_closure_init(&r->dns_ares_on_retry_timer_locked,
+ dns_ares_on_retry_timer_locked, r,
+ grpc_combiner_scheduler(r->base.combiner, false));
+ grpc_closure_init(&r->dns_ares_on_resolved_locked,
+ dns_ares_on_resolved_locked, r,
+ grpc_combiner_scheduler(r->base.combiner, false));
+ return &r->base;
+}
+
+/*
+ * FACTORY
+ */
+
+static void dns_ares_factory_ref(grpc_resolver_factory *factory) {}
+
+static void dns_ares_factory_unref(grpc_resolver_factory *factory) {}
+
+static grpc_resolver *dns_factory_create_resolver(
+ grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory,
+ grpc_resolver_args *args) {
+ return dns_ares_create(exec_ctx, args, "https");
+}
+
+static char *dns_ares_factory_get_default_host_name(
+ grpc_resolver_factory *factory, grpc_uri *uri) {
+ const char *path = uri->path;
+ if (path[0] == '/') ++path;
+ return gpr_strdup(path);
+}
+
+static const grpc_resolver_factory_vtable dns_ares_factory_vtable = {
+ dns_ares_factory_ref, dns_ares_factory_unref, dns_factory_create_resolver,
+ dns_ares_factory_get_default_host_name, "dns"};
+static grpc_resolver_factory dns_resolver_factory = {&dns_ares_factory_vtable};
+
+static grpc_resolver_factory *dns_ares_resolver_factory_create() {
+ return &dns_resolver_factory;
+}
+
+void grpc_resolver_dns_ares_init(void) {
+ char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
+ /* TODO(zyc): Turn on c-ares based resolver by default after the address
+ sorter and the CNAME support are added. */
+ if (resolver != NULL && gpr_stricmp(resolver, "ares") == 0) {
+ grpc_error *error = grpc_ares_init();
+ if (error != GRPC_ERROR_NONE) {
+ GRPC_LOG_IF_ERROR("ares_library_init() failed", error);
+ return;
+ }
+ grpc_resolve_address = grpc_resolve_address_ares;
+ grpc_register_resolver_type(dns_ares_resolver_factory_create());
+ }
+ gpr_free(resolver);
+}
+
+void grpc_resolver_dns_ares_shutdown(void) {
+ char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
+ if (resolver != NULL && gpr_stricmp(resolver, "ares") == 0) {
+ grpc_ares_cleanup();
+ }
+ gpr_free(resolver);
+}
+
+#else /* GRPC_ARES == 1 && !defined(GRPC_UV) */
+
+void grpc_resolver_dns_ares_init(void) {}
+
+void grpc_resolver_dns_ares_shutdown(void) {}
+
+#endif /* GRPC_ARES == 1 && !defined(GRPC_UV) */
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h
new file mode 100644
index 0000000000..334feaa2ab
--- /dev/null
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h
@@ -0,0 +1,65 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
+#define GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
+
+#include <ares.h>
+
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+
+typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
+
+/* Start \a ev_driver. It will keep working until all IO on its ares_channel is
+ done, or grpc_ares_ev_driver_destroy() is called. It may notify the callbacks
+ bound to its ares_channel when necessary. */
+void grpc_ares_ev_driver_start(grpc_exec_ctx *exec_ctx,
+ grpc_ares_ev_driver *ev_driver);
+
+/* Returns the ares_channel owned by \a ev_driver. To bind a c-ares query to
+ \a ev_driver, use the ares_channel owned by \a ev_driver as the arg of the
+ query. */
+ares_channel *grpc_ares_ev_driver_get_channel(grpc_ares_ev_driver *ev_driver);
+
+/* Creates a new grpc_ares_ev_driver. Returns GRPC_ERROR_NONE if \a ev_driver is
+ created successfully. */
+grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver,
+ grpc_pollset_set *pollset_set);
+
+/* Destroys \a ev_driver asynchronously. Pending lookups made on \a ev_driver
+ will be cancelled and their on_done callbacks will be invoked with a status
+ of ARES_ECANCELLED. */
+void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver);
+
+#endif /* GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H */
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
new file mode 100644
index 0000000000..fab4f0c977
--- /dev/null
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
@@ -0,0 +1,319 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#include <grpc/support/port_platform.h>
+#include "src/core/lib/iomgr/port.h"
+#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET)
+
+#include "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
+#include <grpc/support/useful.h>
+#include "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/iomgr_internal.h"
+#include "src/core/lib/iomgr/sockaddr_utils.h"
+#include "src/core/lib/support/string.h"
+
+typedef struct fd_node {
+ /** the owner of this fd node */
+ grpc_ares_ev_driver *ev_driver;
+ /** the grpc_fd owned by this fd node */
+ grpc_fd *grpc_fd;
+ /** a closure wrapping on_readable_cb, which should be invoked when the
+ grpc_fd in this node becomes readable. */
+ grpc_closure read_closure;
+ /** a closure wrapping on_writable_cb, which should be invoked when the
+ grpc_fd in this node becomes writable. */
+ grpc_closure write_closure;
+ /** next fd node in the list */
+ struct fd_node *next;
+
+ /** mutex guarding the rest of the state */
+ gpr_mu mu;
+ /** if the readable closure has been registered */
+ bool readable_registered;
+ /** if the writable closure has been registered */
+ bool writable_registered;
+} fd_node;
+
+struct grpc_ares_ev_driver {
+ /** the ares_channel owned by this event driver */
+ ares_channel channel;
+ /** pollset set for driving the IO events of the channel */
+ grpc_pollset_set *pollset_set;
+ /** refcount of the event driver */
+ gpr_refcount refs;
+
+ /** mutex guarding the rest of the state */
+ gpr_mu mu;
+ /** a list of grpc_fd that this event driver is currently using. */
+ fd_node *fds;
+ /** is this event driver currently working? */
+ bool working;
+ /** is this event driver being shut down */
+ bool shutting_down;
+};
+
+static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx,
+ grpc_ares_ev_driver *ev_driver);
+
+static grpc_ares_ev_driver *grpc_ares_ev_driver_ref(
+ grpc_ares_ev_driver *ev_driver) {
+ gpr_log(GPR_DEBUG, "Ref ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
+ gpr_ref(&ev_driver->refs);
+ return ev_driver;
+}
+
+static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver *ev_driver) {
+ gpr_log(GPR_DEBUG, "Unref ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
+ if (gpr_unref(&ev_driver->refs)) {
+ gpr_log(GPR_DEBUG, "destroy ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
+ GPR_ASSERT(ev_driver->fds == NULL);
+ gpr_mu_destroy(&ev_driver->mu);
+ ares_destroy(ev_driver->channel);
+ gpr_free(ev_driver);
+ }
+}
+
+static void fd_node_destroy(grpc_exec_ctx *exec_ctx, fd_node *fdn) {
+ gpr_log(GPR_DEBUG, "delete fd: %d", grpc_fd_wrapped_fd(fdn->grpc_fd));
+ GPR_ASSERT(!fdn->readable_registered);
+ GPR_ASSERT(!fdn->writable_registered);
+ gpr_mu_destroy(&fdn->mu);
+ grpc_pollset_set_del_fd(exec_ctx, fdn->ev_driver->pollset_set, fdn->grpc_fd);
+ grpc_fd_shutdown(exec_ctx, fdn->grpc_fd,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("fd node destroyed"));
+ grpc_fd_orphan(exec_ctx, fdn->grpc_fd, NULL, NULL, "c-ares query finished");
+ gpr_free(fdn);
+}
+
+grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver,
+ grpc_pollset_set *pollset_set) {
+ *ev_driver = gpr_malloc(sizeof(grpc_ares_ev_driver));
+ int status = ares_init(&(*ev_driver)->channel);
+ gpr_log(GPR_DEBUG, "grpc_ares_ev_driver_create");
+ if (status != ARES_SUCCESS) {
+ char *err_msg;
+ gpr_asprintf(&err_msg, "Failed to init ares channel. C-ares error: %s",
+ ares_strerror(status));
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_msg);
+ gpr_free(err_msg);
+ gpr_free(*ev_driver);
+ return err;
+ }
+ gpr_mu_init(&(*ev_driver)->mu);
+ gpr_ref_init(&(*ev_driver)->refs, 1);
+ (*ev_driver)->pollset_set = pollset_set;
+ (*ev_driver)->fds = NULL;
+ (*ev_driver)->working = false;
+ (*ev_driver)->shutting_down = false;
+ return GRPC_ERROR_NONE;
+}
+
+void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver) {
+ // It's not safe to shut down remaining fds here directly, becauses
+ // ares_host_callback does not provide an exec_ctx. We mark the event driver
+ // as being shut down. If the event driver is working,
+ // grpc_ares_notify_on_event_locked will shut down the fds; if it's not
+ // working, there are no fds to shut down.
+ gpr_mu_lock(&ev_driver->mu);
+ ev_driver->shutting_down = true;
+ gpr_mu_unlock(&ev_driver->mu);
+ grpc_ares_ev_driver_unref(ev_driver);
+}
+
+// Search fd in the fd_node list head. This is an O(n) search, the max possible
+// value of n is ARES_GETSOCK_MAXNUM (16). n is typically 1 - 2 in our tests.
+static fd_node *pop_fd_node(fd_node **head, int fd) {
+ fd_node dummy_head;
+ dummy_head.next = *head;
+ fd_node *node = &dummy_head;
+ while (node->next != NULL) {
+ if (grpc_fd_wrapped_fd(node->next->grpc_fd) == fd) {
+ fd_node *ret = node->next;
+ node->next = node->next->next;
+ *head = dummy_head.next;
+ return ret;
+ }
+ node = node->next;
+ }
+ return NULL;
+}
+
+static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
+ fd_node *fdn = arg;
+ grpc_ares_ev_driver *ev_driver = fdn->ev_driver;
+ gpr_mu_lock(&fdn->mu);
+ fdn->readable_registered = false;
+ gpr_mu_unlock(&fdn->mu);
+
+ gpr_log(GPR_DEBUG, "readable on %d", grpc_fd_wrapped_fd(fdn->grpc_fd));
+ if (error == GRPC_ERROR_NONE) {
+ ares_process_fd(ev_driver->channel, grpc_fd_wrapped_fd(fdn->grpc_fd),
+ ARES_SOCKET_BAD);
+ } else {
+ // If error is not GRPC_ERROR_NONE, it means the fd has been shutdown or
+ // timed out. The pending lookups made on this ev_driver will be cancelled
+ // by the following ares_cancel() and the on_done callbacks will be invoked
+ // with a status of ARES_ECANCELLED. The remaining file descriptors in this
+ // ev_driver will be cleaned up in the follwing
+ // grpc_ares_notify_on_event_locked().
+ ares_cancel(ev_driver->channel);
+ }
+ gpr_mu_lock(&ev_driver->mu);
+ grpc_ares_notify_on_event_locked(exec_ctx, ev_driver);
+ gpr_mu_unlock(&ev_driver->mu);
+ grpc_ares_ev_driver_unref(ev_driver);
+}
+
+static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
+ fd_node *fdn = arg;
+ grpc_ares_ev_driver *ev_driver = fdn->ev_driver;
+ gpr_mu_lock(&fdn->mu);
+ fdn->writable_registered = false;
+ gpr_mu_unlock(&fdn->mu);
+
+ gpr_log(GPR_DEBUG, "writable on %d", grpc_fd_wrapped_fd(fdn->grpc_fd));
+ if (error == GRPC_ERROR_NONE) {
+ ares_process_fd(ev_driver->channel, ARES_SOCKET_BAD,
+ grpc_fd_wrapped_fd(fdn->grpc_fd));
+ } else {
+ // If error is not GRPC_ERROR_NONE, it means the fd has been shutdown or
+ // timed out. The pending lookups made on this ev_driver will be cancelled
+ // by the following ares_cancel() and the on_done callbacks will be invoked
+ // with a status of ARES_ECANCELLED. The remaining file descriptors in this
+ // ev_driver will be cleaned up in the follwing
+ // grpc_ares_notify_on_event_locked().
+ ares_cancel(ev_driver->channel);
+ }
+ gpr_mu_lock(&ev_driver->mu);
+ grpc_ares_notify_on_event_locked(exec_ctx, ev_driver);
+ gpr_mu_unlock(&ev_driver->mu);
+ grpc_ares_ev_driver_unref(ev_driver);
+}
+
+ares_channel *grpc_ares_ev_driver_get_channel(grpc_ares_ev_driver *ev_driver) {
+ return &ev_driver->channel;
+}
+
+// Get the file descriptors used by the ev_driver's ares channel, register
+// driver_closure with these filedescriptors.
+static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx,
+ grpc_ares_ev_driver *ev_driver) {
+ fd_node *new_list = NULL;
+ if (!ev_driver->shutting_down) {
+ ares_socket_t socks[ARES_GETSOCK_MAXNUM];
+ int socks_bitmask =
+ ares_getsock(ev_driver->channel, socks, ARES_GETSOCK_MAXNUM);
+ for (size_t i = 0; i < ARES_GETSOCK_MAXNUM; i++) {
+ if (ARES_GETSOCK_READABLE(socks_bitmask, i) ||
+ ARES_GETSOCK_WRITABLE(socks_bitmask, i)) {
+ fd_node *fdn = pop_fd_node(&ev_driver->fds, socks[i]);
+ // Create a new fd_node if sock[i] is not in the fd_node list.
+ if (fdn == NULL) {
+ char *fd_name;
+ gpr_asprintf(&fd_name, "ares_ev_driver-%" PRIuPTR, i);
+ fdn = gpr_malloc(sizeof(fd_node));
+ gpr_log(GPR_DEBUG, "new fd: %d", socks[i]);
+ fdn->grpc_fd = grpc_fd_create(socks[i], fd_name);
+ fdn->ev_driver = ev_driver;
+ fdn->readable_registered = false;
+ fdn->writable_registered = false;
+ gpr_mu_init(&fdn->mu);
+ grpc_closure_init(&fdn->read_closure, on_readable_cb, fdn,
+ grpc_schedule_on_exec_ctx);
+ grpc_closure_init(&fdn->write_closure, on_writable_cb, fdn,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_set_add_fd(exec_ctx, ev_driver->pollset_set,
+ fdn->grpc_fd);
+ gpr_free(fd_name);
+ }
+ fdn->next = new_list;
+ new_list = fdn;
+ gpr_mu_lock(&fdn->mu);
+ // Register read_closure if the socket is readable and read_closure has
+ // not been registered with this socket.
+ if (ARES_GETSOCK_READABLE(socks_bitmask, i) &&
+ !fdn->readable_registered) {
+ grpc_ares_ev_driver_ref(ev_driver);
+ gpr_log(GPR_DEBUG, "notify read on: %d",
+ grpc_fd_wrapped_fd(fdn->grpc_fd));
+ grpc_fd_notify_on_read(exec_ctx, fdn->grpc_fd, &fdn->read_closure);
+ fdn->readable_registered = true;
+ }
+ // Register write_closure if the socket is writable and write_closure
+ // has not been registered with this socket.
+ if (ARES_GETSOCK_WRITABLE(socks_bitmask, i) &&
+ !fdn->writable_registered) {
+ gpr_log(GPR_DEBUG, "notify write on: %d",
+ grpc_fd_wrapped_fd(fdn->grpc_fd));
+ grpc_ares_ev_driver_ref(ev_driver);
+ grpc_fd_notify_on_write(exec_ctx, fdn->grpc_fd, &fdn->write_closure);
+ fdn->writable_registered = true;
+ }
+ gpr_mu_unlock(&fdn->mu);
+ }
+ }
+ }
+ // Any remaining fds in ev_driver->fds were not returned by ares_getsock() and
+ // are therefore no longer in use, so they can be shut down and removed from
+ // the list.
+ while (ev_driver->fds != NULL) {
+ fd_node *cur = ev_driver->fds;
+ ev_driver->fds = ev_driver->fds->next;
+ fd_node_destroy(exec_ctx, cur);
+ }
+ ev_driver->fds = new_list;
+ // If the ev driver has no working fd, all the tasks are done.
+ if (new_list == NULL) {
+ ev_driver->working = false;
+ gpr_log(GPR_DEBUG, "ev driver stop working");
+ }
+}
+
+void grpc_ares_ev_driver_start(grpc_exec_ctx *exec_ctx,
+ grpc_ares_ev_driver *ev_driver) {
+ gpr_mu_lock(&ev_driver->mu);
+ if (!ev_driver->working) {
+ ev_driver->working = true;
+ grpc_ares_notify_on_event_locked(exec_ctx, ev_driver);
+ }
+ gpr_mu_unlock(&ev_driver->mu);
+}
+
+#endif /* GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET) */
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
new file mode 100644
index 0000000000..3eee8e3513
--- /dev/null
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c
@@ -0,0 +1,289 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+#if GRPC_ARES == 1 && !defined(GRPC_UV)
+
+#include "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#include "src/core/lib/iomgr/sockaddr.h"
+#include "src/core/lib/iomgr/socket_utils_posix.h"
+
+#include <string.h>
+#include <sys/types.h>
+
+#include <ares.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
+#include <grpc/support/useful.h>
+#include "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h"
+#include "src/core/lib/iomgr/executor.h"
+#include "src/core/lib/iomgr/iomgr_internal.h"
+#include "src/core/lib/iomgr/sockaddr_utils.h"
+#include "src/core/lib/support/string.h"
+
+static gpr_once g_basic_init = GPR_ONCE_INIT;
+static gpr_mu g_init_mu;
+
+typedef struct grpc_ares_request {
+ /** following members are set in grpc_resolve_address_ares_impl */
+ /** host to resolve, parsed from the name to resolve */
+ char *host;
+ /** port to fill in sockaddr_in, parsed from the name to resolve */
+ char *port;
+ /** default port to use */
+ char *default_port;
+ /** closure to call when the request completes */
+ grpc_closure *on_done;
+ /** the pointer to receive the resolved addresses */
+ grpc_resolved_addresses **addrs_out;
+ /** the evernt driver used by this request */
+ grpc_ares_ev_driver *ev_driver;
+ /** number of ongoing queries */
+ gpr_refcount pending_queries;
+
+ /** mutex guarding the rest of the state */
+ gpr_mu mu;
+ /** is there at least one successful query, set in on_done_cb */
+ bool success;
+ /** the errors explaining the request failure, set in on_done_cb */
+ grpc_error *error;
+} grpc_ares_request;
+
+static void do_basic_init(void) { gpr_mu_init(&g_init_mu); }
+
+static uint16_t strhtons(const char *port) {
+ if (strcmp(port, "http") == 0) {
+ return htons(80);
+ } else if (strcmp(port, "https") == 0) {
+ return htons(443);
+ }
+ return htons((unsigned short)atoi(port));
+}
+
+static void grpc_ares_request_unref(grpc_exec_ctx *exec_ctx,
+ grpc_ares_request *r) {
+ /* If there are no pending queries, invoke on_done callback and destroy the
+ request */
+ if (gpr_unref(&r->pending_queries)) {
+ /* TODO(zyc): Sort results with RFC6724 before invoking on_done. */
+ if (exec_ctx == NULL) {
+ /* A new exec_ctx is created here, as the c-ares interface does not
+ provide one in ares_host_callback. It's safe to schedule on_done with
+ the newly created exec_ctx, since the caller has been warned not to
+ acquire locks in on_done. ares_dns_resolver is using combiner to
+ protect resources needed by on_done. */
+ grpc_exec_ctx new_exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_closure_sched(&new_exec_ctx, r->on_done, r->error);
+ grpc_exec_ctx_finish(&new_exec_ctx);
+ } else {
+ grpc_closure_sched(exec_ctx, r->on_done, r->error);
+ }
+ gpr_mu_destroy(&r->mu);
+ grpc_ares_ev_driver_destroy(r->ev_driver);
+ gpr_free(r->host);
+ gpr_free(r->port);
+ gpr_free(r->default_port);
+ gpr_free(r);
+ }
+}
+
+static void on_done_cb(void *arg, int status, int timeouts,
+ struct hostent *hostent) {
+ grpc_ares_request *r = (grpc_ares_request *)arg;
+ gpr_mu_lock(&r->mu);
+ if (status == ARES_SUCCESS) {
+ GRPC_ERROR_UNREF(r->error);
+ r->error = GRPC_ERROR_NONE;
+ r->success = true;
+ grpc_resolved_addresses **addresses = r->addrs_out;
+ if (*addresses == NULL) {
+ *addresses = gpr_malloc(sizeof(grpc_resolved_addresses));
+ (*addresses)->naddrs = 0;
+ (*addresses)->addrs = NULL;
+ }
+ size_t prev_naddr = (*addresses)->naddrs;
+ size_t i;
+ for (i = 0; hostent->h_addr_list[i] != NULL; i++) {
+ }
+ (*addresses)->naddrs += i;
+ (*addresses)->addrs =
+ gpr_realloc((*addresses)->addrs,
+ sizeof(grpc_resolved_address) * (*addresses)->naddrs);
+ for (i = prev_naddr; i < (*addresses)->naddrs; i++) {
+ memset(&(*addresses)->addrs[i], 0, sizeof(grpc_resolved_address));
+ if (hostent->h_addrtype == AF_INET6) {
+ (*addresses)->addrs[i].len = sizeof(struct sockaddr_in6);
+ struct sockaddr_in6 *addr =
+ (struct sockaddr_in6 *)&(*addresses)->addrs[i].addr;
+ addr->sin6_family = (sa_family_t)hostent->h_addrtype;
+ addr->sin6_port = strhtons(r->port);
+
+ char output[INET6_ADDRSTRLEN];
+ memcpy(&addr->sin6_addr, hostent->h_addr_list[i - prev_naddr],
+ sizeof(struct in6_addr));
+ ares_inet_ntop(AF_INET6, &addr->sin6_addr, output, INET6_ADDRSTRLEN);
+ gpr_log(GPR_DEBUG,
+ "c-ares resolver gets a AF_INET6 result: \n"
+ " addr: %s\n port: %s\n sin6_scope_id: %d\n",
+ output, r->port, addr->sin6_scope_id);
+ } else {
+ (*addresses)->addrs[i].len = sizeof(struct sockaddr_in);
+ struct sockaddr_in *addr =
+ (struct sockaddr_in *)&(*addresses)->addrs[i].addr;
+ memcpy(&addr->sin_addr, hostent->h_addr_list[i - prev_naddr],
+ sizeof(struct in_addr));
+ addr->sin_family = (sa_family_t)hostent->h_addrtype;
+ addr->sin_port = strhtons(r->port);
+
+ char output[INET_ADDRSTRLEN];
+ ares_inet_ntop(AF_INET, &addr->sin_addr, output, INET_ADDRSTRLEN);
+ gpr_log(GPR_DEBUG,
+ "c-ares resolver gets a AF_INET result: \n"
+ " addr: %s\n port: %s\n",
+ output, r->port);
+ }
+ }
+ } else if (!r->success) {
+ char *error_msg;
+ gpr_asprintf(&error_msg, "C-ares status is not ARES_SUCCESS: %s",
+ ares_strerror(status));
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
+ gpr_free(error_msg);
+ if (r->error == GRPC_ERROR_NONE) {
+ r->error = error;
+ } else {
+ r->error = grpc_error_add_child(error, r->error);
+ }
+ }
+ gpr_mu_unlock(&r->mu);
+ grpc_ares_request_unref(NULL, r);
+}
+
+void grpc_resolve_address_ares_impl(grpc_exec_ctx *exec_ctx, const char *name,
+ const char *default_port,
+ grpc_pollset_set *interested_parties,
+ grpc_closure *on_done,
+ grpc_resolved_addresses **addrs) {
+ /* TODO(zyc): Enable tracing after #9603 is checked in */
+ /* if (grpc_dns_trace) {
+ gpr_log(GPR_DEBUG, "resolve_address (blocking): name=%s, default_port=%s",
+ name, default_port);
+ } */
+
+ /* parse name, splitting it into host and port parts */
+ char *host;
+ char *port;
+ gpr_split_host_port(name, &host, &port);
+ if (host == NULL) {
+ grpc_error *err = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
+ grpc_closure_sched(exec_ctx, on_done, err);
+ goto error_cleanup;
+ } else if (port == NULL) {
+ if (default_port == NULL) {
+ grpc_error *err = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
+ grpc_closure_sched(exec_ctx, on_done, err);
+ goto error_cleanup;
+ }
+ port = gpr_strdup(default_port);
+ }
+
+ grpc_ares_ev_driver *ev_driver;
+ grpc_error *err = grpc_ares_ev_driver_create(&ev_driver, interested_parties);
+ if (err != GRPC_ERROR_NONE) {
+ GRPC_LOG_IF_ERROR("grpc_ares_ev_driver_create() failed", err);
+ goto error_cleanup;
+ }
+
+ grpc_ares_request *r = gpr_malloc(sizeof(grpc_ares_request));
+ gpr_mu_init(&r->mu);
+ r->ev_driver = ev_driver;
+ r->on_done = on_done;
+ r->addrs_out = addrs;
+ r->default_port = gpr_strdup(default_port);
+ r->port = port;
+ r->host = host;
+ r->success = false;
+ r->error = GRPC_ERROR_NONE;
+ ares_channel *channel = grpc_ares_ev_driver_get_channel(r->ev_driver);
+ gpr_ref_init(&r->pending_queries, 2);
+ if (grpc_ipv6_loopback_available()) {
+ gpr_ref(&r->pending_queries);
+ ares_gethostbyname(*channel, r->host, AF_INET6, on_done_cb, r);
+ }
+ ares_gethostbyname(*channel, r->host, AF_INET, on_done_cb, r);
+ /* TODO(zyc): Handle CNAME records here. */
+ grpc_ares_ev_driver_start(exec_ctx, r->ev_driver);
+ grpc_ares_request_unref(exec_ctx, r);
+ return;
+
+error_cleanup:
+ gpr_free(host);
+ gpr_free(port);
+}
+
+void (*grpc_resolve_address_ares)(
+ grpc_exec_ctx *exec_ctx, const char *name, const char *default_port,
+ grpc_pollset_set *interested_parties, grpc_closure *on_done,
+ grpc_resolved_addresses **addrs) = grpc_resolve_address_ares_impl;
+
+grpc_error *grpc_ares_init(void) {
+ gpr_once_init(&g_basic_init, do_basic_init);
+ gpr_mu_lock(&g_init_mu);
+ int status = ares_library_init(ARES_LIB_INIT_ALL);
+ gpr_mu_unlock(&g_init_mu);
+
+ if (status != ARES_SUCCESS) {
+ char *error_msg;
+ gpr_asprintf(&error_msg, "ares_library_init failed: %s",
+ ares_strerror(status));
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
+ gpr_free(error_msg);
+ return error;
+ }
+ return GRPC_ERROR_NONE;
+}
+
+void grpc_ares_cleanup(void) {
+ gpr_mu_lock(&g_init_mu);
+ ares_library_cleanup();
+ gpr_mu_unlock(&g_init_mu);
+}
+
+#endif /* GRPC_ARES == 1 && !defined(GRPC_UV) */
diff --git a/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h
new file mode 100644
index 0000000000..ab00a26b36
--- /dev/null
+++ b/src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
+#define GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
+
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr.h"
+#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+
+/* Asynchronously resolve addr. Use \a default_port if a port isn't designated
+ in addr, otherwise use the port in addr. grpc_ares_init() must be called at
+ least once before this function. \a on_done may be called directly in this
+ function without being scheduled with \a exec_ctx, it must not try to acquire
+ locks that are being held by the caller. */
+extern void (*grpc_resolve_address_ares)(grpc_exec_ctx *exec_ctx,
+ const char *addr,
+ const char *default_port,
+ grpc_pollset_set *interested_parties,
+ grpc_closure *on_done,
+ grpc_resolved_addresses **addresses);
+
+/* Initialize gRPC ares wrapper. Must be called at least once before
+ grpc_resolve_address_ares(). */
+grpc_error *grpc_ares_init(void);
+
+/* Uninitialized gRPC ares wrapper. If there was more than one previous call to
+ grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
+ it has been called the same number of times as grpc_ares_init(). */
+void grpc_ares_cleanup(void);
+
+#endif /* GRPC_CORE_EXT_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H */
diff --git a/src/core/ext/resolver/dns/native/dns_resolver.c b/src/core/ext/resolver/dns/native/dns_resolver.c
index d227c19c43..97cd0486a9 100644
--- a/src/core/ext/resolver/dns/native/dns_resolver.c
+++ b/src/core/ext/resolver/dns/native/dns_resolver.c
@@ -44,6 +44,7 @@
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/support/backoff.h"
+#include "src/core/lib/support/env.h"
#include "src/core/lib/support/string.h"
#define GRPC_DNS_MIN_CONNECT_TIMEOUT_SECONDS 1
@@ -113,8 +114,9 @@ static void dns_shutdown_locked(grpc_exec_ctx *exec_ctx,
}
if (r->next_completion != NULL) {
*r->target_result = NULL;
- grpc_closure_sched(exec_ctx, r->next_completion,
- GRPC_ERROR_CREATE("Resolver Shutdown"));
+ grpc_closure_sched(
+ exec_ctx, r->next_completion,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown"));
r->next_completion = NULL;
}
}
@@ -303,7 +305,21 @@ static grpc_resolver_factory *dns_resolver_factory_create() {
}
void grpc_resolver_dns_native_init(void) {
- grpc_register_resolver_type(dns_resolver_factory_create());
+ char *resolver = gpr_getenv("GRPC_DNS_RESOLVER");
+ if (resolver != NULL && gpr_stricmp(resolver, "native") == 0) {
+ gpr_log(GPR_DEBUG, "Using native dns resolver");
+ grpc_register_resolver_type(dns_resolver_factory_create());
+ } else {
+ grpc_resolver_factory *existing_factory =
+ grpc_resolver_factory_lookup("dns");
+ if (existing_factory == NULL) {
+ gpr_log(GPR_DEBUG, "Using native dns resolver");
+ grpc_register_resolver_type(dns_resolver_factory_create());
+ } else {
+ grpc_resolver_factory_unref(existing_factory);
+ }
+ }
+ gpr_free(resolver);
}
void grpc_resolver_dns_native_shutdown(void) {}
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.c b/src/core/ext/transport/chttp2/client/chttp2_connector.c
index eae0145ecc..2b226c1bf7 100644
--- a/src/core/ext/transport/chttp2/client/chttp2_connector.c
+++ b/src/core/ext/transport/chttp2/client/chttp2_connector.c
@@ -63,8 +63,6 @@ typedef struct {
grpc_closure *notify;
grpc_connect_in_args args;
grpc_connect_out_args *result;
- grpc_closure initial_string_sent;
- grpc_slice_buffer initial_string_buffer;
grpc_endpoint *endpoint; // Non-NULL until handshaking starts.
@@ -82,7 +80,6 @@ static void chttp2_connector_unref(grpc_exec_ctx *exec_ctx,
grpc_connector *con) {
chttp2_connector *c = (chttp2_connector *)con;
if (gpr_unref(&c->refs)) {
- /* c->initial_string_buffer does not need to be destroyed */
gpr_mu_destroy(&c->mu);
// If handshaking is not yet in progress, destroy the endpoint.
// Otherwise, the handshaker will do this for us.
@@ -116,7 +113,7 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
gpr_mu_lock(&c->mu);
if (error != GRPC_ERROR_NONE || c->shutdown) {
if (error == GRPC_ERROR_NONE) {
- error = GRPC_ERROR_CREATE("connector shutdown");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("connector shutdown");
// We were shut down after handshaking completed successfully, so
// destroy the endpoint here.
// TODO(ctiller): It is currently necessary to shutdown endpoints
@@ -160,28 +157,6 @@ static void start_handshake_locked(grpc_exec_ctx *exec_ctx,
c->endpoint = NULL; // Endpoint handed off to handshake manager.
}
-static void on_initial_connect_string_sent(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
- chttp2_connector *c = arg;
- gpr_mu_lock(&c->mu);
- if (error != GRPC_ERROR_NONE || c->shutdown) {
- if (error == GRPC_ERROR_NONE) {
- error = GRPC_ERROR_CREATE("connector shutdown");
- } else {
- error = GRPC_ERROR_REF(error);
- }
- memset(c->result, 0, sizeof(*c->result));
- grpc_closure *notify = c->notify;
- c->notify = NULL;
- grpc_closure_sched(exec_ctx, notify, error);
- gpr_mu_unlock(&c->mu);
- chttp2_connector_unref(exec_ctx, arg);
- } else {
- start_handshake_locked(exec_ctx, c);
- gpr_mu_unlock(&c->mu);
- }
-}
-
static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
chttp2_connector *c = arg;
gpr_mu_lock(&c->mu);
@@ -189,7 +164,7 @@ static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
c->connecting = false;
if (error != GRPC_ERROR_NONE || c->shutdown) {
if (error == GRPC_ERROR_NONE) {
- error = GRPC_ERROR_CREATE("connector shutdown");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("connector shutdown");
} else {
error = GRPC_ERROR_REF(error);
}
@@ -204,17 +179,7 @@ static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
chttp2_connector_unref(exec_ctx, arg);
} else {
GPR_ASSERT(c->endpoint != NULL);
- if (!GRPC_SLICE_IS_EMPTY(c->args.initial_connect_string)) {
- grpc_closure_init(&c->initial_string_sent, on_initial_connect_string_sent,
- c, grpc_schedule_on_exec_ctx);
- grpc_slice_buffer_init(&c->initial_string_buffer);
- grpc_slice_buffer_add(&c->initial_string_buffer,
- c->args.initial_connect_string);
- grpc_endpoint_write(exec_ctx, c->endpoint, &c->initial_string_buffer,
- &c->initial_string_sent);
- } else {
- start_handshake_locked(exec_ctx, c);
- }
+ start_handshake_locked(exec_ctx, c);
gpr_mu_unlock(&c->mu);
}
}
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.c b/src/core/ext/transport/chttp2/server/chttp2_server.c
index 837b9fd03d..6433968ca5 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.c
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.c
@@ -256,7 +256,7 @@ grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "No address added out of total %" PRIuPTR " resolved",
naddrs);
- err = GRPC_ERROR_CREATE_REFERENCING(msg, errors, naddrs);
+ err = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(msg, errors, naddrs);
gpr_free(msg);
goto error;
} else if (count != naddrs) {
@@ -264,7 +264,7 @@ grpc_error *grpc_chttp2_server_add_port(grpc_exec_ctx *exec_ctx,
gpr_asprintf(&msg, "Only %" PRIuPTR
" addresses added out of total %" PRIuPTR " resolved",
count, naddrs);
- err = GRPC_ERROR_CREATE_REFERENCING(msg, errors, naddrs);
+ err = GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(msg, errors, naddrs);
gpr_free(msg);
const char *warning_message = grpc_error_string(err);
diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
index cb2b3f5502..88c813f3be 100644
--- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
+++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c
@@ -61,7 +61,7 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr,
3, (server, addr, creds));
// Create security context.
if (creds == NULL) {
- err = GRPC_ERROR_CREATE(
+ err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"No credentials specified for secure server port (creds==NULL)");
goto done;
}
@@ -72,7 +72,7 @@ int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr,
gpr_asprintf(&msg,
"Unable to create secure server with credentials of type %s.",
creds->type);
- err = grpc_error_set_int(GRPC_ERROR_CREATE(msg),
+ err = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg),
GRPC_ERROR_INT_SECURITY_STATUS, status);
gpr_free(msg);
goto done;
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index a3684535ff..8676a3752e 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -187,7 +187,8 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx,
GRPC_COMBINER_UNREF(exec_ctx, t->combiner, "chttp2_transport");
- cancel_pings(exec_ctx, t, GRPC_ERROR_CREATE("Transport destroyed"));
+ cancel_pings(exec_ctx, t,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"));
while (t->write_cb_pool) {
grpc_chttp2_write_cb *next = t->write_cb_pool->next;
@@ -494,8 +495,9 @@ static void destroy_transport_locked(grpc_exec_ctx *exec_ctx, void *tp,
t->destroying = 1;
close_transport_locked(
exec_ctx, t,
- grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
+ GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "destroy");
}
@@ -518,7 +520,8 @@ static void close_transport_locked(grpc_exec_ctx *exec_ctx,
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
if (t->close_transport_on_writes_finished == NULL) {
t->close_transport_on_writes_finished =
- GRPC_ERROR_CREATE("Delayed close due to in-progress write");
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Delayed close due to in-progress write");
}
t->close_transport_on_writes_finished =
grpc_error_add_child(t->close_transport_on_writes_finished, error);
@@ -575,7 +578,7 @@ void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx, grpc_chttp2_stream *s) {
static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, grpc_stream_refcount *refcount,
- const void *server_data) {
+ const void *server_data, gpr_arena *arena) {
GPR_TIMER_BEGIN("init_stream", 0);
grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
@@ -588,8 +591,8 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
gpr_ref_init(&s->active_streams, 1);
GRPC_CHTTP2_STREAM_REF(s, "chttp2");
- grpc_chttp2_incoming_metadata_buffer_init(&s->metadata_buffer[0]);
- grpc_chttp2_incoming_metadata_buffer_init(&s->metadata_buffer[1]);
+ grpc_chttp2_incoming_metadata_buffer_init(&s->metadata_buffer[0], arena);
+ grpc_chttp2_incoming_metadata_buffer_init(&s->metadata_buffer[1], arena);
grpc_chttp2_data_parser_init(&s->data_parser);
grpc_slice_buffer_init(&s->flow_controlled_buffer);
s->deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
@@ -665,16 +668,17 @@ static void destroy_stream_locked(grpc_exec_ctx *exec_ctx, void *sp,
GPR_TIMER_END("destroy_stream", 0);
- gpr_free(s->destroy_stream_arg);
+ grpc_closure_sched(exec_ctx, s->destroy_stream_arg, GRPC_ERROR_NONE);
}
static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
- grpc_stream *gs, void *and_free_memory) {
+ grpc_stream *gs,
+ grpc_closure *then_schedule_closure) {
GPR_TIMER_BEGIN("destroy_stream", 0);
grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
- s->destroy_stream_arg = and_free_memory;
+ s->destroy_stream_arg = then_schedule_closure;
grpc_closure_sched(
exec_ctx, grpc_closure_init(&s->destroy_stream, destroy_stream_locked, s,
grpc_combiner_scheduler(t->combiner, false)),
@@ -833,7 +837,8 @@ static void write_action_end_locked(grpc_exec_ctx *exec_ctx, void *tp,
if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED) {
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SENT;
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
- close_transport_locked(exec_ctx, t, GRPC_ERROR_CREATE("goaway sent"));
+ close_transport_locked(
+ exec_ctx, t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent"));
}
}
@@ -897,22 +902,19 @@ void grpc_chttp2_add_incoming_goaway(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
uint32_t goaway_error,
grpc_slice goaway_text) {
- char *msg = grpc_dump_slice(goaway_text, GPR_DUMP_HEX | GPR_DUMP_ASCII);
- GRPC_CHTTP2_IF_TRACING(
- gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
- grpc_slice_unref_internal(exec_ctx, goaway_text);
+ // GRPC_CHTTP2_IF_TRACING(
+ // gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
t->seen_goaway = 1;
/* lie: use transient failure from the transport to indicate goaway has been
* received */
connectivity_state_set(
exec_ctx, t, GRPC_CHANNEL_TRANSIENT_FAILURE,
grpc_error_set_str(
- grpc_error_set_int(GRPC_ERROR_CREATE("GOAWAY received"),
- GRPC_ERROR_INT_HTTP2_ERROR,
- (intptr_t)goaway_error),
- GRPC_ERROR_STR_RAW_BYTES, msg),
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
+ GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)goaway_error),
+ GRPC_ERROR_STR_RAW_BYTES, goaway_text),
"got_goaway");
- gpr_free(msg);
}
static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx,
@@ -935,9 +937,10 @@ static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx,
t->next_stream_id += 2;
if (t->next_stream_id >= MAX_CLIENT_STREAM_ID) {
- connectivity_state_set(exec_ctx, t, GRPC_CHANNEL_TRANSIENT_FAILURE,
- GRPC_ERROR_CREATE("Stream IDs exhausted"),
- "no_more_stream_ids");
+ connectivity_state_set(
+ exec_ctx, t, GRPC_CHANNEL_TRANSIENT_FAILURE,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"),
+ "no_more_stream_ids");
}
grpc_chttp2_stream_map_add(&t->stream_map, s->id, s);
@@ -951,9 +954,9 @@ static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx,
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
grpc_chttp2_cancel_stream(
exec_ctx, t, s,
- grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNAVAILABLE));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
}
}
@@ -1002,11 +1005,11 @@ void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx,
}
if (error != GRPC_ERROR_NONE) {
if (closure->error_data.error == GRPC_ERROR_NONE) {
- closure->error_data.error =
- GRPC_ERROR_CREATE("Error in HTTP transport completing operation");
- closure->error_data.error =
- grpc_error_set_str(closure->error_data.error,
- GRPC_ERROR_STR_TARGET_ADDRESS, t->peer_string);
+ closure->error_data.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Error in HTTP transport completing operation");
+ closure->error_data.error = grpc_error_set_str(
+ closure->error_data.error, GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(t->peer_string));
}
closure->error_data.error =
grpc_error_add_child(closure->error_data.error, error);
@@ -1181,10 +1184,11 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
exec_ctx, t, s,
grpc_error_set_int(
grpc_error_set_int(
- grpc_error_set_int(
- GRPC_ERROR_CREATE("to-be-sent initial metadata size "
- "exceeds peer limit"),
- GRPC_ERROR_INT_SIZE, (intptr_t)metadata_size),
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "to-be-sent initial metadata size "
+ "exceeds peer limit"),
+ GRPC_ERROR_INT_SIZE,
+ (intptr_t)metadata_size),
GRPC_ERROR_INT_LIMIT, (intptr_t)metadata_peer_limit),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
} else {
@@ -1200,9 +1204,9 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
} else {
grpc_chttp2_cancel_stream(
exec_ctx, t, s,
- grpc_error_set_int(GRPC_ERROR_CREATE("Transport closed"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNAVAILABLE));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport closed"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
}
} else {
GPR_ASSERT(s->id != 0);
@@ -1214,7 +1218,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
s->send_initial_metadata = NULL;
grpc_chttp2_complete_closure_step(
exec_ctx, t, s, &s->send_initial_metadata_finished,
- GRPC_ERROR_CREATE_REFERENCING(
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Attempt to send initial metadata after stream was closed",
&s->write_closed_error, 1),
"send_initial_metadata_finished");
@@ -1228,7 +1232,7 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
if (s->write_closed) {
grpc_chttp2_complete_closure_step(
exec_ctx, t, s, &s->fetching_send_message_finished,
- GRPC_ERROR_CREATE_REFERENCING(
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Attempt to send message after stream was closed",
&s->write_closed_error, 1),
"fetching_send_message_finished");
@@ -1276,10 +1280,11 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
exec_ctx, t, s,
grpc_error_set_int(
grpc_error_set_int(
- grpc_error_set_int(
- GRPC_ERROR_CREATE("to-be-sent trailing metadata size "
- "exceeds peer limit"),
- GRPC_ERROR_INT_SIZE, (intptr_t)metadata_size),
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "to-be-sent trailing metadata size "
+ "exceeds peer limit"),
+ GRPC_ERROR_INT_SIZE,
+ (intptr_t)metadata_size),
GRPC_ERROR_INT_LIMIT, (intptr_t)metadata_peer_limit),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
} else {
@@ -1292,8 +1297,9 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx, void *stream_op,
exec_ctx, t, s, &s->send_trailing_metadata_finished,
grpc_metadata_batch_is_empty(op->send_trailing_metadata)
? GRPC_ERROR_NONE
- : GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
- "stream was closed"),
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Attempt to send trailing metadata after "
+ "stream was closed"),
"send_trailing_metadata_finished");
} else if (s->id != 0) {
/* TODO(ctiller): check if there's flow control for any outstanding
@@ -1408,11 +1414,11 @@ static void send_goaway(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
grpc_error *error) {
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
grpc_http2_error_code http_error;
- const char *msg;
- grpc_error_get_status(error, gpr_inf_future(GPR_CLOCK_MONOTONIC), NULL, &msg,
- &http_error);
+ grpc_slice slice;
+ grpc_error_get_status(error, gpr_inf_future(GPR_CLOCK_MONOTONIC), NULL,
+ &slice, &http_error);
grpc_chttp2_goaway_append(t->last_new_stream_id, (uint32_t)http_error,
- grpc_slice_from_copied_string(msg), &t->qbuf);
+ grpc_slice_ref_internal(slice), &t->qbuf);
grpc_chttp2_initiate_write(exec_ctx, t, false, "goaway_sent");
GRPC_ERROR_UNREF(error);
}
@@ -1572,7 +1578,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SENT) {
close_transport_locked(
exec_ctx, t,
- GRPC_ERROR_CREATE_REFERENCING(
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Last stream closed after sending GOAWAY", &error, 1));
}
}
@@ -1613,8 +1619,8 @@ void grpc_chttp2_cancel_stream(grpc_exec_ctx *exec_ctx,
void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
grpc_chttp2_stream *s, grpc_error *error) {
grpc_status_code status;
- const char *msg;
- grpc_error_get_status(error, s->deadline, &status, &msg, NULL);
+ grpc_slice slice;
+ grpc_error_get_status(error, s->deadline, &status, &slice, NULL);
if (status != GRPC_STATUS_OK) {
s->seen_error = true;
@@ -1629,15 +1635,19 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
s->recv_trailing_metadata_finished != NULL) {
char status_string[GPR_LTOA_MIN_BUFSIZE];
gpr_ltoa(status, status_string);
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
- exec_ctx, &s->metadata_buffer[1],
- grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_STATUS,
- grpc_slice_from_copied_string(status_string)));
- if (msg != NULL) {
- grpc_chttp2_incoming_metadata_buffer_replace_or_add(
- exec_ctx, &s->metadata_buffer[1],
- grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_MESSAGE,
- grpc_slice_from_copied_string(msg)));
+ GRPC_LOG_IF_ERROR("add_status",
+ grpc_chttp2_incoming_metadata_buffer_replace_or_add(
+ exec_ctx, &s->metadata_buffer[1],
+ grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_GRPC_STATUS,
+ grpc_slice_from_copied_string(status_string))));
+ if (!GRPC_SLICE_IS_EMPTY(slice)) {
+ GRPC_LOG_IF_ERROR(
+ "add_status_message",
+ grpc_chttp2_incoming_metadata_buffer_replace_or_add(
+ exec_ctx, &s->metadata_buffer[1],
+ grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_GRPC_MESSAGE,
+ grpc_slice_ref_internal(slice))));
}
s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
grpc_chttp2_maybe_complete_recv_trailing_metadata(exec_ctx, t, s);
@@ -1666,7 +1676,8 @@ static grpc_error *removal_error(grpc_error *extra_error, grpc_chttp2_stream *s,
add_error(extra_error, refs, &nrefs);
grpc_error *error = GRPC_ERROR_NONE;
if (nrefs > 0) {
- error = GRPC_ERROR_CREATE_REFERENCING(master_error_msg, refs, nrefs);
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(master_error_msg,
+ refs, nrefs);
}
GRPC_ERROR_UNREF(extra_error);
return error;
@@ -1760,12 +1771,13 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
grpc_chttp2_stream *s, grpc_error *error) {
grpc_slice hdr;
grpc_slice status_hdr;
+ grpc_slice http_status_hdr;
grpc_slice message_pfx;
uint8_t *p;
uint32_t len = 0;
grpc_status_code grpc_status;
- const char *msg;
- grpc_error_get_status(error, s->deadline, &grpc_status, &msg, NULL);
+ grpc_slice slice;
+ grpc_error_get_status(error, s->deadline, &grpc_status, &slice, NULL);
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
@@ -1775,6 +1787,26 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
It's complicated by the fact that our send machinery would be dead by
the time we got around to sending this, so instead we ignore HPACK
compression and just write the uncompressed bytes onto the wire. */
+ if (!s->sent_initial_metadata) {
+ http_status_hdr = grpc_slice_malloc(13);
+ p = GRPC_SLICE_START_PTR(http_status_hdr);
+ *p++ = 0x00;
+ *p++ = 7;
+ *p++ = ':';
+ *p++ = 's';
+ *p++ = 't';
+ *p++ = 'a';
+ *p++ = 't';
+ *p++ = 'u';
+ *p++ = 's';
+ *p++ = 3;
+ *p++ = '2';
+ *p++ = '0';
+ *p++ = '0';
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(http_status_hdr));
+ len += (uint32_t)GRPC_SLICE_LENGTH(http_status_hdr);
+ }
+
status_hdr = grpc_slice_malloc(15 + (grpc_status >= 10));
p = GRPC_SLICE_START_PTR(status_hdr);
*p++ = 0x00; /* literal header, not indexed */
@@ -1801,32 +1833,30 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
len += (uint32_t)GRPC_SLICE_LENGTH(status_hdr);
- if (msg != NULL) {
- size_t msg_len = strlen(msg);
- GPR_ASSERT(msg_len <= UINT32_MAX);
- uint32_t msg_len_len = GRPC_CHTTP2_VARINT_LENGTH((uint32_t)msg_len, 0);
- message_pfx = grpc_slice_malloc(14 + msg_len_len);
- p = GRPC_SLICE_START_PTR(message_pfx);
- *p++ = 0x00; /* literal header, not indexed */
- *p++ = 12; /* len(grpc-message) */
- *p++ = 'g';
- *p++ = 'r';
- *p++ = 'p';
- *p++ = 'c';
- *p++ = '-';
- *p++ = 'm';
- *p++ = 'e';
- *p++ = 's';
- *p++ = 's';
- *p++ = 'a';
- *p++ = 'g';
- *p++ = 'e';
- GRPC_CHTTP2_WRITE_VARINT((uint32_t)msg_len, 0, 0, p, (uint32_t)msg_len_len);
- p += msg_len_len;
- GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
- len += (uint32_t)GRPC_SLICE_LENGTH(message_pfx);
- len += (uint32_t)msg_len;
- }
+ size_t msg_len = GRPC_SLICE_LENGTH(slice);
+ GPR_ASSERT(msg_len <= UINT32_MAX);
+ uint32_t msg_len_len = GRPC_CHTTP2_VARINT_LENGTH((uint32_t)msg_len, 1);
+ message_pfx = grpc_slice_malloc(14 + msg_len_len);
+ p = GRPC_SLICE_START_PTR(message_pfx);
+ *p++ = 0x00; /* literal header, not indexed */
+ *p++ = 12; /* len(grpc-message) */
+ *p++ = 'g';
+ *p++ = 'r';
+ *p++ = 'p';
+ *p++ = 'c';
+ *p++ = '-';
+ *p++ = 'm';
+ *p++ = 'e';
+ *p++ = 's';
+ *p++ = 's';
+ *p++ = 'a';
+ *p++ = 'g';
+ *p++ = 'e';
+ GRPC_CHTTP2_WRITE_VARINT((uint32_t)msg_len, 1, 0, p, (uint32_t)msg_len_len);
+ p += msg_len_len;
+ GPR_ASSERT(p == GRPC_SLICE_END_PTR(message_pfx));
+ len += (uint32_t)GRPC_SLICE_LENGTH(message_pfx);
+ len += (uint32_t)msg_len;
hdr = grpc_slice_malloc(9);
p = GRPC_SLICE_START_PTR(hdr);
@@ -1842,11 +1872,12 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
GPR_ASSERT(p == GRPC_SLICE_END_PTR(hdr));
grpc_slice_buffer_add(&t->qbuf, hdr);
- grpc_slice_buffer_add(&t->qbuf, status_hdr);
- if (msg != NULL) {
- grpc_slice_buffer_add(&t->qbuf, message_pfx);
- grpc_slice_buffer_add(&t->qbuf, grpc_slice_from_copied_string(msg));
+ if (!s->sent_initial_metadata) {
+ grpc_slice_buffer_add(&t->qbuf, http_status_hdr);
}
+ grpc_slice_buffer_add(&t->qbuf, status_hdr);
+ grpc_slice_buffer_add(&t->qbuf, message_pfx);
+ grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
grpc_slice_buffer_add(
&t->qbuf, grpc_chttp2_rst_stream_create(s->id, GRPC_HTTP2_NO_ERROR,
&s->stats.outgoing));
@@ -1921,9 +1952,9 @@ static grpc_error *try_http_parsing(grpc_exec_ctx *exec_ctx,
if (parse_error == GRPC_ERROR_NONE &&
(parse_error = grpc_http_parser_eof(&parser)) == GRPC_ERROR_NONE) {
error = grpc_error_set_int(
- grpc_error_set_int(
- GRPC_ERROR_CREATE("Trying to connect an http1.x server"),
- GRPC_ERROR_INT_HTTP_STATUS, response.status),
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Trying to connect an http1.x server"),
+ GRPC_ERROR_INT_HTTP_STATUS, response.status),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
}
GRPC_ERROR_UNREF(parse_error);
@@ -1944,9 +1975,10 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
grpc_error *err = error;
if (err != GRPC_ERROR_NONE) {
- err = grpc_error_set_int(
- GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state);
+ err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Endpoint read failed", &err, 1),
+ GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
+ t->write_state);
}
GPR_SWAP(grpc_error *, err, error);
GRPC_ERROR_UNREF(err);
@@ -1967,8 +1999,8 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
if (errors[1] != GRPC_ERROR_NONE) {
errors[2] = try_http_parsing(exec_ctx, t);
GRPC_ERROR_UNREF(error);
- error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
- GPR_ARRAY_SIZE(errors));
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed parsing HTTP/2", errors, GPR_ARRAY_SIZE(errors));
}
for (i = 0; i < GPR_ARRAY_SIZE(errors); i++) {
GRPC_ERROR_UNREF(errors[i]);
@@ -1993,7 +2025,7 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
GPR_TIMER_BEGIN("post_reading_action_locked", 0);
bool keep_reading = false;
if (error == GRPC_ERROR_NONE && t->closed) {
- error = GRPC_ERROR_CREATE("Transport closed");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport closed");
}
if (error != GRPC_ERROR_NONE) {
close_transport_locked(exec_ctx, t, GRPC_ERROR_REF(error));
@@ -2128,8 +2160,8 @@ static void keepalive_watchdog_fired_locked(grpc_exec_ctx *exec_ctx, void *arg,
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
if (error == GRPC_ERROR_NONE) {
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
- close_transport_locked(exec_ctx, t,
- GRPC_ERROR_CREATE("keepalive watchdog timeout"));
+ close_transport_locked(exec_ctx, t, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "keepalive watchdog timeout"));
}
} else {
/** The watchdog timer should have been cancelled by
@@ -2328,7 +2360,8 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
gpr_mu_lock(&bs->slice_mu);
if (bs->remaining_bytes < GRPC_SLICE_LENGTH(slice)) {
incoming_byte_stream_publish_error(
- exec_ctx, bs, GRPC_ERROR_CREATE("Too many bytes in stream"));
+ exec_ctx, bs,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream"));
} else {
bs->remaining_bytes -= (uint32_t)GRPC_SLICE_LENGTH(slice);
if (bs->on_next != NULL) {
@@ -2348,7 +2381,7 @@ void grpc_chttp2_incoming_byte_stream_finished(
if (error == GRPC_ERROR_NONE) {
gpr_mu_lock(&bs->slice_mu);
if (bs->remaining_bytes != 0) {
- error = GRPC_ERROR_CREATE("Truncated message");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
}
gpr_mu_unlock(&bs->slice_mu);
}
@@ -2428,9 +2461,9 @@ static void benign_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg,
t->peer_string);
}
send_goaway(exec_ctx, t,
- grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
- GRPC_ERROR_INT_HTTP2_ERROR,
- GRPC_HTTP2_ENHANCE_YOUR_CALM));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
} else if (error == GRPC_ERROR_NONE && grpc_resource_quota_trace) {
gpr_log(GPR_DEBUG,
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
@@ -2457,9 +2490,10 @@ static void destructive_reclaimer_locked(grpc_exec_ctx *exec_ctx, void *arg,
s->id);
}
grpc_chttp2_cancel_stream(
- exec_ctx, t, s, grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
- GRPC_ERROR_INT_HTTP2_ERROR,
- GRPC_HTTP2_ENHANCE_YOUR_CALM));
+ exec_ctx, t, s,
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
+ GRPC_ERROR_INT_HTTP2_ERROR,
+ GRPC_HTTP2_ENHANCE_YOUR_CALM));
if (n > 1) {
/* Since we cancel one stream per destructive reclamation, if
there are more streams left, we can immediately post a new
diff --git a/src/core/ext/transport/chttp2/transport/frame_data.c b/src/core/ext/transport/chttp2/transport/frame_data.c
index f9b9e1b309..6e9258ee7e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_data.c
+++ b/src/core/ext/transport/chttp2/transport/frame_data.c
@@ -54,7 +54,8 @@ void grpc_chttp2_data_parser_destroy(grpc_exec_ctx *exec_ctx,
grpc_chttp2_data_parser *parser) {
if (parser->parsing_frame != NULL) {
grpc_chttp2_incoming_byte_stream_finished(
- exec_ctx, parser->parsing_frame, GRPC_ERROR_CREATE("Parser destroyed"));
+ exec_ctx, parser->parsing_frame,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Parser destroyed"));
}
GRPC_ERROR_UNREF(parser->error);
}
@@ -65,8 +66,9 @@ grpc_error *grpc_chttp2_data_parser_begin_frame(grpc_chttp2_data_parser *parser,
if (flags & ~GRPC_CHTTP2_DATA_FLAG_END_STREAM) {
char *msg;
gpr_asprintf(&msg, "unsupported data flags: 0x%02x", flags);
- grpc_error *err = grpc_error_set_int(
- GRPC_ERROR_CREATE(msg), GRPC_ERROR_INT_STREAM_ID, (intptr_t)stream_id);
+ grpc_error *err =
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg),
+ GRPC_ERROR_INT_STREAM_ID, (intptr_t)stream_id);
gpr_free(msg);
return err;
}
@@ -173,13 +175,13 @@ static grpc_error *parse_inner(grpc_exec_ctx *exec_ctx,
break;
default:
gpr_asprintf(&msg, "Bad GRPC frame type 0x%02x", p->frame_type);
- p->error = GRPC_ERROR_CREATE(msg);
+ p->error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
p->error = grpc_error_set_int(p->error, GRPC_ERROR_INT_STREAM_ID,
(intptr_t)s->id);
gpr_free(msg);
msg = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII);
- p->error =
- grpc_error_set_str(p->error, GRPC_ERROR_STR_RAW_BYTES, msg);
+ p->error = grpc_error_set_str(p->error, GRPC_ERROR_STR_RAW_BYTES,
+ grpc_slice_from_copied_string(msg));
gpr_free(msg);
p->error =
grpc_error_set_int(p->error, GRPC_ERROR_INT_OFFSET, cur - beg);
@@ -265,7 +267,8 @@ static grpc_error *parse_inner(grpc_exec_ctx *exec_ctx,
}
}
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
+ GPR_UNREACHABLE_CODE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
}
grpc_error *grpc_chttp2_data_parser_parse(grpc_exec_ctx *exec_ctx, void *parser,
diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.c b/src/core/ext/transport/chttp2/transport/frame_goaway.c
index d99d486c1b..001271dd22 100644
--- a/src/core/ext/transport/chttp2/transport/frame_goaway.c
+++ b/src/core/ext/transport/chttp2/transport/frame_goaway.c
@@ -54,7 +54,7 @@ grpc_error *grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser *p,
if (length < 8) {
char *msg;
gpr_asprintf(&msg, "goaway frame too short (%d bytes)", length);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -156,7 +156,8 @@ grpc_error *grpc_chttp2_goaway_parser_parse(grpc_exec_ctx *exec_ctx,
}
return GRPC_ERROR_NONE;
}
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
+ GPR_UNREACHABLE_CODE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
}
void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code,
diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.c b/src/core/ext/transport/chttp2/transport/frame_ping.c
index 9b4b1a7b84..de8462a17e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_ping.c
+++ b/src/core/ext/transport/chttp2/transport/frame_ping.c
@@ -71,7 +71,7 @@ grpc_error *grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser *parser,
if (flags & 0xfe || length != 8) {
char *msg;
gpr_asprintf(&msg, "invalid ping: length=%d, flags=%02x", length, flags);
- grpc_error *error = GRPC_ERROR_CREATE(msg);
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return error;
}
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
index cb017e75f0..225f15c77c 100644
--- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
+++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
@@ -76,7 +76,7 @@ grpc_error *grpc_chttp2_rst_stream_parser_begin_frame(
char *msg;
gpr_asprintf(&msg, "invalid rst_stream: length=%d, flags=%02x", length,
flags);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -112,8 +112,9 @@ grpc_error *grpc_chttp2_rst_stream_parser_parse(grpc_exec_ctx *exec_ctx,
char *message;
gpr_asprintf(&message, "Received RST_STREAM with error code %d", reason);
error = grpc_error_set_int(
- grpc_error_set_str(GRPC_ERROR_CREATE("RST_STREAM"),
- GRPC_ERROR_STR_GRPC_MESSAGE, message),
+ grpc_error_set_str(GRPC_ERROR_CREATE_FROM_STATIC_STRING("RST_STREAM"),
+ GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_copied_string(message)),
GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)reason);
gpr_free(message);
}
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.c b/src/core/ext/transport/chttp2/transport/frame_settings.c
index 82290e34cd..16881c0707 100644
--- a/src/core/ext/transport/chttp2/transport/frame_settings.c
+++ b/src/core/ext/transport/chttp2/transport/frame_settings.c
@@ -131,13 +131,16 @@ grpc_error *grpc_chttp2_settings_parser_begin_frame(
if (flags == GRPC_CHTTP2_FLAG_ACK) {
parser->is_ack = 1;
if (length != 0) {
- return GRPC_ERROR_CREATE("non-empty settings ack frame received");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "non-empty settings ack frame received");
}
return GRPC_ERROR_NONE;
} else if (flags != 0) {
- return GRPC_ERROR_CREATE("invalid flags on settings frame");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "invalid flags on settings frame");
} else if (length % 6 != 0) {
- return GRPC_ERROR_CREATE("settings frames must be a multiple of six bytes");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "settings frames must be a multiple of six bytes");
} else {
return GRPC_ERROR_NONE;
}
@@ -229,7 +232,7 @@ grpc_error *grpc_chttp2_settings_parser_parse(grpc_exec_ctx *exec_ctx, void *p,
&t->qbuf);
gpr_asprintf(&msg, "invalid value %u passed for %s",
parser->value, sp->name);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.c b/src/core/ext/transport/chttp2/transport/frame_window_update.c
index 8fa0bb471a..b76b6f6f47 100644
--- a/src/core/ext/transport/chttp2/transport/frame_window_update.c
+++ b/src/core/ext/transport/chttp2/transport/frame_window_update.c
@@ -70,7 +70,7 @@ grpc_error *grpc_chttp2_window_update_parser_begin_frame(
char *msg;
gpr_asprintf(&msg, "invalid window update: length=%d, flags=%02x", length,
flags);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -102,7 +102,7 @@ grpc_error *grpc_chttp2_window_update_parser_parse(
if (received_update == 0 || (received_update & 0x80000000u)) {
char *msg;
gpr_asprintf(&msg, "invalid window update bytes: %d", p->amount);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c
index 40f5120308..5099d736bf 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c
@@ -693,7 +693,7 @@ static grpc_error *on_hdr(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p,
}
if (p->on_header == NULL) {
GRPC_MDELEM_UNREF(exec_ctx, md);
- return GRPC_ERROR_CREATE("on_header callback not set");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("on_header callback not set");
}
p->on_header(exec_ctx, p->on_header_user_data, md);
return GRPC_ERROR_NONE;
@@ -810,7 +810,8 @@ static grpc_error *finish_indexed_field(grpc_exec_ctx *exec_ctx,
grpc_mdelem md = grpc_chttp2_hptbl_lookup(&p->table, p->index);
if (GRPC_MDISNULL(md)) {
return grpc_error_set_int(
- grpc_error_set_int(GRPC_ERROR_CREATE("Invalid HPACK index received"),
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid HPACK index received"),
GRPC_ERROR_INT_INDEX, (intptr_t)p->index),
GRPC_ERROR_INT_SIZE, (intptr_t)p->table.num_ents);
}
@@ -1074,7 +1075,7 @@ static grpc_error *parse_max_tbl_size(grpc_exec_ctx *exec_ctx,
if (p->dynamic_table_update_allowed == 0) {
return parse_error(
exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"More than two max table size changes in a single frame"));
}
p->dynamic_table_update_allowed--;
@@ -1092,7 +1093,7 @@ static grpc_error *parse_max_tbl_size_x(grpc_exec_ctx *exec_ctx,
if (p->dynamic_table_update_allowed == 0) {
return parse_error(
exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"More than two max table size changes in a single frame"));
}
p->dynamic_table_update_allowed--;
@@ -1126,7 +1127,7 @@ static grpc_error *parse_illegal_op(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(cur != end);
char *msg;
gpr_asprintf(&msg, "Illegal hpack op code %d", *cur);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return parse_error(exec_ctx, p, cur, end, err);
}
@@ -1246,7 +1247,7 @@ error:
"integer overflow in hpack integer decoding: have 0x%08x, "
"got byte 0x%02x on byte 5",
*p->parsing.value, *cur);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return parse_error(exec_ctx, p, cur, end, err);
}
@@ -1275,7 +1276,7 @@ static grpc_error *parse_value5up(grpc_exec_ctx *exec_ctx,
"integer overflow in hpack integer decoding: have 0x%08x, "
"got byte 0x%02x sometime after byte 5",
*p->parsing.value, *cur);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return parse_error(exec_ctx, p, cur, end, err);
}
@@ -1333,8 +1334,9 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx,
bits = inverse_base64[*cur];
++cur;
if (bits == 255)
- return parse_error(exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE("Illegal base64 character"));
+ return parse_error(
+ exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
else if (bits == 64)
goto b64_byte0;
p->base64_buffer = bits << 18;
@@ -1348,8 +1350,9 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx,
bits = inverse_base64[*cur];
++cur;
if (bits == 255)
- return parse_error(exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE("Illegal base64 character"));
+ return parse_error(
+ exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
else if (bits == 64)
goto b64_byte1;
p->base64_buffer |= bits << 12;
@@ -1363,8 +1366,9 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx,
bits = inverse_base64[*cur];
++cur;
if (bits == 255)
- return parse_error(exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE("Illegal base64 character"));
+ return parse_error(
+ exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
else if (bits == 64)
goto b64_byte2;
p->base64_buffer |= bits << 6;
@@ -1378,8 +1382,9 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx,
bits = inverse_base64[*cur];
++cur;
if (bits == 255)
- return parse_error(exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE("Illegal base64 character"));
+ return parse_error(
+ exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal base64 character"));
else if (bits == 64)
goto b64_byte3;
p->base64_buffer |= bits;
@@ -1391,7 +1396,8 @@ static grpc_error *append_string(grpc_exec_ctx *exec_ctx,
goto b64_byte0;
}
GPR_UNREACHABLE_CODE(return parse_error(
- exec_ctx, p, cur, end, GRPC_ERROR_CREATE("Should never reach here")));
+ exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here")));
}
static grpc_error *finish_str(grpc_exec_ctx *exec_ctx,
@@ -1406,16 +1412,16 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx,
case B64_BYTE0:
break;
case B64_BYTE1:
- return parse_error(
- exec_ctx, p, cur, end,
- GRPC_ERROR_CREATE("illegal base64 encoding")); /* illegal encoding */
+ return parse_error(exec_ctx, p, cur, end,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "illegal base64 encoding")); /* illegal encoding */
case B64_BYTE2:
bits = p->base64_buffer;
if (bits & 0xffff) {
char *msg;
gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%04x",
bits & 0xffff);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return parse_error(exec_ctx, p, cur, end, err);
}
@@ -1428,7 +1434,7 @@ static grpc_error *finish_str(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%02x",
bits & 0xff);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return parse_error(exec_ctx, p, cur, end, err);
}
@@ -1550,7 +1556,8 @@ static grpc_error *is_binary_indexed_header(grpc_chttp2_hpack_parser *p,
grpc_mdelem elem = grpc_chttp2_hptbl_lookup(&p->table, p->index);
if (GRPC_MDISNULL(elem)) {
return grpc_error_set_int(
- grpc_error_set_int(GRPC_ERROR_CREATE("Invalid HPACK index received"),
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid HPACK index received"),
GRPC_ERROR_INT_INDEX, (intptr_t)p->index),
GRPC_ERROR_INT_SIZE, (intptr_t)p->table.num_ents);
}
@@ -1620,13 +1627,18 @@ void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx,
grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx,
grpc_chttp2_hpack_parser *p,
grpc_slice slice) {
- /* TODO(ctiller): limit the distance of end from beg, and perform multiple
- steps in the event of a large chunk of data to limit
- stack space usage when no tail call optimization is
- available */
+/* max number of bytes to parse at a time... limits call stack depth on
+ * compilers without TCO */
+#define MAX_PARSE_LENGTH 1024
p->current_slice_refcount = slice.refcount;
- grpc_error *error = p->state(exec_ctx, p, GRPC_SLICE_START_PTR(slice),
- GRPC_SLICE_END_PTR(slice));
+ uint8_t *start = GRPC_SLICE_START_PTR(slice);
+ uint8_t *end = GRPC_SLICE_END_PTR(slice);
+ grpc_error *error = GRPC_ERROR_NONE;
+ while (start != end && error == GRPC_ERROR_NONE) {
+ uint8_t *target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start);
+ error = p->state(exec_ctx, p, start, target);
+ start = target;
+ }
p->current_slice_refcount = NULL;
return error;
}
@@ -1670,7 +1682,7 @@ grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx,
if (is_last) {
if (parser->is_boundary && parser->state != parse_begin) {
GPR_TIMER_END("grpc_chttp2_hpack_parser_parse", 0);
- return GRPC_ERROR_CREATE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"end of header frame not aligned with a hpack record boundary");
}
/* need to check for null stream: this can occur if we receive an invalid
@@ -1678,7 +1690,8 @@ grpc_error *grpc_chttp2_header_parser_parse(grpc_exec_ctx *exec_ctx,
if (s != NULL) {
if (parser->is_boundary) {
if (s->header_frames_received == GPR_ARRAY_SIZE(s->metadata_buffer)) {
- return GRPC_ERROR_CREATE("Too many trailer frames");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Too many trailer frames");
}
s->published_metadata[s->header_frames_received] =
GRPC_METADATA_PUBLISHED_FROM_WIRE;
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.c b/src/core/ext/transport/chttp2/transport/hpack_table.c
index 62dd1b8cab..9dd41fdbe1 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.c
@@ -280,7 +280,7 @@ grpc_error *grpc_chttp2_hptbl_set_current_table_size(grpc_exec_ctx *exec_ctx,
gpr_asprintf(&msg,
"Attempt to make hpack table %d bytes when max is %d bytes",
bytes, tbl->max_bytes);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -317,7 +317,7 @@ grpc_error *grpc_chttp2_hptbl_add(grpc_exec_ctx *exec_ctx,
"HPACK max table size reduced to %d but not reflected by hpack "
"stream (still at %d)",
tbl->max_bytes, tbl->current_table_bytes);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.c b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
index c91b019aa0..da0a34d32a 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.c
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
@@ -41,69 +41,48 @@
#include <grpc/support/log.h>
void grpc_chttp2_incoming_metadata_buffer_init(
- grpc_chttp2_incoming_metadata_buffer *buffer) {
- buffer->deadline = gpr_inf_future(GPR_CLOCK_REALTIME);
+ grpc_chttp2_incoming_metadata_buffer *buffer, gpr_arena *arena) {
+ buffer->arena = arena;
+ grpc_metadata_batch_init(&buffer->batch);
+ buffer->batch.deadline = gpr_inf_future(GPR_CLOCK_REALTIME);
}
void grpc_chttp2_incoming_metadata_buffer_destroy(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer) {
- size_t i;
- if (!buffer->published) {
- for (i = 0; i < buffer->count; i++) {
- GRPC_MDELEM_UNREF(exec_ctx, buffer->elems[i].md);
- }
- }
- gpr_free(buffer->elems);
+ grpc_metadata_batch_destroy(exec_ctx, &buffer->batch);
}
-void grpc_chttp2_incoming_metadata_buffer_add(
- grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem) {
- GPR_ASSERT(!buffer->published);
- if (buffer->capacity == buffer->count) {
- buffer->capacity = GPR_MAX(8, 2 * buffer->capacity);
- buffer->elems =
- gpr_realloc(buffer->elems, sizeof(*buffer->elems) * buffer->capacity);
- }
- buffer->elems[buffer->count++].md = elem;
+grpc_error *grpc_chttp2_incoming_metadata_buffer_add(
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
+ grpc_mdelem elem) {
buffer->size += GRPC_MDELEM_LENGTH(elem);
+ return grpc_metadata_batch_add_tail(
+ exec_ctx, &buffer->batch,
+ gpr_arena_alloc(buffer->arena, sizeof(grpc_linked_mdelem)), elem);
}
-void grpc_chttp2_incoming_metadata_buffer_replace_or_add(
+grpc_error *grpc_chttp2_incoming_metadata_buffer_replace_or_add(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
grpc_mdelem elem) {
- for (size_t i = 0; i < buffer->count; i++) {
- if (grpc_slice_eq(GRPC_MDKEY(buffer->elems[i].md), GRPC_MDKEY(elem))) {
- GRPC_MDELEM_UNREF(exec_ctx, buffer->elems[i].md);
- buffer->elems[i].md = elem;
- return;
+ for (grpc_linked_mdelem *l = buffer->batch.list.head; l != NULL;
+ l = l->next) {
+ if (grpc_slice_eq(GRPC_MDKEY(l->md), GRPC_MDKEY(elem))) {
+ GRPC_MDELEM_UNREF(exec_ctx, l->md);
+ l->md = elem;
+ return GRPC_ERROR_NONE;
}
}
- grpc_chttp2_incoming_metadata_buffer_add(buffer, elem);
+ return grpc_chttp2_incoming_metadata_buffer_add(exec_ctx, buffer, elem);
}
void grpc_chttp2_incoming_metadata_buffer_set_deadline(
grpc_chttp2_incoming_metadata_buffer *buffer, gpr_timespec deadline) {
- GPR_ASSERT(!buffer->published);
- buffer->deadline = deadline;
+ buffer->batch.deadline = deadline;
}
void grpc_chttp2_incoming_metadata_buffer_publish(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
grpc_metadata_batch *batch) {
- GPR_ASSERT(!buffer->published);
- buffer->published = 1;
- if (buffer->count > 0) {
- size_t i;
- for (i = 0; i < buffer->count; i++) {
- /* TODO(ctiller): do something better here */
- if (!GRPC_LOG_IF_ERROR("grpc_chttp2_incoming_metadata_buffer_publish",
- grpc_metadata_batch_link_tail(
- exec_ctx, batch, &buffer->elems[i]))) {
- GRPC_MDELEM_UNREF(exec_ctx, buffer->elems[i].md);
- }
- }
- } else {
- batch->list.head = batch->list.tail = NULL;
- }
- batch->deadline = buffer->deadline;
+ *batch = buffer->batch;
+ grpc_metadata_batch_init(&buffer->batch);
}
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
index 1eac6fc150..288c917e65 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
@@ -37,28 +37,26 @@
#include "src/core/lib/transport/transport.h"
typedef struct {
- grpc_linked_mdelem *elems;
- size_t count;
- size_t capacity;
- gpr_timespec deadline;
- int published;
+ gpr_arena *arena;
+ grpc_metadata_batch batch;
size_t size; // total size of metadata
} grpc_chttp2_incoming_metadata_buffer;
/** assumes everything initially zeroed */
void grpc_chttp2_incoming_metadata_buffer_init(
- grpc_chttp2_incoming_metadata_buffer *buffer);
+ grpc_chttp2_incoming_metadata_buffer *buffer, gpr_arena *arena);
void grpc_chttp2_incoming_metadata_buffer_destroy(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer);
void grpc_chttp2_incoming_metadata_buffer_publish(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
grpc_metadata_batch *batch);
-void grpc_chttp2_incoming_metadata_buffer_add(
- grpc_chttp2_incoming_metadata_buffer *buffer, grpc_mdelem elem);
-void grpc_chttp2_incoming_metadata_buffer_replace_or_add(
+grpc_error *grpc_chttp2_incoming_metadata_buffer_add(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
- grpc_mdelem elem);
+ grpc_mdelem elem) GRPC_MUST_USE_RESULT;
+grpc_error *grpc_chttp2_incoming_metadata_buffer_replace_or_add(
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_metadata_buffer *buffer,
+ grpc_mdelem elem) GRPC_MUST_USE_RESULT;
void grpc_chttp2_incoming_metadata_buffer_set_deadline(
grpc_chttp2_incoming_metadata_buffer *buffer, gpr_timespec deadline);
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index d26812ad6b..3c56c21599 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -425,7 +425,7 @@ struct grpc_chttp2_stream {
grpc_stream_refcount *refcount;
grpc_closure destroy_stream;
- void *destroy_stream_arg;
+ grpc_closure *destroy_stream_arg;
grpc_chttp2_stream_link links[STREAM_LIST_COUNT];
uint8_t included[STREAM_LIST_COUNT];
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index e7f2597f89..7e457ced27 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -116,7 +116,7 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
(int)(uint8_t)GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
*cur, (int)*cur, t->deframe_state);
- err = GRPC_ERROR_CREATE(msg);
+ err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -219,7 +219,7 @@ grpc_error *grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
t->incoming_frame_size,
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]);
- err = GRPC_ERROR_CREATE(msg);
+ err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -278,7 +278,7 @@ static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx,
gpr_asprintf(
&msg, "Expected SETTINGS frame as the first frame, got frame type %d",
t->incoming_frame_type);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -288,7 +288,7 @@ static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "Expected CONTINUATION frame, got frame type %02x",
t->incoming_frame_type);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -299,7 +299,7 @@ static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx,
"Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
"grpc_chttp2_stream %08x",
t->expect_continuation_stream_id, t->incoming_stream_id);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -311,7 +311,8 @@ static grpc_error *init_frame_parser(grpc_exec_ctx *exec_ctx,
case GRPC_CHTTP2_FRAME_HEADER:
return init_header_frame_parser(exec_ctx, t, 0);
case GRPC_CHTTP2_FRAME_CONTINUATION:
- return GRPC_ERROR_CREATE("Unexpected CONTINUATION frame");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Unexpected CONTINUATION frame");
case GRPC_CHTTP2_FRAME_RST_STREAM:
return init_rst_stream_parser(exec_ctx, t);
case GRPC_CHTTP2_FRAME_SETTINGS:
@@ -371,7 +372,7 @@ static grpc_error *update_incoming_window(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "frame of size %d overflows incoming window of %" PRId64,
t->incoming_frame_size, t->incoming_window);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -409,7 +410,7 @@ static grpc_error *update_incoming_window(grpc_exec_ctx *exec_ctx,
s->incoming_window_delta +
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]);
- grpc_error *err = GRPC_ERROR_CREATE(msg);
+ grpc_error *err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return err;
}
@@ -542,13 +543,21 @@ static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp,
grpc_chttp2_cancel_stream(
exec_ctx, t, s,
grpc_error_set_int(
- GRPC_ERROR_CREATE("received initial metadata size exceeds limit"),
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "received initial metadata size exceeds limit"),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
grpc_chttp2_parsing_become_skip_parser(exec_ctx, t);
s->seen_error = true;
GRPC_MDELEM_UNREF(exec_ctx, md);
} else {
- grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[0], md);
+ grpc_error *error = grpc_chttp2_incoming_metadata_buffer_add(
+ exec_ctx, &s->metadata_buffer[0], md);
+ if (error != GRPC_ERROR_NONE) {
+ grpc_chttp2_cancel_stream(exec_ctx, t, s, error);
+ grpc_chttp2_parsing_become_skip_parser(exec_ctx, t);
+ s->seen_error = true;
+ GRPC_MDELEM_UNREF(exec_ctx, md);
+ }
}
}
@@ -591,14 +600,22 @@ static void on_trailing_header(grpc_exec_ctx *exec_ctx, void *tp,
new_size, metadata_size_limit);
grpc_chttp2_cancel_stream(
exec_ctx, t, s,
- grpc_error_set_int(
- GRPC_ERROR_CREATE("received trailing metadata size exceeds limit"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED));
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "received trailing metadata size exceeds limit"),
+ GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_RESOURCE_EXHAUSTED));
grpc_chttp2_parsing_become_skip_parser(exec_ctx, t);
s->seen_error = true;
GRPC_MDELEM_UNREF(exec_ctx, md);
} else {
- grpc_chttp2_incoming_metadata_buffer_add(&s->metadata_buffer[1], md);
+ grpc_error *error = grpc_chttp2_incoming_metadata_buffer_add(
+ exec_ctx, &s->metadata_buffer[1], md);
+ if (error != GRPC_ERROR_NONE) {
+ grpc_chttp2_cancel_stream(exec_ctx, t, s, error);
+ grpc_chttp2_parsing_become_skip_parser(exec_ctx, t);
+ s->seen_error = true;
+ GRPC_MDELEM_UNREF(exec_ctx, md);
+ }
}
GPR_TIMER_END("on_trailing_header", 0);
@@ -757,7 +774,8 @@ static grpc_error *init_goaway_parser(grpc_exec_ctx *exec_ctx,
static grpc_error *init_settings_frame_parser(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t) {
if (t->incoming_stream_id != 0) {
- return GRPC_ERROR_CREATE("Settings frame received for grpc_chttp2_stream");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Settings frame received for grpc_chttp2_stream");
}
grpc_error *err = grpc_chttp2_settings_parser_begin_frame(
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index fabfaf8a27..952690eba7 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -128,6 +128,7 @@ struct read_state {
int received_bytes;
int remaining_bytes;
int length_field;
+ bool compressed;
char grpc_header_bytes[GRPC_HEADER_SIZE_IN_BYTES];
char *payload_field;
bool read_stream_closed;
@@ -184,6 +185,7 @@ struct op_storage {
};
struct stream_obj {
+ gpr_arena *arena;
struct op_and_state *oas;
grpc_transport_stream_op *curr_op;
grpc_cronet_transport *curr_ct;
@@ -272,7 +274,7 @@ static void maybe_flush_read(stream_obj *s) {
/* Whenever the evaluation of any of the two condition is changed, we check
* whether we should enter the flush read state. */
if (s->state.pending_recv_trailing_metadata && s->state.fail_state) {
- if (!s->state.flush_read) {
+ if (!s->state.flush_read && !s->state.rs.read_stream_closed) {
CRONET_LOG(GPR_DEBUG, "%p: Flush read", s);
s->state.flush_read = true;
null_and_maybe_free_read_buffer(s);
@@ -288,7 +290,7 @@ static void maybe_flush_read(stream_obj *s) {
}
static grpc_error *make_error_with_desc(int error_code, const char *desc) {
- grpc_error *error = GRPC_ERROR_CREATE(desc);
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, error_code);
return error;
}
@@ -483,18 +485,31 @@ static void on_response_headers_received(
CRONET_LOG(GPR_DEBUG, "R: on_response_headers_received(%p, %p, %s)", stream,
headers, negotiated_protocol);
stream_obj *s = (stream_obj *)stream->annotation;
+
+ /* Identify if this is a header or a trailer (in a trailer-only response case)
+ */
+ for (size_t i = 0; i < headers->count; i++) {
+ if (0 == strcmp("grpc-status", headers->headers[i].key)) {
+ on_response_trailers_received(stream, headers);
+ return;
+ }
+ }
+
gpr_mu_lock(&s->mu);
memset(&s->state.rs.initial_metadata, 0,
sizeof(s->state.rs.initial_metadata));
- grpc_chttp2_incoming_metadata_buffer_init(&s->state.rs.initial_metadata);
+ grpc_chttp2_incoming_metadata_buffer_init(&s->state.rs.initial_metadata,
+ s->arena);
for (size_t i = 0; i < headers->count; i++) {
- grpc_chttp2_incoming_metadata_buffer_add(
- &s->state.rs.initial_metadata,
- grpc_mdelem_from_slices(
- &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(
- headers->headers[i].key)),
- grpc_slice_intern(
- grpc_slice_from_static_string(headers->headers[i].value))));
+ GRPC_LOG_IF_ERROR(
+ "on_response_headers_received",
+ grpc_chttp2_incoming_metadata_buffer_add(
+ &exec_ctx, &s->state.rs.initial_metadata,
+ grpc_mdelem_from_slices(
+ &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(
+ headers->headers[i].key)),
+ grpc_slice_intern(grpc_slice_from_static_string(
+ headers->headers[i].value)))));
}
s->state.state_callback_received[OP_RECV_INITIAL_METADATA] = true;
if (!(s->state.state_op_done[OP_CANCEL_ERROR] ||
@@ -503,6 +518,7 @@ static void on_response_headers_received(
is closed */
GPR_ASSERT(s->state.rs.length_field_received == false);
s->state.rs.read_buffer = s->state.rs.grpc_header_bytes;
+ s->state.rs.compressed = false;
s->state.rs.received_bytes = 0;
s->state.rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
CRONET_LOG(GPR_DEBUG, "bidirectional_stream_read(%p)", s->cbs);
@@ -586,17 +602,20 @@ static void on_response_trailers_received(
memset(&s->state.rs.trailing_metadata, 0,
sizeof(s->state.rs.trailing_metadata));
s->state.rs.trailing_metadata_valid = false;
- grpc_chttp2_incoming_metadata_buffer_init(&s->state.rs.trailing_metadata);
+ grpc_chttp2_incoming_metadata_buffer_init(&s->state.rs.trailing_metadata,
+ s->arena);
for (size_t i = 0; i < trailers->count; i++) {
CRONET_LOG(GPR_DEBUG, "trailer key=%s, value=%s", trailers->headers[i].key,
trailers->headers[i].value);
- grpc_chttp2_incoming_metadata_buffer_add(
- &s->state.rs.trailing_metadata,
- grpc_mdelem_from_slices(
- &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(
- trailers->headers[i].key)),
- grpc_slice_intern(
- grpc_slice_from_static_string(trailers->headers[i].value))));
+ GRPC_LOG_IF_ERROR(
+ "on_response_trailers_received",
+ grpc_chttp2_incoming_metadata_buffer_add(
+ &exec_ctx, &s->state.rs.trailing_metadata,
+ grpc_mdelem_from_slices(
+ &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(
+ trailers->headers[i].key)),
+ grpc_slice_intern(grpc_slice_from_static_string(
+ trailers->headers[i].value)))));
s->state.rs.trailing_metadata_valid = true;
if (0 == strcmp(trailers->headers[i].key, "grpc-status") &&
0 != strcmp(trailers->headers[i].value, "0")) {
@@ -634,7 +653,7 @@ static void on_response_trailers_received(
*/
static void create_grpc_frame(grpc_slice_buffer *write_slice_buffer,
char **pp_write_buffer,
- size_t *p_write_buffer_size) {
+ size_t *p_write_buffer_size, uint32_t flags) {
grpc_slice slice = grpc_slice_buffer_take_first(write_slice_buffer);
size_t length = GRPC_SLICE_LENGTH(slice);
*p_write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
@@ -643,7 +662,9 @@ static void create_grpc_frame(grpc_slice_buffer *write_slice_buffer,
*pp_write_buffer = write_buffer;
uint8_t *p = (uint8_t *)write_buffer;
/* Append 5 byte header */
- *p++ = 0;
+ /* Compressed flag */
+ *p++ = (flags & GRPC_WRITE_INTERNAL_COMPRESS) ? 1 : 0;
+ /* Message length */
*p++ = (uint8_t)(length >> 24);
*p++ = (uint8_t)(length >> 16);
*p++ = (uint8_t)(length >> 8);
@@ -721,14 +742,16 @@ static void convert_metadata_to_cronet_headers(
*p_num_headers = (size_t)num_headers;
}
-static int parse_grpc_header(const uint8_t *data) {
+static void parse_grpc_header(const uint8_t *data, int *length,
+ bool *compressed) {
+ const uint8_t c = *data;
const uint8_t *p = data + 1;
- int length = 0;
- length |= ((uint8_t)*p++) << 24;
- length |= ((uint8_t)*p++) << 16;
- length |= ((uint8_t)*p++) << 8;
- length |= ((uint8_t)*p++);
- return length;
+ *compressed = ((c & 0x01) == 0x01);
+ *length = 0;
+ *length |= ((uint8_t)*p++) << 24;
+ *length |= ((uint8_t)*p++) << 16;
+ *length |= ((uint8_t)*p++) << 8;
+ *length |= ((uint8_t)*p++);
}
static bool header_has_authority(grpc_linked_mdelem *head) {
@@ -781,7 +804,8 @@ static bool op_can_be_run(grpc_transport_stream_op *curr_op,
else if (!stream_state->state_callback_received[OP_SEND_INITIAL_METADATA])
result = false;
/* we haven't received headers yet. */
- else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA])
+ else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA] &&
+ !stream_state->state_op_done[OP_RECV_TRAILING_METADATA])
result = false;
} else if (op_id == OP_SEND_MESSAGE) {
/* already executed (note we're checking op specific state, not stream
@@ -794,7 +818,8 @@ static bool op_can_be_run(grpc_transport_stream_op *curr_op,
/* already executed */
if (op_state->state_op_done[OP_RECV_MESSAGE]) result = false;
/* we haven't received headers yet. */
- else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA])
+ else if (!stream_state->state_callback_received[OP_RECV_INITIAL_METADATA] &&
+ !stream_state->state_op_done[OP_RECV_TRAILING_METADATA])
result = false;
} else if (op_id == OP_RECV_TRAILING_METADATA) {
/* already executed */
@@ -948,12 +973,6 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
grpc_slice_buffer_init(&write_slice_buffer);
grpc_byte_stream_next(NULL, stream_op->send_message, &slice,
stream_op->send_message->length, NULL);
- /* Check that compression flag is OFF. We don't support compression yet.
- */
- if (stream_op->send_message->flags != 0) {
- gpr_log(GPR_ERROR, "Compression is not supported");
- GPR_ASSERT(stream_op->send_message->flags == 0);
- }
grpc_slice_buffer_add(&write_slice_buffer, slice);
if (write_slice_buffer.count != 1) {
/* Empty request not handled yet */
@@ -963,7 +982,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
if (write_slice_buffer.count > 0) {
size_t write_buffer_size;
create_grpc_frame(&write_slice_buffer, &stream_state->ws.write_buffer,
- &write_buffer_size);
+ &write_buffer_size, stream_op->send_message->flags);
CRONET_LOG(GPR_DEBUG, "bidirectional_stream_write (%p, %p)", s->cbs,
stream_state->ws.write_buffer);
stream_state->state_callback_received[OP_SEND_MESSAGE] = false;
@@ -1015,6 +1034,9 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
} else if (stream_state->state_callback_received[OP_FAILED]) {
grpc_closure_sched(exec_ctx, stream_op->recv_initial_metadata_ready,
GRPC_ERROR_NONE);
+ } else if (stream_state->state_op_done[OP_RECV_TRAILING_METADATA]) {
+ grpc_closure_sched(exec_ctx, stream_op->recv_initial_metadata_ready,
+ GRPC_ERROR_NONE);
} else {
grpc_chttp2_incoming_metadata_buffer_publish(
exec_ctx, &oas->s->state.rs.initial_metadata,
@@ -1059,8 +1081,9 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
stream_state->rs.remaining_bytes == 0) {
/* Start a read operation for data */
stream_state->rs.length_field_received = true;
- stream_state->rs.length_field = stream_state->rs.remaining_bytes =
- parse_grpc_header((const uint8_t *)stream_state->rs.read_buffer);
+ parse_grpc_header((const uint8_t *)stream_state->rs.read_buffer,
+ &stream_state->rs.length_field,
+ &stream_state->rs.compressed);
CRONET_LOG(GPR_DEBUG, "length field = %d",
stream_state->rs.length_field);
if (stream_state->rs.length_field > 0) {
@@ -1082,6 +1105,9 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
grpc_slice_buffer_init(&stream_state->rs.read_slice_buffer);
grpc_slice_buffer_stream_init(&stream_state->rs.sbs,
&stream_state->rs.read_slice_buffer, 0);
+ if (stream_state->rs.compressed) {
+ stream_state->rs.sbs.base.flags |= GRPC_WRITE_INTERNAL_COMPRESS;
+ }
*((grpc_byte_buffer **)stream_op->recv_message) =
(grpc_byte_buffer *)&stream_state->rs.sbs;
grpc_closure_sched(exec_ctx, stream_op->recv_message_ready,
@@ -1093,6 +1119,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
stream_state->rs.read_buffer = stream_state->rs.grpc_header_bytes;
stream_state->rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
stream_state->rs.received_bytes = 0;
+ stream_state->rs.compressed = false;
stream_state->rs.length_field_received = false;
CRONET_LOG(GPR_DEBUG, "bidirectional_stream_read(%p)", s->cbs);
stream_state->state_op_done[OP_READ_REQ_MADE] =
@@ -1107,6 +1134,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
stream_state->rs.read_buffer = stream_state->rs.grpc_header_bytes;
stream_state->rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
stream_state->rs.received_bytes = 0;
+ stream_state->rs.compressed = false;
CRONET_LOG(GPR_DEBUG, "bidirectional_stream_read(%p)", s->cbs);
stream_state->state_op_done[OP_READ_REQ_MADE] =
true; /* Indicates that at least one read request has been made */
@@ -1130,6 +1158,9 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
read_data_slice);
grpc_slice_buffer_stream_init(&stream_state->rs.sbs,
&stream_state->rs.read_slice_buffer, 0);
+ if (stream_state->rs.compressed) {
+ stream_state->rs.sbs.base.flags = GRPC_WRITE_INTERNAL_COMPRESS;
+ }
*((grpc_byte_buffer **)stream_op->recv_message) =
(grpc_byte_buffer *)&stream_state->rs.sbs;
grpc_closure_sched(exec_ctx, stream_op->recv_message_ready,
@@ -1139,6 +1170,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
/* Do an extra read to trigger on_succeeded() callback in case connection
is closed */
stream_state->rs.read_buffer = stream_state->rs.grpc_header_bytes;
+ stream_state->rs.compressed = false;
stream_state->rs.received_bytes = 0;
stream_state->rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
stream_state->rs.length_field_received = false;
@@ -1215,7 +1247,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, grpc_stream_refcount *refcount,
- const void *server_data) {
+ const void *server_data, gpr_arena *arena) {
stream_obj *s = (stream_obj *)gs;
memset(&s->storage, 0, sizeof(s->storage));
s->storage.head = NULL;
@@ -1237,6 +1269,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
s->curr_gs = gs;
s->curr_ct = (grpc_cronet_transport *)gt;
+ s->arena = arena;
gpr_mu_init(&s->mu);
return 0;
@@ -1273,10 +1306,12 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
}
static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
- grpc_stream *gs, void *and_free_memory) {
+ grpc_stream *gs,
+ grpc_closure *then_schedule_closure) {
stream_obj *s = (stream_obj *)gs;
null_and_maybe_free_read_buffer(s);
GRPC_ERROR_UNREF(s->state.cancel_error);
+ grpc_closure_sched(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE);
}
static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {}
diff --git a/src/core/lib/channel/channel_stack.c b/src/core/lib/channel/channel_stack.c
index 3fb2a60ac7..6d53b0576e 100644
--- a/src/core/lib/channel/channel_stack.c
+++ b/src/core/lib/channel/channel_stack.c
@@ -166,41 +166,32 @@ void grpc_channel_stack_destroy(grpc_exec_ctx *exec_ctx,
}
}
-grpc_error *grpc_call_stack_init(
- grpc_exec_ctx *exec_ctx, grpc_channel_stack *channel_stack,
- int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg,
- grpc_call_context_element *context, const void *transport_server_data,
- grpc_slice path, gpr_timespec start_time, gpr_timespec deadline,
- grpc_call_stack *call_stack) {
+grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx,
+ grpc_channel_stack *channel_stack,
+ int initial_refs, grpc_iomgr_cb_func destroy,
+ void *destroy_arg,
+ const grpc_call_element_args *elem_args) {
grpc_channel_element *channel_elems = CHANNEL_ELEMS_FROM_STACK(channel_stack);
size_t count = channel_stack->count;
grpc_call_element *call_elems;
char *user_data;
size_t i;
- call_stack->count = count;
- GRPC_STREAM_REF_INIT(&call_stack->refcount, initial_refs, destroy,
+ elem_args->call_stack->count = count;
+ GRPC_STREAM_REF_INIT(&elem_args->call_stack->refcount, initial_refs, destroy,
destroy_arg, "CALL_STACK");
- call_elems = CALL_ELEMS_FROM_STACK(call_stack);
+ call_elems = CALL_ELEMS_FROM_STACK(elem_args->call_stack);
user_data = ((char *)call_elems) +
ROUND_UP_TO_ALIGNMENT_SIZE(count * sizeof(grpc_call_element));
/* init per-filter data */
grpc_error *first_error = GRPC_ERROR_NONE;
- const grpc_call_element_args args = {
- .start_time = start_time,
- .call_stack = call_stack,
- .server_transport_data = transport_server_data,
- .context = context,
- .path = path,
- .deadline = deadline,
- };
for (i = 0; i < count; i++) {
call_elems[i].filter = channel_elems[i].filter;
call_elems[i].channel_data = channel_elems[i].channel_data;
call_elems[i].call_data = user_data;
- grpc_error *error =
- call_elems[i].filter->init_call_elem(exec_ctx, &call_elems[i], &args);
+ grpc_error *error = call_elems[i].filter->init_call_elem(
+ exec_ctx, &call_elems[i], elem_args);
if (error != GRPC_ERROR_NONE) {
if (first_error == GRPC_ERROR_NONE) {
first_error = error;
@@ -241,15 +232,16 @@ void grpc_call_stack_ignore_set_pollset_or_pollset_set(
void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *then_schedule_closure) {
grpc_call_element *elems = CALL_ELEMS_FROM_STACK(stack);
size_t count = stack->count;
size_t i;
/* destroy per-filter data */
for (i = 0; i < count; i++) {
- elems[i].filter->destroy_call_elem(exec_ctx, &elems[i], final_info,
- i == count - 1 ? and_free_memory : NULL);
+ elems[i].filter->destroy_call_elem(
+ exec_ctx, &elems[i], final_info,
+ i == count - 1 ? then_schedule_closure : NULL);
}
}
diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h
index 6d3340bcbf..80e3603e8d 100644
--- a/src/core/lib/channel/channel_stack.h
+++ b/src/core/lib/channel/channel_stack.h
@@ -56,6 +56,7 @@
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/support/arena.h"
#include "src/core/lib/transport/transport.h"
#ifdef __cplusplus
@@ -84,6 +85,7 @@ typedef struct {
grpc_slice path;
gpr_timespec start_time;
gpr_timespec deadline;
+ gpr_arena *arena;
} grpc_call_element_args;
typedef struct {
@@ -139,12 +141,12 @@ typedef struct {
/* Destroy per call data.
The filter does not need to do any chaining.
The bottom filter of a stack will be passed a non-NULL pointer to
- \a and_free_memory that should be passed to gpr_free when destruction
- is complete. \a final_info contains data about the completed call, mainly
- for reporting purposes. */
+ \a then_schedule_closure that should be passed to grpc_closure_sched when
+ destruction is complete. \a final_info contains data about the completed
+ call, mainly for reporting purposes. */
void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory);
+ grpc_closure *then_schedule_closure);
/* sizeof(per channel data) */
size_t sizeof_channel_data;
@@ -236,12 +238,11 @@ void grpc_channel_stack_destroy(grpc_exec_ctx *exec_ctx,
/* Initialize a call stack given a channel stack. transport_server_data is
expected to be NULL on a client, or an opaque transport owned pointer on the
server. */
-grpc_error *grpc_call_stack_init(
- grpc_exec_ctx *exec_ctx, grpc_channel_stack *channel_stack,
- int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg,
- grpc_call_context_element *context, const void *transport_server_data,
- grpc_slice path, gpr_timespec start_time, gpr_timespec deadline,
- grpc_call_stack *call_stack);
+grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx,
+ grpc_channel_stack *channel_stack,
+ int initial_refs, grpc_iomgr_cb_func destroy,
+ void *destroy_arg,
+ const grpc_call_element_args *elem_args);
/* Set a pollset or a pollset_set for a call stack: must occur before the first
* op is started */
void grpc_call_stack_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
@@ -271,7 +272,7 @@ void grpc_call_stack_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
/* Destroy a call stack */
void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
const grpc_call_final_info *final_info,
- void *and_free_memory);
+ grpc_closure *then_schedule_closure);
/* Ignore set pollset{_set} - used by filters if they don't care about pollsets
* at all. Does nothing. */
diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c
index aa41014a21..02dc479f3a 100644
--- a/src/core/lib/channel/compress_filter.c
+++ b/src/core/lib/channel/compress_filter.c
@@ -292,7 +292,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
/* grab pointers to our data from the call element */
call_data *calld = elem->call_data;
grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices);
diff --git a/src/core/lib/channel/connected_channel.c b/src/core/lib/channel/connected_channel.c
index 29796f7ca7..75c68a5534 100644
--- a/src/core/lib/channel/connected_channel.c
+++ b/src/core/lib/channel/connected_channel.c
@@ -88,9 +88,10 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
channel_data *chand = elem->channel_data;
int r = grpc_transport_init_stream(
exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld),
- &args->call_stack->refcount, args->server_transport_data);
+ &args->call_stack->refcount, args->server_transport_data, args->arena);
return r == 0 ? GRPC_ERROR_NONE
- : GRPC_ERROR_CREATE("transport stream initialization failed");
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "transport stream initialization failed");
}
static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
@@ -105,12 +106,12 @@ static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *then_schedule_closure) {
call_data *calld = elem->call_data;
channel_data *chand = elem->channel_data;
grpc_transport_destroy_stream(exec_ctx, chand->transport,
TRANSPORT_STREAM_FROM_CALL_DATA(calld),
- and_free_memory);
+ then_schedule_closure);
}
/* Constructor for channel_data */
diff --git a/src/core/lib/channel/deadline_filter.c b/src/core/lib/channel/deadline_filter.c
index 5a12d62f1d..ca701ed457 100644
--- a/src/core/lib/channel/deadline_filter.c
+++ b/src/core/lib/channel/deadline_filter.c
@@ -55,9 +55,9 @@ static void timer_callback(grpc_exec_ctx* exec_ctx, void* arg,
if (error != GRPC_ERROR_CANCELLED) {
grpc_call_element_signal_error(
exec_ctx, elem,
- grpc_error_set_int(GRPC_ERROR_CREATE("Deadline Exceeded"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_DEADLINE_EXCEEDED));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Deadline Exceeded"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_DEADLINE_EXCEEDED));
}
GRPC_CALL_STACK_UNREF(exec_ctx, deadline_state->call_stack, "deadline_timer");
}
@@ -256,7 +256,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
// Destructor for call_data. Used for both client and server filters.
static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
const grpc_call_final_info* final_info,
- void* and_free_memory) {
+ grpc_closure* ignored) {
grpc_deadline_state_destroy(exec_ctx, elem);
}
diff --git a/src/core/lib/channel/handshaker.c b/src/core/lib/channel/handshaker.c
index 1b4240bb10..5861fa6f54 100644
--- a/src/core/lib/channel/handshaker.c
+++ b/src/core/lib/channel/handshaker.c
@@ -236,8 +236,9 @@ static void call_next_handshaker(grpc_exec_ctx* exec_ctx, void* arg,
static void on_timeout(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
grpc_handshake_manager* mgr = arg;
if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled.
- grpc_handshake_manager_shutdown(exec_ctx, mgr,
- GRPC_ERROR_CREATE("Handshake timed out"));
+ grpc_handshake_manager_shutdown(
+ exec_ctx, mgr,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out"));
}
grpc_handshake_manager_unref(exec_ctx, mgr);
}
diff --git a/src/core/lib/channel/http_client_filter.c b/src/core/lib/channel/http_client_filter.c
index c031533dd8..967904df1e 100644
--- a/src/core/lib/channel/http_client_filter.c
+++ b/src/core/lib/channel/http_client_filter.c
@@ -36,6 +36,7 @@
#include <grpc/support/string_util.h>
#include <string.h>
#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/security/util/b64.h"
#include "src/core/lib/slice/percent_encoding.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
@@ -56,7 +57,6 @@ typedef struct call_data {
grpc_linked_mdelem te_trailers;
grpc_linked_mdelem content_type;
grpc_linked_mdelem user_agent;
- grpc_linked_mdelem payload_bin;
grpc_metadata_batch *recv_initial_metadata;
grpc_metadata_batch *recv_trailing_metadata;
@@ -108,11 +108,11 @@ static grpc_error *client_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
grpc_error *e = grpc_error_set_str(
grpc_error_set_int(
grpc_error_set_str(
- GRPC_ERROR_CREATE(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Received http2 :status header with non-200 OK status"),
- GRPC_ERROR_STR_VALUE, val),
+ GRPC_ERROR_STR_VALUE, grpc_slice_from_copied_string(val)),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED),
- GRPC_ERROR_STR_GRPC_MESSAGE, msg);
+ GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_copied_string(msg));
gpr_free(val);
gpr_free(msg);
return e;
@@ -292,19 +292,58 @@ static grpc_error *hc_mutate_op(grpc_exec_ctx *exec_ctx,
continue_send_message(exec_ctx, elem);
if (calld->send_message_blocked == false) {
- /* when all the send_message data is available, then create a MDELEM and
- append to headers */
- grpc_mdelem payload_bin = grpc_mdelem_from_slices(
- exec_ctx, GRPC_MDSTR_GRPC_PAYLOAD_BIN,
- grpc_slice_from_copied_buffer((const char *)calld->payload_bytes,
- op->send_message->length));
- error =
- grpc_metadata_batch_add_tail(exec_ctx, op->send_initial_metadata,
- &calld->payload_bin, payload_bin);
+ /* when all the send_message data is available, then modify the path
+ * MDELEM by appending base64 encoded query to the path */
+ const int k_url_safe = 1;
+ const int k_multi_line = 0;
+ const unsigned char k_query_separator = '?';
+
+ grpc_slice path_slice =
+ GRPC_MDVALUE(op->send_initial_metadata->idx.named.path->md);
+ /* sum up individual component's lengths and allocate enough memory to
+ * hold combined path+query */
+ size_t estimated_len = GRPC_SLICE_LENGTH(path_slice);
+ estimated_len++; /* for the '?' */
+ estimated_len += grpc_base64_estimate_encoded_size(
+ op->send_message->length, k_url_safe, k_multi_line);
+ estimated_len += 1; /* for the trailing 0 */
+ grpc_slice path_with_query_slice = grpc_slice_malloc(estimated_len);
+
+ /* memcopy individual pieces into this slice */
+ uint8_t *write_ptr =
+ (uint8_t *)GRPC_SLICE_START_PTR(path_with_query_slice);
+ uint8_t *original_path = (uint8_t *)GRPC_SLICE_START_PTR(path_slice);
+ memcpy(write_ptr, original_path, GRPC_SLICE_LENGTH(path_slice));
+ write_ptr += GRPC_SLICE_LENGTH(path_slice);
+
+ *write_ptr = k_query_separator;
+ write_ptr++; /* for the '?' */
+
+ grpc_base64_encode_core((char *)write_ptr, calld->payload_bytes,
+ op->send_message->length, k_url_safe,
+ k_multi_line);
+
+ /* remove trailing unused memory and add trailing 0 to terminate string
+ */
+ char *t = (char *)GRPC_SLICE_START_PTR(path_with_query_slice);
+ /* safe to use strlen since base64_encode will always add '\0' */
+ size_t path_length = strlen(t) + 1;
+ *(t + path_length) = '\0';
+ path_with_query_slice =
+ grpc_slice_sub(path_with_query_slice, 0, path_length);
+
+ /* substitute previous path with the new path+query */
+ grpc_mdelem mdelem_path_and_query = grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_PATH, path_with_query_slice);
+ grpc_metadata_batch *b = op->send_initial_metadata;
+ error = grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
+ mdelem_path_and_query);
if (error != GRPC_ERROR_NONE) return error;
+
calld->on_complete = op->on_complete;
op->on_complete = &calld->hc_on_complete;
op->send_message = NULL;
+ grpc_slice_unref_internal(exec_ctx, path_with_query_slice);
} else {
/* Not all data is available. Fall back to POST. */
gpr_log(GPR_DEBUG,
@@ -412,7 +451,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *calld = elem->call_data;
grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices);
}
diff --git a/src/core/lib/channel/http_server_filter.c b/src/core/lib/channel/http_server_filter.c
index fb70de8e96..8d3c488ea0 100644
--- a/src/core/lib/channel/http_server_filter.c
+++ b/src/core/lib/channel/http_server_filter.c
@@ -37,6 +37,7 @@
#include <grpc/support/log.h>
#include <string.h>
#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/security/util/b64.h"
#include "src/core/lib/slice/percent_encoding.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
@@ -51,8 +52,8 @@ typedef struct call_data {
grpc_linked_mdelem status;
grpc_linked_mdelem content_type;
- /* did this request come with payload-bin */
- bool seen_payload_bin;
+ /* did this request come with path query containing request payload */
+ bool seen_path_with_query;
/* flag to ensure payload_bin is delivered only once */
bool payload_bin_delivered;
@@ -61,7 +62,7 @@ typedef struct call_data {
bool *recv_cacheable_request;
/** Closure to call when finished with the hs_on_recv hook */
grpc_closure *on_done_recv;
- /** Closure to call when we retrieve read message from the payload-bin header
+ /** Closure to call when we retrieve read message from the path URI
*/
grpc_closure *recv_message_ready;
grpc_closure *on_complete;
@@ -101,7 +102,7 @@ static void add_error(const char *error_name, grpc_error **cumulative,
grpc_error *new) {
if (new == GRPC_ERROR_NONE) return;
if (*cumulative == GRPC_ERROR_NONE) {
- *cumulative = GRPC_ERROR_CREATE(error_name);
+ *cumulative = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_name);
}
*cumulative = grpc_error_add_child(*cumulative, new);
}
@@ -125,27 +126,32 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
*calld->recv_cacheable_request = true;
} else {
add_error(error_name, &error,
- grpc_attach_md_to_error(GRPC_ERROR_CREATE("Bad header"),
- b->idx.named.method->md));
+ grpc_attach_md_to_error(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
+ b->idx.named.method->md));
}
grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.method);
} else {
- add_error(error_name, &error,
- grpc_error_set_str(GRPC_ERROR_CREATE("Missing header"),
- GRPC_ERROR_STR_KEY, ":method"));
+ add_error(
+ error_name, &error,
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
+ GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":method")));
}
if (b->idx.named.te != NULL) {
if (!grpc_mdelem_eq(b->idx.named.te->md, GRPC_MDELEM_TE_TRAILERS)) {
add_error(error_name, &error,
- grpc_attach_md_to_error(GRPC_ERROR_CREATE("Bad header"),
- b->idx.named.te->md));
+ grpc_attach_md_to_error(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
+ b->idx.named.te->md));
}
grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.te);
} else {
add_error(error_name, &error,
- grpc_error_set_str(GRPC_ERROR_CREATE("Missing header"),
- GRPC_ERROR_STR_KEY, "te"));
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
+ GRPC_ERROR_STR_KEY, grpc_slice_from_static_string("te")));
}
if (b->idx.named.scheme != NULL) {
@@ -153,14 +159,17 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
!grpc_mdelem_eq(b->idx.named.scheme->md, GRPC_MDELEM_SCHEME_HTTPS) &&
!grpc_mdelem_eq(b->idx.named.scheme->md, GRPC_MDELEM_SCHEME_GRPC)) {
add_error(error_name, &error,
- grpc_attach_md_to_error(GRPC_ERROR_CREATE("Bad header"),
- b->idx.named.scheme->md));
+ grpc_attach_md_to_error(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
+ b->idx.named.scheme->md));
}
grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.scheme);
} else {
- add_error(error_name, &error,
- grpc_error_set_str(GRPC_ERROR_CREATE("Missing header"),
- GRPC_ERROR_STR_KEY, ":scheme"));
+ add_error(
+ error_name, &error,
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
+ GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":scheme")));
}
if (b->idx.named.content_type != NULL) {
@@ -194,8 +203,46 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
if (b->idx.named.path == NULL) {
add_error(error_name, &error,
- grpc_error_set_str(GRPC_ERROR_CREATE("Missing header"),
- GRPC_ERROR_STR_KEY, ":path"));
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
+ GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":path")));
+ } else if (*calld->recv_cacheable_request == true) {
+ /* We have a cacheable request made with GET verb. The path contains the
+ * query parameter which is base64 encoded request payload. */
+ const char k_query_separator = '?';
+ grpc_slice path_slice = GRPC_MDVALUE(b->idx.named.path->md);
+ uint8_t *path_ptr = (uint8_t *)GRPC_SLICE_START_PTR(path_slice);
+ size_t path_length = GRPC_SLICE_LENGTH(path_slice);
+ /* offset of the character '?' */
+ size_t offset = 0;
+ for (offset = 0; *path_ptr != k_query_separator && offset < path_length;
+ path_ptr++, offset++)
+ ;
+ if (offset < path_length) {
+ grpc_slice query_slice =
+ grpc_slice_sub(path_slice, offset + 1, path_length);
+
+ /* substitute path metadata with just the path (not query) */
+ grpc_mdelem mdelem_path_without_query = grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset));
+
+ grpc_metadata_batch_substitute(exec_ctx, b, b->idx.named.path,
+ mdelem_path_without_query);
+
+ /* decode payload from query and add to the slice buffer to be returned */
+ const int k_url_safe = 1;
+ grpc_slice_buffer_add(
+ &calld->read_slice_buffer,
+ grpc_base64_decode(exec_ctx,
+ (const char *)GRPC_SLICE_START_PTR(query_slice),
+ k_url_safe));
+ grpc_slice_buffer_stream_init(&calld->read_stream,
+ &calld->read_slice_buffer, 0);
+ calld->seen_path_with_query = true;
+ grpc_slice_unref_internal(exec_ctx, query_slice);
+ } else {
+ gpr_log(GPR_ERROR, "GET request without QUERY");
+ }
}
if (b->idx.named.host != NULL && b->idx.named.authority == NULL) {
@@ -212,19 +259,11 @@ static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
}
if (b->idx.named.authority == NULL) {
- add_error(error_name, &error,
- grpc_error_set_str(GRPC_ERROR_CREATE("Missing header"),
- GRPC_ERROR_STR_KEY, ":authority"));
- }
-
- if (b->idx.named.grpc_payload_bin != NULL) {
- calld->seen_payload_bin = true;
- grpc_slice_buffer_add(&calld->read_slice_buffer,
- grpc_slice_ref_internal(
- GRPC_MDVALUE(b->idx.named.grpc_payload_bin->md)));
- grpc_slice_buffer_stream_init(&calld->read_stream,
- &calld->read_slice_buffer, 0);
- grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_payload_bin);
+ add_error(
+ error_name, &error,
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
+ GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":authority")));
}
return error;
@@ -247,8 +286,8 @@ static void hs_on_complete(grpc_exec_ctx *exec_ctx, void *user_data,
grpc_error *err) {
grpc_call_element *elem = user_data;
call_data *calld = elem->call_data;
- /* Call recv_message_ready if we got the payload via the header field */
- if (calld->seen_payload_bin && calld->recv_message_ready != NULL) {
+ /* Call recv_message_ready if we got the payload via the path field */
+ if (calld->seen_path_with_query && calld->recv_message_ready != NULL) {
*calld->pp_recv_message = calld->payload_bin_delivered
? NULL
: (grpc_byte_stream *)&calld->read_stream;
@@ -263,7 +302,7 @@ static void hs_recv_message_ready(grpc_exec_ctx *exec_ctx, void *user_data,
grpc_error *err) {
grpc_call_element *elem = user_data;
call_data *calld = elem->call_data;
- if (calld->seen_payload_bin) {
+ if (calld->seen_path_with_query) {
/* do nothing. This is probably a GET request, and payload will be returned
in hs_on_complete callback. */
} else {
@@ -358,7 +397,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *calld = elem->call_data;
grpc_slice_buffer_destroy_internal(exec_ctx, &calld->read_slice_buffer);
}
diff --git a/src/core/lib/channel/message_size_filter.c b/src/core/lib/channel/message_size_filter.c
index b424c0d2ac..63136650a5 100644
--- a/src/core/lib/channel/message_size_filter.c
+++ b/src/core/lib/channel/message_size_filter.c
@@ -121,8 +121,8 @@ static void recv_message_ready(grpc_exec_ctx* exec_ctx, void* user_data,
"Received message larger than max (%u vs. %d)",
(*calld->recv_message)->length, calld->max_recv_size);
grpc_error* new_error = grpc_error_set_int(
- GRPC_ERROR_CREATE(message_string), GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_INVALID_ARGUMENT);
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(message_string),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INVALID_ARGUMENT);
if (error == GRPC_ERROR_NONE) {
error = new_error;
} else {
@@ -147,9 +147,10 @@ static void start_transport_stream_op(grpc_exec_ctx* exec_ctx,
gpr_asprintf(&message_string, "Sent message larger than max (%u vs. %d)",
op->send_message->length, calld->max_send_size);
grpc_transport_stream_op_finish_with_failure(
- exec_ctx, op, grpc_error_set_int(GRPC_ERROR_CREATE(message_string),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_INVALID_ARGUMENT));
+ exec_ctx, op,
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(message_string),
+ GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_INVALID_ARGUMENT));
gpr_free(message_string);
return;
}
@@ -200,7 +201,7 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
// Destructor for call_data.
static void destroy_call_elem(grpc_exec_ctx* exec_ctx, grpc_call_element* elem,
const grpc_call_final_info* final_info,
- void* ignored) {}
+ grpc_closure* ignored) {}
// Constructor for channel_data.
static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
diff --git a/src/core/lib/http/httpcli.c b/src/core/lib/http/httpcli.c
index 6d7aa43b81..453a64b049 100644
--- a/src/core/lib/http/httpcli.c
+++ b/src/core/lib/http/httpcli.c
@@ -126,13 +126,15 @@ static void finish(grpc_exec_ctx *exec_ctx, internal_request *req,
static void append_error(internal_request *req, grpc_error *error) {
if (req->overall_error == GRPC_ERROR_NONE) {
- req->overall_error = GRPC_ERROR_CREATE("Failed HTTP/1 client request");
+ req->overall_error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
}
grpc_resolved_address *addr = &req->addresses->addrs[req->next_address - 1];
char *addr_text = grpc_sockaddr_to_uri(addr);
req->overall_error = grpc_error_add_child(
req->overall_error,
- grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_text));
+ grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(addr_text)));
gpr_free(addr_text);
}
@@ -190,8 +192,8 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
internal_request *req = arg;
if (!ep) {
- next_address(exec_ctx, req,
- GRPC_ERROR_CREATE("Unexplained handshake failure"));
+ next_address(exec_ctx, req, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Unexplained handshake failure"));
return;
}
@@ -221,8 +223,8 @@ static void next_address(grpc_exec_ctx *exec_ctx, internal_request *req,
}
if (req->next_address == req->addresses->naddrs) {
finish(exec_ctx, req,
- GRPC_ERROR_CREATE_REFERENCING("Failed HTTP requests to all targets",
- &req->overall_error, 1));
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed HTTP requests to all targets", &req->overall_error, 1));
return;
}
addr = &req->addresses->addrs[req->next_address++];
diff --git a/src/core/lib/http/httpcli_security_connector.c b/src/core/lib/http/httpcli_security_connector.c
index 354d2f4a09..be6a6d618a 100644
--- a/src/core/lib/http/httpcli_security_connector.c
+++ b/src/core/lib/http/httpcli_security_connector.c
@@ -95,7 +95,7 @@ static void httpcli_ssl_check_peer(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "Peer name %s is not in peer certificate",
c->secure_peer_name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
}
grpc_closure_sched(exec_ctx, on_peer_checked, error);
diff --git a/src/core/lib/http/parser.c b/src/core/lib/http/parser.c
index b9c56c103c..aac506b800 100644
--- a/src/core/lib/http/parser.c
+++ b/src/core/lib/http/parser.c
@@ -54,26 +54,36 @@ static grpc_error *handle_response_line(grpc_http_parser *parser) {
uint8_t *cur = beg;
uint8_t *end = beg + parser->cur_line_length;
- if (cur == end || *cur++ != 'H') return GRPC_ERROR_CREATE("Expected 'H'");
- if (cur == end || *cur++ != 'T') return GRPC_ERROR_CREATE("Expected 'T'");
- if (cur == end || *cur++ != 'T') return GRPC_ERROR_CREATE("Expected 'T'");
- if (cur == end || *cur++ != 'P') return GRPC_ERROR_CREATE("Expected 'P'");
- if (cur == end || *cur++ != '/') return GRPC_ERROR_CREATE("Expected '/'");
- if (cur == end || *cur++ != '1') return GRPC_ERROR_CREATE("Expected '1'");
- if (cur == end || *cur++ != '.') return GRPC_ERROR_CREATE("Expected '.'");
+ if (cur == end || *cur++ != 'H')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'H'");
+ if (cur == end || *cur++ != 'T')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
+ if (cur == end || *cur++ != 'T')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
+ if (cur == end || *cur++ != 'P')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'P'");
+ if (cur == end || *cur++ != '/')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '/'");
+ if (cur == end || *cur++ != '1')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '1'");
+ if (cur == end || *cur++ != '.')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '.'");
if (cur == end || *cur < '0' || *cur++ > '1') {
- return GRPC_ERROR_CREATE("Expected HTTP/1.0 or HTTP/1.1");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Expected HTTP/1.0 or HTTP/1.1");
}
- if (cur == end || *cur++ != ' ') return GRPC_ERROR_CREATE("Expected ' '");
+ if (cur == end || *cur++ != ' ')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected ' '");
if (cur == end || *cur < '1' || *cur++ > '9')
- return GRPC_ERROR_CREATE("Expected status code");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
if (cur == end || *cur < '0' || *cur++ > '9')
- return GRPC_ERROR_CREATE("Expected status code");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
if (cur == end || *cur < '0' || *cur++ > '9')
- return GRPC_ERROR_CREATE("Expected status code");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected status code");
parser->http.response->status =
(cur[-3] - '0') * 100 + (cur[-2] - '0') * 10 + (cur[-1] - '0');
- if (cur == end || *cur++ != ' ') return GRPC_ERROR_CREATE("Expected ' '");
+ if (cur == end || *cur++ != ' ')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected ' '");
/* we don't really care about the status code message */
@@ -89,24 +99,33 @@ static grpc_error *handle_request_line(grpc_http_parser *parser) {
while (cur != end && *cur++ != ' ')
;
- if (cur == end) return GRPC_ERROR_CREATE("No method on HTTP request line");
+ if (cur == end)
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "No method on HTTP request line");
parser->http.request->method = buf2str(beg, (size_t)(cur - beg - 1));
beg = cur;
while (cur != end && *cur++ != ' ')
;
- if (cur == end) return GRPC_ERROR_CREATE("No path on HTTP request line");
+ if (cur == end)
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No path on HTTP request line");
parser->http.request->path = buf2str(beg, (size_t)(cur - beg - 1));
- if (cur == end || *cur++ != 'H') return GRPC_ERROR_CREATE("Expected 'H'");
- if (cur == end || *cur++ != 'T') return GRPC_ERROR_CREATE("Expected 'T'");
- if (cur == end || *cur++ != 'T') return GRPC_ERROR_CREATE("Expected 'T'");
- if (cur == end || *cur++ != 'P') return GRPC_ERROR_CREATE("Expected 'P'");
- if (cur == end || *cur++ != '/') return GRPC_ERROR_CREATE("Expected '/'");
+ if (cur == end || *cur++ != 'H')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'H'");
+ if (cur == end || *cur++ != 'T')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
+ if (cur == end || *cur++ != 'T')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'T'");
+ if (cur == end || *cur++ != 'P')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected 'P'");
+ if (cur == end || *cur++ != '/')
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Expected '/'");
vers_major = (uint8_t)(*cur++ - '1' + 1);
++cur;
if (cur == end)
- return GRPC_ERROR_CREATE("End of line in HTTP version string");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "End of line in HTTP version string");
vers_minor = (uint8_t)(*cur++ - '1' + 1);
if (vers_major == 1) {
@@ -115,18 +134,19 @@ static grpc_error *handle_request_line(grpc_http_parser *parser) {
} else if (vers_minor == 1) {
parser->http.request->version = GRPC_HTTP_HTTP11;
} else {
- return GRPC_ERROR_CREATE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
}
} else if (vers_major == 2) {
if (vers_minor == 0) {
parser->http.request->version = GRPC_HTTP_HTTP20;
} else {
- return GRPC_ERROR_CREATE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
}
} else {
- return GRPC_ERROR_CREATE("Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Expected one of HTTP/1.0, HTTP/1.1, or HTTP/2.0");
}
return GRPC_ERROR_NONE;
@@ -139,7 +159,8 @@ static grpc_error *handle_first_line(grpc_http_parser *parser) {
case GRPC_HTTP_RESPONSE:
return handle_response_line(parser);
}
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
+ GPR_UNREACHABLE_CODE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
}
static grpc_error *add_header(grpc_http_parser *parser) {
@@ -154,7 +175,8 @@ static grpc_error *add_header(grpc_http_parser *parser) {
GPR_ASSERT(cur != end);
if (*cur == ' ' || *cur == '\t') {
- error = GRPC_ERROR_CREATE("Continued header lines not supported yet");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Continued header lines not supported yet");
goto done;
}
@@ -162,7 +184,8 @@ static grpc_error *add_header(grpc_http_parser *parser) {
cur++;
}
if (cur == end) {
- error = GRPC_ERROR_CREATE("Didn't find ':' in header string");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Didn't find ':' in header string");
goto done;
}
GPR_ASSERT(cur >= beg);
@@ -222,7 +245,8 @@ static grpc_error *finish_line(grpc_http_parser *parser,
}
break;
case GRPC_HTTP_BODY:
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
+ GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Should never reach here"));
}
parser->cur_line_length = 0;
@@ -240,7 +264,8 @@ static grpc_error *addbyte_body(grpc_http_parser *parser, uint8_t byte) {
body_length = &parser->http.request->body_length;
body = &parser->http.request->body;
} else {
- GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE("Should never reach here"));
+ GPR_UNREACHABLE_CODE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
}
if (*body_length == parser->body_capacity) {
@@ -286,7 +311,8 @@ static grpc_error *addbyte(grpc_http_parser *parser, uint8_t byte,
if (grpc_http1_trace)
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
GRPC_HTTP_PARSER_MAX_HEADER_LENGTH);
- return GRPC_ERROR_CREATE("HTTP header max line length exceeded");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "HTTP header max line length exceeded");
}
parser->cur_line[parser->cur_line_length] = byte;
parser->cur_line_length++;
@@ -347,7 +373,7 @@ grpc_error *grpc_http_parser_parse(grpc_http_parser *parser, grpc_slice slice,
grpc_error *grpc_http_parser_eof(grpc_http_parser *parser) {
if (parser->state != GRPC_HTTP_BODY) {
- return GRPC_ERROR_CREATE("Did not finish headers");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers");
}
return GRPC_ERROR_NONE;
}
diff --git a/src/core/lib/iomgr/closure.c b/src/core/lib/iomgr/closure.c
index 509c1ff95d..6633fb68ec 100644
--- a/src/core/lib/iomgr/closure.c
+++ b/src/core/lib/iomgr/closure.c
@@ -33,6 +33,7 @@
#include "src/core/lib/iomgr/closure.h"
+#include <assert.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -124,6 +125,7 @@ void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *c,
grpc_error *error) {
GPR_TIMER_BEGIN("grpc_closure_run", 0);
if (c != NULL) {
+ assert(c->cb);
c->scheduler->vtable->run(exec_ctx, c, error);
} else {
GRPC_ERROR_UNREF(error);
@@ -135,6 +137,7 @@ void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *c,
grpc_error *error) {
GPR_TIMER_BEGIN("grpc_closure_sched", 0);
if (c != NULL) {
+ assert(c->cb);
c->scheduler->vtable->sched(exec_ctx, c, error);
} else {
GRPC_ERROR_UNREF(error);
@@ -146,6 +149,7 @@ void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx, grpc_closure_list *list) {
grpc_closure *c = list->head;
while (c != NULL) {
grpc_closure *next = c->next_data.next;
+ assert(c->cb);
c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error);
c = next;
}
diff --git a/src/core/lib/iomgr/combiner.c b/src/core/lib/iomgr/combiner.c
index fa9966c3a6..2bc476bbef 100644
--- a/src/core/lib/iomgr/combiner.c
+++ b/src/core/lib/iomgr/combiner.c
@@ -33,6 +33,7 @@
#include "src/core/lib/iomgr/combiner.h"
+#include <assert.h>
#include <string.h>
#include <grpc/support/alloc.h>
@@ -216,6 +217,7 @@ static void combiner_exec(grpc_exec_ctx *exec_ctx, grpc_combiner *lock,
GPR_DEBUG, "C:%p grpc_combiner_execute c=%p cov=%d last=%" PRIdPTR, lock,
cl, covered_by_poller, last));
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
+ assert(cl->cb);
cl->error_data.scratch =
pack_error_data((error_data){error, covered_by_poller});
if (covered_by_poller) {
diff --git a/src/core/lib/iomgr/error.c b/src/core/lib/iomgr/error.c
index 1127fff756..1dbb64e8f3 100644
--- a/src/core/lib/iomgr/error.c
+++ b/src/core/lib/iomgr/error.c
@@ -35,7 +35,6 @@
#include <string.h>
-#include <grpc/slice.h>
#include <grpc/status.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -287,7 +286,7 @@ static void internal_add_error(grpc_error **err, grpc_error *new) {
// It is very common to include and extra int and string in an error
#define SURPLUS_CAPACITY (2 * SLOTS_PER_INT + SLOTS_PER_TIME)
-grpc_error *grpc_error_create(const char *file, int line, const char *desc,
+grpc_error *grpc_error_create(grpc_slice file, int line, grpc_slice desc,
grpc_error **referencing,
size_t num_referencing) {
GPR_TIMER_BEGIN("grpc_error_create", 0);
@@ -313,14 +312,8 @@ grpc_error *grpc_error_create(const char *file, int line, const char *desc,
memset(err->times, UINT8_MAX, GRPC_ERROR_TIME_MAX);
internal_set_int(&err, GRPC_ERROR_INT_FILE_LINE, line);
- internal_set_str(&err, GRPC_ERROR_STR_FILE,
- grpc_slice_from_static_string(file));
- internal_set_str(
- &err, GRPC_ERROR_STR_DESCRIPTION,
- grpc_slice_from_copied_buffer(
- desc,
- strlen(desc) +
- 1)); // TODO, pull this up. // TODO(ncteisen), pull this up.
+ internal_set_str(&err, GRPC_ERROR_STR_FILE, file);
+ internal_set_str(&err, GRPC_ERROR_STR_DESCRIPTION, desc);
for (size_t i = 0; i < num_referencing; ++i) {
if (referencing[i] == GRPC_ERROR_NONE) continue;
@@ -360,7 +353,7 @@ static grpc_error *copy_error_and_unref(grpc_error *in) {
GPR_TIMER_BEGIN("copy_error_and_unref", 0);
grpc_error *out;
if (grpc_error_is_special(in)) {
- out = GRPC_ERROR_CREATE("unknown");
+ out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
if (in == GRPC_ERROR_NONE) {
internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
grpc_slice_from_static_string("no error"));
@@ -417,7 +410,7 @@ typedef struct {
const char *msg;
} special_error_status_map;
static special_error_status_map error_status_map[] = {
- {GRPC_ERROR_NONE, GRPC_STATUS_OK, NULL},
+ {GRPC_ERROR_NONE, GRPC_STATUS_OK, ""},
{GRPC_ERROR_CANCELLED, GRPC_STATUS_CANCELLED, "Cancelled"},
{GRPC_ERROR_OOM, GRPC_STATUS_RESOURCE_EXHAUSTED, "Out of memory"},
};
@@ -448,33 +441,33 @@ bool grpc_error_get_int(grpc_error *err, grpc_error_ints which, intptr_t *p) {
}
grpc_error *grpc_error_set_str(grpc_error *src, grpc_error_strs which,
- const char *value) {
+ grpc_slice str) {
GPR_TIMER_BEGIN("grpc_error_set_str", 0);
grpc_error *new = copy_error_and_unref(src);
- internal_set_str(&new, which,
- grpc_slice_from_copied_buffer(
- value, strlen(value) + 1)); // TODO, pull this up.
+ internal_set_str(&new, which, str);
GPR_TIMER_END("grpc_error_set_str", 0);
return new;
}
-const char *grpc_error_get_str(grpc_error *err, grpc_error_strs which) {
+bool grpc_error_get_str(grpc_error *err, grpc_error_strs which,
+ grpc_slice *str) {
if (grpc_error_is_special(err)) {
if (which == GRPC_ERROR_STR_GRPC_MESSAGE) {
for (size_t i = 0; i < GPR_ARRAY_SIZE(error_status_map); i++) {
if (error_status_map[i].error == err) {
- return error_status_map[i].msg;
+ *str = grpc_slice_from_static_string(error_status_map[i].msg);
+ return true;
}
}
}
- return NULL;
+ return false;
}
uint8_t slot = err->strs[which];
if (slot != UINT8_MAX) {
- return (const char *)GRPC_SLICE_START_PTR(
- *(grpc_slice *)(err->arena + slot));
+ *str = *(grpc_slice *)(err->arena + slot);
+ return true;
} else {
- return NULL;
+ return false;
}
}
@@ -515,13 +508,14 @@ static void append_str(const char *str, char **s, size_t *sz, size_t *cap) {
}
}
-static void append_esc_str(const char *str, char **s, size_t *sz, size_t *cap) {
+static void append_esc_str(const uint8_t *str, size_t len, char **s, size_t *sz,
+ size_t *cap) {
static const char *hex = "0123456789abcdef";
append_chr('"', s, sz, cap);
- for (const uint8_t *c = (const uint8_t *)str; *c; c++) {
- if (*c < 32 || *c >= 127) {
+ for (size_t i = 0; i < len; i++, str++) {
+ if (*str < 32 || *str >= 127) {
append_chr('\\', s, sz, cap);
- switch (*c) {
+ switch (*str) {
case '\b':
append_chr('b', s, sz, cap);
break;
@@ -541,12 +535,12 @@ static void append_esc_str(const char *str, char **s, size_t *sz, size_t *cap) {
append_chr('u', s, sz, cap);
append_chr('0', s, sz, cap);
append_chr('0', s, sz, cap);
- append_chr(hex[*c >> 4], s, sz, cap);
- append_chr(hex[*c & 0x0f], s, sz, cap);
+ append_chr(hex[*str >> 4], s, sz, cap);
+ append_chr(hex[*str & 0x0f], s, sz, cap);
break;
}
} else {
- append_chr((char)*c, s, sz, cap);
+ append_chr((char)*str, s, sz, cap);
}
}
append_chr('"', s, sz, cap);
@@ -586,11 +580,12 @@ static char *key_str(grpc_error_strs which) {
return gpr_strdup(error_str_name(which));
}
-static char *fmt_str(void *p) {
+static char *fmt_str(grpc_slice slice) {
char *s = NULL;
size_t sz = 0;
size_t cap = 0;
- append_esc_str(p, &s, &sz, &cap);
+ append_esc_str((const uint8_t *)GRPC_SLICE_START_PTR(slice),
+ GRPC_SLICE_LENGTH(slice), &s, &sz, &cap);
append_chr(0, &s, &sz, &cap);
return s;
}
@@ -599,9 +594,8 @@ static void collect_strs_kvs(grpc_error *err, kv_pairs *kvs) {
for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
uint8_t slot = err->strs[which];
if (slot != UINT8_MAX) {
- append_kv(
- kvs, key_str((grpc_error_strs)which),
- fmt_str(GRPC_SLICE_START_PTR(*(grpc_slice *)(err->arena + slot))));
+ append_kv(kvs, key_str((grpc_error_strs)which),
+ fmt_str(*(grpc_slice *)(err->arena + slot)));
}
}
}
@@ -681,7 +675,8 @@ static char *finish_kvs(kv_pairs *kvs) {
append_chr('{', &s, &sz, &cap);
for (size_t i = 0; i < kvs->num_kvs; i++) {
if (i != 0) append_chr(',', &s, &sz, &cap);
- append_esc_str(kvs->kvs[i].key, &s, &sz, &cap);
+ append_esc_str((const uint8_t *)kvs->kvs[i].key, strlen(kvs->kvs[i].key),
+ &s, &sz, &cap);
gpr_free(kvs->kvs[i].key);
append_chr(':', &s, &sz, &cap);
append_str(kvs->kvs[i].value, &s, &sz, &cap);
@@ -733,10 +728,14 @@ grpc_error *grpc_os_error(const char *file, int line, int err,
const char *call_name) {
return grpc_error_set_str(
grpc_error_set_str(
- grpc_error_set_int(grpc_error_create(file, line, "OS Error", NULL, 0),
- GRPC_ERROR_INT_ERRNO, err),
- GRPC_ERROR_STR_OS_ERROR, strerror(err)),
- GRPC_ERROR_STR_SYSCALL, call_name);
+ grpc_error_set_int(
+ grpc_error_create(grpc_slice_from_static_string(file), line,
+ grpc_slice_from_static_string("OS Error"), NULL,
+ 0),
+ GRPC_ERROR_INT_ERRNO, err),
+ GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(strerror(err))),
+ GRPC_ERROR_STR_SYSCALL, grpc_slice_from_static_string(call_name));
}
#ifdef GPR_WINDOWS
@@ -745,10 +744,13 @@ grpc_error *grpc_wsa_error(const char *file, int line, int err,
char *utf8_message = gpr_format_message(err);
grpc_error *error = grpc_error_set_str(
grpc_error_set_str(
- grpc_error_set_int(grpc_error_create(file, line, "OS Error", NULL, 0),
- GRPC_ERROR_INT_WSA_ERROR, err),
- GRPC_ERROR_STR_OS_ERROR, utf8_message),
- GRPC_ERROR_STR_SYSCALL, call_name);
+ grpc_error_set_int(
+ grpc_error_create(grpc_slice_from_static_string(file), line,
+ grpc_slice_from_static_string("OS Error"), NULL,
+ 0),
+ GRPC_ERROR_INT_WSA_ERROR, err),
+ GRPC_ERROR_STR_OS_ERROR, grpc_slice_from_copied_string(utf8_message)),
+ GRPC_ERROR_STR_SYSCALL, grpc_slice_from_static_string(call_name));
gpr_free(utf8_message);
return error;
}
diff --git a/src/core/lib/iomgr/error.h b/src/core/lib/iomgr/error.h
index eb953947ae..2a44fcfe25 100644
--- a/src/core/lib/iomgr/error.h
+++ b/src/core/lib/iomgr/error.h
@@ -37,6 +37,7 @@
#include <stdbool.h>
#include <stdint.h>
+#include <grpc/slice.h>
#include <grpc/status.h>
#include <grpc/support/time.h>
@@ -45,28 +46,9 @@ extern "C" {
#endif
/// Opaque representation of an error.
-/// Errors are refcounted objects that represent the result of an operation.
-/// Ownership laws:
-/// if a grpc_error is returned by a function, the caller owns a ref to that
-/// instance
-/// if a grpc_error is passed to a grpc_closure callback function (functions
-/// with the signature:
-/// void (*f)(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error))
-/// then those functions do not own a ref to error (but are free to manually
-/// take a reference).
-/// if a grpc_error is passed to *ANY OTHER FUNCTION* then that function takes
-/// ownership of the error
-/// Errors have:
-/// a set of ints, strings, and timestamps that describe the error
-/// always present are:
-/// GRPC_ERROR_STR_FILE, GRPC_ERROR_INT_FILE_LINE - source location the error
-/// was generated
-/// GRPC_ERROR_STR_DESCRIPTION - a human readable description of the error
-/// GRPC_ERROR_TIME_CREATED - a timestamp indicating when the error happened
-/// an error can also have children; these are other errors that are believed
-/// to have contributed to this one. By accumulating children, we can begin
-/// to root cause high level failures from low level failures, without having
-/// to derive execution paths from log lines
+/// See https://github.com/grpc/grpc/blob/master/doc/core/grpc-error.md for a
+/// full write up of this object.
+
typedef struct grpc_error grpc_error;
typedef enum {
@@ -156,7 +138,7 @@ typedef enum {
const char *grpc_error_string(grpc_error *error);
/// Create an error - but use GRPC_ERROR_CREATE instead
-grpc_error *grpc_error_create(const char *file, int line, const char *desc,
+grpc_error *grpc_error_create(grpc_slice file, int line, grpc_slice desc,
grpc_error **referencing, size_t num_referencing);
/// Create an error (this is the preferred way of generating an error that is
/// not due to a system call - for system calls, use GRPC_OS_ERROR or
@@ -166,13 +148,21 @@ grpc_error *grpc_error_create(const char *file, int line, const char *desc,
/// err = grpc_error_create(x, y, z, r, nr) is equivalent to:
/// err = grpc_error_create(x, y, z, NULL, 0);
/// for (i=0; i<nr; i++) err = grpc_error_add_child(err, r[i]);
-#define GRPC_ERROR_CREATE(desc) \
- grpc_error_create(__FILE__, __LINE__, desc, NULL, 0)
+#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
+ grpc_error_create(grpc_slice_from_static_string(__FILE__), __LINE__, \
+ grpc_slice_from_static_string(desc), NULL, 0)
+#define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
+ grpc_error_create(grpc_slice_from_static_string(__FILE__), __LINE__, \
+ grpc_slice_from_copied_string(desc), NULL, 0)
// Create an error that references some other errors. This function adds a
// reference to each error in errs - it does not consume an existing reference
-#define GRPC_ERROR_CREATE_REFERENCING(desc, errs, count) \
- grpc_error_create(__FILE__, __LINE__, desc, errs, count)
+#define GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(desc, errs, count) \
+ grpc_error_create(grpc_slice_from_static_string(__FILE__), __LINE__, \
+ grpc_slice_from_static_string(desc), errs, count)
+#define GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(desc, errs, count) \
+ grpc_error_create(grpc_slice_from_static_string(__FILE__), __LINE__, \
+ grpc_slice_from_copied_string(desc), errs, count)
//#define GRPC_ERROR_REFCOUNT_DEBUG
#ifdef GRPC_ERROR_REFCOUNT_DEBUG
@@ -194,10 +184,11 @@ grpc_error *grpc_error_set_int(grpc_error *src, grpc_error_ints which,
intptr_t value) GRPC_MUST_USE_RESULT;
bool grpc_error_get_int(grpc_error *error, grpc_error_ints which, intptr_t *p);
grpc_error *grpc_error_set_str(grpc_error *src, grpc_error_strs which,
- const char *value) GRPC_MUST_USE_RESULT;
-/// Returns NULL if the specified string is not set.
-/// Caller does NOT own return value.
-const char *grpc_error_get_str(grpc_error *error, grpc_error_strs which);
+ grpc_slice str) GRPC_MUST_USE_RESULT;
+/// Returns false if the specified string is not set.
+/// Caller does NOT own the slice.
+bool grpc_error_get_str(grpc_error *error, grpc_error_strs which,
+ grpc_slice *s);
/// Add a child error: an error that is believed to have contributed to this
/// error occurring. Allows root causing high level errors from lower level
diff --git a/src/core/lib/iomgr/ev_epoll_linux.c b/src/core/lib/iomgr/ev_epoll_linux.c
index 11208b9ad1..1924e76f13 100644
--- a/src/core/lib/iomgr/ev_epoll_linux.c
+++ b/src/core/lib/iomgr/ev_epoll_linux.c
@@ -321,7 +321,7 @@ static bool append_error(grpc_error **composite, grpc_error *error,
const char *desc) {
if (error == GRPC_ERROR_NONE) return true;
if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE(desc);
+ *composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
}
*composite = grpc_error_add_child(*composite, error);
return false;
@@ -1146,9 +1146,9 @@ static void notify_on(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_atm *state,
schedule the closure with the shutdown error */
if ((curr & FD_SHUTDOWN_BIT) > 0) {
grpc_error *shutdown_err = (grpc_error *)(curr & ~FD_SHUTDOWN_BIT);
- grpc_closure_sched(
- exec_ctx, closure,
- GRPC_ERROR_CREATE_REFERENCING("FD Shutdown", &shutdown_err, 1));
+ grpc_closure_sched(exec_ctx, closure,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "FD Shutdown", &shutdown_err, 1));
return;
}
@@ -1203,9 +1203,9 @@ static void set_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, gpr_atm *state,
notify_on to ensure that the closure it schedules 'happens-after'
the set_shutdown is called on the fd */
if (gpr_atm_rel_cas(state, curr, new_state)) {
- grpc_closure_sched(
- exec_ctx, (grpc_closure *)curr,
- GRPC_ERROR_CREATE_REFERENCING("FD Shutdown", &shutdown_err, 1));
+ grpc_closure_sched(exec_ctx, (grpc_closure *)curr,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "FD Shutdown", &shutdown_err, 1));
return;
}
diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index 5ddd5313e2..ca6e855611 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -451,14 +451,16 @@ static grpc_error *fd_shutdown_error(grpc_fd *fd) {
if (!fd->shutdown) {
return GRPC_ERROR_NONE;
} else {
- return GRPC_ERROR_CREATE_REFERENCING("FD shutdown", &fd->shutdown_error, 1);
+ return GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "FD shutdown", &fd->shutdown_error, 1);
}
}
static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
grpc_closure **st, grpc_closure *closure) {
if (fd->shutdown) {
- grpc_closure_sched(exec_ctx, closure, GRPC_ERROR_CREATE("FD shutdown"));
+ grpc_closure_sched(exec_ctx, closure,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("FD shutdown"));
} else if (*st == CLOSURE_NOT_READY) {
/* not ready ==> switch to a waiting state by setting the closure */
*st = closure;
@@ -696,7 +698,7 @@ static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
static void kick_append_error(grpc_error **composite, grpc_error *error) {
if (error == GRPC_ERROR_NONE) return;
if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE("Kick Failure");
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure");
}
*composite = grpc_error_add_child(*composite, error);
}
@@ -859,7 +861,7 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
static void work_combine_error(grpc_error **composite, grpc_error *error) {
if (error == GRPC_ERROR_NONE) return;
if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE("pollset_work");
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work");
}
*composite = grpc_error_add_child(*composite, error);
}
@@ -1421,7 +1423,7 @@ static int cvfd_poll(struct pollfd *fds, nfds_t nfds, int timeout) {
g_cvfds.pollcount++;
opt = gpr_thd_options_default();
gpr_thd_options_set_detached(&opt);
- gpr_thd_new(&t_id, &run_poll, pargs, &opt);
+ GPR_ASSERT(gpr_thd_new(&t_id, &run_poll, pargs, &opt));
// We want the poll() thread to trigger the deadline, so wait forever here
gpr_cv_wait(pollcv, &g_cvfds.mu, gpr_inf_future(GPR_CLOCK_MONOTONIC));
if (gpr_atm_no_barrier_load(&pargs->status) == COMPLETED) {
diff --git a/src/core/lib/iomgr/executor.c b/src/core/lib/iomgr/executor.c
index a5b62aa888..ae3e2eabc3 100644
--- a/src/core/lib/iomgr/executor.c
+++ b/src/core/lib/iomgr/executor.c
@@ -115,8 +115,8 @@ static void maybe_spawn_locked() {
/* All previous instances of the thread should have been joined at this point.
* Spawn time! */
g_executor.busy = 1;
- gpr_thd_new(&g_executor.tid, closure_exec_thread_func, NULL,
- &g_executor.options);
+ GPR_ASSERT(gpr_thd_new(&g_executor.tid, closure_exec_thread_func, NULL,
+ &g_executor.options));
g_executor.pending_join = 1;
}
diff --git a/src/core/lib/iomgr/load_file.c b/src/core/lib/iomgr/load_file.c
index f40c8b28cc..208f74e20c 100644
--- a/src/core/lib/iomgr/load_file.c
+++ b/src/core/lib/iomgr/load_file.c
@@ -78,9 +78,12 @@ end:
*output = result;
if (file != NULL) fclose(file);
if (error != GRPC_ERROR_NONE) {
- grpc_error *error_out = grpc_error_set_str(
- GRPC_ERROR_CREATE_REFERENCING("Failed to load file", &error, 1),
- GRPC_ERROR_STR_FILENAME, filename);
+ grpc_error *error_out =
+ grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed to load file", &error, 1),
+ GRPC_ERROR_STR_FILENAME,
+ grpc_slice_from_copied_string(
+ filename)); // TODO(ncteisen), always static?
GRPC_ERROR_UNREF(error);
error = error_out;
}
diff --git a/src/core/lib/iomgr/port.h b/src/core/lib/iomgr/port.h
index f1897bb91f..94a454c0b7 100644
--- a/src/core/lib/iomgr/port.h
+++ b/src/core/lib/iomgr/port.h
@@ -39,6 +39,7 @@
#if defined(GRPC_UV)
// Do nothing
#elif defined(GPR_MANYLINUX1)
+#define GRPC_HAVE_IFADDRS 1
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
#define GRPC_HAVE_IP_PKTINFO 1
#define GRPC_HAVE_MSG_NOSIGNAL 1
@@ -65,6 +66,7 @@
#define GRPC_POSIX_WAKEUP_FD 1
#define GRPC_TIMER_USE_GENERIC 1
#elif defined(GPR_LINUX)
+#define GRPC_HAVE_IFADDRS 1
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
#define GRPC_HAVE_IP_PKTINFO 1
#define GRPC_HAVE_MSG_NOSIGNAL 1
@@ -90,6 +92,7 @@
#define GRPC_POSIX_SOCKETUTILS
#endif
#elif defined(GPR_APPLE)
+#define GRPC_HAVE_IFADDRS 1
#define GRPC_HAVE_SO_NOSIGPIPE 1
#define GRPC_HAVE_UNIX_SOCKET 1
#define GRPC_MSG_IOVLEN_TYPE int
@@ -100,6 +103,7 @@
#define GRPC_POSIX_WAKEUP_FD 1
#define GRPC_TIMER_USE_GENERIC 1
#elif defined(GPR_FREEBSD)
+#define GRPC_HAVE_IFADDRS 1
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
#define GRPC_HAVE_SO_NOSIGPIPE 1
#define GRPC_HAVE_UNIX_SOCKET 1
diff --git a/src/core/lib/iomgr/resolve_address_posix.c b/src/core/lib/iomgr/resolve_address_posix.c
index 50e470d149..d0ede0f2d5 100644
--- a/src/core/lib/iomgr/resolve_address_posix.c
+++ b/src/core/lib/iomgr/resolve_address_posix.c
@@ -73,14 +73,16 @@ static grpc_error *blocking_resolve_address_impl(
/* parse name, splitting it into host and port parts */
gpr_split_host_port(name, &host, &port);
if (host == NULL) {
- err = grpc_error_set_str(GRPC_ERROR_CREATE("unparseable host:port"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
+ err = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
goto done;
}
if (port == NULL) {
if (default_port == NULL) {
- err = grpc_error_set_str(GRPC_ERROR_CREATE("no port in name"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
+ err = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
goto done;
}
port = gpr_strdup(default_port);
@@ -112,11 +114,15 @@ static grpc_error *blocking_resolve_address_impl(
if (s != 0) {
err = grpc_error_set_str(
grpc_error_set_str(
- grpc_error_set_str(grpc_error_set_int(GRPC_ERROR_CREATE("OS Error"),
- GRPC_ERROR_INT_ERRNO, s),
- GRPC_ERROR_STR_OS_ERROR, gai_strerror(s)),
- GRPC_ERROR_STR_SYSCALL, "getaddrinfo"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
+ grpc_error_set_str(
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("OS Error"),
+ GRPC_ERROR_INT_ERRNO, s),
+ GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(gai_strerror(s))),
+ GRPC_ERROR_STR_SYSCALL,
+ grpc_slice_from_static_string("getaddrinfo")),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
goto done;
}
diff --git a/src/core/lib/iomgr/resolve_address_uv.c b/src/core/lib/iomgr/resolve_address_uv.c
index 4d715be94c..102d1aa290 100644
--- a/src/core/lib/iomgr/resolve_address_uv.c
+++ b/src/core/lib/iomgr/resolve_address_uv.c
@@ -92,9 +92,10 @@ static grpc_error *handle_addrinfo_result(int status, struct addrinfo *result,
if (status != 0) {
grpc_error *error;
*addresses = NULL;
- error = GRPC_ERROR_CREATE("getaddrinfo failed");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("getaddrinfo failed");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
return error;
}
(*addresses) = gpr_malloc(sizeof(grpc_resolved_addresses));
@@ -153,7 +154,7 @@ static grpc_error *try_split_host_port(const char *name,
if (*host == NULL) {
char *msg;
gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return error;
}
@@ -162,7 +163,7 @@ static grpc_error *try_split_host_port(const char *name,
if (default_port == NULL) {
char *msg;
gpr_asprintf(&msg, "no port in name '%s'", name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return error;
}
@@ -262,8 +263,9 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
if (s != 0) {
*addrs = NULL;
- err = GRPC_ERROR_CREATE("getaddrinfo failed");
- err = grpc_error_set_str(err, GRPC_ERROR_STR_OS_ERROR, uv_strerror(s));
+ err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("getaddrinfo failed");
+ err = grpc_error_set_str(err, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(s)));
grpc_closure_sched(exec_ctx, on_done, err);
gpr_free(r);
gpr_free(req);
diff --git a/src/core/lib/iomgr/resolve_address_windows.c b/src/core/lib/iomgr/resolve_address_windows.c
index 2439ce3cb7..22eca1fd3b 100644
--- a/src/core/lib/iomgr/resolve_address_windows.c
+++ b/src/core/lib/iomgr/resolve_address_windows.c
@@ -78,7 +78,7 @@ static grpc_error *blocking_resolve_address_impl(
if (host == NULL) {
char *msg;
gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
goto done;
}
@@ -86,7 +86,7 @@ static grpc_error *blocking_resolve_address_impl(
if (default_port == NULL) {
char *msg;
gpr_asprintf(&msg, "no port in name '%s'", name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
goto done;
}
diff --git a/src/core/lib/iomgr/socket_factory_posix.c b/src/core/lib/iomgr/socket_factory_posix.c
new file mode 100644
index 0000000000..1050a14c46
--- /dev/null
+++ b/src/core/lib/iomgr/socket_factory_posix.c
@@ -0,0 +1,110 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/lib/iomgr/port.h"
+
+#ifdef GRPC_POSIX_SOCKET
+
+#include "src/core/lib/iomgr/socket_factory_posix.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/sync.h>
+#include <grpc/support/useful.h>
+
+void grpc_socket_factory_init(grpc_socket_factory *factory,
+ const grpc_socket_factory_vtable *vtable) {
+ factory->vtable = vtable;
+ gpr_ref_init(&factory->refcount, 1);
+}
+
+int grpc_socket_factory_socket(grpc_socket_factory *factory, int domain,
+ int type, int protocol) {
+ return factory->vtable->socket(factory, domain, type, protocol);
+}
+
+int grpc_socket_factory_bind(grpc_socket_factory *factory, int sockfd,
+ const grpc_resolved_address *addr) {
+ return factory->vtable->bind(factory, sockfd, addr);
+}
+
+int grpc_socket_factory_compare(grpc_socket_factory *a,
+ grpc_socket_factory *b) {
+ int c = GPR_ICMP(a, b);
+ if (c != 0) {
+ grpc_socket_factory *sma = a;
+ grpc_socket_factory *smb = b;
+ c = GPR_ICMP(sma->vtable, smb->vtable);
+ if (c == 0) {
+ c = sma->vtable->compare(sma, smb);
+ }
+ }
+ return c;
+}
+
+grpc_socket_factory *grpc_socket_factory_ref(grpc_socket_factory *factory) {
+ gpr_ref(&factory->refcount);
+ return factory;
+}
+
+void grpc_socket_factory_unref(grpc_socket_factory *factory) {
+ if (gpr_unref(&factory->refcount)) {
+ factory->vtable->destroy(factory);
+ }
+}
+
+static void *socket_factory_arg_copy(void *p) {
+ return grpc_socket_factory_ref(p);
+}
+
+static void socket_factory_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) {
+ grpc_socket_factory_unref(p);
+}
+
+static int socket_factory_cmp(void *a, void *b) {
+ return grpc_socket_factory_compare((grpc_socket_factory *)a,
+ (grpc_socket_factory *)b);
+}
+
+static const grpc_arg_pointer_vtable socket_factory_arg_vtable = {
+ socket_factory_arg_copy, socket_factory_arg_destroy, socket_factory_cmp};
+
+grpc_arg grpc_socket_factory_to_arg(grpc_socket_factory *factory) {
+ grpc_arg arg;
+ arg.type = GRPC_ARG_POINTER;
+ arg.key = GRPC_ARG_SOCKET_FACTORY;
+ arg.value.pointer.vtable = &socket_factory_arg_vtable;
+ arg.value.pointer.p = factory;
+ return arg;
+}
+
+#endif
diff --git a/src/core/lib/iomgr/socket_factory_posix.h b/src/core/lib/iomgr/socket_factory_posix.h
new file mode 100644
index 0000000000..2c63299030
--- /dev/null
+++ b/src/core/lib/iomgr/socket_factory_posix.h
@@ -0,0 +1,90 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_IOMGR_SOCKET_FACTORY_POSIX_H
+#define GRPC_CORE_LIB_IOMGR_SOCKET_FACTORY_POSIX_H
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/sync.h>
+#include "src/core/lib/iomgr/resolve_address.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** The virtual table of grpc_socket_factory */
+typedef struct {
+ /** Replacement for socket(2) */
+ int (*socket)(grpc_socket_factory *factory, int domain, int type,
+ int protocol);
+ /** Replacement for bind(2) */
+ int (*bind)(grpc_socket_factory *factory, int sockfd,
+ const grpc_resolved_address *addr);
+ /** Compare socket factory \a a and \a b */
+ int (*compare)(grpc_socket_factory *a, grpc_socket_factory *b);
+ /** Destroys the socket factory instance */
+ void (*destroy)(grpc_socket_factory *factory);
+} grpc_socket_factory_vtable;
+
+/** The Socket Factory interface allows changes on socket options */
+struct grpc_socket_factory {
+ const grpc_socket_factory_vtable *vtable;
+ gpr_refcount refcount;
+};
+
+/** called by concrete implementations to initialize the base struct */
+void grpc_socket_factory_init(grpc_socket_factory *factory,
+ const grpc_socket_factory_vtable *vtable);
+
+/** Wrap \a factory as a grpc_arg */
+grpc_arg grpc_socket_factory_to_arg(grpc_socket_factory *factory);
+
+/** Perform the equivalent of a socket(2) operation using \a factory */
+int grpc_socket_factory_socket(grpc_socket_factory *factory, int domain,
+ int type, int protocol);
+
+/** Perform the equivalent of a bind(2) operation using \a factory */
+int grpc_socket_factory_bind(grpc_socket_factory *factory, int sockfd,
+ const grpc_resolved_address *addr);
+
+/** Compare if \a a and \a b are the same factory or have same settings */
+int grpc_socket_factory_compare(grpc_socket_factory *a, grpc_socket_factory *b);
+
+grpc_socket_factory *grpc_socket_factory_ref(grpc_socket_factory *factory);
+void grpc_socket_factory_unref(grpc_socket_factory *factory);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_FACTORY_POSIX_H */
diff --git a/src/core/lib/iomgr/socket_utils_common_posix.c b/src/core/lib/iomgr/socket_utils_common_posix.c
index 88e9ade253..bbe642d0fb 100644
--- a/src/core/lib/iomgr/socket_utils_common_posix.c
+++ b/src/core/lib/iomgr/socket_utils_common_posix.c
@@ -90,7 +90,7 @@ grpc_error *grpc_set_socket_no_sigpipe_if_possible(int fd) {
return GRPC_OS_ERROR(errno, "getsockopt(SO_NOSIGPIPE)");
}
if ((newval != 0) != (val != 0)) {
- return GRPC_ERROR_CREATE("Failed to set SO_NOSIGPIPE");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_NOSIGPIPE");
}
#endif
return GRPC_ERROR_NONE;
@@ -164,7 +164,7 @@ grpc_error *grpc_set_socket_reuse_addr(int fd, int reuse) {
return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEADDR)");
}
if ((newval != 0) != val) {
- return GRPC_ERROR_CREATE("Failed to set SO_REUSEADDR");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_REUSEADDR");
}
return GRPC_ERROR_NONE;
@@ -173,7 +173,8 @@ grpc_error *grpc_set_socket_reuse_addr(int fd, int reuse) {
/* set a socket to reuse old addresses */
grpc_error *grpc_set_socket_reuse_port(int fd, int reuse) {
#ifndef SO_REUSEPORT
- return GRPC_ERROR_CREATE("SO_REUSEPORT unavailable on compiling system");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "SO_REUSEPORT unavailable on compiling system");
#else
int val = (reuse != 0);
int newval;
@@ -185,7 +186,7 @@ grpc_error *grpc_set_socket_reuse_port(int fd, int reuse) {
return GRPC_OS_ERROR(errno, "getsockopt(SO_REUSEPORT)");
}
if ((newval != 0) != val) {
- return GRPC_ERROR_CREATE("Failed to set SO_REUSEPORT");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set SO_REUSEPORT");
}
return GRPC_ERROR_NONE;
@@ -204,7 +205,7 @@ grpc_error *grpc_set_socket_low_latency(int fd, int low_latency) {
return GRPC_OS_ERROR(errno, "getsockopt(TCP_NODELAY)");
}
if ((newval != 0) != val) {
- return GRPC_ERROR_CREATE("Failed to set TCP_NODELAY");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set TCP_NODELAY");
}
return GRPC_ERROR_NONE;
}
@@ -213,7 +214,7 @@ grpc_error *grpc_set_socket_low_latency(int fd, int low_latency) {
grpc_error *grpc_set_socket_with_mutator(int fd, grpc_socket_mutator *mutator) {
GPR_ASSERT(mutator);
if (!grpc_socket_mutator_mutate_fd(mutator, fd)) {
- return GRPC_ERROR_CREATE("grpc_socket_mutator failed.");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("grpc_socket_mutator failed.");
}
return GRPC_ERROR_NONE;
}
@@ -268,7 +269,8 @@ static grpc_error *error_for_fd(int fd, const grpc_resolved_address *addr) {
char *addr_str;
grpc_sockaddr_to_string(&addr_str, addr, 0);
grpc_error *err = grpc_error_set_str(GRPC_OS_ERROR(errno, "socket"),
- GRPC_ERROR_STR_TARGET_ADDRESS, addr_str);
+ GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(addr_str));
gpr_free(addr_str);
return err;
}
@@ -276,11 +278,25 @@ static grpc_error *error_for_fd(int fd, const grpc_resolved_address *addr) {
grpc_error *grpc_create_dualstack_socket(
const grpc_resolved_address *resolved_addr, int type, int protocol,
grpc_dualstack_mode *dsmode, int *newfd) {
+ return grpc_create_dualstack_socket_using_factory(NULL, resolved_addr, type,
+ protocol, dsmode, newfd);
+}
+
+static int create_socket(grpc_socket_factory *factory, int domain, int type,
+ int protocol) {
+ return (factory != NULL)
+ ? grpc_socket_factory_socket(factory, domain, type, protocol)
+ : socket(domain, type, protocol);
+}
+
+grpc_error *grpc_create_dualstack_socket_using_factory(
+ grpc_socket_factory *factory, const grpc_resolved_address *resolved_addr,
+ int type, int protocol, grpc_dualstack_mode *dsmode, int *newfd) {
const struct sockaddr *addr = (const struct sockaddr *)resolved_addr->addr;
int family = addr->sa_family;
if (family == AF_INET6) {
if (grpc_ipv6_loopback_available()) {
- *newfd = socket(family, type, protocol);
+ *newfd = create_socket(factory, family, type, protocol);
} else {
*newfd = -1;
errno = EAFNOSUPPORT;
@@ -302,7 +318,7 @@ grpc_error *grpc_create_dualstack_socket(
family = AF_INET;
}
*dsmode = family == AF_INET ? GRPC_DSMODE_IPV4 : GRPC_DSMODE_NONE;
- *newfd = socket(family, type, protocol);
+ *newfd = create_socket(factory, family, type, protocol);
return error_for_fd(*newfd, resolved_addr);
}
diff --git a/src/core/lib/iomgr/socket_utils_posix.h b/src/core/lib/iomgr/socket_utils_posix.h
index e84d3781a1..2c2fc95ff9 100644
--- a/src/core/lib/iomgr/socket_utils_posix.h
+++ b/src/core/lib/iomgr/socket_utils_posix.h
@@ -41,6 +41,7 @@
#include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/socket_factory_posix.h"
#include "src/core/lib/iomgr/socket_mutator.h"
/* a wrapper for accept or accept4 */
@@ -137,4 +138,10 @@ grpc_error *grpc_create_dualstack_socket(const grpc_resolved_address *addr,
grpc_dualstack_mode *dsmode,
int *newfd);
+/* Same as grpc_create_dualstack_socket(), but use the given socket factory (if
+ non-null) to create the socket, rather than calling socket() directly. */
+grpc_error *grpc_create_dualstack_socket_using_factory(
+ grpc_socket_factory *factory, const grpc_resolved_address *addr, int type,
+ int protocol, grpc_dualstack_mode *dsmode, int *newfd);
+
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H */
diff --git a/src/core/lib/iomgr/tcp_client_posix.c b/src/core/lib/iomgr/tcp_client_posix.c
index 0144192b71..a108b10da6 100644
--- a/src/core/lib/iomgr/tcp_client_posix.c
+++ b/src/core/lib/iomgr/tcp_client_posix.c
@@ -121,8 +121,8 @@ static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
}
gpr_mu_lock(&ac->mu);
if (ac->fd != NULL) {
- grpc_fd_shutdown(exec_ctx, ac->fd,
- GRPC_ERROR_CREATE("connect() timed out"));
+ grpc_fd_shutdown(exec_ctx, ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "connect() timed out"));
}
done = (--ac->refs == 0);
gpr_mu_unlock(&ac->mu);
@@ -191,7 +191,8 @@ static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
gpr_mu_lock(&ac->mu);
if (error != GRPC_ERROR_NONE) {
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, "Timeout occurred");
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string("Timeout occurred"));
goto finish;
}
@@ -252,12 +253,17 @@ finish:
gpr_mu_unlock(&ac->mu);
if (error != GRPC_ERROR_NONE) {
char *error_descr;
- gpr_asprintf(&error_descr, "Failed to connect to remote host: %s",
- grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION));
- error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION, error_descr);
+ grpc_slice str;
+ bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
+ GPR_ASSERT(ret);
+ char *desc = grpc_slice_to_c_string(str);
+ gpr_asprintf(&error_descr, "Failed to connect to remote host: %s", desc);
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION,
+ grpc_slice_from_copied_string(error_descr));
gpr_free(error_descr);
- error =
- grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, ac->addr_str);
+ gpr_free(desc);
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(ac->addr_str));
}
if (done) {
gpr_mu_destroy(&ac->mu);
diff --git a/src/core/lib/iomgr/tcp_client_uv.c b/src/core/lib/iomgr/tcp_client_uv.c
index 618483d9cb..682c24ed56 100644
--- a/src/core/lib/iomgr/tcp_client_uv.c
+++ b/src/core/lib/iomgr/tcp_client_uv.c
@@ -100,17 +100,21 @@ static void uv_tc_on_connect(uv_connect_t *req, int status) {
*connect->endpoint = grpc_tcp_create(
connect->tcp_handle, connect->resource_quota, connect->addr_name);
} else {
- error = GRPC_ERROR_CREATE("Failed to connect to remote host");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to connect to remote host");
error = grpc_error_set_int(error, GRPC_ERROR_INT_ERRNO, -status);
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
if (status == UV_ECANCELED) {
- error = grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
- "Timeout occurred");
+ error =
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string("Timeout occurred"));
// This should only happen if the handle is already closed
} else {
- error = grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
- uv_strerror(status));
+ error = grpc_error_set_str(
+ error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
uv_close((uv_handle_t *)connect->tcp_handle, tcp_close_callback);
}
}
diff --git a/src/core/lib/iomgr/tcp_client_windows.c b/src/core/lib/iomgr/tcp_client_windows.c
index c8dc9e64bd..a356564766 100644
--- a/src/core/lib/iomgr/tcp_client_windows.c
+++ b/src/core/lib/iomgr/tcp_client_windows.c
@@ -123,7 +123,7 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
socket = NULL;
}
} else {
- error = GRPC_ERROR_CREATE("socket is null");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("socket is null");
}
}
@@ -238,8 +238,9 @@ failure:
GPR_ASSERT(error != GRPC_ERROR_NONE);
char *target_uri = grpc_sockaddr_to_uri(addr);
grpc_error *final_error = grpc_error_set_str(
- GRPC_ERROR_CREATE_REFERENCING("Failed to connect", &error, 1),
- GRPC_ERROR_STR_TARGET_ADDRESS, target_uri);
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Failed to connect",
+ &error, 1),
+ GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(target_uri));
GRPC_ERROR_UNREF(error);
if (socket != NULL) {
grpc_winsocket_destroy(socket);
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.c
index a4381f8fc9..4d7cf3ff51 100644
--- a/src/core/lib/iomgr/tcp_posix.c
+++ b/src/core/lib/iomgr/tcp_posix.c
@@ -111,7 +111,8 @@ typedef struct {
static grpc_error *tcp_annotate_error(grpc_error *src_error, grpc_tcp *tcp) {
return grpc_error_set_str(
grpc_error_set_int(src_error, GRPC_ERROR_INT_FD, tcp->fd),
- GRPC_ERROR_STR_TARGET_ADDRESS, tcp->peer_string);
+ GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(tcp->peer_string));
}
static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
@@ -246,8 +247,10 @@ static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) {
} else if (read_bytes == 0) {
/* 0 read size ==> end of stream */
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->incoming_buffer);
- call_read_cb(exec_ctx, tcp,
- tcp_annotate_error(GRPC_ERROR_CREATE("Socket closed"), tcp));
+ call_read_cb(
+ exec_ctx, tcp,
+ tcp_annotate_error(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp));
TCP_UNREF(exec_ctx, tcp, "read");
} else {
GPR_ASSERT((size_t)read_bytes <= tcp->incoming_buffer->length);
@@ -464,10 +467,12 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
if (buf->length == 0) {
GPR_TIMER_END("tcp_write", 0);
- grpc_closure_sched(exec_ctx, cb,
- grpc_fd_is_shutdown(tcp->em_fd)
- ? tcp_annotate_error(GRPC_ERROR_CREATE("EOF"), tcp)
- : GRPC_ERROR_NONE);
+ grpc_closure_sched(
+ exec_ctx, cb,
+ grpc_fd_is_shutdown(tcp->em_fd)
+ ? tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"),
+ tcp)
+ : GRPC_ERROR_NONE);
return;
}
tcp->outgoing_buffer = buf;
diff --git a/src/core/lib/iomgr/tcp_server_posix.c b/src/core/lib/iomgr/tcp_server_posix.c
index 5f286a6723..d6a017cf7f 100644
--- a/src/core/lib/iomgr/tcp_server_posix.c
+++ b/src/core/lib/iomgr/tcp_server_posix.c
@@ -44,11 +44,8 @@
#include <errno.h>
#include <fcntl.h>
-#include <ifaddrs.h>
-#include <limits.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
-#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
@@ -67,82 +64,10 @@
#include "src/core/lib/iomgr/sockaddr_utils.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
#include "src/core/lib/iomgr/tcp_posix.h"
+#include "src/core/lib/iomgr/tcp_server_utils_posix.h"
#include "src/core/lib/iomgr/unix_sockets_posix.h"
#include "src/core/lib/support/string.h"
-#define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
-
-static gpr_once s_init_max_accept_queue_size;
-static int s_max_accept_queue_size;
-
-/* one listening port */
-typedef struct grpc_tcp_listener grpc_tcp_listener;
-struct grpc_tcp_listener {
- int fd;
- grpc_fd *emfd;
- grpc_tcp_server *server;
- grpc_resolved_address addr;
- int port;
- unsigned port_index;
- unsigned fd_index;
- grpc_closure read_closure;
- grpc_closure destroyed_closure;
- struct grpc_tcp_listener *next;
- /* sibling is a linked list of all listeners for a given port. add_port and
- clone_port place all new listeners in the same sibling list. A member of
- the 'sibling' list is also a member of the 'next' list. The head of each
- sibling list has is_sibling==0, and subsequent members of sibling lists
- have is_sibling==1. is_sibling allows separate sibling lists to be
- identified while iterating through 'next'. */
- struct grpc_tcp_listener *sibling;
- int is_sibling;
-};
-
-/* the overall server */
-struct grpc_tcp_server {
- gpr_refcount refs;
- /* Called whenever accept() succeeds on a server port. */
- grpc_tcp_server_cb on_accept_cb;
- void *on_accept_cb_arg;
-
- gpr_mu mu;
-
- /* active port count: how many ports are actually still listening */
- size_t active_ports;
- /* destroyed port count: how many ports are completely destroyed */
- size_t destroyed_ports;
-
- /* is this server shutting down? */
- bool shutdown;
- /* have listeners been shutdown? */
- bool shutdown_listeners;
- /* use SO_REUSEPORT */
- bool so_reuseport;
- /* expand wildcard addresses to a list of all local addresses */
- bool expand_wildcard_addrs;
-
- /* linked list of server ports */
- grpc_tcp_listener *head;
- grpc_tcp_listener *tail;
- unsigned nports;
-
- /* List of closures passed to shutdown_starting_add(). */
- grpc_closure_list shutdown_starting;
-
- /* shutdown callback */
- grpc_closure *shutdown_complete;
-
- /* all pollsets interested in new connections */
- grpc_pollset **pollsets;
- /* number of pollsets in the pollsets array */
- size_t pollset_count;
-
- /* next pollset to assign a channel to */
- gpr_atm next_pollset_to_assign;
-
- grpc_resource_quota *resource_quota;
-};
-
static gpr_once check_init = GPR_ONCE_INIT;
static bool has_so_reuseport = false;
@@ -175,8 +100,8 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
} else {
grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
gpr_free(s);
- return GRPC_ERROR_CREATE(GRPC_ARG_ALLOW_REUSEPORT
- " must be an integer");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(GRPC_ARG_ALLOW_REUSEPORT
+ " must be an integer");
}
} else if (0 == strcmp(GRPC_ARG_RESOURCE_QUOTA, args->args[i].key)) {
if (args->args[i].type == GRPC_ARG_POINTER) {
@@ -186,8 +111,8 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
} else {
grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
gpr_free(s);
- return GRPC_ERROR_CREATE(GRPC_ARG_RESOURCE_QUOTA
- " must be a pointer to a buffer pool");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ GRPC_ARG_RESOURCE_QUOTA " must be a pointer to a buffer pool");
}
} else if (0 == strcmp(GRPC_ARG_EXPAND_WILDCARD_ADDRS, args->args[i].key)) {
if (args->args[i].type == GRPC_ARG_INTEGER) {
@@ -195,8 +120,8 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
} else {
grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
gpr_free(s);
- return GRPC_ERROR_CREATE(GRPC_ARG_EXPAND_WILDCARD_ADDRS
- " must be an integer");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ GRPC_ARG_EXPAND_WILDCARD_ADDRS " must be an integer");
}
}
}
@@ -260,10 +185,7 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
/* delete ALL the things */
gpr_mu_lock(&s->mu);
- if (!s->shutdown) {
- gpr_mu_unlock(&s->mu);
- return;
- }
+ GPR_ASSERT(s->shutdown);
if (s->head) {
grpc_tcp_listener *sp;
@@ -291,8 +213,8 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
if (s->active_ports) {
grpc_tcp_listener *sp;
for (sp = s->head; sp; sp = sp->next) {
- grpc_fd_shutdown(exec_ctx, sp->emfd,
- GRPC_ERROR_CREATE("Server destroyed"));
+ grpc_fd_shutdown(exec_ctx, sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Server destroyed"));
}
gpr_mu_unlock(&s->mu);
} else {
@@ -301,99 +223,6 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
}
}
-/* get max listen queue size on linux */
-static void init_max_accept_queue_size(void) {
- int n = SOMAXCONN;
- char buf[64];
- FILE *fp = fopen("/proc/sys/net/core/somaxconn", "r");
- if (fp == NULL) {
- /* 2.4 kernel. */
- s_max_accept_queue_size = SOMAXCONN;
- return;
- }
- if (fgets(buf, sizeof buf, fp)) {
- char *end;
- long i = strtol(buf, &end, 10);
- if (i > 0 && i <= INT_MAX && end && *end == 0) {
- n = (int)i;
- }
- }
- fclose(fp);
- s_max_accept_queue_size = n;
-
- if (s_max_accept_queue_size < MIN_SAFE_ACCEPT_QUEUE_SIZE) {
- gpr_log(GPR_INFO,
- "Suspiciously small accept queue (%d) will probably lead to "
- "connection drops",
- s_max_accept_queue_size);
- }
-}
-
-static int get_max_accept_queue_size(void) {
- gpr_once_init(&s_init_max_accept_queue_size, init_max_accept_queue_size);
- return s_max_accept_queue_size;
-}
-
-/* Prepare a recently-created socket for listening. */
-static grpc_error *prepare_socket(int fd, const grpc_resolved_address *addr,
- bool so_reuseport, int *port) {
- grpc_resolved_address sockname_temp;
- grpc_error *err = GRPC_ERROR_NONE;
-
- GPR_ASSERT(fd >= 0);
-
- if (so_reuseport && !grpc_is_unix_socket(addr)) {
- err = grpc_set_socket_reuse_port(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- }
-
- err = grpc_set_socket_nonblocking(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- err = grpc_set_socket_cloexec(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- if (!grpc_is_unix_socket(addr)) {
- err = grpc_set_socket_low_latency(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- err = grpc_set_socket_reuse_addr(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- }
- err = grpc_set_socket_no_sigpipe_if_possible(fd);
- if (err != GRPC_ERROR_NONE) goto error;
-
- GPR_ASSERT(addr->len < ~(socklen_t)0);
- if (bind(fd, (struct sockaddr *)addr->addr, (socklen_t)addr->len) < 0) {
- err = GRPC_OS_ERROR(errno, "bind");
- goto error;
- }
-
- if (listen(fd, get_max_accept_queue_size()) < 0) {
- err = GRPC_OS_ERROR(errno, "listen");
- goto error;
- }
-
- sockname_temp.len = sizeof(struct sockaddr_storage);
-
- if (getsockname(fd, (struct sockaddr *)sockname_temp.addr,
- (socklen_t *)&sockname_temp.len) < 0) {
- err = GRPC_OS_ERROR(errno, "getsockname");
- goto error;
- }
-
- *port = grpc_sockaddr_get_port(&sockname_temp);
- return GRPC_ERROR_NONE;
-
-error:
- GPR_ASSERT(err != GRPC_ERROR_NONE);
- if (fd >= 0) {
- close(fd);
- }
- grpc_error *ret = grpc_error_set_int(
- GRPC_ERROR_CREATE_REFERENCING("Unable to configure socket", &err, 1),
- GRPC_ERROR_INT_FD, fd);
- GRPC_ERROR_UNREF(err);
- return ret;
-}
-
/* event manager callback when reads are ready */
static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
grpc_tcp_listener *sp = arg;
@@ -469,7 +298,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
error:
gpr_mu_lock(&sp->server->mu);
- if (0 == --sp->server->active_ports) {
+ if (0 == --sp->server->active_ports && sp->server->shutdown) {
gpr_mu_unlock(&sp->server->mu);
deactivated_all_ports(exec_ctx, sp->server);
} else {
@@ -477,216 +306,6 @@ error:
}
}
-static grpc_error *add_socket_to_server(grpc_tcp_server *s, int fd,
- const grpc_resolved_address *addr,
- unsigned port_index, unsigned fd_index,
- grpc_tcp_listener **listener) {
- grpc_tcp_listener *sp = NULL;
- int port = -1;
- char *addr_str;
- char *name;
-
- grpc_error *err = prepare_socket(fd, addr, s->so_reuseport, &port);
- if (err == GRPC_ERROR_NONE) {
- GPR_ASSERT(port > 0);
- grpc_sockaddr_to_string(&addr_str, addr, 1);
- gpr_asprintf(&name, "tcp-server-listener:%s", addr_str);
- gpr_mu_lock(&s->mu);
- s->nports++;
- GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
- sp = gpr_malloc(sizeof(grpc_tcp_listener));
- sp->next = NULL;
- if (s->head == NULL) {
- s->head = sp;
- } else {
- s->tail->next = sp;
- }
- s->tail = sp;
- sp->server = s;
- sp->fd = fd;
- sp->emfd = grpc_fd_create(fd, name);
- memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
- sp->port = port;
- sp->port_index = port_index;
- sp->fd_index = fd_index;
- sp->is_sibling = 0;
- sp->sibling = NULL;
- GPR_ASSERT(sp->emfd);
- gpr_mu_unlock(&s->mu);
- gpr_free(addr_str);
- gpr_free(name);
- }
-
- *listener = sp;
- return err;
-}
-
-/* If successful, add a listener to s for addr, set *dsmode for the socket, and
- return the *listener. */
-static grpc_error *add_addr_to_server(grpc_tcp_server *s,
- const grpc_resolved_address *addr,
- unsigned port_index, unsigned fd_index,
- grpc_dualstack_mode *dsmode,
- grpc_tcp_listener **listener) {
- grpc_resolved_address addr4_copy;
- int fd;
- grpc_error *err =
- grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
- if (err != GRPC_ERROR_NONE) {
- return err;
- }
- if (*dsmode == GRPC_DSMODE_IPV4 &&
- grpc_sockaddr_is_v4mapped(addr, &addr4_copy)) {
- addr = &addr4_copy;
- }
- return add_socket_to_server(s, fd, addr, port_index, fd_index, listener);
-}
-
-/* Bind to "::" to get a port number not used by any address. */
-static grpc_error *get_unused_port(int *port) {
- grpc_resolved_address wild;
- grpc_sockaddr_make_wildcard6(0, &wild);
- grpc_dualstack_mode dsmode;
- int fd;
- grpc_error *err =
- grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
- if (err != GRPC_ERROR_NONE) {
- return err;
- }
- if (dsmode == GRPC_DSMODE_IPV4) {
- grpc_sockaddr_make_wildcard4(0, &wild);
- }
- if (bind(fd, (const struct sockaddr *)wild.addr, (socklen_t)wild.len) != 0) {
- err = GRPC_OS_ERROR(errno, "bind");
- close(fd);
- return err;
- }
- if (getsockname(fd, (struct sockaddr *)wild.addr, (socklen_t *)&wild.len) !=
- 0) {
- err = GRPC_OS_ERROR(errno, "getsockname");
- close(fd);
- return err;
- }
- close(fd);
- *port = grpc_sockaddr_get_port(&wild);
- return *port <= 0 ? GRPC_ERROR_CREATE("Bad port") : GRPC_ERROR_NONE;
-}
-
-/* Return the listener in s with address addr or NULL. */
-static grpc_tcp_listener *find_listener_with_addr(grpc_tcp_server *s,
- grpc_resolved_address *addr) {
- grpc_tcp_listener *l;
- gpr_mu_lock(&s->mu);
- for (l = s->head; l != NULL; l = l->next) {
- if (l->addr.len != addr->len) {
- continue;
- }
- if (memcmp(l->addr.addr, addr->addr, addr->len) == 0) {
- break;
- }
- }
- gpr_mu_unlock(&s->mu);
- return l;
-}
-
-/* Get all addresses assigned to network interfaces on the machine and create a
- listener for each. requested_port is the port to use for every listener, or 0
- to select one random port that will be used for every listener. Set *out_port
- to the port selected. Return GRPC_ERROR_NONE only if all listeners were
- added. */
-static grpc_error *add_all_local_addrs_to_server(grpc_tcp_server *s,
- unsigned port_index,
- int requested_port,
- int *out_port) {
- struct ifaddrs *ifa = NULL;
- struct ifaddrs *ifa_it;
- unsigned fd_index = 0;
- grpc_tcp_listener *sp = NULL;
- grpc_error *err = GRPC_ERROR_NONE;
- if (requested_port == 0) {
- /* Note: There could be a race where some local addrs can listen on the
- selected port and some can't. The sane way to handle this would be to
- retry by recreating the whole grpc_tcp_server. Backing out individual
- listeners and orphaning the FDs looks like too much trouble. */
- if ((err = get_unused_port(&requested_port)) != GRPC_ERROR_NONE) {
- return err;
- } else if (requested_port <= 0) {
- return GRPC_ERROR_CREATE("Bad get_unused_port()");
- }
- gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port);
- }
- if (getifaddrs(&ifa) != 0 || ifa == NULL) {
- return GRPC_OS_ERROR(errno, "getifaddrs");
- }
- for (ifa_it = ifa; ifa_it != NULL; ifa_it = ifa_it->ifa_next) {
- grpc_resolved_address addr;
- char *addr_str = NULL;
- grpc_dualstack_mode dsmode;
- grpc_tcp_listener *new_sp = NULL;
- const char *ifa_name = (ifa_it->ifa_name ? ifa_it->ifa_name : "<unknown>");
- if (ifa_it->ifa_addr == NULL) {
- continue;
- } else if (ifa_it->ifa_addr->sa_family == AF_INET) {
- addr.len = sizeof(struct sockaddr_in);
- } else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
- addr.len = sizeof(struct sockaddr_in6);
- } else {
- continue;
- }
- memcpy(addr.addr, ifa_it->ifa_addr, addr.len);
- if (!grpc_sockaddr_set_port(&addr, requested_port)) {
- /* Should never happen, because we check sa_family above. */
- err = GRPC_ERROR_CREATE("Failed to set port");
- break;
- }
- if (grpc_sockaddr_to_string(&addr_str, &addr, 0) < 0) {
- addr_str = gpr_strdup("<error>");
- }
- gpr_log(GPR_DEBUG,
- "Adding local addr from interface %s flags 0x%x to server: %s",
- ifa_name, ifa_it->ifa_flags, addr_str);
- /* We could have multiple interfaces with the same address (e.g., bonding),
- so look for duplicates. */
- if (find_listener_with_addr(s, &addr) != NULL) {
- gpr_log(GPR_DEBUG, "Skipping duplicate addr %s on interface %s", addr_str,
- ifa_name);
- gpr_free(addr_str);
- continue;
- }
- if ((err = add_addr_to_server(s, &addr, port_index, fd_index, &dsmode,
- &new_sp)) != GRPC_ERROR_NONE) {
- char *err_str = NULL;
- grpc_error *root_err;
- if (gpr_asprintf(&err_str, "Failed to add listener: %s", addr_str) < 0) {
- err_str = gpr_strdup("Failed to add listener");
- }
- root_err = GRPC_ERROR_CREATE(err_str);
- gpr_free(err_str);
- gpr_free(addr_str);
- err = grpc_error_add_child(root_err, err);
- break;
- } else {
- GPR_ASSERT(requested_port == new_sp->port);
- ++fd_index;
- if (sp != NULL) {
- new_sp->is_sibling = 1;
- sp->sibling = new_sp;
- }
- sp = new_sp;
- }
- gpr_free(addr_str);
- }
- freeifaddrs(ifa);
- if (err != GRPC_ERROR_NONE) {
- return err;
- } else if (sp == NULL) {
- return GRPC_ERROR_CREATE("No local addresses");
- } else {
- *out_port = sp->port;
- return GRPC_ERROR_NONE;
- }
-}
-
/* Treat :: or 0.0.0.0 as a family-agnostic wildcard. */
static grpc_error *add_wildcard_addrs_to_server(grpc_tcp_server *s,
unsigned port_index,
@@ -701,14 +320,16 @@ static grpc_error *add_wildcard_addrs_to_server(grpc_tcp_server *s,
grpc_error *v6_err = GRPC_ERROR_NONE;
grpc_error *v4_err = GRPC_ERROR_NONE;
*out_port = -1;
- if (s->expand_wildcard_addrs) {
- return add_all_local_addrs_to_server(s, port_index, requested_port,
- out_port);
+
+ if (grpc_tcp_server_have_ifaddrs() && s->expand_wildcard_addrs) {
+ return grpc_tcp_server_add_all_local_addrs(s, port_index, requested_port,
+ out_port);
}
+
grpc_sockaddr_make_wildcards(requested_port, &wild4, &wild6);
/* Try listening on IPv6 first. */
- if ((v6_err = add_addr_to_server(s, &wild6, port_index, fd_index, &dsmode,
- &sp)) == GRPC_ERROR_NONE) {
+ if ((v6_err = grpc_tcp_server_add_addr(s, &wild6, port_index, fd_index,
+ &dsmode, &sp)) == GRPC_ERROR_NONE) {
++fd_index;
requested_port = *out_port = sp->port;
if (dsmode == GRPC_DSMODE_DUALSTACK || dsmode == GRPC_DSMODE_IPV4) {
@@ -717,8 +338,8 @@ static grpc_error *add_wildcard_addrs_to_server(grpc_tcp_server *s,
}
/* If we got a v6-only socket or nothing, try adding 0.0.0.0. */
grpc_sockaddr_set_port(&wild4, requested_port);
- if ((v4_err = add_addr_to_server(s, &wild4, port_index, fd_index, &dsmode,
- &sp2)) == GRPC_ERROR_NONE) {
+ if ((v4_err = grpc_tcp_server_add_addr(s, &wild4, port_index, fd_index,
+ &dsmode, &sp2)) == GRPC_ERROR_NONE) {
*out_port = sp2->port;
if (sp != NULL) {
sp2->is_sibling = 1;
@@ -726,12 +347,24 @@ static grpc_error *add_wildcard_addrs_to_server(grpc_tcp_server *s,
}
}
if (*out_port > 0) {
- GRPC_LOG_IF_ERROR("Failed to add :: listener", v6_err);
- GRPC_LOG_IF_ERROR("Failed to add 0.0.0.0 listener", v4_err);
+ if (v6_err != GRPC_ERROR_NONE) {
+ gpr_log(GPR_INFO,
+ "Failed to add :: listener, "
+ "the environment may not support IPv6: %s",
+ grpc_error_string(v6_err));
+ GRPC_ERROR_UNREF(v6_err);
+ }
+ if (v4_err != GRPC_ERROR_NONE) {
+ gpr_log(GPR_INFO,
+ "Failed to add 0.0.0.0 listener, "
+ "the environment may not support IPv4: %s",
+ grpc_error_string(v4_err));
+ GRPC_ERROR_UNREF(v4_err);
+ }
return GRPC_ERROR_NONE;
} else {
- grpc_error *root_err =
- GRPC_ERROR_CREATE("Failed to add any wildcard listeners");
+ grpc_error *root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to add any wildcard listeners");
GPR_ASSERT(v6_err != GRPC_ERROR_NONE && v4_err != GRPC_ERROR_NONE);
root_err = grpc_error_add_child(root_err, v6_err);
root_err = grpc_error_add_child(root_err, v4_err);
@@ -756,7 +389,7 @@ static grpc_error *clone_port(grpc_tcp_listener *listener, unsigned count) {
err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
&fd);
if (err != GRPC_ERROR_NONE) return err;
- err = prepare_socket(fd, &listener->addr, true, &port);
+ err = grpc_tcp_server_prepare_socket(fd, &listener->addr, true, &port);
if (err != GRPC_ERROR_NONE) return err;
listener->server->nports++;
grpc_sockaddr_to_string(&addr_str, &listener->addr, 1);
@@ -828,7 +461,7 @@ grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s,
if (grpc_sockaddr_to_v4mapped(addr, &addr6_v4mapped)) {
addr = &addr6_v4mapped;
}
- if ((err = add_addr_to_server(s, addr, port_index, 0, &dsmode, &sp)) ==
+ if ((err = grpc_tcp_server_add_addr(s, addr, port_index, 0, &dsmode, &sp)) ==
GRPC_ERROR_NONE) {
*out_port = sp->port;
}
@@ -951,7 +584,7 @@ void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx *exec_ctx,
grpc_tcp_listener *sp;
for (sp = s->head; sp; sp = sp->next) {
grpc_fd_shutdown(exec_ctx, sp->emfd,
- GRPC_ERROR_CREATE("Server shutdown"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"));
}
}
gpr_mu_unlock(&s->mu);
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h
new file mode 100644
index 0000000000..f5dc8532f9
--- /dev/null
+++ b/src/core/lib/iomgr/tcp_server_utils_posix.h
@@ -0,0 +1,134 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H
+#define GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H
+
+#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/socket_utils_posix.h"
+#include "src/core/lib/iomgr/tcp_server.h"
+
+/* one listening port */
+typedef struct grpc_tcp_listener {
+ int fd;
+ grpc_fd *emfd;
+ grpc_tcp_server *server;
+ grpc_resolved_address addr;
+ int port;
+ unsigned port_index;
+ unsigned fd_index;
+ grpc_closure read_closure;
+ grpc_closure destroyed_closure;
+ struct grpc_tcp_listener *next;
+ /* sibling is a linked list of all listeners for a given port. add_port and
+ clone_port place all new listeners in the same sibling list. A member of
+ the 'sibling' list is also a member of the 'next' list. The head of each
+ sibling list has is_sibling==0, and subsequent members of sibling lists
+ have is_sibling==1. is_sibling allows separate sibling lists to be
+ identified while iterating through 'next'. */
+ struct grpc_tcp_listener *sibling;
+ int is_sibling;
+} grpc_tcp_listener;
+
+/* the overall server */
+struct grpc_tcp_server {
+ gpr_refcount refs;
+ /* Called whenever accept() succeeds on a server port. */
+ grpc_tcp_server_cb on_accept_cb;
+ void *on_accept_cb_arg;
+
+ gpr_mu mu;
+
+ /* active port count: how many ports are actually still listening */
+ size_t active_ports;
+ /* destroyed port count: how many ports are completely destroyed */
+ size_t destroyed_ports;
+
+ /* is this server shutting down? */
+ bool shutdown;
+ /* have listeners been shutdown? */
+ bool shutdown_listeners;
+ /* use SO_REUSEPORT */
+ bool so_reuseport;
+ /* expand wildcard addresses to a list of all local addresses */
+ bool expand_wildcard_addrs;
+
+ /* linked list of server ports */
+ grpc_tcp_listener *head;
+ grpc_tcp_listener *tail;
+ unsigned nports;
+
+ /* List of closures passed to shutdown_starting_add(). */
+ grpc_closure_list shutdown_starting;
+
+ /* shutdown callback */
+ grpc_closure *shutdown_complete;
+
+ /* all pollsets interested in new connections */
+ grpc_pollset **pollsets;
+ /* number of pollsets in the pollsets array */
+ size_t pollset_count;
+
+ /* next pollset to assign a channel to */
+ gpr_atm next_pollset_to_assign;
+
+ grpc_resource_quota *resource_quota;
+};
+
+/* If successful, add a listener to \a s for \a addr, set \a dsmode for the
+ socket, and return the \a listener. */
+grpc_error *grpc_tcp_server_add_addr(grpc_tcp_server *s,
+ const grpc_resolved_address *addr,
+ unsigned port_index, unsigned fd_index,
+ grpc_dualstack_mode *dsmode,
+ grpc_tcp_listener **listener);
+
+/* Get all addresses assigned to network interfaces on the machine and create a
+ listener for each. requested_port is the port to use for every listener, or 0
+ to select one random port that will be used for every listener. Set *out_port
+ to the port selected. Return GRPC_ERROR_NONE only if all listeners were
+ added. */
+grpc_error *grpc_tcp_server_add_all_local_addrs(grpc_tcp_server *s,
+ unsigned port_index,
+ int requested_port,
+ int *out_port);
+
+/* Prepare a recently-created socket for listening. */
+grpc_error *grpc_tcp_server_prepare_socket(int fd,
+ const grpc_resolved_address *addr,
+ bool so_reuseport, int *port);
+/* Ruturn true if the platform supports ifaddrs */
+bool grpc_tcp_server_have_ifaddrs(void);
+
+#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.c b/src/core/lib/iomgr/tcp_server_utils_posix_common.c
new file mode 100644
index 0000000000..af2b00b4b5
--- /dev/null
+++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.c
@@ -0,0 +1,221 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/lib/iomgr/port.h"
+
+#ifdef GRPC_POSIX_SOCKET
+
+#include "src/core/lib/iomgr/tcp_server_utils_posix.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/sync.h>
+
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/sockaddr.h"
+#include "src/core/lib/iomgr/sockaddr_utils.h"
+#include "src/core/lib/iomgr/unix_sockets_posix.h"
+
+#define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
+
+static gpr_once s_init_max_accept_queue_size;
+static int s_max_accept_queue_size;
+
+/* get max listen queue size on linux */
+static void init_max_accept_queue_size(void) {
+ int n = SOMAXCONN;
+ char buf[64];
+ FILE *fp = fopen("/proc/sys/net/core/somaxconn", "r");
+ if (fp == NULL) {
+ /* 2.4 kernel. */
+ s_max_accept_queue_size = SOMAXCONN;
+ return;
+ }
+ if (fgets(buf, sizeof buf, fp)) {
+ char *end;
+ long i = strtol(buf, &end, 10);
+ if (i > 0 && i <= INT_MAX && end && *end == 0) {
+ n = (int)i;
+ }
+ }
+ fclose(fp);
+ s_max_accept_queue_size = n;
+
+ if (s_max_accept_queue_size < MIN_SAFE_ACCEPT_QUEUE_SIZE) {
+ gpr_log(GPR_INFO,
+ "Suspiciously small accept queue (%d) will probably lead to "
+ "connection drops",
+ s_max_accept_queue_size);
+ }
+}
+
+static int get_max_accept_queue_size(void) {
+ gpr_once_init(&s_init_max_accept_queue_size, init_max_accept_queue_size);
+ return s_max_accept_queue_size;
+}
+
+static grpc_error *add_socket_to_server(grpc_tcp_server *s, int fd,
+ const grpc_resolved_address *addr,
+ unsigned port_index, unsigned fd_index,
+ grpc_tcp_listener **listener) {
+ grpc_tcp_listener *sp = NULL;
+ int port = -1;
+ char *addr_str;
+ char *name;
+
+ grpc_error *err =
+ grpc_tcp_server_prepare_socket(fd, addr, s->so_reuseport, &port);
+ if (err == GRPC_ERROR_NONE) {
+ GPR_ASSERT(port > 0);
+ grpc_sockaddr_to_string(&addr_str, addr, 1);
+ gpr_asprintf(&name, "tcp-server-listener:%s", addr_str);
+ gpr_mu_lock(&s->mu);
+ s->nports++;
+ GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
+ sp = gpr_malloc(sizeof(grpc_tcp_listener));
+ sp->next = NULL;
+ if (s->head == NULL) {
+ s->head = sp;
+ } else {
+ s->tail->next = sp;
+ }
+ s->tail = sp;
+ sp->server = s;
+ sp->fd = fd;
+ sp->emfd = grpc_fd_create(fd, name);
+ memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
+ sp->port = port;
+ sp->port_index = port_index;
+ sp->fd_index = fd_index;
+ sp->is_sibling = 0;
+ sp->sibling = NULL;
+ GPR_ASSERT(sp->emfd);
+ gpr_mu_unlock(&s->mu);
+ gpr_free(addr_str);
+ gpr_free(name);
+ }
+
+ *listener = sp;
+ return err;
+}
+
+/* If successful, add a listener to s for addr, set *dsmode for the socket, and
+ return the *listener. */
+grpc_error *grpc_tcp_server_add_addr(grpc_tcp_server *s,
+ const grpc_resolved_address *addr,
+ unsigned port_index, unsigned fd_index,
+ grpc_dualstack_mode *dsmode,
+ grpc_tcp_listener **listener) {
+ grpc_resolved_address addr4_copy;
+ int fd;
+ grpc_error *err =
+ grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
+ if (err != GRPC_ERROR_NONE) {
+ return err;
+ }
+ if (*dsmode == GRPC_DSMODE_IPV4 &&
+ grpc_sockaddr_is_v4mapped(addr, &addr4_copy)) {
+ addr = &addr4_copy;
+ }
+ return add_socket_to_server(s, fd, addr, port_index, fd_index, listener);
+}
+
+/* Prepare a recently-created socket for listening. */
+grpc_error *grpc_tcp_server_prepare_socket(int fd,
+ const grpc_resolved_address *addr,
+ bool so_reuseport, int *port) {
+ grpc_resolved_address sockname_temp;
+ grpc_error *err = GRPC_ERROR_NONE;
+
+ GPR_ASSERT(fd >= 0);
+
+ if (so_reuseport && !grpc_is_unix_socket(addr)) {
+ err = grpc_set_socket_reuse_port(fd, 1);
+ if (err != GRPC_ERROR_NONE) goto error;
+ }
+
+ err = grpc_set_socket_nonblocking(fd, 1);
+ if (err != GRPC_ERROR_NONE) goto error;
+ err = grpc_set_socket_cloexec(fd, 1);
+ if (err != GRPC_ERROR_NONE) goto error;
+ if (!grpc_is_unix_socket(addr)) {
+ err = grpc_set_socket_low_latency(fd, 1);
+ if (err != GRPC_ERROR_NONE) goto error;
+ err = grpc_set_socket_reuse_addr(fd, 1);
+ if (err != GRPC_ERROR_NONE) goto error;
+ }
+ err = grpc_set_socket_no_sigpipe_if_possible(fd);
+ if (err != GRPC_ERROR_NONE) goto error;
+
+ GPR_ASSERT(addr->len < ~(socklen_t)0);
+ if (bind(fd, (struct sockaddr *)addr->addr, (socklen_t)addr->len) < 0) {
+ err = GRPC_OS_ERROR(errno, "bind");
+ goto error;
+ }
+
+ if (listen(fd, get_max_accept_queue_size()) < 0) {
+ err = GRPC_OS_ERROR(errno, "listen");
+ goto error;
+ }
+
+ sockname_temp.len = sizeof(struct sockaddr_storage);
+
+ if (getsockname(fd, (struct sockaddr *)sockname_temp.addr,
+ (socklen_t *)&sockname_temp.len) < 0) {
+ err = GRPC_OS_ERROR(errno, "getsockname");
+ goto error;
+ }
+
+ *port = grpc_sockaddr_get_port(&sockname_temp);
+ return GRPC_ERROR_NONE;
+
+error:
+ GPR_ASSERT(err != GRPC_ERROR_NONE);
+ if (fd >= 0) {
+ close(fd);
+ }
+ grpc_error *ret =
+ grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Unable to configure socket", &err, 1),
+ GRPC_ERROR_INT_FD, fd);
+ GRPC_ERROR_UNREF(err);
+ return ret;
+}
+
+#endif /* GRPC_POSIX_SOCKET */
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
new file mode 100644
index 0000000000..2078a68126
--- /dev/null
+++ b/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c
@@ -0,0 +1,196 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/lib/iomgr/port.h"
+
+#ifdef GRPC_HAVE_IFADDRS
+
+#include "src/core/lib/iomgr/tcp_server_utils_posix.h"
+
+#include <errno.h>
+#include <ifaddrs.h>
+#include <stddef.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/sockaddr.h"
+#include "src/core/lib/iomgr/sockaddr_utils.h"
+
+/* Return the listener in s with address addr or NULL. */
+static grpc_tcp_listener *find_listener_with_addr(grpc_tcp_server *s,
+ grpc_resolved_address *addr) {
+ grpc_tcp_listener *l;
+ gpr_mu_lock(&s->mu);
+ for (l = s->head; l != NULL; l = l->next) {
+ if (l->addr.len != addr->len) {
+ continue;
+ }
+ if (memcmp(l->addr.addr, addr->addr, addr->len) == 0) {
+ break;
+ }
+ }
+ gpr_mu_unlock(&s->mu);
+ return l;
+}
+
+/* Bind to "::" to get a port number not used by any address. */
+static grpc_error *get_unused_port(int *port) {
+ grpc_resolved_address wild;
+ grpc_sockaddr_make_wildcard6(0, &wild);
+ grpc_dualstack_mode dsmode;
+ int fd;
+ grpc_error *err =
+ grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
+ if (err != GRPC_ERROR_NONE) {
+ return err;
+ }
+ if (dsmode == GRPC_DSMODE_IPV4) {
+ grpc_sockaddr_make_wildcard4(0, &wild);
+ }
+ if (bind(fd, (const struct sockaddr *)wild.addr, (socklen_t)wild.len) != 0) {
+ err = GRPC_OS_ERROR(errno, "bind");
+ close(fd);
+ return err;
+ }
+ if (getsockname(fd, (struct sockaddr *)wild.addr, (socklen_t *)&wild.len) !=
+ 0) {
+ err = GRPC_OS_ERROR(errno, "getsockname");
+ close(fd);
+ return err;
+ }
+ close(fd);
+ *port = grpc_sockaddr_get_port(&wild);
+ return *port <= 0 ? GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad port")
+ : GRPC_ERROR_NONE;
+}
+
+grpc_error *grpc_tcp_server_add_all_local_addrs(grpc_tcp_server *s,
+ unsigned port_index,
+ int requested_port,
+ int *out_port) {
+ struct ifaddrs *ifa = NULL;
+ struct ifaddrs *ifa_it;
+ unsigned fd_index = 0;
+ grpc_tcp_listener *sp = NULL;
+ grpc_error *err = GRPC_ERROR_NONE;
+ if (requested_port == 0) {
+ /* Note: There could be a race where some local addrs can listen on the
+ selected port and some can't. The sane way to handle this would be to
+ retry by recreating the whole grpc_tcp_server. Backing out individual
+ listeners and orphaning the FDs looks like too much trouble. */
+ if ((err = get_unused_port(&requested_port)) != GRPC_ERROR_NONE) {
+ return err;
+ } else if (requested_port <= 0) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad get_unused_port()");
+ }
+ gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port);
+ }
+ if (getifaddrs(&ifa) != 0 || ifa == NULL) {
+ return GRPC_OS_ERROR(errno, "getifaddrs");
+ }
+ for (ifa_it = ifa; ifa_it != NULL; ifa_it = ifa_it->ifa_next) {
+ grpc_resolved_address addr;
+ char *addr_str = NULL;
+ grpc_dualstack_mode dsmode;
+ grpc_tcp_listener *new_sp = NULL;
+ const char *ifa_name = (ifa_it->ifa_name ? ifa_it->ifa_name : "<unknown>");
+ if (ifa_it->ifa_addr == NULL) {
+ continue;
+ } else if (ifa_it->ifa_addr->sa_family == AF_INET) {
+ addr.len = sizeof(struct sockaddr_in);
+ } else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
+ addr.len = sizeof(struct sockaddr_in6);
+ } else {
+ continue;
+ }
+ memcpy(addr.addr, ifa_it->ifa_addr, addr.len);
+ if (!grpc_sockaddr_set_port(&addr, requested_port)) {
+ /* Should never happen, because we check sa_family above. */
+ err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set port");
+ break;
+ }
+ if (grpc_sockaddr_to_string(&addr_str, &addr, 0) < 0) {
+ addr_str = gpr_strdup("<error>");
+ }
+ gpr_log(GPR_DEBUG,
+ "Adding local addr from interface %s flags 0x%x to server: %s",
+ ifa_name, ifa_it->ifa_flags, addr_str);
+ /* We could have multiple interfaces with the same address (e.g., bonding),
+ so look for duplicates. */
+ if (find_listener_with_addr(s, &addr) != NULL) {
+ gpr_log(GPR_DEBUG, "Skipping duplicate addr %s on interface %s", addr_str,
+ ifa_name);
+ gpr_free(addr_str);
+ continue;
+ }
+ if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
+ &new_sp)) != GRPC_ERROR_NONE) {
+ char *err_str = NULL;
+ grpc_error *root_err;
+ if (gpr_asprintf(&err_str, "Failed to add listener: %s", addr_str) < 0) {
+ err_str = gpr_strdup("Failed to add listener");
+ }
+ root_err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_str);
+ gpr_free(err_str);
+ gpr_free(addr_str);
+ err = grpc_error_add_child(root_err, err);
+ break;
+ } else {
+ GPR_ASSERT(requested_port == new_sp->port);
+ ++fd_index;
+ if (sp != NULL) {
+ new_sp->is_sibling = 1;
+ sp->sibling = new_sp;
+ }
+ sp = new_sp;
+ }
+ gpr_free(addr_str);
+ }
+ freeifaddrs(ifa);
+ if (err != GRPC_ERROR_NONE) {
+ return err;
+ } else if (sp == NULL) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No local addresses");
+ } else {
+ *out_port = sp->port;
+ return GRPC_ERROR_NONE;
+ }
+}
+
+bool grpc_tcp_server_have_ifaddrs(void) { return true; }
+
+#endif /* GRPC_HAVE_IFADDRS */
diff --git a/src/core/ext/client_channel/initial_connect_string.c b/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
index 8ebd06c458..d6a1a0693e 100644
--- a/src/core/ext/client_channel/initial_connect_string.c
+++ b/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2017, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,22 +31,19 @@
*
*/
-#include "src/core/ext/client_channel/initial_connect_string.h"
+#include "src/core/lib/iomgr/port.h"
-#include <stddef.h>
+#if defined(GRPC_POSIX_SOCKET) && !defined(GRPC_HAVE_IFADDRS)
-extern void grpc_set_default_initial_connect_string(
- grpc_resolved_address **addr, grpc_slice *initial_str);
+#include "src/core/lib/iomgr/tcp_server_utils_posix.h"
-static grpc_set_initial_connect_string_func g_set_initial_connect_string_func =
- grpc_set_default_initial_connect_string;
-
-void grpc_test_set_initial_connect_string_function(
- grpc_set_initial_connect_string_func func) {
- g_set_initial_connect_string_func = func;
+grpc_error *grpc_tcp_server_add_all_local_addrs(grpc_tcp_server *s,
+ unsigned port_index,
+ int requested_port,
+ int *out_port) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ifaddrs available");
}
-void grpc_set_initial_connect_string(grpc_resolved_address **addr,
- grpc_slice *initial_str) {
- g_set_initial_connect_string_func(addr, initial_str);
-}
+bool grpc_tcp_server_have_ifaddrs(void) { return false; }
+
+#endif /* defined(GRPC_POSIX_SOCKET) && !defined(GRPC_HAVE_IFADDRS) */
diff --git a/src/core/lib/iomgr/tcp_server_uv.c b/src/core/lib/iomgr/tcp_server_uv.c
index eed2773f8a..e9246948f5 100644
--- a/src/core/lib/iomgr/tcp_server_uv.c
+++ b/src/core/lib/iomgr/tcp_server_uv.c
@@ -95,8 +95,8 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
} else {
grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
gpr_free(s);
- return GRPC_ERROR_CREATE(GRPC_ARG_RESOURCE_QUOTA
- " must be a pointer to a buffer pool");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ GRPC_ARG_RESOURCE_QUOTA " must be a pointer to a buffer pool");
}
}
}
@@ -244,17 +244,19 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, uv_tcp_t *handle,
// The last argument to uv_tcp_bind is flags
status = uv_tcp_bind(handle, (struct sockaddr *)addr->addr, 0);
if (status != 0) {
- error = GRPC_ERROR_CREATE("Failed to bind to port");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to bind to port");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
return error;
}
status = uv_listen((uv_stream_t *)handle, SOMAXCONN, on_connect);
if (status != 0) {
- error = GRPC_ERROR_CREATE("Failed to listen to port");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to listen to port");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
return error;
}
@@ -262,9 +264,10 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, uv_tcp_t *handle,
status = uv_tcp_getsockname(handle, (struct sockaddr *)&sockname_temp.addr,
(int *)&sockname_temp.len);
if (status != 0) {
- error = GRPC_ERROR_CREATE("getsockname failed");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("getsockname failed");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
return error;
}
@@ -346,15 +349,17 @@ grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s,
if (status == 0) {
error = add_socket_to_server(s, handle, addr, port_index, &sp);
} else {
- error = GRPC_ERROR_CREATE("Failed to initialize UV tcp handle");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to initialize UV tcp handle");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
}
gpr_free(allocated_addr);
if (error != GRPC_ERROR_NONE) {
- grpc_error *error_out = GRPC_ERROR_CREATE_REFERENCING(
+ grpc_error *error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failed to add port to server", &error, 1);
GRPC_ERROR_UNREF(error);
error = error_out;
diff --git a/src/core/lib/iomgr/tcp_server_windows.c b/src/core/lib/iomgr/tcp_server_windows.c
index bd4b9b2df1..12ce7d3fdd 100644
--- a/src/core/lib/iomgr/tcp_server_windows.c
+++ b/src/core/lib/iomgr/tcp_server_windows.c
@@ -122,8 +122,8 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
} else {
grpc_resource_quota_unref_internal(exec_ctx, s->resource_quota);
gpr_free(s);
- return GRPC_ERROR_CREATE(GRPC_ARG_RESOURCE_QUOTA
- " must be a pointer to a buffer pool");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ GRPC_ARG_RESOURCE_QUOTA " must be a pointer to a buffer pool");
}
}
}
@@ -248,9 +248,10 @@ failure:
GPR_ASSERT(error != GRPC_ERROR_NONE);
char *tgtaddr = grpc_sockaddr_to_uri(addr);
grpc_error_set_int(
- grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING(
+ grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failed to prepare server socket", &error, 1),
- GRPC_ERROR_STR_TARGET_ADDRESS, tgtaddr),
+ GRPC_ERROR_STR_TARGET_ADDRESS,
+ grpc_slice_from_copied_string(tgtaddr)),
GRPC_ERROR_INT_FD, (intptr_t)sock);
gpr_free(tgtaddr);
GRPC_ERROR_UNREF(error);
@@ -533,7 +534,7 @@ done:
gpr_free(allocated_addr);
if (error != GRPC_ERROR_NONE) {
- grpc_error *error_out = GRPC_ERROR_CREATE_REFERENCING(
+ grpc_error *error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failed to add port to server", &error, 1);
GRPC_ERROR_UNREF(error);
error = error_out;
diff --git a/src/core/lib/iomgr/tcp_uv.c b/src/core/lib/iomgr/tcp_uv.c
index 5541c62068..8e8db9f7b4 100644
--- a/src/core/lib/iomgr/tcp_uv.c
+++ b/src/core/lib/iomgr/tcp_uv.c
@@ -152,7 +152,7 @@ static void read_callback(uv_stream_t *stream, ssize_t nread,
// TODO(murgatroid99): figure out what the return value here means
uv_read_stop(stream);
if (nread == UV_EOF) {
- error = GRPC_ERROR_CREATE("EOF");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF");
} else if (nread > 0) {
// Successful read
sub = grpc_slice_sub_no_ref(tcp->read_slice, 0, (size_t)nread);
@@ -173,7 +173,7 @@ static void read_callback(uv_stream_t *stream, ssize_t nread,
}
} else {
// nread < 0: Error
- error = GRPC_ERROR_CREATE("TCP Read failed");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed");
}
grpc_closure_sched(&exec_ctx, cb, error);
grpc_exec_ctx_finish(&exec_ctx);
@@ -193,9 +193,10 @@ static void uv_endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
status =
uv_read_start((uv_stream_t *)tcp->handle, alloc_uv_buf, read_callback);
if (status != 0) {
- error = GRPC_ERROR_CREATE("TCP Read failed at start");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed at start");
error =
- grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, uv_strerror(status));
+ grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
+ grpc_slice_from_static_string(uv_strerror(status)));
grpc_closure_sched(exec_ctx, cb, error);
}
if (grpc_tcp_trace) {
@@ -214,7 +215,7 @@ static void write_callback(uv_write_t *req, int status) {
if (status == 0) {
error = GRPC_ERROR_NONE;
} else {
- error = GRPC_ERROR_CREATE("TCP Write failed");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Write failed");
}
if (grpc_tcp_trace) {
const char *str = grpc_error_string(error);
@@ -249,8 +250,8 @@ static void uv_endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
}
if (tcp->shutting_down) {
- grpc_closure_sched(exec_ctx, cb,
- GRPC_ERROR_CREATE("TCP socket is shutting down"));
+ grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "TCP socket is shutting down"));
return;
}
diff --git a/src/core/lib/iomgr/tcp_windows.c b/src/core/lib/iomgr/tcp_windows.c
index 6c413971e3..9134883226 100644
--- a/src/core/lib/iomgr/tcp_windows.c
+++ b/src/core/lib/iomgr/tcp_windows.c
@@ -175,7 +175,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) {
if (error == GRPC_ERROR_NONE) {
if (info->wsa_error != 0 && !tcp->shutting_down) {
char *utf8_message = gpr_format_message(info->wsa_error);
- error = GRPC_ERROR_CREATE(utf8_message);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(utf8_message);
gpr_free(utf8_message);
grpc_slice_unref_internal(exec_ctx, tcp->read_slice);
} else {
@@ -185,9 +185,9 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *tcpp, grpc_error *error) {
} else {
grpc_slice_unref_internal(exec_ctx, tcp->read_slice);
error = tcp->shutting_down
- ? GRPC_ERROR_CREATE_REFERENCING("TCP stream shutting down",
- &tcp->shutdown_error, 1)
- : GRPC_ERROR_CREATE("End of TCP stream");
+ ? GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "TCP stream shutting down", &tcp->shutdown_error, 1)
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING("End of TCP stream");
}
}
}
@@ -208,9 +208,10 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
WSABUF buffer;
if (tcp->shutting_down) {
- grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_CREATE_REFERENCING(
- "TCP socket is shutting down",
- &tcp->shutdown_error, 1));
+ grpc_closure_sched(
+ exec_ctx, cb,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "TCP socket is shutting down", &tcp->shutdown_error, 1));
return;
}
@@ -297,9 +298,10 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
size_t len;
if (tcp->shutting_down) {
- grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_CREATE_REFERENCING(
- "TCP socket is shutting down",
- &tcp->shutdown_error, 1));
+ grpc_closure_sched(
+ exec_ctx, cb,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "TCP socket is shutting down", &tcp->shutdown_error, 1));
return;
}
diff --git a/src/core/lib/iomgr/timer_generic.c b/src/core/lib/iomgr/timer_generic.c
index d4df96c214..e53c801929 100644
--- a/src/core/lib/iomgr/timer_generic.c
+++ b/src/core/lib/iomgr/timer_generic.c
@@ -109,8 +109,9 @@ void grpc_timer_list_init(gpr_timespec now) {
void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {
int i;
- run_some_expired_timers(exec_ctx, gpr_inf_future(g_clock_type), NULL,
- GRPC_ERROR_CREATE("Timer list shutdown"));
+ run_some_expired_timers(
+ exec_ctx, gpr_inf_future(g_clock_type), NULL,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timer list shutdown"));
for (i = 0; i < NUM_SHARDS; i++) {
shard_type *shard = &g_shards[i];
gpr_mu_destroy(&shard->mu);
@@ -182,9 +183,9 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
if (!g_initialized) {
timer->pending = false;
- grpc_closure_sched(
- exec_ctx, timer->closure,
- GRPC_ERROR_CREATE("Attempt to create timer before initialization"));
+ grpc_closure_sched(exec_ctx, timer->closure,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Attempt to create timer before initialization"));
return;
}
@@ -376,7 +377,7 @@ bool grpc_timer_check(grpc_exec_ctx *exec_ctx, gpr_timespec now,
exec_ctx, now, next,
gpr_time_cmp(now, gpr_inf_future(now.clock_type)) != 0
? GRPC_ERROR_NONE
- : GRPC_ERROR_CREATE("Shutting down timer system"));
+ : GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutting down timer system"));
}
#endif /* GRPC_TIMER_USE_GENERIC */
diff --git a/src/core/lib/iomgr/timer_uv.c b/src/core/lib/iomgr/timer_uv.c
index f28a14405d..8e8a07578c 100644
--- a/src/core/lib/iomgr/timer_uv.c
+++ b/src/core/lib/iomgr/timer_uv.c
@@ -78,6 +78,10 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
uv_timer->data = timer;
timer->uv_timer = uv_timer;
uv_timer_start(uv_timer, run_expired_timer, timeout, 0);
+ /* We assume that gRPC timers are only used alongside other active gRPC
+ objects, and that there will therefore always be something else keeping
+ the uv loop alive whenever there is a timer */
+ uv_unref((uv_handle_t *)uv_timer);
}
void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.c
index 71e295770a..60579e18ba 100644
--- a/src/core/lib/iomgr/udp_server.c
+++ b/src/core/lib/iomgr/udp_server.c
@@ -59,11 +59,13 @@
#include <grpc/support/string_util.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/sockaddr_utils.h"
+#include "src/core/lib/iomgr/socket_factory_posix.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
#include "src/core/lib/iomgr/unix_sockets_posix.h"
#include "src/core/lib/support/string.h"
@@ -89,6 +91,9 @@ struct grpc_udp_listener {
struct grpc_udp_server {
gpr_mu mu;
+ /* factory to use for creating and binding sockets, or NULL */
+ grpc_socket_factory *socket_factory;
+
/* active port count: how many ports are actually still listening */
size_t active_ports;
/* destroyed port count: how many ports are completely destroyed */
@@ -113,9 +118,24 @@ struct grpc_udp_server {
void *user_data;
};
-grpc_udp_server *grpc_udp_server_create(void) {
+static grpc_socket_factory *get_socket_factory(const grpc_channel_args *args) {
+ if (args) {
+ const grpc_arg *arg = grpc_channel_args_find(args, GRPC_ARG_SOCKET_FACTORY);
+ if (arg) {
+ GPR_ASSERT(arg->type == GRPC_ARG_POINTER);
+ return arg->value.pointer.p;
+ }
+ }
+ return NULL;
+}
+
+grpc_udp_server *grpc_udp_server_create(const grpc_channel_args *args) {
grpc_udp_server *s = gpr_malloc(sizeof(grpc_udp_server));
gpr_mu_init(&s->mu);
+ s->socket_factory = get_socket_factory(args);
+ if (s->socket_factory) {
+ grpc_socket_factory_ref(s->socket_factory);
+ }
s->active_ports = 0;
s->destroyed_ports = 0;
s->shutdown = 0;
@@ -139,6 +159,10 @@ static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) {
gpr_free(sp);
}
+ if (s->socket_factory) {
+ grpc_socket_factory_unref(s->socket_factory);
+ }
+
gpr_free(s);
}
@@ -162,10 +186,7 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) {
/* delete ALL the things */
gpr_mu_lock(&s->mu);
- if (!s->shutdown) {
- gpr_mu_unlock(&s->mu);
- return;
- }
+ GPR_ASSERT(s->shutdown);
if (s->head) {
grpc_udp_listener *sp;
@@ -205,8 +226,8 @@ void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *s,
for (sp = s->head; sp; sp = sp->next) {
GPR_ASSERT(sp->orphan_cb);
sp->orphan_cb(exec_ctx, sp->emfd, sp->server->user_data);
- grpc_fd_shutdown(exec_ctx, sp->emfd,
- GRPC_ERROR_CREATE("Server destroyed"));
+ grpc_fd_shutdown(exec_ctx, sp->emfd, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Server destroyed"));
}
gpr_mu_unlock(&s->mu);
} else {
@@ -215,8 +236,17 @@ void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *s,
}
}
+static int bind_socket(grpc_socket_factory *socket_factory, int sockfd,
+ const grpc_resolved_address *addr) {
+ return (socket_factory != NULL)
+ ? grpc_socket_factory_bind(socket_factory, sockfd, addr)
+ : bind(sockfd, (struct sockaddr *)addr->addr,
+ (socklen_t)addr->len);
+}
+
/* Prepare a recently-created socket for listening. */
-static int prepare_socket(int fd, const grpc_resolved_address *addr) {
+static int prepare_socket(grpc_socket_factory *socket_factory, int fd,
+ const grpc_resolved_address *addr) {
grpc_resolved_address sockname_temp;
struct sockaddr *addr_ptr = (struct sockaddr *)addr->addr;
/* Set send/receive socket buffers to 1 MB */
@@ -246,7 +276,7 @@ static int prepare_socket(int fd, const grpc_resolved_address *addr) {
}
GPR_ASSERT(addr->len < ~(socklen_t)0);
- if (bind(fd, (struct sockaddr *)addr, (socklen_t)addr->len) < 0) {
+ if (bind_socket(socket_factory, fd, addr) < 0) {
char *addr_str;
grpc_sockaddr_to_string(&addr_str, addr, 0);
gpr_log(GPR_ERROR, "bind addr=%s: %s", addr_str, strerror(errno));
@@ -288,7 +318,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
gpr_mu_lock(&sp->server->mu);
if (error != GRPC_ERROR_NONE) {
- if (0 == --sp->server->active_ports) {
+ if (0 == --sp->server->active_ports && sp->server->shutdown) {
gpr_mu_unlock(&sp->server->mu);
deactivated_all_ports(exec_ctx, sp->server);
} else {
@@ -311,7 +341,7 @@ static void on_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
gpr_mu_lock(&(sp->server->mu));
if (error != GRPC_ERROR_NONE) {
- if (0 == --sp->server->active_ports) {
+ if (0 == --sp->server->active_ports && sp->server->shutdown) {
gpr_mu_unlock(&sp->server->mu);
deactivated_all_ports(exec_ctx, sp->server);
} else {
@@ -339,7 +369,7 @@ static int add_socket_to_server(grpc_udp_server *s, int fd,
char *addr_str;
char *name;
- port = prepare_socket(fd, addr);
+ port = prepare_socket(s->socket_factory, fd, addr);
if (port >= 0) {
grpc_sockaddr_to_string(&addr_str, addr, 1);
gpr_asprintf(&name, "udp-server-listener:%s", addr_str);
@@ -417,8 +447,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s,
/* Try listening on IPv6 first. */
addr = &wild6;
// TODO(rjshade): Test and propagate the returned grpc_error*:
- GRPC_ERROR_UNREF(grpc_create_dualstack_socket(addr, SOCK_DGRAM, IPPROTO_UDP,
- &dsmode, &fd));
+ GRPC_ERROR_UNREF(grpc_create_dualstack_socket_using_factory(
+ s->socket_factory, addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode, &fd));
allocated_port1 =
add_socket_to_server(s, fd, addr, read_cb, write_cb, orphan_cb);
if (fd >= 0 && dsmode == GRPC_DSMODE_DUALSTACK) {
@@ -433,8 +463,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s,
}
// TODO(rjshade): Test and propagate the returned grpc_error*:
- GRPC_ERROR_UNREF(grpc_create_dualstack_socket(addr, SOCK_DGRAM, IPPROTO_UDP,
- &dsmode, &fd));
+ GRPC_ERROR_UNREF(grpc_create_dualstack_socket_using_factory(
+ s->socket_factory, addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode, &fd));
if (fd < 0) {
gpr_log(GPR_ERROR, "Unable to create socket: %s", strerror(errno));
}
diff --git a/src/core/lib/iomgr/udp_server.h b/src/core/lib/iomgr/udp_server.h
index 90842a47f0..9df3fe4d1f 100644
--- a/src/core/lib/iomgr/udp_server.h
+++ b/src/core/lib/iomgr/udp_server.h
@@ -58,7 +58,7 @@ typedef void (*grpc_udp_server_orphan_cb)(grpc_exec_ctx *exec_ctx,
grpc_fd *emfd, void *user_data);
/* Create a server, initially not bound to any ports */
-grpc_udp_server *grpc_udp_server_create(void);
+grpc_udp_server *grpc_udp_server_create(const grpc_channel_args *args);
/* Start listening to bound ports. user_data is passed to callbacks. */
void grpc_udp_server_start(grpc_exec_ctx *exec_ctx, grpc_udp_server *udp_server,
diff --git a/src/core/lib/iomgr/unix_sockets_posix.c b/src/core/lib/iomgr/unix_sockets_posix.c
index 1233cec04e..281865aece 100644
--- a/src/core/lib/iomgr/unix_sockets_posix.c
+++ b/src/core/lib/iomgr/unix_sockets_posix.c
@@ -60,7 +60,7 @@ grpc_error *grpc_resolve_unix_domain_address(const char *name,
gpr_asprintf(&err_msg,
"Path name should not have more than %" PRIuPTR " characters.",
GPR_ARRAY_SIZE(un->sun_path) - 1);
- err = GRPC_ERROR_CREATE(err_msg);
+ err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_msg);
gpr_free(err_msg);
return err;
}
diff --git a/src/core/lib/iomgr/unix_sockets_posix_noop.c b/src/core/lib/iomgr/unix_sockets_posix_noop.c
index 1daf5152c1..b9602cbf8b 100644
--- a/src/core/lib/iomgr/unix_sockets_posix_noop.c
+++ b/src/core/lib/iomgr/unix_sockets_posix_noop.c
@@ -47,7 +47,8 @@ void grpc_create_socketpair_if_unix(int sv[2]) {
grpc_error *grpc_resolve_unix_domain_address(
const char *name, grpc_resolved_addresses **addresses) {
*addresses = NULL;
- return GRPC_ERROR_CREATE("Unix domain sockets are not supported on Windows");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Unix domain sockets are not supported on Windows");
}
int grpc_is_unix_socket(const grpc_resolved_address *addr) { return false; }
diff --git a/src/core/lib/profiling/basic_timers.c b/src/core/lib/profiling/basic_timers.c
index 1f1987fb8e..bc8e27714c 100644
--- a/src/core/lib/profiling/basic_timers.c
+++ b/src/core/lib/profiling/basic_timers.c
@@ -218,7 +218,7 @@ void gpr_timers_set_log_filename(const char *filename) {
static void init_output() {
gpr_thd_options options = gpr_thd_options_default();
gpr_thd_options_set_joinable(&options);
- gpr_thd_new(&g_writing_thread, writing_thread, NULL, &options);
+ GPR_ASSERT(gpr_thd_new(&g_writing_thread, writing_thread, NULL, &options));
atexit(finish_writing);
}
diff --git a/src/core/lib/security/credentials/google_default/google_default_credentials.c b/src/core/lib/security/credentials/google_default/google_default_credentials.c
index dd44621347..97501e6788 100644
--- a/src/core/lib/security/credentials/google_default/google_default_credentials.c
+++ b/src/core/lib/security/credentials/google_default/google_default_credentials.c
@@ -180,7 +180,7 @@ static grpc_error *create_default_creds_from_path(
grpc_slice creds_data = grpc_empty_slice();
grpc_error *error = GRPC_ERROR_NONE;
if (creds_path == NULL) {
- error = GRPC_ERROR_CREATE("creds_path unset");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("creds_path unset");
goto end;
}
error = grpc_load_file(creds_path, 0, &creds_data);
@@ -190,10 +190,9 @@ static grpc_error *create_default_creds_from_path(
json = grpc_json_parse_string_with_len(
(char *)GRPC_SLICE_START_PTR(creds_data), GRPC_SLICE_LENGTH(creds_data));
if (json == NULL) {
- char *dump = grpc_dump_slice(creds_data, GPR_DUMP_HEX | GPR_DUMP_ASCII);
- error = grpc_error_set_str(GRPC_ERROR_CREATE("Failed to parse JSON"),
- GRPC_ERROR_STR_RAW_BYTES, dump);
- gpr_free(dump);
+ error = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to parse JSON"),
+ GRPC_ERROR_STR_RAW_BYTES, grpc_slice_ref_internal(creds_data));
goto end;
}
@@ -204,7 +203,7 @@ static grpc_error *create_default_creds_from_path(
grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
exec_ctx, key, grpc_max_auth_token_lifetime());
if (result == NULL) {
- error = GRPC_ERROR_CREATE(
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"grpc_service_account_jwt_access_credentials_create_from_auth_json_"
"key failed");
}
@@ -217,7 +216,7 @@ static grpc_error *create_default_creds_from_path(
result =
grpc_refresh_token_credentials_create_from_auth_refresh_token(token);
if (result == NULL) {
- error = GRPC_ERROR_CREATE(
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"grpc_refresh_token_credentials_create_from_auth_refresh_token "
"failed");
}
@@ -236,7 +235,8 @@ end:
grpc_channel_credentials *grpc_google_default_credentials_create(void) {
grpc_channel_credentials *result = NULL;
grpc_call_credentials *call_creds = NULL;
- grpc_error *error = GRPC_ERROR_CREATE("Failed to create Google credentials");
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to create Google credentials");
grpc_error *err;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -274,7 +274,8 @@ grpc_channel_credentials *grpc_google_default_credentials_create(void) {
call_creds = grpc_google_compute_engine_credentials_create(NULL);
if (call_creds == NULL) {
error = grpc_error_add_child(
- error, GRPC_ERROR_CREATE("Failed to get credentials from network"));
+ error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to get credentials from network"));
}
}
}
diff --git a/src/core/lib/security/transport/client_auth_filter.c b/src/core/lib/security/transport/client_auth_filter.c
index a23082a866..8f321b9911 100644
--- a/src/core/lib/security/transport/client_auth_filter.c
+++ b/src/core/lib/security/transport/client_auth_filter.c
@@ -95,7 +95,8 @@ static void reset_auth_metadata_context(
static void add_error(grpc_error **combined, grpc_error *error) {
if (error == GRPC_ERROR_NONE) return;
if (*combined == GRPC_ERROR_NONE) {
- *combined = GRPC_ERROR_CREATE("Client auth metadata plugin error");
+ *combined = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Client auth metadata plugin error");
}
*combined = grpc_error_add_child(*combined, error);
}
@@ -114,9 +115,10 @@ static void on_credentials_metadata(grpc_exec_ctx *exec_ctx, void *user_data,
grpc_error *error = GRPC_ERROR_NONE;
if (status != GRPC_CREDENTIALS_OK) {
error = grpc_error_set_int(
- GRPC_ERROR_CREATE(error_details != NULL && strlen(error_details) > 0
- ? error_details
- : "Credentials failed to get metadata."),
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(
+ error_details != NULL && strlen(error_details) > 0
+ ? error_details
+ : "Credentials failed to get metadata."),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED);
} else {
GPR_ASSERT(num_md <= MAX_CREDENTIALS_METADATA_COUNT);
@@ -192,7 +194,7 @@ static void send_security_metadata(grpc_exec_ctx *exec_ctx,
grpc_transport_stream_op_finish_with_failure(
exec_ctx, op,
grpc_error_set_int(
- GRPC_ERROR_CREATE(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Incompatible credentials set on channel and call."),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED));
return;
@@ -225,9 +227,10 @@ static void on_host_checked(grpc_exec_ctx *exec_ctx, void *user_data,
host);
gpr_free(host);
grpc_call_element_signal_error(
- exec_ctx, elem, grpc_error_set_int(GRPC_ERROR_CREATE(error_msg),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNAUTHENTICATED));
+ exec_ctx, elem,
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg),
+ GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_UNAUTHENTICATED));
gpr_free(error_msg);
}
}
@@ -318,7 +321,7 @@ static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
call_data *calld = elem->call_data;
grpc_call_credentials_unref(exec_ctx, calld->creds);
if (calld->have_host) {
diff --git a/src/core/lib/security/transport/secure_endpoint.c b/src/core/lib/security/transport/secure_endpoint.c
index 7d58843d69..568d70fa38 100644
--- a/src/core/lib/security/transport/secure_endpoint.c
+++ b/src/core/lib/security/transport/secure_endpoint.c
@@ -162,7 +162,7 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
if (error != GRPC_ERROR_NONE) {
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer);
- call_read_cb(exec_ctx, ep, GRPC_ERROR_CREATE_REFERENCING(
+ call_read_cb(exec_ctx, ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Secure read failed", &error, 1));
return;
}
@@ -220,8 +220,10 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
if (result != TSI_OK) {
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer);
- call_read_cb(exec_ctx, ep, grpc_set_tsi_error_result(
- GRPC_ERROR_CREATE("Unwrap failed"), result));
+ call_read_cb(
+ exec_ctx, ep,
+ grpc_set_tsi_error_result(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unwrap failed"), result));
return;
}
@@ -332,7 +334,8 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->output_buffer);
grpc_closure_sched(
exec_ctx, cb,
- grpc_set_tsi_error_result(GRPC_ERROR_CREATE("Wrap failed"), result));
+ grpc_set_tsi_error_result(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Wrap failed"), result));
GPR_TIMER_END("secure_endpoint.endpoint_write", 0);
return;
}
diff --git a/src/core/lib/security/transport/security_connector.c b/src/core/lib/security/transport/security_connector.c
index ad083a730f..b0cbc83639 100644
--- a/src/core/lib/security/transport/security_connector.c
+++ b/src/core/lib/security/transport/security_connector.c
@@ -137,9 +137,9 @@ void grpc_security_connector_check_peer(grpc_exec_ctx *exec_ctx,
grpc_auth_context **auth_context,
grpc_closure *on_peer_checked) {
if (sc == NULL) {
- grpc_closure_sched(
- exec_ctx, on_peer_checked,
- GRPC_ERROR_CREATE("cannot check peer -- no security connector"));
+ grpc_closure_sched(exec_ctx, on_peer_checked,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "cannot check peer -- no security connector"));
tsi_peer_destruct(&peer);
} else {
sc->vtable->check_peer(exec_ctx, sc, peer, auth_context, on_peer_checked);
@@ -330,7 +330,8 @@ static void fake_check_peer(grpc_exec_ctx *exec_ctx,
grpc_error *error = GRPC_ERROR_NONE;
*auth_context = NULL;
if (peer.property_count != 1) {
- error = GRPC_ERROR_CREATE("Fake peers should only have 1 property.");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Fake peers should only have 1 property.");
goto end;
}
prop_name = peer.properties[0].name;
@@ -339,13 +340,14 @@ static void fake_check_peer(grpc_exec_ctx *exec_ctx,
char *msg;
gpr_asprintf(&msg, "Unexpected property in fake peer: %s.",
prop_name == NULL ? "<EMPTY>" : prop_name);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
goto end;
}
if (strncmp(peer.properties[0].value.data, TSI_FAKE_CERTIFICATE_TYPE,
peer.properties[0].value.length)) {
- error = GRPC_ERROR_CREATE("Invalid value for cert type property.");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid value for cert type property.");
goto end;
}
*auth_context = grpc_auth_context_create(NULL);
@@ -586,18 +588,19 @@ static grpc_error *ssl_check_peer(grpc_security_connector *sc,
const tsi_peer_property *p =
tsi_peer_get_property_by_name(peer, TSI_SSL_ALPN_SELECTED_PROTOCOL);
if (p == NULL) {
- return GRPC_ERROR_CREATE(
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Cannot check peer: missing selected ALPN property.");
}
if (!grpc_chttp2_is_alpn_version_supported(p->value.data, p->value.length)) {
- return GRPC_ERROR_CREATE("Cannot check peer: invalid ALPN value.");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Cannot check peer: invalid ALPN value.");
}
/* Check the peer name if specified. */
if (peer_name != NULL && !ssl_host_matches_name(peer, peer_name)) {
char *msg;
gpr_asprintf(&msg, "Peer name %s is not in peer certificate", peer_name);
- grpc_error *error = GRPC_ERROR_CREATE(msg);
+ grpc_error *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
return error;
}
diff --git a/src/core/lib/security/transport/security_handshaker.c b/src/core/lib/security/transport/security_handshaker.c
index 7065d261ba..2f39327670 100644
--- a/src/core/lib/security/transport/security_handshaker.c
+++ b/src/core/lib/security/transport/security_handshaker.c
@@ -120,7 +120,7 @@ static void security_handshake_failed_locked(grpc_exec_ctx *exec_ctx,
if (error == GRPC_ERROR_NONE) {
// If we were shut down after the handshake succeeded but before an
// endpoint callback was invoked, we need to generate our own error.
- error = GRPC_ERROR_CREATE("Handshaker shutdown");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
}
const char *msg = grpc_error_string(error);
gpr_log(GPR_DEBUG, "Security handshake failed: %s", msg);
@@ -156,7 +156,8 @@ static void on_peer_checked(grpc_exec_ctx *exec_ctx, void *arg,
tsi_handshaker_create_frame_protector(h->handshaker, NULL, &protector);
if (result != TSI_OK) {
error = grpc_set_tsi_error_result(
- GRPC_ERROR_CREATE("Frame protector creation failed"), result);
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Frame protector creation failed"),
+ result);
security_handshake_failed_locked(exec_ctx, h, error);
goto done;
}
@@ -191,7 +192,7 @@ static grpc_error *check_peer_locked(grpc_exec_ctx *exec_ctx,
tsi_result result = tsi_handshaker_extract_peer(h->handshaker, &peer);
if (result != TSI_OK) {
return grpc_set_tsi_error_result(
- GRPC_ERROR_CREATE("Peer extraction failed"), result);
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Peer extraction failed"), result);
}
grpc_security_connector_check_peer(exec_ctx, h->connector, peer,
&h->auth_context, &h->on_peer_checked);
@@ -215,8 +216,8 @@ static grpc_error *send_handshake_bytes_to_peer_locked(grpc_exec_ctx *exec_ctx,
}
} while (result == TSI_INCOMPLETE_DATA);
if (result != TSI_OK) {
- return grpc_set_tsi_error_result(GRPC_ERROR_CREATE("Handshake failed"),
- result);
+ return grpc_set_tsi_error_result(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake failed"), result);
}
// Send data.
grpc_slice to_send =
@@ -234,8 +235,8 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
gpr_mu_lock(&h->mu);
if (error != GRPC_ERROR_NONE || h->shutdown) {
security_handshake_failed_locked(
- exec_ctx, h,
- GRPC_ERROR_CREATE_REFERENCING("Handshake read failed", &error, 1));
+ exec_ctx, h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Handshake read failed", &error, 1));
gpr_mu_unlock(&h->mu);
security_handshaker_unref(exec_ctx, h);
return;
@@ -270,8 +271,9 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
}
if (result != TSI_OK) {
security_handshake_failed_locked(
- exec_ctx, h, grpc_set_tsi_error_result(
- GRPC_ERROR_CREATE("Handshake failed"), result));
+ exec_ctx, h,
+ grpc_set_tsi_error_result(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake failed"), result));
gpr_mu_unlock(&h->mu);
security_handshaker_unref(exec_ctx, h);
return;
@@ -314,8 +316,8 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx, void *arg,
gpr_mu_lock(&h->mu);
if (error != GRPC_ERROR_NONE || h->shutdown) {
security_handshake_failed_locked(
- exec_ctx, h,
- GRPC_ERROR_CREATE_REFERENCING("Handshake write failed", &error, 1));
+ exec_ctx, h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Handshake write failed", &error, 1));
gpr_mu_unlock(&h->mu);
security_handshaker_unref(exec_ctx, h);
return;
@@ -429,7 +431,8 @@ static void fail_handshaker_do_handshake(grpc_exec_ctx *exec_ctx,
grpc_closure *on_handshake_done,
grpc_handshaker_args *args) {
grpc_closure_sched(exec_ctx, on_handshake_done,
- GRPC_ERROR_CREATE("Failed to create security handshaker"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to create security handshaker"));
}
static const grpc_handshaker_vtable fail_handshaker_vtable = {
diff --git a/src/core/lib/security/transport/server_auth_filter.c b/src/core/lib/security/transport/server_auth_filter.c
index 14619d97ca..3cf0632220 100644
--- a/src/core/lib/security/transport/server_auth_filter.c
+++ b/src/core/lib/security/transport/server_auth_filter.c
@@ -144,9 +144,10 @@ static void on_md_processing_done(
calld->transport_op->send_message = NULL;
}
calld->transport_op->send_trailing_metadata = NULL;
- grpc_closure_sched(&exec_ctx, calld->on_done_recv,
- grpc_error_set_int(GRPC_ERROR_CREATE(error_details),
- GRPC_ERROR_INT_GRPC_STATUS, status));
+ grpc_closure_sched(
+ &exec_ctx, calld->on_done_recv,
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_details),
+ GRPC_ERROR_INT_GRPC_STATUS, status));
}
grpc_exec_ctx_finish(&exec_ctx);
@@ -158,7 +159,7 @@ static void auth_on_recv(grpc_exec_ctx *exec_ctx, void *user_data,
call_data *calld = elem->call_data;
channel_data *chand = elem->channel_data;
if (error == GRPC_ERROR_NONE) {
- if (chand->creds->processor.process != NULL) {
+ if (chand->creds != NULL && chand->creds->processor.process != NULL) {
calld->md = metadata_batch_to_md_array(calld->recv_initial_metadata);
chand->creds->processor.process(
chand->creds->processor.state, calld->auth_context,
@@ -227,7 +228,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {}
+ grpc_closure *ignored) {}
/* Constructor for channel_data */
static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
@@ -242,7 +243,6 @@ static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(!args->is_last);
GPR_ASSERT(auth_context != NULL);
- GPR_ASSERT(creds != NULL);
/* initialize members */
chand->auth_context =
diff --git a/src/core/lib/security/transport/tsi_error.c b/src/core/lib/security/transport/tsi_error.c
index afc1733567..eae0a676b0 100644
--- a/src/core/lib/security/transport/tsi_error.c
+++ b/src/core/lib/security/transport/tsi_error.c
@@ -34,7 +34,9 @@
#include "src/core/lib/security/transport/tsi_error.h"
grpc_error *grpc_set_tsi_error_result(grpc_error *error, tsi_result result) {
- return grpc_error_set_int(grpc_error_set_str(error, GRPC_ERROR_STR_TSI_ERROR,
- tsi_result_to_string(result)),
- GRPC_ERROR_INT_TSI_CODE, result);
+ return grpc_error_set_int(
+ grpc_error_set_str(
+ error, GRPC_ERROR_STR_TSI_ERROR,
+ grpc_slice_from_static_string(tsi_result_to_string(result))),
+ GRPC_ERROR_INT_TSI_CODE, result);
}
diff --git a/src/core/lib/security/util/b64.c b/src/core/lib/security/util/b64.c
index 09c8213131..0d5a917660 100644
--- a/src/core/lib/security/util/b64.c
+++ b/src/core/lib/security/util/b64.c
@@ -71,15 +71,31 @@ static const char base64_url_safe_chars[] =
char *grpc_base64_encode(const void *vdata, size_t data_size, int url_safe,
int multiline) {
- const unsigned char *data = vdata;
- const char *base64_chars =
- url_safe ? base64_url_safe_chars : base64_url_unsafe_chars;
+ size_t result_projected_size =
+ grpc_base64_estimate_encoded_size(data_size, url_safe, multiline);
+ char *result = gpr_malloc(result_projected_size);
+ grpc_base64_encode_core(result, vdata, data_size, url_safe, multiline);
+ return result;
+}
+
+size_t grpc_base64_estimate_encoded_size(size_t data_size, int url_safe,
+ int multiline) {
size_t result_projected_size =
4 * ((data_size + 3) / 3) +
2 * (multiline ? (data_size / (3 * GRPC_BASE64_MULTILINE_NUM_BLOCKS))
: 0) +
1;
- char *result = gpr_malloc(result_projected_size);
+ return result_projected_size;
+}
+
+void grpc_base64_encode_core(char *result, const void *vdata, size_t data_size,
+ int url_safe, int multiline) {
+ const unsigned char *data = vdata;
+ const char *base64_chars =
+ url_safe ? base64_url_safe_chars : base64_url_unsafe_chars;
+ const size_t result_projected_size =
+ grpc_base64_estimate_encoded_size(data_size, url_safe, multiline);
+
char *current = result;
size_t num_blocks = 0;
size_t i = 0;
@@ -119,7 +135,6 @@ char *grpc_base64_encode(const void *vdata, size_t data_size, int url_safe,
GPR_ASSERT(current >= result);
GPR_ASSERT((uintptr_t)(current - result) < result_projected_size);
result[current - result] = '\0';
- return result;
}
grpc_slice grpc_base64_decode(grpc_exec_ctx *exec_ctx, const char *b64,
diff --git a/src/core/lib/security/util/b64.h b/src/core/lib/security/util/b64.h
index d42a136f61..ef52291c6a 100644
--- a/src/core/lib/security/util/b64.h
+++ b/src/core/lib/security/util/b64.h
@@ -37,10 +37,22 @@
#include <grpc/slice.h>
/* Encodes data using base64. It is the caller's responsability to free
- the returned char * using gpr_free. Returns NULL on NULL input. */
+ the returned char * using gpr_free. Returns NULL on NULL input.
+ TODO(makdharma) : change the flags to bool from int */
char *grpc_base64_encode(const void *data, size_t data_size, int url_safe,
int multiline);
+/* estimate the upper bound on size of base64 encoded data. The actual size
+ * is guaranteed to be less than or equal to the size returned here. */
+size_t grpc_base64_estimate_encoded_size(size_t data_size, int url_safe,
+ int multiline);
+
+/* Encodes data using base64 and write it to memory pointed to by result. It is
+ * the caller's responsiblity to allocate enough memory in |result| to fit the
+ * encoded data. */
+void grpc_base64_encode_core(char *result, const void *vdata, size_t data_size,
+ int url_safe, int multiline);
+
/* Decodes data according to the base64 specification. Returns an empty
slice in case of failure. */
grpc_slice grpc_base64_decode(grpc_exec_ctx *exec_ctx, const char *b64,
diff --git a/src/core/lib/support/atm.c b/src/core/lib/support/atm.c
new file mode 100644
index 0000000000..06e8432caf
--- /dev/null
+++ b/src/core/lib/support/atm.c
@@ -0,0 +1,47 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/support/atm.h>
+#include <grpc/support/useful.h>
+
+gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm *value, gpr_atm delta,
+ gpr_atm min, gpr_atm max) {
+ gpr_atm current;
+ gpr_atm new;
+ do {
+ current = gpr_atm_no_barrier_load(value);
+ new = GPR_CLAMP(current + delta, min, max);
+ if (new == current) break;
+ } while (!gpr_atm_no_barrier_cas(value, current, new));
+ return new;
+}
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 47f36be5fd..895a8a3b06 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -51,6 +51,7 @@
#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/support/arena.h"
#include "src/core/lib/support/string.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call.h"
@@ -138,6 +139,7 @@ typedef struct batch_control {
} batch_control;
struct grpc_call {
+ gpr_arena *arena;
grpc_completion_queue *cq;
grpc_polling_entity pollent;
grpc_channel *channel;
@@ -212,6 +214,8 @@ struct grpc_call {
grpc_closure receiving_initial_metadata_ready;
uint32_t test_only_last_message_flags;
+ grpc_closure release_call;
+
union {
struct {
grpc_status_code *status;
@@ -260,7 +264,7 @@ static void add_batch_error(grpc_exec_ctx *exec_ctx, batch_control *bctl,
static void add_init_error(grpc_error **composite, grpc_error *new) {
if (new == GRPC_ERROR_NONE) return;
if (*composite == GRPC_ERROR_NONE)
- *composite = GRPC_ERROR_CREATE("Call creation failed");
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
*composite = grpc_error_add_child(*composite, new);
}
@@ -273,7 +277,11 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx,
grpc_channel_get_channel_stack(args->channel);
grpc_call *call;
GPR_TIMER_BEGIN("grpc_call_create", 0);
- call = gpr_zalloc(sizeof(grpc_call) + channel_stack->call_stack_size);
+ gpr_arena *arena =
+ gpr_arena_create(grpc_channel_get_call_size_estimate(args->channel));
+ call = gpr_arena_alloc(arena,
+ sizeof(grpc_call) + channel_stack->call_stack_size);
+ call->arena = arena;
*out_call = call;
gpr_mu_init(&call->child_list_mu);
call->channel = args->channel;
@@ -327,17 +335,17 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx,
* call. */
if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
- add_init_error(&error,
- GRPC_ERROR_CREATE("Census tracing propagation requested "
- "without Census context propagation"));
+ add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Census tracing propagation requested "
+ "without Census context propagation"));
}
grpc_call_context_set(
call, GRPC_CONTEXT_TRACING,
args->parent_call->context[GRPC_CONTEXT_TRACING].value, NULL);
} else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
- add_init_error(&error,
- GRPC_ERROR_CREATE("Census context propagation requested "
- "without Census tracing propagation"));
+ add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Census context propagation requested "
+ "without Census tracing propagation"));
}
if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
call->cancellation_is_inherited = 1;
@@ -364,11 +372,16 @@ grpc_error *grpc_call_create(grpc_exec_ctx *exec_ctx,
GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
/* initial refcount dropped by grpc_call_destroy */
+ grpc_call_element_args call_args = {
+ .call_stack = CALL_STACK_FROM_CALL(call),
+ .server_transport_data = args->server_transport_data,
+ .context = call->context,
+ .path = path,
+ .start_time = call->start_time,
+ .deadline = send_deadline,
+ .arena = call->arena};
add_init_error(&error, grpc_call_stack_init(exec_ctx, channel_stack, 1,
- destroy_call, call, call->context,
- args->server_transport_data, path,
- call->start_time, send_deadline,
- CALL_STACK_FROM_CALL(call)));
+ destroy_call, call, &call_args));
if (error != GRPC_ERROR_NONE) {
cancel_with_error(exec_ctx, call, STATUS_FROM_SURFACE,
GRPC_ERROR_REF(error));
@@ -425,6 +438,14 @@ void grpc_call_internal_unref(grpc_exec_ctx *exec_ctx, grpc_call *c REF_ARG) {
GRPC_CALL_STACK_UNREF(exec_ctx, CALL_STACK_FROM_CALL(c), REF_REASON);
}
+static void release_call(grpc_exec_ctx *exec_ctx, void *call,
+ grpc_error *error) {
+ grpc_call *c = call;
+ grpc_channel *channel = c->channel;
+ grpc_channel_update_call_size_estimate(channel, gpr_arena_destroy(c->arena));
+ GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call");
+}
+
static void set_status_value_directly(grpc_status_code status, void *dest);
static void destroy_call(grpc_exec_ctx *exec_ctx, void *call,
grpc_error *error) {
@@ -451,7 +472,6 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call,
if (c->cq) {
GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
}
- grpc_channel *channel = c->channel;
get_final_status(call, set_status_value_directly, &c->final_info.final_status,
NULL);
@@ -463,8 +483,9 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call,
unpack_received_status(gpr_atm_acq_load(&c->status[i])).error);
}
- grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), &c->final_info, c);
- GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call");
+ grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), &c->final_info,
+ grpc_closure_init(&c->release_call, release_call, c,
+ grpc_schedule_on_exec_ctx));
GPR_TIMER_END("destroy_call", 0);
}
@@ -582,8 +603,9 @@ static void cancel_with_error(grpc_exec_ctx *exec_ctx, grpc_call *c,
static grpc_error *error_from_status(grpc_status_code status,
const char *description) {
return grpc_error_set_int(
- grpc_error_set_str(GRPC_ERROR_CREATE(description),
- GRPC_ERROR_STR_GRPC_MESSAGE, description),
+ grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
+ GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_copied_string(description)),
GRPC_ERROR_INT_GRPC_STATUS, status);
}
@@ -603,16 +625,15 @@ static bool get_final_status_from(
void (*set_value)(grpc_status_code code, void *user_data),
void *set_value_user_data, grpc_slice *details) {
grpc_status_code code;
- const char *msg = NULL;
- grpc_error_get_status(error, call->send_deadline, &code, &msg, NULL);
+ grpc_slice slice;
+ grpc_error_get_status(error, call->send_deadline, &code, &slice, NULL);
if (code == GRPC_STATUS_OK && !allow_ok_status) {
return false;
}
set_value(code, set_value_user_data);
if (details != NULL) {
- *details =
- msg == NULL ? grpc_empty_slice() : grpc_slice_from_copied_string(msg);
+ *details = grpc_slice_ref_internal(slice);
}
return true;
}
@@ -875,18 +896,19 @@ static void recv_common_filter(grpc_exec_ctx *exec_ctx, grpc_call *call,
grpc_error *error =
status_code == GRPC_STATUS_OK
? GRPC_ERROR_NONE
- : grpc_error_set_int(GRPC_ERROR_CREATE("Error received from peer"),
+ : grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Error received from peer"),
GRPC_ERROR_INT_GRPC_STATUS,
(intptr_t)status_code);
if (b->idx.named.grpc_message != NULL) {
- char *msg =
- grpc_slice_to_c_string(GRPC_MDVALUE(b->idx.named.grpc_message->md));
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, msg);
- gpr_free(msg);
+ error = grpc_error_set_str(
+ error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_ref_internal(GRPC_MDVALUE(b->idx.named.grpc_message->md)));
grpc_metadata_batch_remove(exec_ctx, b, b->idx.named.grpc_message);
} else if (error != GRPC_ERROR_NONE) {
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_empty_slice());
}
set_status_from_error(exec_ctx, call, STATUS_FROM_WIRE, error);
@@ -1035,8 +1057,8 @@ static grpc_error *consolidate_batch_errors(batch_control *bctl) {
bctl->errors[0] = NULL;
return e;
} else {
- grpc_error *error =
- GRPC_ERROR_CREATE_REFERENCING("Call batch failed", bctl->errors, n);
+ grpc_error *error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Call batch failed", bctl->errors, n);
for (size_t i = 0; i < n; i++) {
GRPC_ERROR_UNREF(bctl->errors[i]);
bctl->errors[i] = NULL;
@@ -1500,7 +1522,8 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
{
grpc_error *override_error = GRPC_ERROR_NONE;
if (op->data.send_status_from_server.status != GRPC_STATUS_OK) {
- override_error = GRPC_ERROR_CREATE("Error from server send status");
+ override_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Error from server send status");
}
if (op->data.send_status_from_server.status_details != NULL) {
call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
@@ -1510,8 +1533,9 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
call->send_extra_metadata_count++;
char *msg = grpc_slice_to_c_string(
GRPC_MDVALUE(call->send_extra_metadata[1].md));
- override_error = grpc_error_set_str(
- override_error, GRPC_ERROR_STR_GRPC_MESSAGE, msg);
+ override_error =
+ grpc_error_set_str(override_error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_copied_string(msg));
gpr_free(msg);
}
set_status_from_error(exec_ctx, call, STATUS_FROM_API_OVERRIDE,
diff --git a/src/core/lib/surface/channel.c b/src/core/lib/surface/channel.c
index d6acd392c1..b4bfb92042 100644
--- a/src/core/lib/surface/channel.c
+++ b/src/core/lib/surface/channel.c
@@ -68,6 +68,8 @@ struct grpc_channel {
grpc_compression_options compression_options;
grpc_mdelem default_authority;
+ gpr_atm call_size_estimate;
+
gpr_mu registered_call_mu;
registered_call *registered_calls;
@@ -83,19 +85,10 @@ struct grpc_channel {
static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error);
-grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
- const grpc_channel_args *input_args,
- grpc_channel_stack_type channel_stack_type,
- grpc_transport *optional_transport) {
- grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
- grpc_channel_stack_builder_set_channel_arguments(exec_ctx, builder,
- input_args);
- grpc_channel_stack_builder_set_target(builder, target);
- grpc_channel_stack_builder_set_transport(builder, optional_transport);
- if (!grpc_channel_init_create_stack(exec_ctx, builder, channel_stack_type)) {
- grpc_channel_stack_builder_destroy(exec_ctx, builder);
- return NULL;
- }
+grpc_channel *grpc_channel_create_with_builder(
+ grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder,
+ grpc_channel_stack_type channel_stack_type) {
+ char *target = gpr_strdup(grpc_channel_stack_builder_get_target(builder));
grpc_channel_args *args = grpc_channel_args_copy(
grpc_channel_stack_builder_get_channel_arguments(builder));
grpc_channel *channel;
@@ -106,15 +99,20 @@ grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
gpr_log(GPR_ERROR, "channel stack builder failed: %s",
grpc_error_string(error));
GRPC_ERROR_UNREF(error);
+ gpr_free(target);
goto done;
}
memset(channel, 0, sizeof(*channel));
- channel->target = gpr_strdup(target);
+ channel->target = target;
channel->is_client = grpc_channel_stack_type_is_client(channel_stack_type);
gpr_mu_init(&channel->registered_call_mu);
channel->registered_calls = NULL;
+ gpr_atm_no_barrier_store(
+ &channel->call_size_estimate,
+ (gpr_atm)CHANNEL_STACK_FROM_CHANNEL(channel)->call_stack_size);
+
grpc_compression_options_init(&channel->compression_options);
for (size_t i = 0; i < args->num_args; i++) {
if (0 == strcmp(args->args[i].key, GRPC_ARG_DEFAULT_AUTHORITY)) {
@@ -177,6 +175,55 @@ done:
return channel;
}
+grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
+ const grpc_channel_args *input_args,
+ grpc_channel_stack_type channel_stack_type,
+ grpc_transport *optional_transport) {
+ grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
+ grpc_channel_stack_builder_set_channel_arguments(exec_ctx, builder,
+ input_args);
+ grpc_channel_stack_builder_set_target(builder, target);
+ grpc_channel_stack_builder_set_transport(builder, optional_transport);
+ if (!grpc_channel_init_create_stack(exec_ctx, builder, channel_stack_type)) {
+ grpc_channel_stack_builder_destroy(exec_ctx, builder);
+ return NULL;
+ }
+ return grpc_channel_create_with_builder(exec_ctx, builder,
+ channel_stack_type);
+}
+
+size_t grpc_channel_get_call_size_estimate(grpc_channel *channel) {
+#define ROUND_UP_SIZE 256
+ /* We round up our current estimate to the NEXT value of ROUND_UP_SIZE.
+ This ensures:
+ 1. a consistent size allocation when our estimate is drifting slowly
+ (which is common) - which tends to help most allocators reuse memory
+ 2. a small amount of allowed growth over the estimate without hitting
+ the arena size doubling case, reducing overall memory usage */
+ return ((size_t)gpr_atm_no_barrier_load(&channel->call_size_estimate) +
+ 2 * ROUND_UP_SIZE) &
+ ~(size_t)(ROUND_UP_SIZE - 1);
+}
+
+void grpc_channel_update_call_size_estimate(grpc_channel *channel,
+ size_t size) {
+ size_t cur = (size_t)gpr_atm_no_barrier_load(&channel->call_size_estimate);
+ if (cur < size) {
+ /* size grew: update estimate */
+ gpr_atm_no_barrier_cas(&channel->call_size_estimate, (gpr_atm)cur,
+ (gpr_atm)size);
+ /* if we lose: never mind, something else will likely update soon enough */
+ } else if (cur == size) {
+ /* no change: holding pattern */
+ } else if (cur > 0) {
+ /* size shrank: decrease estimate */
+ gpr_atm_no_barrier_cas(
+ &channel->call_size_estimate, (gpr_atm)cur,
+ (gpr_atm)(GPR_MIN(cur - 1, (255 * cur + size) / 256)));
+ /* if we lose: never mind, something else will likely update soon enough */
+ }
+}
+
char *grpc_channel_get_target(grpc_channel *channel) {
GRPC_API_TRACE("grpc_channel_get_target(channel=%p)", 1, (channel));
return gpr_strdup(channel->target);
@@ -348,7 +395,8 @@ void grpc_channel_destroy(grpc_channel *channel) {
grpc_channel_element *elem;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel));
- op->disconnect_with_error = GRPC_ERROR_CREATE("Channel Destroyed");
+ op->disconnect_with_error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Destroyed");
elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0);
elem->filter->start_transport_op(&exec_ctx, elem, op);
diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h
index 3a441d7add..0f203a3e59 100644
--- a/src/core/lib/surface/channel.h
+++ b/src/core/lib/surface/channel.h
@@ -35,6 +35,7 @@
#define GRPC_CORE_LIB_SURFACE_CHANNEL_H
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/surface/channel_stack_type.h"
grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
@@ -42,6 +43,10 @@ grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
grpc_channel_stack_type channel_stack_type,
grpc_transport *optional_transport);
+grpc_channel *grpc_channel_create_with_builder(
+ grpc_exec_ctx *exec_ctx, grpc_channel_stack_builder *builder,
+ grpc_channel_stack_type channel_stack_type);
+
/** Create a call given a grpc_channel, in order to call \a method.
Progress is tied to activity on \a pollset_set. The returned call object is
meant to be used with \a grpc_call_start_batch_and_execute, which relies on
@@ -66,6 +71,9 @@ grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_exec_ctx *exec_ctx,
grpc_channel *channel,
int status_code);
+size_t grpc_channel_get_call_size_estimate(grpc_channel *channel);
+void grpc_channel_update_call_size_estimate(grpc_channel *channel, size_t size);
+
#ifdef GRPC_STREAM_REFCOUNT_DEBUG
void grpc_channel_internal_ref(grpc_channel *channel, const char *reason);
void grpc_channel_internal_unref(grpc_exec_ctx *exec_ctx, grpc_channel *channel,
diff --git a/src/core/lib/surface/completion_queue_factory.c b/src/core/lib/surface/completion_queue_factory.c
new file mode 100644
index 0000000000..db67a5192b
--- /dev/null
+++ b/src/core/lib/surface/completion_queue_factory.c
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright 2017, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/lib/surface/completion_queue_factory.h"
+#include "src/core/lib/surface/completion_queue.h"
+
+#include <grpc/support/log.h>
+
+/* TODO (sreek) - Currently this does not use the attributes arg. This will be
+ added in a future PR */
+static grpc_completion_queue* default_create(
+ const grpc_completion_queue_factory* factory,
+ const grpc_completion_queue_attributes* attributes) {
+ return grpc_completion_queue_create(NULL);
+}
+
+static grpc_completion_queue_factory_vtable default_vtable = {default_create};
+
+static const grpc_completion_queue_factory g_default_cq_factory = {
+ "Default Factory", NULL, &default_vtable};
+
+const grpc_completion_queue_factory* grpc_completion_queue_factory_lookup(
+ const grpc_completion_queue_attributes* attributes) {
+ /* As we add more fields to grpc_completion_queue_attributes, we may have to
+ change this assert to:
+ GPR_ASSERT (attributes->version >= 1 &&
+ attributes->version <= GRPC_CQ_CURRENT_VERSION) */
+ GPR_ASSERT(attributes->version == 1);
+
+ /* The default factory can handle version 1 of the attributes structure. We
+ may have to change this as more fields are added to the structure */
+ return &g_default_cq_factory;
+}
+
+grpc_completion_queue* grpc_completion_queue_create_for_next(void* reserved) {
+ GPR_ASSERT(!reserved);
+ grpc_completion_queue_attributes attr = {1, GRPC_CQ_NEXT,
+ GRPC_CQ_DEFAULT_POLLING};
+ return g_default_cq_factory.vtable->create(&g_default_cq_factory, &attr);
+}
+
+grpc_completion_queue* grpc_completion_queue_create_for_pluck(void* reserved) {
+ GPR_ASSERT(!reserved);
+ grpc_completion_queue_attributes attr = {1, GRPC_CQ_PLUCK,
+ GRPC_CQ_DEFAULT_POLLING};
+ return g_default_cq_factory.vtable->create(&g_default_cq_factory, &attr);
+}
diff --git a/src/core/ext/client_channel/initial_connect_string.h b/src/core/lib/surface/completion_queue_factory.h
index 876abea40e..57e90b5090 100644
--- a/src/core/ext/client_channel/initial_connect_string.h
+++ b/src/core/lib/surface/completion_queue_factory.h
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2017, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,20 +31,21 @@
*
*/
-#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_INITIAL_CONNECT_STRING_H
-#define GRPC_CORE_EXT_CLIENT_CHANNEL_INITIAL_CONNECT_STRING_H
+#ifndef GRPC_CORE_LIB_SURFACE_COMPLETION_QUEUE_FACTORY_H
+#define GRPC_CORE_LIB_SURFACE_COMPLETION_QUEUE_FACTORY_H
-#include <grpc/slice.h>
-#include "src/core/lib/iomgr/resolve_address.h"
+#include <grpc/grpc.h>
+#include "src/core/lib/surface/completion_queue.h"
-typedef void (*grpc_set_initial_connect_string_func)(
- grpc_resolved_address **addr, grpc_slice *initial_str);
+typedef struct grpc_completion_queue_factory_vtable {
+ grpc_completion_queue* (*create)(const grpc_completion_queue_factory*,
+ const grpc_completion_queue_attributes*);
+} grpc_completion_queue_factory_vtable;
-void grpc_test_set_initial_connect_string_function(
- grpc_set_initial_connect_string_func func);
+struct grpc_completion_queue_factory {
+ const char* name;
+ void* data; /* Factory specific data */
+ grpc_completion_queue_factory_vtable* vtable;
+};
-/** Set a string to be sent once connected. Optionally reset addr. */
-void grpc_set_initial_connect_string(grpc_resolved_address **addr,
- grpc_slice *connect_string);
-
-#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_INITIAL_CONNECT_STRING_H */
+#endif /* GRPC_CORE_LIB_SURFACE_COMPLETION_QUEUE_FACTORY_H */
diff --git a/src/core/lib/surface/lame_client.c b/src/core/lib/surface/lame_client.c
index 49bc4c114b..0c408aa288 100644
--- a/src/core/lib/surface/lame_client.c
+++ b/src/core/lib/surface/lame_client.c
@@ -90,7 +90,8 @@ static void lame_start_transport_stream_op(grpc_exec_ctx *exec_ctx,
fill_metadata(exec_ctx, elem, op->recv_trailing_metadata);
}
grpc_transport_stream_op_finish_with_failure(
- exec_ctx, op, GRPC_ERROR_CREATE("lame client channel"));
+ exec_ctx, op,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"));
}
static char *lame_get_peer(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) {
@@ -111,8 +112,9 @@ static void lame_start_transport_op(grpc_exec_ctx *exec_ctx,
GRPC_ERROR_NONE);
}
if (op->send_ping != NULL) {
- grpc_closure_sched(exec_ctx, op->send_ping,
- GRPC_ERROR_CREATE("lame client channel"));
+ grpc_closure_sched(
+ exec_ctx, op->send_ping,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"));
}
GRPC_ERROR_UNREF(op->disconnect_with_error);
if (op->on_consumed != NULL) {
@@ -130,8 +132,8 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
- gpr_free(and_free_memory);
+ grpc_closure *then_schedule_closure) {
+ grpc_closure_sched(exec_ctx, then_schedule_closure, GRPC_ERROR_NONE);
}
static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c
index b360579553..a123c9ca43 100644
--- a/src/core/lib/surface/server.c
+++ b/src/core/lib/surface/server.c
@@ -288,10 +288,10 @@ static void send_shutdown(grpc_exec_ctx *exec_ctx, grpc_channel *channel,
grpc_channel_element *elem;
op->goaway_error =
- send_goaway
- ? grpc_error_set_int(GRPC_ERROR_CREATE("Server shutdown"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
- : GRPC_ERROR_NONE;
+ send_goaway ? grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
+ : GRPC_ERROR_NONE;
op->set_accept_stream = true;
sc->slice = grpc_slice_from_copied_string("Server shutdown");
op->disconnect_with_error = send_disconnect;
@@ -712,8 +712,9 @@ static void maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
return;
}
- kill_pending_work_locked(exec_ctx, server,
- GRPC_ERROR_CREATE("Server Shutdown"));
+ kill_pending_work_locked(
+ exec_ctx, server,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
if (server->root_channel_data.next != &server->root_channel_data ||
server->listeners_destroyed < num_listeners(server)) {
@@ -771,8 +772,8 @@ static void server_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr,
/* do nothing */
} else {
grpc_error *src_error = error;
- error =
- GRPC_ERROR_CREATE_REFERENCING("Missing :authority or :path", &error, 1);
+ error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Missing :authority or :path", &error, 1);
GRPC_ERROR_UNREF(src_error);
}
@@ -898,7 +899,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data;
@@ -1219,7 +1220,8 @@ void grpc_server_setup_transport(grpc_exec_ctx *exec_ctx, grpc_server *s,
op->on_connectivity_state_change = &chand->channel_connectivity_changed;
op->connectivity_state = &chand->connectivity_state;
if (gpr_atm_acq_load(&s->shutdown_flag) != 0) {
- op->disconnect_with_error = GRPC_ERROR_CREATE("Server shutdown");
+ op->disconnect_with_error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown");
}
grpc_transport_perform_op(exec_ctx, transport, op);
}
@@ -1277,8 +1279,9 @@ void grpc_server_shutdown_and_notify(grpc_server *server,
/* collect all unregistered then registered calls */
gpr_mu_lock(&server->mu_call);
- kill_pending_work_locked(&exec_ctx, server,
- GRPC_ERROR_CREATE("Server Shutdown"));
+ kill_pending_work_locked(
+ &exec_ctx, server,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
gpr_mu_unlock(&server->mu_call);
maybe_finish_shutdown(&exec_ctx, server);
@@ -1308,8 +1311,9 @@ void grpc_server_cancel_all_calls(grpc_server *server) {
channel_broadcaster_init(server, &broadcaster);
gpr_mu_unlock(&server->mu_global);
- channel_broadcaster_shutdown(&exec_ctx, &broadcaster, false /* send_goaway */,
- GRPC_ERROR_CREATE("Cancelling all calls"));
+ channel_broadcaster_shutdown(
+ &exec_ctx, &broadcaster, false /* send_goaway */,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls"));
grpc_exec_ctx_finish(&exec_ctx);
}
@@ -1357,16 +1361,16 @@ static grpc_call_error queue_call_request(grpc_exec_ctx *exec_ctx,
int request_id;
if (gpr_atm_acq_load(&server->shutdown_flag)) {
fail_call(exec_ctx, server, cq_idx, rc,
- GRPC_ERROR_CREATE("Server Shutdown"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
return GRPC_CALL_OK;
}
request_id = gpr_stack_lockfree_pop(server->request_freelist_per_cq[cq_idx]);
if (request_id == -1) {
/* out of request ids: just fail this one */
fail_call(exec_ctx, server, cq_idx, rc,
- grpc_error_set_int(GRPC_ERROR_CREATE("Out of request ids"),
- GRPC_ERROR_INT_LIMIT,
- server->max_requested_calls_per_cq));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Out of request ids"),
+ GRPC_ERROR_INT_LIMIT, server->max_requested_calls_per_cq));
return GRPC_CALL_OK;
}
switch (rc->type) {
diff --git a/src/core/lib/surface/validate_metadata.c b/src/core/lib/surface/validate_metadata.c
index 7ec9137265..6e76c4efe7 100644
--- a/src/core/lib/surface/validate_metadata.c
+++ b/src/core/lib/surface/validate_metadata.c
@@ -39,6 +39,7 @@
#include <grpc/support/port_platform.h>
#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
static grpc_error *conforms_to(grpc_slice slice, const uint8_t *legal_bits,
@@ -52,9 +53,10 @@ static grpc_error *conforms_to(grpc_slice slice, const uint8_t *legal_bits,
if ((legal_bits[byte] & (1 << bit)) == 0) {
char *dump = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII);
grpc_error *error = grpc_error_set_str(
- grpc_error_set_int(GRPC_ERROR_CREATE(err_desc), GRPC_ERROR_INT_OFFSET,
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_desc),
+ GRPC_ERROR_INT_OFFSET,
p - GRPC_SLICE_START_PTR(slice)),
- GRPC_ERROR_STR_RAW_BYTES, dump);
+ GRPC_ERROR_STR_RAW_BYTES, grpc_slice_from_copied_string(dump));
gpr_free(dump);
return error;
}
@@ -74,10 +76,12 @@ grpc_error *grpc_validate_header_key_is_legal(grpc_slice slice) {
0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
if (GRPC_SLICE_LENGTH(slice) == 0) {
- return GRPC_ERROR_CREATE("Metadata keys cannot be zero length");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Metadata keys cannot be zero length");
}
if (GRPC_SLICE_START_PTR(slice)[0] == ':') {
- return GRPC_ERROR_CREATE("Metadata keys cannot start with :");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Metadata keys cannot start with :");
}
return conforms_to(slice, legal_header_bits, "Illegal header key");
}
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index 1143a9e044..ba80bd801e 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -38,4 +38,4 @@
const char *grpc_version_string(void) { return "3.0.0-dev"; }
-const char *grpc_g_stands_for(void) { return "green"; }
+const char *grpc_g_stands_for(void) { return "gentle"; }
diff --git a/src/core/lib/transport/connectivity_state.c b/src/core/lib/transport/connectivity_state.c
index afe1f6164d..3757b25267 100644
--- a/src/core/lib/transport/connectivity_state.c
+++ b/src/core/lib/transport/connectivity_state.c
@@ -79,7 +79,8 @@ void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx,
*w->current = GRPC_CHANNEL_SHUTDOWN;
error = GRPC_ERROR_NONE;
} else {
- error = GRPC_ERROR_CREATE("Shutdown connectivity owner");
+ error =
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutdown connectivity owner");
}
grpc_closure_sched(exec_ctx, w->notify, error);
gpr_free(w);
diff --git a/src/core/lib/transport/error_utils.c b/src/core/lib/transport/error_utils.c
index ef55e561fb..4e70f8749d 100644
--- a/src/core/lib/transport/error_utils.c
+++ b/src/core/lib/transport/error_utils.c
@@ -55,7 +55,7 @@ static grpc_error *recursively_find_error_with_field(grpc_error *error,
}
void grpc_error_get_status(grpc_error *error, gpr_timespec deadline,
- grpc_status_code *code, const char **msg,
+ grpc_status_code *code, grpc_slice *slice,
grpc_http2_error_code *http_error) {
// Start with the parent error and recurse through the tree of children
// until we find the first one that has a status code.
@@ -97,11 +97,11 @@ void grpc_error_get_status(grpc_error *error, gpr_timespec deadline,
// If the error has a status message, use it. Otherwise, fall back to
// the error description.
- if (msg != NULL) {
- *msg = grpc_error_get_str(found_error, GRPC_ERROR_STR_GRPC_MESSAGE);
- if (*msg == NULL && error != GRPC_ERROR_NONE) {
- *msg = grpc_error_get_str(found_error, GRPC_ERROR_STR_DESCRIPTION);
- if (*msg == NULL) *msg = "unknown error"; // Just in case.
+ if (slice != NULL) {
+ if (!grpc_error_get_str(found_error, GRPC_ERROR_STR_GRPC_MESSAGE, slice)) {
+ if (!grpc_error_get_str(found_error, GRPC_ERROR_STR_DESCRIPTION, slice)) {
+ *slice = grpc_slice_from_static_string("unknown error");
+ }
}
}
diff --git a/src/core/lib/transport/error_utils.h b/src/core/lib/transport/error_utils.h
index 105338880a..3b44466ab8 100644
--- a/src/core/lib/transport/error_utils.h
+++ b/src/core/lib/transport/error_utils.h
@@ -44,7 +44,7 @@
/// attributes (code, msg, http_status) are unneeded, they can be passed as
/// NULL.
void grpc_error_get_status(grpc_error *error, gpr_timespec deadline,
- grpc_status_code *code, const char **msg,
+ grpc_status_code *code, grpc_slice *slice,
grpc_http2_error_code *http_status);
/// A utility function to check whether there is a clear status code that
diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.c
index fc2c52bd8a..fa73244aa4 100644
--- a/src/core/lib/transport/metadata_batch.c
+++ b/src/core/lib/transport/metadata_batch.c
@@ -101,12 +101,10 @@ void grpc_metadata_batch_destroy(grpc_exec_ctx *exec_ctx,
}
grpc_error *grpc_attach_md_to_error(grpc_error *src, grpc_mdelem md) {
- char *k = grpc_slice_to_c_string(GRPC_MDKEY(md));
- char *v = grpc_slice_to_c_string(GRPC_MDVALUE(md));
grpc_error *out = grpc_error_set_str(
- grpc_error_set_str(src, GRPC_ERROR_STR_KEY, k), GRPC_ERROR_STR_VALUE, v);
- gpr_free(k);
- gpr_free(v);
+ grpc_error_set_str(src, GRPC_ERROR_STR_KEY,
+ grpc_slice_ref_internal(GRPC_MDKEY(md))),
+ GRPC_ERROR_STR_VALUE, grpc_slice_ref_internal(GRPC_MDVALUE(md)));
return out;
}
@@ -126,7 +124,8 @@ static grpc_error *maybe_link_callout(grpc_metadata_batch *batch,
return GRPC_ERROR_NONE;
}
return grpc_attach_md_to_error(
- GRPC_ERROR_CREATE("Unallowed duplicate metadata"), storage->md);
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unallowed duplicate metadata"),
+ storage->md);
}
static void maybe_unlink_callout(grpc_metadata_batch *batch,
@@ -302,7 +301,7 @@ static void add_error(grpc_error **composite, grpc_error *error,
const char *composite_error_string) {
if (error == GRPC_ERROR_NONE) return;
if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE(composite_error_string);
+ *composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(composite_error_string);
}
*composite = grpc_error_add_child(*composite, error);
}
diff --git a/src/core/lib/transport/service_config.c b/src/core/lib/transport/service_config.c
index 12da2a88fe..1195f75044 100644
--- a/src/core/lib/transport/service_config.c
+++ b/src/core/lib/transport/service_config.c
@@ -93,6 +93,18 @@ void grpc_service_config_destroy(grpc_service_config* service_config) {
gpr_free(service_config);
}
+void grpc_service_config_parse_global_params(
+ const grpc_service_config* service_config,
+ void (*process_json)(const grpc_json* json, void* arg), void* arg) {
+ const grpc_json* json = service_config->json_tree;
+ if (json->type != GRPC_JSON_OBJECT || json->key != NULL) return;
+ for (grpc_json* field = json->child; field != NULL; field = field->next) {
+ if (field->key == NULL) return;
+ if (strcmp(field->key, "methodConfig") == 0) continue;
+ process_json(field, arg);
+ }
+}
+
const char* grpc_service_config_get_lb_policy_name(
const grpc_service_config* service_config) {
const grpc_json* json = service_config->json_tree;
diff --git a/src/core/lib/transport/service_config.h b/src/core/lib/transport/service_config.h
index cd739a593c..ebfc59b534 100644
--- a/src/core/lib/transport/service_config.h
+++ b/src/core/lib/transport/service_config.h
@@ -42,6 +42,12 @@ typedef struct grpc_service_config grpc_service_config;
grpc_service_config* grpc_service_config_create(const char* json_string);
void grpc_service_config_destroy(grpc_service_config* service_config);
+/// Invokes \a process_json() for each global parameter in the service
+/// config. \a arg is passed as the second argument to \a process_json().
+void grpc_service_config_parse_global_params(
+ const grpc_service_config* service_config,
+ void (*process_json)(const grpc_json* json, void* arg), void* arg);
+
/// Gets the LB policy name from \a service_config.
/// Returns NULL if no LB policy name was specified.
/// Caller does NOT take ownership.
diff --git a/src/core/lib/transport/transport.c b/src/core/lib/transport/transport.c
index 3024f2ae78..d56cb31ee0 100644
--- a/src/core/lib/transport/transport.c
+++ b/src/core/lib/transport/transport.c
@@ -162,9 +162,9 @@ void grpc_transport_destroy(grpc_exec_ctx *exec_ctx,
int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport, grpc_stream *stream,
grpc_stream_refcount *refcount,
- const void *server_data) {
+ const void *server_data, gpr_arena *arena) {
return transport->vtable->init_stream(exec_ctx, transport, stream, refcount,
- server_data);
+ server_data, arena);
}
void grpc_transport_perform_stream_op(grpc_exec_ctx *exec_ctx,
@@ -197,9 +197,10 @@ void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport,
void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport,
- grpc_stream *stream, void *and_free_memory) {
+ grpc_stream *stream,
+ grpc_closure *then_schedule_closure) {
transport->vtable->destroy_stream(exec_ctx, transport, stream,
- and_free_memory);
+ then_schedule_closure);
}
char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h
index cc1c277b35..950b18aeda 100644
--- a/src/core/lib/transport/transport.h
+++ b/src/core/lib/transport/transport.h
@@ -41,6 +41,7 @@
#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/iomgr/pollset.h"
#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/support/arena.h"
#include "src/core/lib/transport/byte_stream.h"
#include "src/core/lib/transport/metadata_batch.h"
@@ -229,7 +230,7 @@ size_t grpc_transport_stream_size(grpc_transport *transport);
int grpc_transport_init_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport, grpc_stream *stream,
grpc_stream_refcount *refcount,
- const void *server_data);
+ const void *server_data, gpr_arena *arena);
void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport,
grpc_stream *stream, grpc_polling_entity *pollent);
@@ -246,7 +247,8 @@ void grpc_transport_set_pops(grpc_exec_ctx *exec_ctx, grpc_transport *transport,
caller, but any child memory must be cleaned up) */
void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport,
- grpc_stream *stream, void *and_free_memory);
+ grpc_stream *stream,
+ grpc_closure *then_schedule_closure);
void grpc_transport_stream_op_finish_with_failure(grpc_exec_ctx *exec_ctx,
grpc_transport_stream_op *op,
diff --git a/src/core/lib/transport/transport_impl.h b/src/core/lib/transport/transport_impl.h
index 8553148c35..6f688bf8d2 100644
--- a/src/core/lib/transport/transport_impl.h
+++ b/src/core/lib/transport/transport_impl.h
@@ -47,7 +47,7 @@ typedef struct grpc_transport_vtable {
/* implementation of grpc_transport_init_stream */
int (*init_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
grpc_stream *stream, grpc_stream_refcount *refcount,
- const void *server_data);
+ const void *server_data, gpr_arena *arena);
/* implementation of grpc_transport_set_pollset */
void (*set_pollset)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
@@ -67,7 +67,8 @@ typedef struct grpc_transport_vtable {
/* implementation of grpc_transport_destroy_stream */
void (*destroy_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
- grpc_stream *stream, void *and_free_memory);
+ grpc_stream *stream,
+ grpc_closure *then_schedule_closure);
/* implementation of grpc_transport_destroy */
void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_transport *self);
diff --git a/src/core/plugin_registry/grpc_plugin_registry.c b/src/core/plugin_registry/grpc_plugin_registry.c
index 2efd9cd1ad..596e3b7114 100644
--- a/src/core/plugin_registry/grpc_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_plugin_registry.c
@@ -43,6 +43,8 @@ extern void grpc_lb_policy_pick_first_init(void);
extern void grpc_lb_policy_pick_first_shutdown(void);
extern void grpc_lb_policy_round_robin_init(void);
extern void grpc_lb_policy_round_robin_shutdown(void);
+extern void grpc_resolver_dns_ares_init(void);
+extern void grpc_resolver_dns_ares_shutdown(void);
extern void grpc_resolver_dns_native_init(void);
extern void grpc_resolver_dns_native_shutdown(void);
extern void grpc_resolver_sockaddr_init(void);
@@ -63,6 +65,8 @@ void grpc_register_built_in_plugins(void) {
grpc_lb_policy_pick_first_shutdown);
grpc_register_plugin(grpc_lb_policy_round_robin_init,
grpc_lb_policy_round_robin_shutdown);
+ grpc_register_plugin(grpc_resolver_dns_ares_init,
+ grpc_resolver_dns_ares_shutdown);
grpc_register_plugin(grpc_resolver_dns_native_init,
grpc_resolver_dns_native_shutdown);
grpc_register_plugin(grpc_resolver_sockaddr_init,
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
index 8b18af699d..a05ebcb3af 100644
--- a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
@@ -37,6 +37,8 @@ extern void grpc_chttp2_plugin_init(void);
extern void grpc_chttp2_plugin_shutdown(void);
extern void grpc_client_channel_init(void);
extern void grpc_client_channel_shutdown(void);
+extern void grpc_resolver_dns_ares_init(void);
+extern void grpc_resolver_dns_ares_shutdown(void);
extern void grpc_resolver_dns_native_init(void);
extern void grpc_resolver_dns_native_shutdown(void);
extern void grpc_resolver_sockaddr_init(void);
@@ -57,6 +59,8 @@ void grpc_register_built_in_plugins(void) {
grpc_chttp2_plugin_shutdown);
grpc_register_plugin(grpc_client_channel_init,
grpc_client_channel_shutdown);
+ grpc_register_plugin(grpc_resolver_dns_ares_init,
+ grpc_resolver_dns_ares_shutdown);
grpc_register_plugin(grpc_resolver_dns_native_init,
grpc_resolver_dns_native_shutdown);
grpc_register_plugin(grpc_resolver_sockaddr_init,
diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc
index 65f3277499..53e4a9c39c 100644
--- a/src/cpp/common/channel_arguments.cc
+++ b/src/cpp/common/channel_arguments.cc
@@ -81,6 +81,16 @@ ChannelArguments::ChannelArguments(const ChannelArguments& other)
}
}
+ChannelArguments::~ChannelArguments() {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ for (auto it = args_.begin(); it != args_.end(); ++it) {
+ if (it->type == GRPC_ARG_POINTER) {
+ it->value.pointer.vtable->destroy(&exec_ctx, it->value.pointer.p);
+ }
+ }
+ grpc_exec_ctx_finish(&exec_ctx);
+}
+
void ChannelArguments::Swap(ChannelArguments& other) {
args_.swap(other.args_);
strings_.swap(other.strings_);
@@ -101,8 +111,10 @@ void ChannelArguments::SetSocketMutator(grpc_socket_mutator* mutator) {
for (auto it = args_.begin(); it != args_.end(); ++it) {
if (it->type == mutator_arg.type &&
grpc::string(it->key) == grpc::string(mutator_arg.key)) {
+ GPR_ASSERT(!replaced);
it->value.pointer.vtable->destroy(&exec_ctx, it->value.pointer.p);
it->value.pointer = mutator_arg.value.pointer;
+ replaced = true;
}
}
grpc_exec_ctx_finish(&exec_ctx);
@@ -121,14 +133,19 @@ void ChannelArguments::SetUserAgentPrefix(
return;
}
bool replaced = false;
+ auto strings_it = strings_.begin();
for (auto it = args_.begin(); it != args_.end(); ++it) {
const grpc_arg& arg = *it;
- if (arg.type == GRPC_ARG_STRING &&
- grpc::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) {
- strings_.push_back(user_agent_prefix + " " + arg.value.string);
- it->value.string = const_cast<char*>(strings_.back().c_str());
- replaced = true;
- break;
+ ++strings_it;
+ if (arg.type == GRPC_ARG_STRING) {
+ if (grpc::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) {
+ GPR_ASSERT(arg.value.string == strings_it->c_str());
+ *(strings_it) = user_agent_prefix + " " + arg.value.string;
+ it->value.string = const_cast<char*>(strings_it->c_str());
+ replaced = true;
+ break;
+ }
+ ++strings_it;
}
}
if (!replaced) {
@@ -185,7 +202,7 @@ void ChannelArguments::SetPointerWithVtable(
arg.type = GRPC_ARG_POINTER;
strings_.push_back(key);
arg.key = const_cast<char*>(strings_.back().c_str());
- arg.value.pointer.p = value;
+ arg.value.pointer.p = vtable->copy(value);
arg.value.pointer.vtable = vtable;
args_.push_back(arg);
}
diff --git a/src/cpp/common/channel_filter.h b/src/cpp/common/channel_filter.h
index 79c4bab985..494d5d64d7 100644
--- a/src/cpp/common/channel_filter.h
+++ b/src/cpp/common/channel_filter.h
@@ -318,7 +318,8 @@ class ChannelFilter final {
static void DestroyCallElement(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *then_call_closure) {
+ GPR_ASSERT(then_call_closure == NULL);
reinterpret_cast<CallDataType *>(elem->call_data)->~CallDataType();
}
diff --git a/src/csharp/Grpc.Core/ChannelOptions.cs b/src/csharp/Grpc.Core/ChannelOptions.cs
index b6eeceabc4..46a2c6695f 100644
--- a/src/csharp/Grpc.Core/ChannelOptions.cs
+++ b/src/csharp/Grpc.Core/ChannelOptions.cs
@@ -151,7 +151,14 @@ namespace Grpc.Core
public const string MaxConcurrentStreams = "grpc.max_concurrent_streams";
/// <summary>Maximum message length that the channel can receive</summary>
- public const string MaxMessageLength = "grpc.max_message_length";
+ public const string MaxReceiveMessageLength = "grpc.max_receive_message_length";
+
+ /// <summary>Maximum message length that the channel can send</summary>
+ public const string MaxSendMessageLength = "grpc.max_send_message_length";
+
+ /// <summary>Obsolete, for backward compatibility only.</summary>
+ [Obsolete("Use MaxReceiveMessageLength instead.")]
+ public const string MaxMessageLength = MaxReceiveMessageLength;
/// <summary>Initial sequence number for http2 transports</summary>
public const string Http2InitialSequenceNumber = "grpc.http2.initial_sequence_number";
diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index 3364b8ce8e..1f2e67d916 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -35,41 +35,41 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Math {
public static partial class Math
{
static readonly string __ServiceName = "math.Math";
- static readonly Marshaller<global::Math.DivArgs> __Marshaller_DivArgs = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.DivArgs.Parser.ParseFrom);
- static readonly Marshaller<global::Math.DivReply> __Marshaller_DivReply = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.DivReply.Parser.ParseFrom);
- static readonly Marshaller<global::Math.FibArgs> __Marshaller_FibArgs = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.FibArgs.Parser.ParseFrom);
- static readonly Marshaller<global::Math.Num> __Marshaller_Num = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.Num.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Math.DivArgs> __Marshaller_DivArgs = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.DivArgs.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Math.DivReply> __Marshaller_DivReply = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.DivReply.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Math.FibArgs> __Marshaller_FibArgs = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.FibArgs.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Math.Num> __Marshaller_Num = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Math.Num.Parser.ParseFrom);
- static readonly Method<global::Math.DivArgs, global::Math.DivReply> __Method_Div = new Method<global::Math.DivArgs, global::Math.DivReply>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Math.DivArgs, global::Math.DivReply> __Method_Div = new grpc::Method<global::Math.DivArgs, global::Math.DivReply>(
+ grpc::MethodType.Unary,
__ServiceName,
"Div",
__Marshaller_DivArgs,
__Marshaller_DivReply);
- static readonly Method<global::Math.DivArgs, global::Math.DivReply> __Method_DivMany = new Method<global::Math.DivArgs, global::Math.DivReply>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Math.DivArgs, global::Math.DivReply> __Method_DivMany = new grpc::Method<global::Math.DivArgs, global::Math.DivReply>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"DivMany",
__Marshaller_DivArgs,
__Marshaller_DivReply);
- static readonly Method<global::Math.FibArgs, global::Math.Num> __Method_Fib = new Method<global::Math.FibArgs, global::Math.Num>(
- MethodType.ServerStreaming,
+ static readonly grpc::Method<global::Math.FibArgs, global::Math.Num> __Method_Fib = new grpc::Method<global::Math.FibArgs, global::Math.Num>(
+ grpc::MethodType.ServerStreaming,
__ServiceName,
"Fib",
__Marshaller_FibArgs,
__Marshaller_Num);
- static readonly Method<global::Math.Num, global::Math.Num> __Method_Sum = new Method<global::Math.Num, global::Math.Num>(
- MethodType.ClientStreaming,
+ static readonly grpc::Method<global::Math.Num, global::Math.Num> __Method_Sum = new grpc::Method<global::Math.Num, global::Math.Num>(
+ grpc::MethodType.ClientStreaming,
__ServiceName,
"Sum",
__Marshaller_Num,
@@ -91,9 +91,9 @@ namespace Math {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -106,9 +106,9 @@ namespace Math {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task DivMany(grpc::IAsyncStreamReader<global::Math.DivArgs> requestStream, grpc::IServerStreamWriter<global::Math.DivReply> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -120,9 +120,9 @@ namespace Math {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, grpc::IServerStreamWriter<global::Math.Num> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -132,24 +132,24 @@ namespace Math {
/// <param name="requestStream">Used for reading requests from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Math.Num> Sum(grpc::IAsyncStreamReader<global::Math.Num> requestStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for Math</summary>
- public partial class MathClient : ClientBase<MathClient>
+ public partial class MathClient : grpc::ClientBase<MathClient>
{
/// <summary>Creates a new client for Math</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public MathClient(Channel channel) : base(channel)
+ public MathClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for Math that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public MathClient(CallInvoker callInvoker) : base(callInvoker)
+ public MathClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -171,9 +171,9 @@ namespace Math {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Math.DivReply Div(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Math.DivReply Div(global::Math.DivArgs request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Div(request, new CallOptions(headers, deadline, cancellationToken));
+ return Div(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Div divides DivArgs.dividend by DivArgs.divisor and returns the quotient
@@ -182,7 +182,7 @@ namespace Math {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Math.DivReply Div(global::Math.DivArgs request, CallOptions options)
+ public virtual global::Math.DivReply Div(global::Math.DivArgs request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_Div, null, options, request);
}
@@ -195,9 +195,9 @@ namespace Math {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return DivAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return DivAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Div divides DivArgs.dividend by DivArgs.divisor and returns the quotient
@@ -206,7 +206,7 @@ namespace Math {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_Div, null, options, request);
}
@@ -220,9 +220,9 @@ namespace Math {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return DivMany(new CallOptions(headers, deadline, cancellationToken));
+ return DivMany(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// DivMany accepts an arbitrary number of division args from the client stream
@@ -232,7 +232,7 @@ namespace Math {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_DivMany, null, options);
}
@@ -246,9 +246,9 @@ namespace Math {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Fib(request, new CallOptions(headers, deadline, cancellationToken));
+ return Fib(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Fib generates numbers in the Fibonacci sequence. If FibArgs.limit > 0, Fib
@@ -258,7 +258,7 @@ namespace Math {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, CallOptions options)
+ public virtual grpc::AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, grpc::CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_Fib, null, options, request);
}
@@ -270,9 +270,9 @@ namespace Math {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Sum(new CallOptions(headers, deadline, cancellationToken));
+ return Sum(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Sum sums a stream of numbers, returning the final result once the stream
@@ -280,7 +280,7 @@ namespace Math {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(CallOptions options)
+ public virtual grpc::AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(grpc::CallOptions options)
{
return CallInvoker.AsyncClientStreamingCall(__Method_Sum, null, options);
}
@@ -293,9 +293,9 @@ namespace Math {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(MathBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(MathBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_Div, serviceImpl.Div)
.AddMethod(__Method_DivMany, serviceImpl.DivMany)
.AddMethod(__Method_Fib, serviceImpl.Fib)
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 020c2df565..d3115f3da1 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -35,18 +35,18 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Grpc.Health.V1 {
public static partial class Health
{
static readonly string __ServiceName = "grpc.health.v1.Health";
- static readonly Marshaller<global::Grpc.Health.V1.HealthCheckRequest> __Marshaller_HealthCheckRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Health.V1.HealthCheckRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Health.V1.HealthCheckResponse> __Marshaller_HealthCheckResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Health.V1.HealthCheckResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Health.V1.HealthCheckRequest> __Marshaller_HealthCheckRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Health.V1.HealthCheckRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Health.V1.HealthCheckResponse> __Marshaller_HealthCheckResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Health.V1.HealthCheckResponse.Parser.ParseFrom);
- static readonly Method<global::Grpc.Health.V1.HealthCheckRequest, global::Grpc.Health.V1.HealthCheckResponse> __Method_Check = new Method<global::Grpc.Health.V1.HealthCheckRequest, global::Grpc.Health.V1.HealthCheckResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Health.V1.HealthCheckRequest, global::Grpc.Health.V1.HealthCheckResponse> __Method_Check = new grpc::Method<global::Grpc.Health.V1.HealthCheckRequest, global::Grpc.Health.V1.HealthCheckResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"Check",
__Marshaller_HealthCheckRequest,
@@ -61,24 +61,24 @@ namespace Grpc.Health.V1 {
/// <summary>Base class for server-side implementations of Health</summary>
public abstract partial class HealthBase
{
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for Health</summary>
- public partial class HealthClient : ClientBase<HealthClient>
+ public partial class HealthClient : grpc::ClientBase<HealthClient>
{
/// <summary>Creates a new client for Health</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public HealthClient(Channel channel) : base(channel)
+ public HealthClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for Health that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public HealthClient(CallInvoker callInvoker) : base(callInvoker)
+ public HealthClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -91,19 +91,19 @@ namespace Grpc.Health.V1 {
{
}
- public virtual global::Grpc.Health.V1.HealthCheckResponse Check(global::Grpc.Health.V1.HealthCheckRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Health.V1.HealthCheckResponse Check(global::Grpc.Health.V1.HealthCheckRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Check(request, new CallOptions(headers, deadline, cancellationToken));
+ return Check(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual global::Grpc.Health.V1.HealthCheckResponse Check(global::Grpc.Health.V1.HealthCheckRequest request, CallOptions options)
+ public virtual global::Grpc.Health.V1.HealthCheckResponse Check(global::Grpc.Health.V1.HealthCheckRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_Check, null, options, request);
}
- public virtual AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return CheckAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return CheckAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_Check, null, options, request);
}
@@ -116,9 +116,9 @@ namespace Grpc.Health.V1 {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(HealthBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(HealthBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_Check, serviceImpl.Check).Build();
}
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index 8b58622d53..c80ffa8cf6 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -41,26 +41,26 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Grpc.Testing {
public static partial class MetricsService
{
static readonly string __ServiceName = "grpc.testing.MetricsService";
- static readonly Marshaller<global::Grpc.Testing.EmptyMessage> __Marshaller_EmptyMessage = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.EmptyMessage.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.GaugeResponse> __Marshaller_GaugeResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeResponse.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.GaugeRequest> __Marshaller_GaugeRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.EmptyMessage> __Marshaller_EmptyMessage = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.EmptyMessage.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.GaugeResponse> __Marshaller_GaugeResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.GaugeRequest> __Marshaller_GaugeRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeRequest.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse> __Method_GetAllGauges = new Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse>(
- MethodType.ServerStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse> __Method_GetAllGauges = new grpc::Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse>(
+ grpc::MethodType.ServerStreaming,
__ServiceName,
"GetAllGauges",
__Marshaller_EmptyMessage,
__Marshaller_GaugeResponse);
- static readonly Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse> __Method_GetGauge = new Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse> __Method_GetGauge = new grpc::Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"GetGauge",
__Marshaller_GaugeRequest,
@@ -83,9 +83,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, grpc::IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -94,24 +94,24 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for MetricsService</summary>
- public partial class MetricsServiceClient : ClientBase<MetricsServiceClient>
+ public partial class MetricsServiceClient : grpc::ClientBase<MetricsServiceClient>
{
/// <summary>Creates a new client for MetricsService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public MetricsServiceClient(Channel channel) : base(channel)
+ public MetricsServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for MetricsService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public MetricsServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public MetricsServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -133,9 +133,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return GetAllGauges(request, new CallOptions(headers, deadline, cancellationToken));
+ return GetAllGauges(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Returns the values of all the gauges that are currently being maintained by
@@ -144,7 +144,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options)
+ public virtual grpc::AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, grpc::CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_GetAllGauges, null, options, request);
}
@@ -156,9 +156,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return GetGauge(request, new CallOptions(headers, deadline, cancellationToken));
+ return GetGauge(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Returns the value of one gauge
@@ -166,7 +166,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options)
+ public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_GetGauge, null, options, request);
}
@@ -178,9 +178,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return GetGaugeAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return GetGaugeAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Returns the value of one gauge
@@ -188,7 +188,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_GetGauge, null, options, request);
}
@@ -201,9 +201,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
.AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
}
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 5135d9ab66..bb95c8a549 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -37,25 +37,25 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Grpc.Testing {
public static partial class BenchmarkService
{
static readonly string __ServiceName = "grpc.testing.BenchmarkService";
- static readonly Marshaller<global::Grpc.Testing.SimpleRequest> __Marshaller_SimpleRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.SimpleResponse> __Marshaller_SimpleResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.SimpleRequest> __Marshaller_SimpleRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.SimpleResponse> __Marshaller_SimpleResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleResponse.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_UnaryCall = new Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_UnaryCall = new grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"UnaryCall",
__Marshaller_SimpleRequest,
__Marshaller_SimpleResponse);
- static readonly Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_StreamingCall = new Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_StreamingCall = new grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"StreamingCall",
__Marshaller_SimpleRequest,
@@ -77,9 +77,9 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -90,24 +90,24 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task StreamingCall(grpc::IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, grpc::IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for BenchmarkService</summary>
- public partial class BenchmarkServiceClient : ClientBase<BenchmarkServiceClient>
+ public partial class BenchmarkServiceClient : grpc::ClientBase<BenchmarkServiceClient>
{
/// <summary>Creates a new client for BenchmarkService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public BenchmarkServiceClient(Channel channel) : base(channel)
+ public BenchmarkServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for BenchmarkService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public BenchmarkServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public BenchmarkServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -129,9 +129,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnaryCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response.
@@ -140,7 +140,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
}
@@ -153,9 +153,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnaryCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response.
@@ -164,7 +164,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
}
@@ -176,9 +176,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return StreamingCall(new CallOptions(headers, deadline, cancellationToken));
+ return StreamingCall(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response.
@@ -186,7 +186,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_StreamingCall, null, options);
}
@@ -199,9 +199,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
.AddMethod(__Method_StreamingCall, serviceImpl.StreamingCall).Build();
}
@@ -211,37 +211,37 @@ namespace Grpc.Testing {
{
static readonly string __ServiceName = "grpc.testing.WorkerService";
- static readonly Marshaller<global::Grpc.Testing.ServerArgs> __Marshaller_ServerArgs = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ServerArgs.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.ServerStatus> __Marshaller_ServerStatus = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ServerStatus.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.ClientArgs> __Marshaller_ClientArgs = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ClientArgs.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.ClientStatus> __Marshaller_ClientStatus = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ClientStatus.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.CoreRequest> __Marshaller_CoreRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.CoreRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.CoreResponse> __Marshaller_CoreResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.CoreResponse.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.Void> __Marshaller_Void = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Void.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ServerArgs> __Marshaller_ServerArgs = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ServerArgs.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ServerStatus> __Marshaller_ServerStatus = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ServerStatus.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ClientArgs> __Marshaller_ClientArgs = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ClientArgs.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ClientStatus> __Marshaller_ClientStatus = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ClientStatus.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.CoreRequest> __Marshaller_CoreRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.CoreRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.CoreResponse> __Marshaller_CoreResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.CoreResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.Void> __Marshaller_Void = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Void.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> __Method_RunServer = new Method<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> __Method_RunServer = new grpc::Method<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"RunServer",
__Marshaller_ServerArgs,
__Marshaller_ServerStatus);
- static readonly Method<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> __Method_RunClient = new Method<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> __Method_RunClient = new grpc::Method<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"RunClient",
__Marshaller_ClientArgs,
__Marshaller_ClientStatus);
- static readonly Method<global::Grpc.Testing.CoreRequest, global::Grpc.Testing.CoreResponse> __Method_CoreCount = new Method<global::Grpc.Testing.CoreRequest, global::Grpc.Testing.CoreResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.CoreRequest, global::Grpc.Testing.CoreResponse> __Method_CoreCount = new grpc::Method<global::Grpc.Testing.CoreRequest, global::Grpc.Testing.CoreResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"CoreCount",
__Marshaller_CoreRequest,
__Marshaller_CoreResponse);
- static readonly Method<global::Grpc.Testing.Void, global::Grpc.Testing.Void> __Method_QuitWorker = new Method<global::Grpc.Testing.Void, global::Grpc.Testing.Void>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.Void, global::Grpc.Testing.Void> __Method_QuitWorker = new grpc::Method<global::Grpc.Testing.Void, global::Grpc.Testing.Void>(
+ grpc::MethodType.Unary,
__ServiceName,
"QuitWorker",
__Marshaller_Void,
@@ -268,9 +268,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task RunServer(grpc::IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, grpc::IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -285,9 +285,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task RunClient(grpc::IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, grpc::IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -296,9 +296,9 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -307,24 +307,24 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for WorkerService</summary>
- public partial class WorkerServiceClient : ClientBase<WorkerServiceClient>
+ public partial class WorkerServiceClient : grpc::ClientBase<WorkerServiceClient>
{
/// <summary>Creates a new client for WorkerService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public WorkerServiceClient(Channel channel) : base(channel)
+ public WorkerServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for WorkerService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public WorkerServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public WorkerServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -349,9 +349,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return RunServer(new CallOptions(headers, deadline, cancellationToken));
+ return RunServer(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Start server with specified workload.
@@ -363,7 +363,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_RunServer, null, options);
}
@@ -379,9 +379,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return RunClient(new CallOptions(headers, deadline, cancellationToken));
+ return RunClient(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Start client with specified workload.
@@ -393,7 +393,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_RunClient, null, options);
}
@@ -405,9 +405,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return CoreCount(request, new CallOptions(headers, deadline, cancellationToken));
+ return CoreCount(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Just return the core count - unary call
@@ -415,7 +415,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, CallOptions options)
+ public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_CoreCount, null, options, request);
}
@@ -427,9 +427,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return CoreCountAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return CoreCountAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Just return the core count - unary call
@@ -437,7 +437,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_CoreCount, null, options, request);
}
@@ -449,9 +449,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return QuitWorker(request, new CallOptions(headers, deadline, cancellationToken));
+ return QuitWorker(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Quit this worker
@@ -459,7 +459,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, CallOptions options)
+ public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_QuitWorker, null, options, request);
}
@@ -471,9 +471,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return QuitWorkerAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return QuitWorkerAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// Quit this worker
@@ -481,7 +481,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_QuitWorker, null, options, request);
}
@@ -494,9 +494,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_RunServer, serviceImpl.RunServer)
.AddMethod(__Method_RunClient, serviceImpl.RunClient)
.AddMethod(__Method_CoreCount, serviceImpl.CoreCount)
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 0265f8e821..77f76ebbe9 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -38,7 +38,7 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Grpc.Testing {
/// <summary>
@@ -49,65 +49,65 @@ namespace Grpc.Testing {
{
static readonly string __ServiceName = "grpc.testing.TestService";
- static readonly Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.SimpleRequest> __Marshaller_SimpleRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.SimpleResponse> __Marshaller_SimpleResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleResponse.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.StreamingOutputCallRequest> __Marshaller_StreamingOutputCallRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingOutputCallRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.StreamingOutputCallResponse> __Marshaller_StreamingOutputCallResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingOutputCallResponse.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.StreamingInputCallRequest> __Marshaller_StreamingInputCallRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingInputCallRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.StreamingInputCallResponse> __Marshaller_StreamingInputCallResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingInputCallResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.SimpleRequest> __Marshaller_SimpleRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.SimpleResponse> __Marshaller_SimpleResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.SimpleResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.StreamingOutputCallRequest> __Marshaller_StreamingOutputCallRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingOutputCallRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.StreamingOutputCallResponse> __Marshaller_StreamingOutputCallResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingOutputCallResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.StreamingInputCallRequest> __Marshaller_StreamingInputCallRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingInputCallRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.StreamingInputCallResponse> __Marshaller_StreamingInputCallResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.StreamingInputCallResponse.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_EmptyCall = new Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_EmptyCall = new grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
+ grpc::MethodType.Unary,
__ServiceName,
"EmptyCall",
__Marshaller_Empty,
__Marshaller_Empty);
- static readonly Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_UnaryCall = new Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_UnaryCall = new grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"UnaryCall",
__Marshaller_SimpleRequest,
__Marshaller_SimpleResponse);
- static readonly Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_CacheableUnaryCall = new Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> __Method_CacheableUnaryCall = new grpc::Method<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse>(
+ grpc::MethodType.Unary,
__ServiceName,
"CacheableUnaryCall",
__Marshaller_SimpleRequest,
__Marshaller_SimpleResponse);
- static readonly Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_StreamingOutputCall = new Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
- MethodType.ServerStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_StreamingOutputCall = new grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
+ grpc::MethodType.ServerStreaming,
__ServiceName,
"StreamingOutputCall",
__Marshaller_StreamingOutputCallRequest,
__Marshaller_StreamingOutputCallResponse);
- static readonly Method<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> __Method_StreamingInputCall = new Method<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse>(
- MethodType.ClientStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> __Method_StreamingInputCall = new grpc::Method<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse>(
+ grpc::MethodType.ClientStreaming,
__ServiceName,
"StreamingInputCall",
__Marshaller_StreamingInputCallRequest,
__Marshaller_StreamingInputCallResponse);
- static readonly Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_FullDuplexCall = new Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_FullDuplexCall = new grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"FullDuplexCall",
__Marshaller_StreamingOutputCallRequest,
__Marshaller_StreamingOutputCallResponse);
- static readonly Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_HalfDuplexCall = new Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> __Method_HalfDuplexCall = new grpc::Method<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"HalfDuplexCall",
__Marshaller_StreamingOutputCallRequest,
__Marshaller_StreamingOutputCallResponse);
- static readonly Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_UnimplementedCall = new Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_UnimplementedCall = new grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
+ grpc::MethodType.Unary,
__ServiceName,
"UnimplementedCall",
__Marshaller_Empty,
@@ -128,9 +128,9 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -139,9 +139,9 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -152,9 +152,9 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -165,9 +165,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, grpc::IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -177,9 +177,9 @@ namespace Grpc.Testing {
/// <param name="requestStream">Used for reading requests from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(grpc::IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -191,9 +191,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task FullDuplexCall(grpc::IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, grpc::IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -206,9 +206,9 @@ namespace Grpc.Testing {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task HalfDuplexCall(grpc::IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, grpc::IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
/// <summary>
@@ -218,24 +218,24 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for TestService</summary>
- public partial class TestServiceClient : ClientBase<TestServiceClient>
+ public partial class TestServiceClient : grpc::ClientBase<TestServiceClient>
{
/// <summary>Creates a new client for TestService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public TestServiceClient(Channel channel) : base(channel)
+ public TestServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for TestService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public TestServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public TestServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -256,9 +256,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return EmptyCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return EmptyCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One empty request followed by one empty response.
@@ -266,7 +266,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_EmptyCall, null, options, request);
}
@@ -278,9 +278,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return EmptyCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return EmptyCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One empty request followed by one empty response.
@@ -288,7 +288,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_EmptyCall, null, options, request);
}
@@ -300,9 +300,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnaryCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response.
@@ -310,7 +310,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
}
@@ -322,9 +322,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnaryCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response.
@@ -332,7 +332,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
}
@@ -346,9 +346,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.SimpleResponse CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return CacheableUnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return CacheableUnaryCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response. Response has cache control
@@ -358,7 +358,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.SimpleResponse CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual global::Grpc.Testing.SimpleResponse CacheableUnaryCall(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_CacheableUnaryCall, null, options, request);
}
@@ -372,9 +372,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> CacheableUnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> CacheableUnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return CacheableUnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return CacheableUnaryCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by one response. Response has cache control
@@ -384,7 +384,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> CacheableUnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> CacheableUnaryCallAsync(global::Grpc.Testing.SimpleRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_CacheableUnaryCall, null, options, request);
}
@@ -397,9 +397,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return StreamingOutputCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return StreamingOutputCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// One request followed by a sequence of responses (streamed download).
@@ -408,7 +408,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, CallOptions options)
+ public virtual grpc::AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, grpc::CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_StreamingOutputCall, null, options, request);
}
@@ -420,9 +420,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return StreamingInputCall(new CallOptions(headers, deadline, cancellationToken));
+ return StreamingInputCall(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// A sequence of requests followed by one response (streamed upload).
@@ -430,7 +430,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(CallOptions options)
+ public virtual grpc::AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(grpc::CallOptions options)
{
return CallInvoker.AsyncClientStreamingCall(__Method_StreamingInputCall, null, options);
}
@@ -443,9 +443,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return FullDuplexCall(new CallOptions(headers, deadline, cancellationToken));
+ return FullDuplexCall(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// A sequence of requests with each request served by the server immediately.
@@ -454,7 +454,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_FullDuplexCall, null, options);
}
@@ -468,9 +468,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return HalfDuplexCall(new CallOptions(headers, deadline, cancellationToken));
+ return HalfDuplexCall(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// A sequence of requests followed by a sequence of responses.
@@ -480,7 +480,7 @@ namespace Grpc.Testing {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_HalfDuplexCall, null, options);
}
@@ -493,9 +493,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnimplementedCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnimplementedCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// The test server will not implement this method. It will be used
@@ -504,7 +504,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnimplementedCall, null, options, request);
}
@@ -517,9 +517,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnimplementedCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnimplementedCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// The test server will not implement this method. It will be used
@@ -528,7 +528,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnimplementedCall, null, options, request);
}
@@ -541,9 +541,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(TestServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(TestServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
.AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
.AddMethod(__Method_CacheableUnaryCall, serviceImpl.CacheableUnaryCall)
@@ -563,10 +563,10 @@ namespace Grpc.Testing {
{
static readonly string __ServiceName = "grpc.testing.UnimplementedService";
- static readonly Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_UnimplementedCall = new Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty> __Method_UnimplementedCall = new grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.Empty>(
+ grpc::MethodType.Unary,
__ServiceName,
"UnimplementedCall",
__Marshaller_Empty,
@@ -587,24 +587,24 @@ namespace Grpc.Testing {
/// <param name="request">The request received from the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>The response to send back to the client (wrapped by a task).</returns>
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for UnimplementedService</summary>
- public partial class UnimplementedServiceClient : ClientBase<UnimplementedServiceClient>
+ public partial class UnimplementedServiceClient : grpc::ClientBase<UnimplementedServiceClient>
{
/// <summary>Creates a new client for UnimplementedService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public UnimplementedServiceClient(Channel channel) : base(channel)
+ public UnimplementedServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for UnimplementedService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public UnimplementedServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public UnimplementedServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -625,9 +625,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnimplementedCall(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnimplementedCall(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// A call that no server should implement
@@ -635,7 +635,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The response received from the server.</returns>
- public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnimplementedCall, null, options, request);
}
@@ -647,9 +647,9 @@ namespace Grpc.Testing {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return UnimplementedCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return UnimplementedCallAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// A call that no server should implement
@@ -657,7 +657,7 @@ namespace Grpc.Testing {
/// <param name="request">The request to send to the server.</param>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnimplementedCall, null, options, request);
}
@@ -670,9 +670,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
}
@@ -684,19 +684,19 @@ namespace Grpc.Testing {
{
static readonly string __ServiceName = "grpc.testing.ReconnectService";
- static readonly Marshaller<global::Grpc.Testing.ReconnectParams> __Marshaller_ReconnectParams = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ReconnectParams.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Testing.ReconnectInfo> __Marshaller_ReconnectInfo = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ReconnectInfo.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ReconnectParams> __Marshaller_ReconnectParams = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ReconnectParams.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.Empty> __Marshaller_Empty = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.Empty.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Testing.ReconnectInfo> __Marshaller_ReconnectInfo = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.ReconnectInfo.Parser.ParseFrom);
- static readonly Method<global::Grpc.Testing.ReconnectParams, global::Grpc.Testing.Empty> __Method_Start = new Method<global::Grpc.Testing.ReconnectParams, global::Grpc.Testing.Empty>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.ReconnectParams, global::Grpc.Testing.Empty> __Method_Start = new grpc::Method<global::Grpc.Testing.ReconnectParams, global::Grpc.Testing.Empty>(
+ grpc::MethodType.Unary,
__ServiceName,
"Start",
__Marshaller_ReconnectParams,
__Marshaller_Empty);
- static readonly Method<global::Grpc.Testing.Empty, global::Grpc.Testing.ReconnectInfo> __Method_Stop = new Method<global::Grpc.Testing.Empty, global::Grpc.Testing.ReconnectInfo>(
- MethodType.Unary,
+ static readonly grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.ReconnectInfo> __Method_Stop = new grpc::Method<global::Grpc.Testing.Empty, global::Grpc.Testing.ReconnectInfo>(
+ grpc::MethodType.Unary,
__ServiceName,
"Stop",
__Marshaller_Empty,
@@ -711,29 +711,29 @@ namespace Grpc.Testing {
/// <summary>Base class for server-side implementations of ReconnectService</summary>
public abstract partial class ReconnectServiceBase
{
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
- public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for ReconnectService</summary>
- public partial class ReconnectServiceClient : ClientBase<ReconnectServiceClient>
+ public partial class ReconnectServiceClient : grpc::ClientBase<ReconnectServiceClient>
{
/// <summary>Creates a new client for ReconnectService</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public ReconnectServiceClient(Channel channel) : base(channel)
+ public ReconnectServiceClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for ReconnectService that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public ReconnectServiceClient(CallInvoker callInvoker) : base(callInvoker)
+ public ReconnectServiceClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -746,35 +746,35 @@ namespace Grpc.Testing {
{
}
- public virtual global::Grpc.Testing.Empty Start(global::Grpc.Testing.ReconnectParams request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.Empty Start(global::Grpc.Testing.ReconnectParams request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Start(request, new CallOptions(headers, deadline, cancellationToken));
+ return Start(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual global::Grpc.Testing.Empty Start(global::Grpc.Testing.ReconnectParams request, CallOptions options)
+ public virtual global::Grpc.Testing.Empty Start(global::Grpc.Testing.ReconnectParams request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_Start, null, options, request);
}
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> StartAsync(global::Grpc.Testing.ReconnectParams request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> StartAsync(global::Grpc.Testing.ReconnectParams request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return StartAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return StartAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> StartAsync(global::Grpc.Testing.ReconnectParams request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.Empty> StartAsync(global::Grpc.Testing.ReconnectParams request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_Start, null, options, request);
}
- public virtual global::Grpc.Testing.ReconnectInfo Stop(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual global::Grpc.Testing.ReconnectInfo Stop(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return Stop(request, new CallOptions(headers, deadline, cancellationToken));
+ return Stop(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual global::Grpc.Testing.ReconnectInfo Stop(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual global::Grpc.Testing.ReconnectInfo Stop(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_Stop, null, options, request);
}
- public virtual AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return StopAsync(request, new CallOptions(headers, deadline, cancellationToken));
+ return StopAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
}
- public virtual AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, CallOptions options)
+ public virtual grpc::AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, grpc::CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_Stop, null, options, request);
}
@@ -787,9 +787,9 @@ namespace Grpc.Testing {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_Start, serviceImpl.Start)
.AddMethod(__Method_Stop, serviceImpl.Stop).Build();
}
diff --git a/src/csharp/Grpc.Reflection/ReflectionGrpc.cs b/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
index 5bd7558be5..45321587f5 100644
--- a/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
+++ b/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
@@ -37,18 +37,18 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Grpc.Core;
+using grpc = global::Grpc.Core;
namespace Grpc.Reflection.V1Alpha {
public static partial class ServerReflection
{
static readonly string __ServiceName = "grpc.reflection.v1alpha.ServerReflection";
- static readonly Marshaller<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest> __Marshaller_ServerReflectionRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Reflection.V1Alpha.ServerReflectionRequest.Parser.ParseFrom);
- static readonly Marshaller<global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> __Marshaller_ServerReflectionResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Reflection.V1Alpha.ServerReflectionResponse.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest> __Marshaller_ServerReflectionRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Reflection.V1Alpha.ServerReflectionRequest.Parser.ParseFrom);
+ static readonly grpc::Marshaller<global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> __Marshaller_ServerReflectionResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Reflection.V1Alpha.ServerReflectionResponse.Parser.ParseFrom);
- static readonly Method<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> __Method_ServerReflectionInfo = new Method<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse>(
- MethodType.DuplexStreaming,
+ static readonly grpc::Method<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> __Method_ServerReflectionInfo = new grpc::Method<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse>(
+ grpc::MethodType.DuplexStreaming,
__ServiceName,
"ServerReflectionInfo",
__Marshaller_ServerReflectionRequest,
@@ -71,24 +71,24 @@ namespace Grpc.Reflection.V1Alpha {
/// <param name="responseStream">Used for sending responses back to the client.</param>
/// <param name="context">The context of the server-side call handler being invoked.</param>
/// <returns>A task indicating completion of the handler.</returns>
- public virtual global::System.Threading.Tasks.Task ServerReflectionInfo(IAsyncStreamReader<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest> requestStream, IServerStreamWriter<global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> responseStream, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task ServerReflectionInfo(grpc::IAsyncStreamReader<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest> requestStream, grpc::IServerStreamWriter<global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> responseStream, grpc::ServerCallContext context)
{
- throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+ throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
}
}
/// <summary>Client for ServerReflection</summary>
- public partial class ServerReflectionClient : ClientBase<ServerReflectionClient>
+ public partial class ServerReflectionClient : grpc::ClientBase<ServerReflectionClient>
{
/// <summary>Creates a new client for ServerReflection</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
- public ServerReflectionClient(Channel channel) : base(channel)
+ public ServerReflectionClient(grpc::Channel channel) : base(channel)
{
}
/// <summary>Creates a new client for ServerReflection that uses a custom <c>CallInvoker</c>.</summary>
/// <param name="callInvoker">The callInvoker to use to make remote calls.</param>
- public ServerReflectionClient(CallInvoker callInvoker) : base(callInvoker)
+ public ServerReflectionClient(grpc::CallInvoker callInvoker) : base(callInvoker)
{
}
/// <summary>Protected parameterless constructor to allow creation of test doubles.</summary>
@@ -109,9 +109,9 @@ namespace Grpc.Reflection.V1Alpha {
/// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
/// <param name="cancellationToken">An optional token for canceling the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> ServerReflectionInfo(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> ServerReflectionInfo(grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
- return ServerReflectionInfo(new CallOptions(headers, deadline, cancellationToken));
+ return ServerReflectionInfo(new grpc::CallOptions(headers, deadline, cancellationToken));
}
/// <summary>
/// The reflection service is structured as a bidirectional stream, ensuring
@@ -119,7 +119,7 @@ namespace Grpc.Reflection.V1Alpha {
/// </summary>
/// <param name="options">The options for the call.</param>
/// <returns>The call object.</returns>
- public virtual AsyncDuplexStreamingCall<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> ServerReflectionInfo(CallOptions options)
+ public virtual grpc::AsyncDuplexStreamingCall<global::Grpc.Reflection.V1Alpha.ServerReflectionRequest, global::Grpc.Reflection.V1Alpha.ServerReflectionResponse> ServerReflectionInfo(grpc::CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_ServerReflectionInfo, null, options);
}
@@ -132,9 +132,9 @@ namespace Grpc.Reflection.V1Alpha {
/// <summary>Creates service definition that can be registered with a server</summary>
/// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
- public static ServerServiceDefinition BindService(ServerReflectionBase serviceImpl)
+ public static grpc::ServerServiceDefinition BindService(ServerReflectionBase serviceImpl)
{
- return ServerServiceDefinition.CreateBuilder()
+ return grpc::ServerServiceDefinition.CreateBuilder()
.AddMethod(__Method_ServerReflectionInfo, serviceImpl.ServerReflectionInfo).Build();
}
diff --git a/src/node/ext/server_uv.cc b/src/node/ext/server_uv.cc
index bf8b609a63..c5e5ca9f42 100644
--- a/src/node/ext/server_uv.cc
+++ b/src/node/ext/server_uv.cc
@@ -47,12 +47,12 @@ namespace grpc {
namespace node {
using Nan::Callback;
+using Nan::MaybeLocal;
using v8::External;
using v8::Function;
using v8::FunctionTemplate;
using v8::Local;
-using v8::MaybeLocal;
using v8::Object;
using v8::Value;
diff --git a/src/node/src/common.js b/src/node/src/common.js
index 98eabf5c0b..a0fe4480ea 100644
--- a/src/node/src/common.js
+++ b/src/node/src/common.js
@@ -149,6 +149,7 @@ exports.getProtobufServiceAttrs = function getProtobufServiceAttrs(service,
return _.camelCase(method.name);
}), _.map(service.children, function(method) {
return {
+ originalName: method.name,
path: prefix + method.name,
requestStream: method.requestStream,
responseStream: method.responseStream,
diff --git a/src/node/src/server.js b/src/node/src/server.js
index a5a0ea2642..bdb4a56203 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -755,9 +755,16 @@ Server.prototype.addService = function(service, implementation) {
}
var impl;
if (implementation[name] === undefined) {
- common.log(grpc.logVerbosity.ERROR, 'Method handler for ' +
- attrs.path + ' expected but not provided');
- impl = defaultHandler[method_type];
+ /* Handle the case where the method is passed with the name exactly as
+ written in the proto file, instead of using JavaScript function
+ naming style */
+ if (implementation[attrs.originalName] === undefined) {
+ common.log(grpc.logVerbosity.ERROR, 'Method handler ' + name + ' for ' +
+ attrs.path + ' expected but not provided');
+ impl = defaultHandler[method_type];
+ } else {
+ impl = _.bind(implementation[attrs.originalName], implementation);
+ }
} else {
impl = _.bind(implementation[name], implementation);
}
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 2636ea85ac..1d739562a6 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -143,6 +143,32 @@ describe('Server.prototype.addProtoService', function() {
server.addProtoService(mathService, dummyImpls);
});
});
+ it('Should allow method names as originally written', function() {
+ var altDummyImpls = {
+ 'Div': function() {},
+ 'DivMany': function() {},
+ 'Fib': function() {},
+ 'Sum': function() {}
+ };
+ assert.doesNotThrow(function() {
+ server.addProtoService(mathService, altDummyImpls);
+ });
+ });
+ it('Should have a conflict between name variations', function() {
+ /* This is really testing that both name variations are actually used,
+ by checking that the method actually gets registered, for the
+ corresponding function, in both cases */
+ var altDummyImpls = {
+ 'Div': function() {},
+ 'DivMany': function() {},
+ 'Fib': function() {},
+ 'Sum': function() {}
+ };
+ server.addProtoService(mathService, altDummyImpls);
+ assert.throws(function() {
+ server.addProtoService(mathService, dummyImpls);
+ });
+ });
it('Should fail if the server has been started', function() {
server.start();
assert.throws(function() {
diff --git a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
index ab8f82a39e..2f41ad196a 100644
--- a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
+++ b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
@@ -101,9 +101,9 @@ Pod::Spec.new do |s|
s.preserve_paths = plugin
# Restrict the protoc version to the one supported by this plugin.
- s.dependency '!ProtoCompiler', '3.1.0'
+ s.dependency '!ProtoCompiler', '3.2.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
# Restrict the gRPC runtime version to the one supported by this plugin.
s.dependency 'gRPC-ProtoRPC', v
diff --git a/src/objective-c/!ProtoCompiler.podspec b/src/objective-c/!ProtoCompiler.podspec
index dc4d8e964e..2e9b944f33 100644
--- a/src/objective-c/!ProtoCompiler.podspec
+++ b/src/objective-c/!ProtoCompiler.podspec
@@ -36,7 +36,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler'
- v = '3.1.0'
+ v = '3.2.0'
s.version = v
s.summary = 'The Protobuf Compiler (protoc) generates Objective-C files from .proto files'
s.description = <<-DESC
@@ -110,7 +110,7 @@ Pod::Spec.new do |s|
# Restrict the protobuf runtime version to the one supported by this version of protoc.
s.dependency 'Protobuf', '~> 3.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
# This is only for local development of protoc: If the Podfile brings this pod from a local
diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
index 1e0c8024ca..3b442645e8 100644
--- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
+++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
@@ -273,8 +273,7 @@ static char *roots_filename;
}
- (void)testCompressedPayload {
- // NOT SUPPORTED
- // [self testIndividualCase:"compressed_payload"];
+ [self testIndividualCase:"compressed_payload"];
}
- (void)testConnectivity {
diff --git a/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m b/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m
index e97f3d2d1a..a76e45416b 100644
--- a/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m
+++ b/src/objective-c/tests/CronetUnitTests/CronetUnitTests.m
@@ -187,6 +187,18 @@ unsigned int parse_h2_length(const char *field) {
grpc_metadata_array_init(&request_metadata_recv);
grpc_call_details_init(&call_details);
+ int sl = socket(AF_INET, SOCK_STREAM, 0);
+ GPR_ASSERT(sl >= 0);
+
+ // Make an TCP endpoint to accept the connection
+ struct sockaddr_in s_addr;
+ memset(&s_addr, 0, sizeof(s_addr));
+ s_addr.sin_family = AF_INET;
+ s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ s_addr.sin_port = htons(port);
+ GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr)));
+ GPR_ASSERT(0 == listen(sl, 5));
+
memset(ops, 0, sizeof(ops));
op = ops;
op->op = GRPC_OP_SEND_INITIAL_METADATA;
@@ -226,17 +238,6 @@ unsigned int parse_h2_length(const char *field) {
dispatch_async(
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- int sl = socket(AF_INET, SOCK_STREAM, 0);
- GPR_ASSERT(sl >= 0);
-
- // Make and TCP endpoint to accept the connection
- struct sockaddr_in s_addr;
- memset(&s_addr, 0, sizeof(s_addr));
- s_addr.sin_family = AF_INET;
- s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- s_addr.sin_port = htons(port);
- GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr)));
- GPR_ASSERT(0 == listen(sl, 5));
int s = accept(sl, NULL, NULL);
GPR_ASSERT(s >= 0);
@@ -324,17 +325,18 @@ unsigned int parse_h2_length(const char *field) {
__weak XCTestExpectation *expectation =
[self expectationWithDescription:@"Coalescing"];
+ int sl = socket(AF_INET, SOCK_STREAM, 0);
+ GPR_ASSERT(sl >= 0);
+ struct sockaddr_in s_addr;
+ memset(&s_addr, 0, sizeof(s_addr));
+ s_addr.sin_family = AF_INET;
+ s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ s_addr.sin_port = htons(port);
+ GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr)));
+ GPR_ASSERT(0 == listen(sl, 5));
+
dispatch_async(
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- int sl = socket(AF_INET, SOCK_STREAM, 0);
- GPR_ASSERT(sl >= 0);
- struct sockaddr_in s_addr;
- memset(&s_addr, 0, sizeof(s_addr));
- s_addr.sin_family = AF_INET;
- s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- s_addr.sin_port = htons(port);
- GPR_ASSERT(0 == bind(sl, (struct sockaddr *)&s_addr, sizeof(s_addr)));
- GPR_ASSERT(0 == listen(sl, 5));
int s = accept(sl, NULL, NULL);
GPR_ASSERT(s >= 0);
struct timeval tv;
@@ -389,9 +391,6 @@ unsigned int parse_h2_length(const char *field) {
[expectation fulfill];
});
- // Guarantees that server is listening to the port before client connects.
- sleep(1);
-
memset(ops, 0, sizeof(ops));
op = ops;
op->op = GRPC_OP_SEND_INITIAL_METADATA;
diff --git a/src/php/lib/Grpc/AbstractCall.php b/src/php/lib/Grpc/AbstractCall.php
index 40387abdc0..4833fdc7b6 100644
--- a/src/php/lib/Grpc/AbstractCall.php
+++ b/src/php/lib/Grpc/AbstractCall.php
@@ -131,6 +131,8 @@ abstract class AbstractCall
// Proto3 implementation
if (method_exists($data, 'encode')) {
return $data->encode();
+ } else if (method_exists($data, 'serializeToString')) {
+ return $data->serializeToString();
}
// Protobuf-PHP implementation
@@ -154,7 +156,11 @@ abstract class AbstractCall
if (is_array($this->deserialize)) {
list($className, $deserializeFunc) = $this->deserialize;
$obj = new $className();
- $obj->$deserializeFunc($value);
+ if (method_exists($obj, $deserializeFunc)) {
+ $obj->$deserializeFunc($value);
+ } else {
+ $obj->mergeFromString($value);
+ }
return $obj;
}
diff --git a/src/python/grpcio/grpc/__init__.py b/src/python/grpcio/grpc/__init__.py
index a4481b2ac3..4960df3be9 100644
--- a/src/python/grpcio/grpc/__init__.py
+++ b/src/python/grpcio/grpc/__init__.py
@@ -1273,7 +1273,10 @@ def secure_channel(target, credentials, options=None):
credentials._credentials)
-def server(thread_pool, handlers=None, options=None):
+def server(thread_pool,
+ handlers=None,
+ options=None,
+ maximum_concurrent_rpcs=None):
"""Creates a Server with which RPCs can be serviced.
Args:
@@ -1286,13 +1289,17 @@ def server(thread_pool, handlers=None, options=None):
returned Server is started.
options: A sequence of string-value pairs according to which to configure
the created server.
+ maximum_concurrent_rpcs: The maximum number of concurrent RPCs this server
+ will service before returning status RESOURCE_EXHAUSTED, or None to
+ indicate no limit.
Returns:
A Server with which RPCs can be serviced.
"""
from grpc import _server # pylint: disable=cyclic-import
return _server.Server(thread_pool, () if handlers is None else handlers, ()
- if options is None else options)
+ if options is None else options,
+ maximum_concurrent_rpcs)
################################### __all__ #################################
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/security.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/security.pxd.pxi
index 3a952ca309..9915b0ed1a 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/security.pxd.pxi
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/security.pxd.pxi
@@ -29,4 +29,4 @@
cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
- char **pem_root_certs) with gil
+ char **pem_root_certs) nogil
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
index 20fc1c5fce..357b0330d5 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
@@ -33,12 +33,14 @@ import pkg_resources
cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
- char **pem_root_certs) with gil:
- temporary_pem_root_certs = pkg_resources.resource_string(
- __name__.rstrip('.cygrpc'), '_credentials/roots.pem')
- pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
- memcpy(
- pem_root_certs[0], <char *>temporary_pem_root_certs,
- len(temporary_pem_root_certs))
- pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
+ char **pem_root_certs) nogil:
+ with gil:
+ temporary_pem_root_certs = pkg_resources.resource_string(
+ __name__.rstrip('.cygrpc'), '_credentials/roots.pem')
+ pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ memcpy(
+ pem_root_certs[0], <char *>temporary_pem_root_certs,
+ len(temporary_pem_root_certs))
+ pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
+
return GRPC_SSL_ROOTS_OVERRIDE_OK
diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
index e1bd046a1a..274b5f1b8a 100644
--- a/src/python/grpcio/grpc/_cython/cygrpc.pyx
+++ b/src/python/grpcio/grpc/_cython/cygrpc.pyx
@@ -47,14 +47,14 @@ include "_cygrpc/server.pyx.pxi"
#
# initialize gRPC
#
-
-
cdef extern from "Python.h":
- int Py_AtExit(void(*func)())
-
+ int PyEval_InitThreads()
-def _initialize():
+cdef _initialize():
+ # We have Python callbacks called by c-core threads, this ensures the GIL
+ # is initialized.
+ PyEval_InitThreads()
grpc_set_ssl_roots_override_callback(
<grpc_ssl_roots_override_callback>ssl_roots_override_callback)
diff --git a/src/python/grpcio/grpc/_server.py b/src/python/grpcio/grpc/_server.py
index 84e096d4c0..47838c2c98 100644
--- a/src/python/grpcio/grpc/_server.py
+++ b/src/python/grpcio/grpc/_server.py
@@ -504,37 +504,37 @@ def _stream_response_in_pool(rpc_event, state, behavior, argument_thunk,
def _handle_unary_unary(rpc_event, state, method_handler, thread_pool):
unary_request = _unary_request(rpc_event, state,
method_handler.request_deserializer)
- thread_pool.submit(_unary_response_in_pool, rpc_event, state,
- method_handler.unary_unary, unary_request,
- method_handler.request_deserializer,
- method_handler.response_serializer)
+ return thread_pool.submit(_unary_response_in_pool, rpc_event, state,
+ method_handler.unary_unary, unary_request,
+ method_handler.request_deserializer,
+ method_handler.response_serializer)
def _handle_unary_stream(rpc_event, state, method_handler, thread_pool):
unary_request = _unary_request(rpc_event, state,
method_handler.request_deserializer)
- thread_pool.submit(_stream_response_in_pool, rpc_event, state,
- method_handler.unary_stream, unary_request,
- method_handler.request_deserializer,
- method_handler.response_serializer)
+ return thread_pool.submit(_stream_response_in_pool, rpc_event, state,
+ method_handler.unary_stream, unary_request,
+ method_handler.request_deserializer,
+ method_handler.response_serializer)
def _handle_stream_unary(rpc_event, state, method_handler, thread_pool):
request_iterator = _RequestIterator(state, rpc_event.operation_call,
method_handler.request_deserializer)
- thread_pool.submit(_unary_response_in_pool, rpc_event, state,
- method_handler.stream_unary, lambda: request_iterator,
- method_handler.request_deserializer,
- method_handler.response_serializer)
+ return thread_pool.submit(
+ _unary_response_in_pool, rpc_event, state, method_handler.stream_unary,
+ lambda: request_iterator, method_handler.request_deserializer,
+ method_handler.response_serializer)
def _handle_stream_stream(rpc_event, state, method_handler, thread_pool):
request_iterator = _RequestIterator(state, rpc_event.operation_call,
method_handler.request_deserializer)
- thread_pool.submit(_stream_response_in_pool, rpc_event, state,
- method_handler.stream_stream, lambda: request_iterator,
- method_handler.request_deserializer,
- method_handler.response_serializer)
+ return thread_pool.submit(
+ _stream_response_in_pool, rpc_event, state,
+ method_handler.stream_stream, lambda: request_iterator,
+ method_handler.request_deserializer, method_handler.response_serializer)
def _find_method_handler(rpc_event, generic_handlers):
@@ -549,13 +549,12 @@ def _find_method_handler(rpc_event, generic_handlers):
return None
-def _handle_unrecognized_method(rpc_event):
+def _reject_rpc(rpc_event, status, details):
operations = (cygrpc.operation_send_initial_metadata(_common.EMPTY_METADATA,
_EMPTY_FLAGS),
cygrpc.operation_receive_close_on_server(_EMPTY_FLAGS),
cygrpc.operation_send_status_from_server(
- _common.EMPTY_METADATA, cygrpc.StatusCode.unimplemented,
- b'Method not found!', _EMPTY_FLAGS),)
+ _common.EMPTY_METADATA, status, details, _EMPTY_FLAGS),)
rpc_state = _RPCState()
rpc_event.operation_call.start_server_batch(
operations, lambda ignored_event: (rpc_state, (),))
@@ -572,33 +571,37 @@ def _handle_with_method_handler(rpc_event, method_handler, thread_pool):
state.due.add(_RECEIVE_CLOSE_ON_SERVER_TOKEN)
if method_handler.request_streaming:
if method_handler.response_streaming:
- _handle_stream_stream(rpc_event, state, method_handler,
- thread_pool)
+ return state, _handle_stream_stream(rpc_event, state,
+ method_handler, thread_pool)
else:
- _handle_stream_unary(rpc_event, state, method_handler,
- thread_pool)
+ return state, _handle_stream_unary(rpc_event, state,
+ method_handler, thread_pool)
else:
if method_handler.response_streaming:
- _handle_unary_stream(rpc_event, state, method_handler,
- thread_pool)
+ return state, _handle_unary_stream(rpc_event, state,
+ method_handler, thread_pool)
else:
- _handle_unary_unary(rpc_event, state, method_handler,
- thread_pool)
- return state
+ return state, _handle_unary_unary(rpc_event, state,
+ method_handler, thread_pool)
-def _handle_call(rpc_event, generic_handlers, thread_pool):
+def _handle_call(rpc_event, generic_handlers, thread_pool,
+ concurrency_exceeded):
if not rpc_event.success:
- return None
+ return None, None
if rpc_event.request_call_details.method is not None:
method_handler = _find_method_handler(rpc_event, generic_handlers)
if method_handler is None:
- return _handle_unrecognized_method(rpc_event)
+ return _reject_rpc(rpc_event, cygrpc.StatusCode.unimplemented,
+ b'Method not found!'), None
+ elif concurrency_exceeded:
+ return _reject_rpc(rpc_event, cygrpc.StatusCode.resource_exhausted,
+ b'Concurrent RPC limit exceeded!'), None
else:
return _handle_with_method_handler(rpc_event, method_handler,
thread_pool)
else:
- return None
+ return None, None
@enum.unique
@@ -610,7 +613,8 @@ class _ServerStage(enum.Enum):
class _ServerState(object):
- def __init__(self, completion_queue, server, generic_handlers, thread_pool):
+ def __init__(self, completion_queue, server, generic_handlers, thread_pool,
+ maximum_concurrent_rpcs):
self.lock = threading.Lock()
self.completion_queue = completion_queue
self.server = server
@@ -618,6 +622,8 @@ class _ServerState(object):
self.thread_pool = thread_pool
self.stage = _ServerStage.STOPPED
self.shutdown_events = None
+ self.maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ self.active_rpc_count = 0
# TODO(https://github.com/grpc/grpc/issues/6597): eliminate these fields.
self.rpc_states = set()
@@ -657,6 +663,11 @@ def _stop_serving(state):
return False
+def _on_call_completed(state):
+ with state.lock:
+ state.active_rpc_count -= 1
+
+
def _serve(state):
while True:
event = state.completion_queue.poll()
@@ -668,10 +679,18 @@ def _serve(state):
elif event.tag is _REQUEST_CALL_TAG:
with state.lock:
state.due.remove(_REQUEST_CALL_TAG)
- rpc_state = _handle_call(event, state.generic_handlers,
- state.thread_pool)
+ concurrency_exceeded = (
+ state.maximum_concurrent_rpcs is not None and
+ state.active_rpc_count >= state.maximum_concurrent_rpcs)
+ rpc_state, rpc_future = _handle_call(
+ event, state.generic_handlers, state.thread_pool,
+ concurrency_exceeded)
if rpc_state is not None:
state.rpc_states.add(rpc_state)
+ if rpc_future is not None:
+ state.active_rpc_count += 1
+ rpc_future.add_done_callback(
+ lambda unused_future: _on_call_completed(state))
if state.stage is _ServerStage.STARTED:
_request_call(state)
elif _stop_serving(state):
@@ -749,12 +768,13 @@ def _start(state):
class Server(grpc.Server):
- def __init__(self, thread_pool, generic_handlers, options):
+ def __init__(self, thread_pool, generic_handlers, options,
+ maximum_concurrent_rpcs):
completion_queue = cygrpc.CompletionQueue()
server = cygrpc.Server(_common.channel_args(options))
server.register_completion_queue(completion_queue)
self._state = _ServerState(completion_queue, server, generic_handlers,
- thread_pool)
+ thread_pool, maximum_concurrent_rpcs)
def add_generic_rpc_handlers(self, generic_rpc_handlers):
_add_generic_handlers(self._state, generic_rpc_handlers)
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 52d3ffd2c4..258c65c08e 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -34,6 +34,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/profiling/stap_timers.c',
'src/core/lib/support/alloc.c',
'src/core/lib/support/arena.c',
+ 'src/core/lib/support/atm.c',
'src/core/lib/support/avl.c',
'src/core/lib/support/backoff.c',
'src/core/lib/support/cmdline.c',
@@ -123,6 +124,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/iomgr/resolve_address_windows.c',
'src/core/lib/iomgr/resource_quota.c',
'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
'src/core/lib/iomgr/socket_mutator.c',
'src/core/lib/iomgr/socket_utils_common_posix.c',
'src/core/lib/iomgr/socket_utils_linux.c',
@@ -135,6 +137,9 @@ CORE_SOURCE_FILES = [
'src/core/lib/iomgr/tcp_client_windows.c',
'src/core/lib/iomgr/tcp_posix.c',
'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
'src/core/lib/iomgr/tcp_server_uv.c',
'src/core/lib/iomgr/tcp_server_windows.c',
'src/core/lib/iomgr/tcp_uv.c',
@@ -157,6 +162,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/json/json_reader.c',
'src/core/lib/json/json_string.c',
'src/core/lib/json/json_writer.c',
+ 'src/core/lib/security/util/b64.c',
'src/core/lib/slice/percent_encoding.c',
'src/core/lib/slice/slice.c',
'src/core/lib/slice/slice_buffer.c',
@@ -175,6 +181,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/surface/channel_ping.c',
'src/core/lib/surface/channel_stack_type.c',
'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
'src/core/lib/surface/event_string.c',
'src/core/lib/surface/lame_client.c',
'src/core/lib/surface/metadata_array.c',
@@ -238,7 +245,6 @@ CORE_SOURCE_FILES = [
'src/core/lib/security/transport/security_handshaker.c',
'src/core/lib/security/transport/server_auth_filter.c',
'src/core/lib/security/transport/tsi_error.c',
- 'src/core/lib/security/util/b64.c',
'src/core/lib/security/util/json_util.c',
'src/core/lib/surface/init_secure.c',
'src/core/lib/tsi/fake_transport_security.c',
@@ -251,10 +257,8 @@ CORE_SOURCE_FILES = [
'src/core/ext/client_channel/client_channel_factory.c',
'src/core/ext/client_channel/client_channel_plugin.c',
'src/core/ext/client_channel/connector.c',
- 'src/core/ext/client_channel/default_initial_connect_string.c',
'src/core/ext/client_channel/http_connect_handshaker.c',
'src/core/ext/client_channel/http_proxy.c',
- 'src/core/ext/client_channel/initial_connect_string.c',
'src/core/ext/client_channel/lb_policy.c',
'src/core/ext/client_channel/lb_policy_factory.c',
'src/core/ext/client_channel/lb_policy_registry.c',
@@ -264,6 +268,7 @@ CORE_SOURCE_FILES = [
'src/core/ext/client_channel/resolver.c',
'src/core/ext/client_channel/resolver_factory.c',
'src/core/ext/client_channel/resolver_registry.c',
+ 'src/core/ext/client_channel/retry_throttle.c',
'src/core/ext/client_channel/subchannel.c',
'src/core/ext/client_channel/subchannel_index.c',
'src/core/ext/client_channel/uri_parser.c',
@@ -281,6 +286,9 @@ CORE_SOURCE_FILES = [
'third_party/nanopb/pb_encode.c',
'src/core/ext/lb_policy/pick_first/pick_first.c',
'src/core/ext/lb_policy/round_robin/round_robin.c',
+ 'src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
+ 'src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c',
'src/core/ext/resolver/dns/native/dns_resolver.c',
'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
'src/core/ext/load_reporting/load_reporting.c',
@@ -619,4 +627,53 @@ CORE_SOURCE_FILES = [
'third_party/zlib/trees.c',
'third_party/zlib/uncompr.c',
'third_party/zlib/zutil.c',
+ 'third_party/cares/cares/ares__close_sockets.c',
+ 'third_party/cares/cares/ares__get_hostent.c',
+ 'third_party/cares/cares/ares__read_line.c',
+ 'third_party/cares/cares/ares__timeval.c',
+ 'third_party/cares/cares/ares_cancel.c',
+ 'third_party/cares/cares/ares_create_query.c',
+ 'third_party/cares/cares/ares_data.c',
+ 'third_party/cares/cares/ares_destroy.c',
+ 'third_party/cares/cares/ares_expand_name.c',
+ 'third_party/cares/cares/ares_expand_string.c',
+ 'third_party/cares/cares/ares_fds.c',
+ 'third_party/cares/cares/ares_free_hostent.c',
+ 'third_party/cares/cares/ares_free_string.c',
+ 'third_party/cares/cares/ares_getenv.c',
+ 'third_party/cares/cares/ares_gethostbyaddr.c',
+ 'third_party/cares/cares/ares_gethostbyname.c',
+ 'third_party/cares/cares/ares_getnameinfo.c',
+ 'third_party/cares/cares/ares_getopt.c',
+ 'third_party/cares/cares/ares_getsock.c',
+ 'third_party/cares/cares/ares_init.c',
+ 'third_party/cares/cares/ares_library_init.c',
+ 'third_party/cares/cares/ares_llist.c',
+ 'third_party/cares/cares/ares_mkquery.c',
+ 'third_party/cares/cares/ares_nowarn.c',
+ 'third_party/cares/cares/ares_options.c',
+ 'third_party/cares/cares/ares_parse_a_reply.c',
+ 'third_party/cares/cares/ares_parse_aaaa_reply.c',
+ 'third_party/cares/cares/ares_parse_mx_reply.c',
+ 'third_party/cares/cares/ares_parse_naptr_reply.c',
+ 'third_party/cares/cares/ares_parse_ns_reply.c',
+ 'third_party/cares/cares/ares_parse_ptr_reply.c',
+ 'third_party/cares/cares/ares_parse_soa_reply.c',
+ 'third_party/cares/cares/ares_parse_srv_reply.c',
+ 'third_party/cares/cares/ares_parse_txt_reply.c',
+ 'third_party/cares/cares/ares_platform.c',
+ 'third_party/cares/cares/ares_process.c',
+ 'third_party/cares/cares/ares_query.c',
+ 'third_party/cares/cares/ares_search.c',
+ 'third_party/cares/cares/ares_send.c',
+ 'third_party/cares/cares/ares_strcasecmp.c',
+ 'third_party/cares/cares/ares_strdup.c',
+ 'third_party/cares/cares/ares_strerror.c',
+ 'third_party/cares/cares/ares_timeout.c',
+ 'third_party/cares/cares/ares_version.c',
+ 'third_party/cares/cares/ares_writev.c',
+ 'third_party/cares/cares/bitncmp.c',
+ 'third_party/cares/cares/inet_net_pton.c',
+ 'third_party/cares/cares/inet_ntop.c',
+ 'third_party/cares/cares/windows_port.c',
]
diff --git a/src/python/grpcio_health_checking/setup.py b/src/python/grpcio_health_checking/setup.py
index 52ee98a2d5..17bb3ab616 100644
--- a/src/python/grpcio_health_checking/setup.py
+++ b/src/python/grpcio_health_checking/setup.py
@@ -59,6 +59,10 @@ COMMAND_CLASS = {
setuptools.setup(
name='grpcio-health-checking',
version=grpc_version.VERSION,
+ description='Standard Health Checking Service for gRPC',
+ author='The gRPC Authors',
+ author_email='grpc-io@googlegroups.com',
+ url='http://www.grpc.io',
license='3-clause BSD',
package_dir=PACKAGE_DIRECTORIES,
packages=setuptools.find_packages('.'),
diff --git a/src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py b/src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py
index 87f28396ce..c8ad9668ac 100644
--- a/src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py
+++ b/src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py
@@ -35,6 +35,7 @@ from google.protobuf import descriptor_pb2
from google.protobuf import descriptor_pool
from grpc_reflection.v1alpha import reflection_pb2
+from grpc_reflection.v1alpha import reflection_pb2_grpc
_POOL = descriptor_pool.Default()
@@ -64,7 +65,7 @@ class ReflectionServicer(reflection_pb2.ServerReflectionServicer):
Args:
service_names: Iterable of fully-qualified service names available.
"""
- self._service_names = list(service_names)
+ self._service_names = tuple(sorted(service_names))
self._pool = _POOL if pool is None else pool
def _file_by_filename(self, filename):
@@ -84,23 +85,32 @@ class ReflectionServicer(reflection_pb2.ServerReflectionServicer):
else:
return _file_descriptor_response(descriptor)
- def _file_containing_extension(containing_type, extension_number):
- # TODO(atash) Python protobuf currently doesn't support querying extensions.
- # https://github.com/google/protobuf/issues/2248
- return reflection_pb2.ServerReflectionResponse(
- error_response=reflection_pb2.ErrorResponse(
- error_code=grpc.StatusCode.UNIMPLEMENTED.value[0],
- error_message=grpc.StatusCode.UNIMPLMENTED.value[1].encode(),))
-
- def _extension_numbers_of_type(fully_qualified_name):
- # TODO(atash) We're allowed to leave this unsupported according to the
- # protocol, but we should still eventually implement it. Hits the same issue
- # as `_file_containing_extension`, however.
- # https://github.com/google/protobuf/issues/2248
- return reflection_pb2.ServerReflectionResponse(
- error_response=reflection_pb2.ErrorResponse(
- error_code=grpc.StatusCode.UNIMPLEMENTED.value[0],
- error_message=grpc.StatusCode.UNIMPLMENTED.value[1].encode(),))
+ def _file_containing_extension(self, containing_type, extension_number):
+ try:
+ message_descriptor = self._pool.FindMessageTypeByName(containing_type)
+ extension_descriptor = self._pool.FindExtensionByNumber(
+ message_descriptor, extension_number)
+ descriptor = self._pool.FindFileContainingSymbol(
+ extension_descriptor.full_name)
+ except KeyError:
+ return _not_found_error()
+ else:
+ return _file_descriptor_response(descriptor)
+
+ def _all_extension_numbers_of_type(self, containing_type):
+ try:
+ message_descriptor = self._pool.FindMessageTypeByName(containing_type)
+ extension_numbers = tuple(sorted(
+ extension.number
+ for extension in self._pool.FindAllExtensions(message_descriptor)))
+ except KeyError:
+ return _not_found_error()
+ else:
+ return reflection_pb2.ServerReflectionResponse(
+ all_extension_numbers_response=reflection_pb2.
+ ExtensionNumberResponse(
+ base_type_name=message_descriptor.full_name,
+ extension_number=extension_numbers))
def _list_services(self):
return reflection_pb2.ServerReflectionResponse(
@@ -121,7 +131,7 @@ class ReflectionServicer(reflection_pb2.ServerReflectionServicer):
request.file_containing_extension.containing_type,
request.file_containing_extension.extension_number)
elif request.HasField('all_extension_numbers_of_type'):
- yield _all_extension_numbers_of_type(
+ yield self._all_extension_numbers_of_type(
request.all_extension_numbers_of_type)
elif request.HasField('list_services'):
yield self._list_services()
@@ -131,3 +141,14 @@ class ReflectionServicer(reflection_pb2.ServerReflectionServicer):
error_code=grpc.StatusCode.INVALID_ARGUMENT.value[0],
error_message=grpc.StatusCode.INVALID_ARGUMENT.value[1]
.encode(),))
+
+
+def enable_server_reflection(service_names, server):
+ """Enables server reflection on a server.
+
+ Args:
+ service_names: Iterable of fully-qualified service names available.
+ server: grpc.Server to which reflection service will be added.
+ """
+ reflection_pb2_grpc.add_ServerReflectionServicer_to_server(
+ ReflectionServicer(service_names), server)
diff --git a/src/python/grpcio_reflection/setup.py b/src/python/grpcio_reflection/setup.py
index e85092db57..e6cf54745e 100644
--- a/src/python/grpcio_reflection/setup.py
+++ b/src/python/grpcio_reflection/setup.py
@@ -60,6 +60,10 @@ setuptools.setup(
name='grpcio-reflection',
version=grpc_version.VERSION,
license='3-clause BSD',
+ description='Standard Protobuf Reflection Service for gRPC',
+ author='The gRPC Authors',
+ author_email='grpc-io@googlegroups.com',
+ url='http://www.grpc.io',
package_dir=PACKAGE_DIRECTORIES,
packages=setuptools.find_packages('.'),
install_requires=INSTALL_REQUIRES,
diff --git a/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py b/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py
index 58f3b364ba..3325d54375 100644
--- a/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py
+++ b/src/python/grpcio_tests/tests/interop/_insecure_intraop_test.py
@@ -32,7 +32,7 @@ from concurrent import futures
import unittest
import grpc
-from src.proto.grpc.testing import test_pb2
+from src.proto.grpc.testing import test_pb2_grpc
from tests.interop import _intraop_test_case
from tests.interop import methods
@@ -44,11 +44,11 @@ class InsecureIntraopTest(_intraop_test_case.IntraopTestCase,
def setUp(self):
self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
- test_pb2.add_TestServiceServicer_to_server(methods.TestService(),
- self.server)
+ test_pb2_grpc.add_TestServiceServicer_to_server(methods.TestService(),
+ self.server)
port = self.server.add_insecure_port('[::]:0')
self.server.start()
- self.stub = test_pb2.TestServiceStub(
+ self.stub = test_pb2_grpc.TestServiceStub(
grpc.insecure_channel('localhost:{}'.format(port)))
diff --git a/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py b/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py
index 5fe929b99e..857e00efb3 100644
--- a/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py
+++ b/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py
@@ -32,7 +32,7 @@ from concurrent import futures
import unittest
import grpc
-from src.proto.grpc.testing import test_pb2
+from src.proto.grpc.testing import test_pb2_grpc
from tests.interop import _intraop_test_case
from tests.interop import methods
@@ -45,14 +45,14 @@ class SecureIntraopTest(_intraop_test_case.IntraopTestCase, unittest.TestCase):
def setUp(self):
self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
- test_pb2.add_TestServiceServicer_to_server(methods.TestService(),
- self.server)
+ test_pb2_grpc.add_TestServiceServicer_to_server(methods.TestService(),
+ self.server)
port = self.server.add_secure_port(
'[::]:0',
grpc.ssl_server_credentials(
[(resources.private_key(), resources.certificate_chain())]))
self.server.start()
- self.stub = test_pb2.TestServiceStub(
+ self.stub = test_pb2_grpc.TestServiceStub(
grpc.secure_channel('localhost:{}'.format(port),
grpc.ssl_channel_credentials(
resources.test_root_certificates()), (
diff --git a/src/python/grpcio_tests/tests/interop/methods.py b/src/python/grpcio_tests/tests/interop/methods.py
index 662ea9ce57..e1016f7c0d 100644
--- a/src/python/grpcio_tests/tests/interop/methods.py
+++ b/src/python/grpcio_tests/tests/interop/methods.py
@@ -40,7 +40,7 @@ from grpc.beta import implementations
from src.proto.grpc.testing import empty_pb2
from src.proto.grpc.testing import messages_pb2
-from src.proto.grpc.testing import test_pb2
+from src.proto.grpc.testing import test_pb2_grpc
_INITIAL_METADATA_KEY = "x-grpc-test-echo-initial"
_TRAILING_METADATA_KEY = "x-grpc-test-echo-trailing-bin"
@@ -66,7 +66,7 @@ def _maybe_echo_status_and_message(request, servicer_context):
servicer_context.set_details(request.response_status.message)
-class TestService(test_pb2.TestServiceServicer):
+class TestService(test_pb2_grpc.TestServiceServicer):
def EmptyCall(self, request, context):
_maybe_echo_metadata(context)
diff --git a/src/python/grpcio_tests/tests/interop/server.py b/src/python/grpcio_tests/tests/interop/server.py
index 65f1604eb8..0ae2c97b42 100644
--- a/src/python/grpcio_tests/tests/interop/server.py
+++ b/src/python/grpcio_tests/tests/interop/server.py
@@ -34,7 +34,7 @@ import logging
import time
import grpc
-from src.proto.grpc.testing import test_pb2
+from src.proto.grpc.testing import test_pb2_grpc
from tests.interop import methods
from tests.interop import resources
@@ -53,7 +53,8 @@ def serve():
args = parser.parse_args()
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
- test_pb2.add_TestServiceServicer_to_server(methods.TestService(), server)
+ test_pb2_grpc.add_TestServiceServicer_to_server(methods.TestService(),
+ server)
if args.use_tls:
private_key = resources.private_key()
certificate_chain = resources.certificate_chain()
diff --git a/src/python/grpcio_tests/tests/qps/qps_worker.py b/src/python/grpcio_tests/tests/qps/qps_worker.py
index 025dfb9d4a..7cd53e7bd9 100644
--- a/src/python/grpcio_tests/tests/qps/qps_worker.py
+++ b/src/python/grpcio_tests/tests/qps/qps_worker.py
@@ -33,7 +33,7 @@ import time
from concurrent import futures
import grpc
-from src.proto.grpc.testing import services_pb2
+from src.proto.grpc.testing import services_pb2_grpc
from tests.qps import worker_server
@@ -41,7 +41,7 @@ from tests.qps import worker_server
def run_worker_server(port):
server = grpc.server(futures.ThreadPoolExecutor(max_workers=5))
servicer = worker_server.WorkerServer()
- services_pb2.add_WorkerServiceServicer_to_server(servicer, server)
+ services_pb2_grpc.add_WorkerServiceServicer_to_server(servicer, server)
server.add_insecure_port('[::]:{}'.format(port))
server.start()
servicer.wait_for_quit()
diff --git a/src/python/grpcio_tests/tests/qps/worker_server.py b/src/python/grpcio_tests/tests/qps/worker_server.py
index ca1a777611..de9535f46e 100644
--- a/src/python/grpcio_tests/tests/qps/worker_server.py
+++ b/src/python/grpcio_tests/tests/qps/worker_server.py
@@ -35,7 +35,7 @@ import time
from concurrent import futures
import grpc
from src.proto.grpc.testing import control_pb2
-from src.proto.grpc.testing import services_pb2
+from src.proto.grpc.testing import services_pb2_grpc
from src.proto.grpc.testing import stats_pb2
from tests.qps import benchmark_client
@@ -45,7 +45,7 @@ from tests.qps import histogram
from tests.unit import resources
-class WorkerServer(services_pb2.WorkerServiceServicer):
+class WorkerServer(services_pb2_grpc.WorkerServiceServicer):
"""Python Worker Server implementation."""
def __init__(self):
@@ -87,8 +87,8 @@ class WorkerServer(services_pb2.WorkerServiceServicer):
futures.ThreadPoolExecutor(max_workers=server_threads))
if config.server_type == control_pb2.ASYNC_SERVER:
servicer = benchmark_server.BenchmarkServer()
- services_pb2.add_BenchmarkServiceServicer_to_server(servicer,
- server)
+ services_pb2_grpc.add_BenchmarkServiceServicer_to_server(servicer,
+ server)
elif config.server_type == control_pb2.ASYNC_GENERIC_SERVER:
resp_size = config.payload_config.bytebuf_params.resp_size
servicer = benchmark_server.GenericBenchmarkServer(resp_size)
diff --git a/src/python/grpcio_tests/tests/reflection/_reflection_servicer_test.py b/src/python/grpcio_tests/tests/reflection/_reflection_servicer_test.py
index d06ff064e2..14e6d64c66 100644
--- a/src/python/grpcio_tests/tests/reflection/_reflection_servicer_test.py
+++ b/src/python/grpcio_tests/tests/reflection/_reflection_servicer_test.py
@@ -34,18 +34,24 @@ import grpc
from grpc.framework.foundation import logging_pool
from grpc_reflection.v1alpha import reflection
from grpc_reflection.v1alpha import reflection_pb2
+from grpc_reflection.v1alpha import reflection_pb2_grpc
from google.protobuf import descriptor_pool
from google.protobuf import descriptor_pb2
-from src.proto.grpc.testing.proto2 import empty2_extensions_pb2
from src.proto.grpc.testing import empty_pb2
+#empty2_pb2 is imported for import-consequent side-effects.
+from src.proto.grpc.testing.proto2 import empty2_pb2 # pylint: disable=unused-import
+from src.proto.grpc.testing.proto2 import empty2_extensions_pb2
+
from tests.unit.framework.common import test_constants
_EMPTY_PROTO_FILE_NAME = 'src/proto/grpc/testing/empty.proto'
_EMPTY_PROTO_SYMBOL_NAME = 'grpc.testing.Empty'
_SERVICE_NAMES = ('Angstrom', 'Bohr', 'Curie', 'Dyson', 'Einstein', 'Feynman',
'Galilei')
+_EMPTY_EXTENSIONS_SYMBOL_NAME = 'grpc.testing.proto2.EmptyWithExtensions'
+_EMPTY_EXTENSIONS_NUMBERS = (124, 125, 126, 127, 128,)
def _file_descriptor_to_proto(descriptor):
@@ -61,12 +67,12 @@ class ReflectionServicerTest(unittest.TestCase):
server_pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
self._server = grpc.server(server_pool)
port = self._server.add_insecure_port('[::]:0')
- reflection_pb2.add_ServerReflectionServicer_to_server(servicer,
- self._server)
+ reflection_pb2_grpc.add_ServerReflectionServicer_to_server(servicer,
+ self._server)
self._server.start()
channel = grpc.insecure_channel('localhost:%d' % port)
- self._stub = reflection_pb2.ServerReflectionStub(channel)
+ self._stub = reflection_pb2_grpc.ServerReflectionStub(channel)
def testFileByName(self):
requests = (reflection_pb2.ServerReflectionRequest(
@@ -109,12 +115,12 @@ class ReflectionServicerTest(unittest.TestCase):
self.assertSequenceEqual(expected_responses, responses)
@unittest.skip(
- 'TODO(atash): implement file-containing-extension reflection '
- '(see https://github.com/google/protobuf/issues/2248)')
+ 'TODO(mmx): enable when (pure) python protobuf issue is fixed'
+ '(see https://github.com/google/protobuf/issues/2882)')
def testFileContainingExtension(self):
requests = (reflection_pb2.ServerReflectionRequest(
file_containing_extension=reflection_pb2.ExtensionRequest(
- containing_type='grpc.testing.proto2.Empty',
+ containing_type=_EMPTY_EXTENSIONS_SYMBOL_NAME,
extension_number=125,),
), reflection_pb2.ServerReflectionRequest(
file_containing_extension=reflection_pb2.ExtensionRequest(
@@ -126,7 +132,28 @@ class ReflectionServicerTest(unittest.TestCase):
valid_host='',
file_descriptor_response=reflection_pb2.FileDescriptorResponse(
file_descriptor_proto=(_file_descriptor_to_proto(
- empty_extensions_pb2.DESCRIPTOR),))),
+ empty2_extensions_pb2.DESCRIPTOR),))),
+ reflection_pb2.ServerReflectionResponse(
+ valid_host='',
+ error_response=reflection_pb2.ErrorResponse(
+ error_code=grpc.StatusCode.NOT_FOUND.value[0],
+ error_message=grpc.StatusCode.NOT_FOUND.value[1].encode(),
+ )),)
+ self.assertSequenceEqual(expected_responses, responses)
+
+ def testExtensionNumbersOfType(self):
+ requests = (reflection_pb2.ServerReflectionRequest(
+ all_extension_numbers_of_type=_EMPTY_EXTENSIONS_SYMBOL_NAME
+ ), reflection_pb2.ServerReflectionRequest(
+ all_extension_numbers_of_type='i.donut.exist.co.uk.net.name.foo'),)
+ responses = tuple(self._stub.ServerReflectionInfo(iter(requests)))
+ expected_responses = (
+ reflection_pb2.ServerReflectionResponse(
+ valid_host='',
+ all_extension_numbers_response=reflection_pb2.
+ ExtensionNumberResponse(
+ base_type_name=_EMPTY_EXTENSIONS_SYMBOL_NAME,
+ extension_number=_EMPTY_EXTENSIONS_NUMBERS)),
reflection_pb2.ServerReflectionResponse(
valid_host='',
error_response=reflection_pb2.ErrorResponse(
diff --git a/src/python/grpcio_tests/tests/stress/client.py b/src/python/grpcio_tests/tests/stress/client.py
index b9dbe61d44..b7eb12bff8 100644
--- a/src/python/grpcio_tests/tests/stress/client.py
+++ b/src/python/grpcio_tests/tests/stress/client.py
@@ -34,7 +34,7 @@ import threading
import grpc
from six.moves import queue
-from src.proto.grpc.testing import metrics_pb2
+from src.proto.grpc.testing import metrics_pb2_grpc
from src.proto.grpc.testing import test_pb2
from tests.interop import methods
@@ -139,7 +139,7 @@ def run_test(args):
runners = []
server = grpc.server(futures.ThreadPoolExecutor(max_workers=25))
- metrics_pb2.add_MetricsServiceServicer_to_server(
+ metrics_pb2_grpc.add_MetricsServiceServicer_to_server(
metrics_server.MetricsServer(hist), server)
server.add_insecure_port('[::]:{}'.format(args.metrics_port))
server.start()
diff --git a/src/python/grpcio_tests/tests/tests.json b/src/python/grpcio_tests/tests/tests.json
index 70d965d3ca..f750b05102 100644
--- a/src/python/grpcio_tests/tests/tests.json
+++ b/src/python/grpcio_tests/tests/tests.json
@@ -31,6 +31,7 @@
"unit._invocation_defects_test.InvocationDefectsTest",
"unit._metadata_code_details_test.MetadataCodeDetailsTest",
"unit._metadata_test.MetadataTest",
+ "unit._resource_exhausted_test.ResourceExhaustedTest",
"unit._rpc_test.RPCTest",
"unit._sanity._sanity_test.Sanity",
"unit._thread_cleanup_test.CleanupThreadTest",
diff --git a/src/python/grpcio_tests/tests/unit/_resource_exhausted_test.py b/src/python/grpcio_tests/tests/unit/_resource_exhausted_test.py
new file mode 100644
index 0000000000..88c82b5541
--- /dev/null
+++ b/src/python/grpcio_tests/tests/unit/_resource_exhausted_test.py
@@ -0,0 +1,270 @@
+# Copyright 2017, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""Tests server responding with RESOURCE_EXHAUSTED."""
+
+import threading
+import unittest
+
+import grpc
+from grpc import _channel
+from grpc.framework.foundation import logging_pool
+
+from tests.unit import test_common
+from tests.unit.framework.common import test_constants
+
+_REQUEST = b'\x00\x00\x00'
+_RESPONSE = b'\x00\x00\x00'
+
+_UNARY_UNARY = '/test/UnaryUnary'
+_UNARY_STREAM = '/test/UnaryStream'
+_STREAM_UNARY = '/test/StreamUnary'
+_STREAM_STREAM = '/test/StreamStream'
+
+
+class _TestTrigger(object):
+
+ def __init__(self, total_call_count):
+ self._total_call_count = total_call_count
+ self._pending_calls = 0
+ self._triggered = False
+ self._finish_condition = threading.Condition()
+ self._start_condition = threading.Condition()
+
+ # Wait for all calls be be blocked in their handler
+ def await_calls(self):
+ with self._start_condition:
+ while self._pending_calls < self._total_call_count:
+ self._start_condition.wait()
+
+ # Block in a response handler and wait for a trigger
+ def await_trigger(self):
+ with self._start_condition:
+ self._pending_calls += 1
+ self._start_condition.notify()
+
+ with self._finish_condition:
+ if not self._triggered:
+ self._finish_condition.wait()
+
+ # Finish all response handlers
+ def trigger(self):
+ with self._finish_condition:
+ self._triggered = True
+ self._finish_condition.notify_all()
+
+
+def handle_unary_unary(trigger, request, servicer_context):
+ trigger.await_trigger()
+ return _RESPONSE
+
+
+def handle_unary_stream(trigger, request, servicer_context):
+ trigger.await_trigger()
+ for _ in range(test_constants.STREAM_LENGTH):
+ yield _RESPONSE
+
+
+def handle_stream_unary(trigger, request_iterator, servicer_context):
+ trigger.await_trigger()
+ # TODO(issue:#6891) We should be able to remove this loop
+ for request in request_iterator:
+ pass
+ return _RESPONSE
+
+
+def handle_stream_stream(trigger, request_iterator, servicer_context):
+ trigger.await_trigger()
+ # TODO(issue:#6891) We should be able to remove this loop,
+ # and replace with return; yield
+ for request in request_iterator:
+ yield _RESPONSE
+
+
+class _MethodHandler(grpc.RpcMethodHandler):
+
+ def __init__(self, trigger, request_streaming, response_streaming):
+ self.request_streaming = request_streaming
+ self.response_streaming = response_streaming
+ self.request_deserializer = None
+ self.response_serializer = None
+ self.unary_unary = None
+ self.unary_stream = None
+ self.stream_unary = None
+ self.stream_stream = None
+ if self.request_streaming and self.response_streaming:
+ self.stream_stream = (
+ lambda x, y: handle_stream_stream(trigger, x, y))
+ elif self.request_streaming:
+ self.stream_unary = lambda x, y: handle_stream_unary(trigger, x, y)
+ elif self.response_streaming:
+ self.unary_stream = lambda x, y: handle_unary_stream(trigger, x, y)
+ else:
+ self.unary_unary = lambda x, y: handle_unary_unary(trigger, x, y)
+
+
+class _GenericHandler(grpc.GenericRpcHandler):
+
+ def __init__(self, trigger):
+ self._trigger = trigger
+
+ def service(self, handler_call_details):
+ if handler_call_details.method == _UNARY_UNARY:
+ return _MethodHandler(self._trigger, False, False)
+ elif handler_call_details.method == _UNARY_STREAM:
+ return _MethodHandler(self._trigger, False, True)
+ elif handler_call_details.method == _STREAM_UNARY:
+ return _MethodHandler(self._trigger, True, False)
+ elif handler_call_details.method == _STREAM_STREAM:
+ return _MethodHandler(self._trigger, True, True)
+ else:
+ return None
+
+
+class ResourceExhaustedTest(unittest.TestCase):
+
+ def setUp(self):
+ self._server_pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
+ self._trigger = _TestTrigger(test_constants.THREAD_CONCURRENCY)
+ self._server = grpc.server(
+ self._server_pool,
+ handlers=(_GenericHandler(self._trigger),),
+ maximum_concurrent_rpcs=test_constants.THREAD_CONCURRENCY)
+ port = self._server.add_insecure_port('[::]:0')
+ self._server.start()
+ self._channel = grpc.insecure_channel('localhost:%d' % port)
+
+ def tearDown(self):
+ self._server.stop(0)
+
+ def testUnaryUnary(self):
+ multi_callable = self._channel.unary_unary(_UNARY_UNARY)
+ futures = []
+ for _ in range(test_constants.THREAD_CONCURRENCY):
+ futures.append(multi_callable.future(_REQUEST))
+
+ self._trigger.await_calls()
+
+ with self.assertRaises(grpc.RpcError) as exception_context:
+ multi_callable(_REQUEST)
+
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ exception_context.exception.code())
+
+ future_exception = multi_callable.future(_REQUEST)
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ future_exception.exception().code())
+
+ self._trigger.trigger()
+ for future in futures:
+ self.assertEqual(_RESPONSE, future.result())
+
+ # Ensure a new request can be handled
+ self.assertEqual(_RESPONSE, multi_callable(_REQUEST))
+
+ def testUnaryStream(self):
+ multi_callable = self._channel.unary_stream(_UNARY_STREAM)
+ calls = []
+ for _ in range(test_constants.THREAD_CONCURRENCY):
+ calls.append(multi_callable(_REQUEST))
+
+ self._trigger.await_calls()
+
+ with self.assertRaises(grpc.RpcError) as exception_context:
+ next(multi_callable(_REQUEST))
+
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ exception_context.exception.code())
+
+ self._trigger.trigger()
+
+ for call in calls:
+ for response in call:
+ self.assertEqual(_RESPONSE, response)
+
+ # Ensure a new request can be handled
+ new_call = multi_callable(_REQUEST)
+ for response in new_call:
+ self.assertEqual(_RESPONSE, response)
+
+ def testStreamUnary(self):
+ multi_callable = self._channel.stream_unary(_STREAM_UNARY)
+ futures = []
+ request = iter([_REQUEST] * test_constants.STREAM_LENGTH)
+ for _ in range(test_constants.THREAD_CONCURRENCY):
+ futures.append(multi_callable.future(request))
+
+ self._trigger.await_calls()
+
+ with self.assertRaises(grpc.RpcError) as exception_context:
+ multi_callable(request)
+
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ exception_context.exception.code())
+
+ future_exception = multi_callable.future(request)
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ future_exception.exception().code())
+
+ self._trigger.trigger()
+
+ for future in futures:
+ self.assertEqual(_RESPONSE, future.result())
+
+ # Ensure a new request can be handled
+ self.assertEqual(_RESPONSE, multi_callable(request))
+
+ def testStreamStream(self):
+ multi_callable = self._channel.stream_stream(_STREAM_STREAM)
+ calls = []
+ request = iter([_REQUEST] * test_constants.STREAM_LENGTH)
+ for _ in range(test_constants.THREAD_CONCURRENCY):
+ calls.append(multi_callable(request))
+
+ self._trigger.await_calls()
+
+ with self.assertRaises(grpc.RpcError) as exception_context:
+ next(multi_callable(request))
+
+ self.assertEqual(grpc.StatusCode.RESOURCE_EXHAUSTED,
+ exception_context.exception.code())
+
+ self._trigger.trigger()
+
+ for call in calls:
+ for response in call:
+ self.assertEqual(_RESPONSE, response)
+
+ # Ensure a new request can be handled
+ new_call = multi_callable(request)
+ for response in new_call:
+ self.assertEqual(_RESPONSE, response)
+
+
+if __name__ == '__main__':
+ unittest.main(verbosity=2)
diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml
index 0f61ccfa81..7174f3b15a 100644
--- a/src/ruby/.rubocop.yml
+++ b/src/ruby/.rubocop.yml
@@ -9,6 +9,7 @@ AllCops:
- 'bin/math_services_pb.rb'
- 'pb/grpc/health/v1/*'
- 'pb/test/**/*'
+ - 'end2end/lib/*'
Metrics/CyclomaticComplexity:
Max: 9
diff --git a/src/ruby/end2end/README.md b/src/ruby/end2end/README.md
new file mode 100644
index 0000000000..ea5ab6d4bc
--- /dev/null
+++ b/src/ruby/end2end/README.md
@@ -0,0 +1,18 @@
+This directory contains some grpc-ruby end to end tests.
+
+Each test here involves two files: a "driver" and a "client". For example,
+the "channel_closing" test involves channel_closing_driver.rb
+and channel_closing_client.rb.
+
+Typically, the "driver" will start up a simple "echo" server, and then
+spawn a client. It gives the client the address of the "echo" server as
+well as an address to listen on for control rpcs. Depending on the test, the
+client usually starts up a "ClientControl" grpc server for the driver to
+interact with (the driver can tell the client process to do strange things at
+different times, depending on the test).
+
+So far these tests are mostly useful for testing process-shutdown related
+situations, since the client's run in separate processes.
+
+These tests are invoked through the "tools/run_tests/run_tests.py" script (the
+Rakefile doesn't start these).
diff --git a/src/ruby/end2end/channel_closing_client.rb b/src/ruby/end2end/channel_closing_client.rb
new file mode 100755
index 0000000000..8449797360
--- /dev/null
+++ b/src/ruby/end2end/channel_closing_client.rb
@@ -0,0 +1,84 @@
+#!/usr/bin/env ruby
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative './end2end_common'
+
+# Calls '#close' on a Channel when "shutdown" called. This tries to
+# trigger a hang or crash bug by closing a channel actively being watched
+class ChannelClosingClientController < ClientControl::ClientController::Service
+ def initialize(ch)
+ @ch = ch
+ end
+
+ def shutdown(_, _)
+ @ch.close
+ ClientControl::Void.new
+ end
+end
+
+def main
+ client_control_port = ''
+ server_port = ''
+ OptionParser.new do |opts|
+ opts.on('--client_control_port=P', String) do |p|
+ client_control_port = p
+ end
+ opts.on('--server_port=P', String) do |p|
+ server_port = p
+ end
+ end.parse!
+
+ ch = GRPC::Core::Channel.new("localhost:#{server_port}", {},
+ :this_channel_is_insecure)
+
+ srv = GRPC::RpcServer.new
+ thd = Thread.new do
+ srv.add_http2_port("0.0.0.0:#{client_control_port}", :this_port_is_insecure)
+ srv.handle(ChannelClosingClientController.new(ch))
+ srv.run
+ end
+
+ # this should break out with an exception once the channel is closed
+ loop do
+ begin
+ state = ch.connectivity_state(true)
+ ch.watch_connectivity_state(state, Time.now + 360)
+ rescue RuntimeError => e
+ STDERR.puts "(expected) error occurred: #{e.inspect}"
+ break
+ end
+ end
+
+ srv.stop
+ thd.join
+end
+
+main
diff --git a/src/ruby/end2end/channel_closing_driver.rb b/src/ruby/end2end/channel_closing_driver.rb
new file mode 100755
index 0000000000..43e2fe8cbb
--- /dev/null
+++ b/src/ruby/end2end/channel_closing_driver.rb
@@ -0,0 +1,67 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# make sure that the client doesn't hang when channel is closed
+# explictly while it's used
+
+require_relative './end2end_common'
+
+def main
+ STDERR.puts 'start server'
+ server_runner = ServerRunner.new
+ server_port = server_runner.run
+
+ sleep 1
+
+ STDERR.puts 'start client'
+ control_stub, client_pid = start_client('channel_closing_client.rb',
+ server_port)
+
+ sleep 3
+
+ begin
+ Timeout.timeout(10) do
+ control_stub.shutdown(ClientControl::Void.new)
+ Process.wait(client_pid)
+ end
+ rescue Timeout::Error
+ STDERR.puts "timeout wait for client pid #{client_pid}"
+ Process.kill('SIGKILL', client_pid)
+ Process.wait(client_pid)
+ STDERR.puts 'killed client child'
+ raise 'Timed out waiting for client process. It likely hangs when a ' \
+ 'channel is closed while connectivity is watched'
+ end
+
+ server_runner.stop
+end
+
+main
diff --git a/src/ruby/end2end/channel_state_client.rb b/src/ruby/end2end/channel_state_client.rb
new file mode 100755
index 0000000000..08c21bbb8e
--- /dev/null
+++ b/src/ruby/end2end/channel_state_client.rb
@@ -0,0 +1,54 @@
+#!/usr/bin/env ruby
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative './end2end_common'
+
+def main
+ server_port = ''
+ OptionParser.new do |opts|
+ opts.on('--client_control_port=P', String) do
+ STDERR.puts 'client_control_port ignored'
+ end
+ opts.on('--server_port=P', String) do |p|
+ server_port = p
+ end
+ end.parse!
+
+ ch = GRPC::Core::Channel.new("localhost:#{server_port}", {},
+ :this_channel_is_insecure)
+
+ loop do
+ state = ch.connectivity_state
+ ch.watch_connectivity_state(state, Time.now + 360)
+ end
+end
+
+main
diff --git a/src/ruby/end2end/channel_state_driver.rb b/src/ruby/end2end/channel_state_driver.rb
new file mode 100755
index 0000000000..c3184bf939
--- /dev/null
+++ b/src/ruby/end2end/channel_state_driver.rb
@@ -0,0 +1,64 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# make sure that the client doesn't hang when process ended abruptly
+
+require_relative './end2end_common'
+
+def main
+ STDERR.puts 'start server'
+ server_runner = ServerRunner.new
+ server_port = server_runner.run
+
+ sleep 1
+
+ STDERR.puts 'start client'
+ _, client_pid = start_client('channel_state_client.rb', server_port)
+
+ sleep 3
+
+ Process.kill('SIGTERM', client_pid)
+
+ begin
+ Timeout.timeout(10) { Process.wait(client_pid) }
+ rescue Timeout::Error
+ STDERR.puts "timeout wait for client pid #{client_pid}"
+ Process.kill('SIGKILL', client_pid)
+ Process.wait(client_pid)
+ STDERR.puts 'killed client child'
+ raise 'Timed out waiting for client process. ' \
+ 'It likely hangs when ended abruptly'
+ end
+
+ server_runner.stop
+end
+
+main
diff --git a/src/ruby/end2end/end2end_common.rb b/src/ruby/end2end/end2end_common.rb
new file mode 100755
index 0000000000..9534bb2078
--- /dev/null
+++ b/src/ruby/end2end/end2end_common.rb
@@ -0,0 +1,109 @@
+#!/usr/bin/env ruby
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+this_dir = File.expand_path(File.dirname(__FILE__))
+protos_lib_dir = File.join(this_dir, 'lib')
+grpc_lib_dir = File.join(File.dirname(this_dir), 'lib')
+$LOAD_PATH.unshift(grpc_lib_dir) unless $LOAD_PATH.include?(grpc_lib_dir)
+$LOAD_PATH.unshift(protos_lib_dir) unless $LOAD_PATH.include?(protos_lib_dir)
+$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
+
+require 'grpc'
+require 'echo_services_pb'
+require 'client_control_services_pb'
+require 'socket'
+require 'optparse'
+require 'thread'
+require 'timeout'
+require 'English' # see https://github.com/bbatsov/rubocop/issues/1747
+
+# GreeterServer is simple server that implements the Helloworld Greeter server.
+class EchoServerImpl < Echo::EchoServer::Service
+ # say_hello implements the SayHello rpc method.
+ def echo(echo_req, _)
+ Echo::EchoReply.new(response: echo_req.request)
+ end
+end
+
+# ServerRunner starts an "echo server" that test clients can make calls to
+class ServerRunner
+ def initialize
+ end
+
+ def run
+ @srv = GRPC::RpcServer.new
+ port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
+ @srv.handle(EchoServerImpl)
+
+ @thd = Thread.new do
+ @srv.run
+ end
+ @srv.wait_till_running
+ port
+ end
+
+ def stop
+ @srv.stop
+ @thd.join
+ fail 'server not stopped' unless @srv.stopped?
+ end
+end
+
+def start_client(client_main, server_port)
+ this_dir = File.expand_path(File.dirname(__FILE__))
+
+ tmp_server = TCPServer.new(0)
+ client_control_port = tmp_server.local_address.ip_port
+ tmp_server.close
+
+ client_path = File.join(this_dir, client_main)
+ client_pid = Process.spawn(RbConfig.ruby,
+ client_path,
+ "--client_control_port=#{client_control_port}",
+ "--server_port=#{server_port}")
+ sleep 1
+ control_stub = ClientControl::ClientController::Stub.new(
+ "localhost:#{client_control_port}", :this_channel_is_insecure)
+ [control_stub, client_pid]
+end
+
+def cleanup(control_stub, client_pid, server_runner)
+ control_stub.shutdown(ClientControl::Void.new)
+ Process.wait(client_pid)
+
+ client_exit_code = $CHILD_STATUS
+
+ if client_exit_code != 0
+ fail "term sig test failure: client exit code: #{client_exit_code}"
+ end
+
+ server_runner.stop
+end
diff --git a/src/ruby/end2end/gen_protos.sh b/src/ruby/end2end/gen_protos.sh
new file mode 100644
index 0000000000..f78d9ad394
--- /dev/null
+++ b/src/ruby/end2end/gen_protos.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+grpc_tools_ruby_protoc -I protos --ruby_out=lib --grpc_out=lib protos/echo.proto protos/client_control.proto
diff --git a/src/ruby/end2end/lib/client_control_pb.rb b/src/ruby/end2end/lib/client_control_pb.rb
new file mode 100644
index 0000000000..1a938f1b5a
--- /dev/null
+++ b/src/ruby/end2end/lib/client_control_pb.rb
@@ -0,0 +1,17 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: client_control.proto
+
+require 'google/protobuf'
+
+Google::Protobuf::DescriptorPool.generated_pool.build do
+ add_message "client_control.DoEchoRpcRequest" do
+ optional :request, :string, 1
+ end
+ add_message "client_control.Void" do
+ end
+end
+
+module ClientControl
+ DoEchoRpcRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("client_control.DoEchoRpcRequest").msgclass
+ Void = Google::Protobuf::DescriptorPool.generated_pool.lookup("client_control.Void").msgclass
+end
diff --git a/src/ruby/end2end/lib/client_control_services_pb.rb b/src/ruby/end2end/lib/client_control_services_pb.rb
new file mode 100644
index 0000000000..04b2291bc7
--- /dev/null
+++ b/src/ruby/end2end/lib/client_control_services_pb.rb
@@ -0,0 +1,53 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# Source: client_control.proto for package 'client_control'
+# Original file comments:
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+require 'grpc'
+require 'client_control_pb'
+
+module ClientControl
+ module ClientController
+ class Service
+
+ include GRPC::GenericService
+
+ self.marshal_class_method = :encode
+ self.unmarshal_class_method = :decode
+ self.service_name = 'client_control.ClientController'
+
+ rpc :DoEchoRpc, DoEchoRpcRequest, Void
+ rpc :Shutdown, Void, Void
+ end
+
+ Stub = Service.rpc_stub_class
+ end
+end
diff --git a/src/ruby/end2end/lib/echo_pb.rb b/src/ruby/end2end/lib/echo_pb.rb
new file mode 100644
index 0000000000..c62adc0753
--- /dev/null
+++ b/src/ruby/end2end/lib/echo_pb.rb
@@ -0,0 +1,18 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: echo.proto
+
+require 'google/protobuf'
+
+Google::Protobuf::DescriptorPool.generated_pool.build do
+ add_message "echo.EchoRequest" do
+ optional :request, :string, 1
+ end
+ add_message "echo.EchoReply" do
+ optional :response, :string, 1
+ end
+end
+
+module Echo
+ EchoRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("echo.EchoRequest").msgclass
+ EchoReply = Google::Protobuf::DescriptorPool.generated_pool.lookup("echo.EchoReply").msgclass
+end
diff --git a/src/ruby/end2end/lib/echo_services_pb.rb b/src/ruby/end2end/lib/echo_services_pb.rb
new file mode 100644
index 0000000000..c66e975bf3
--- /dev/null
+++ b/src/ruby/end2end/lib/echo_services_pb.rb
@@ -0,0 +1,52 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# Source: echo.proto for package 'echo'
+# Original file comments:
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+require 'grpc'
+require 'echo_pb'
+
+module Echo
+ module EchoServer
+ class Service
+
+ include GRPC::GenericService
+
+ self.marshal_class_method = :encode
+ self.unmarshal_class_method = :decode
+ self.service_name = 'echo.EchoServer'
+
+ rpc :Echo, EchoRequest, EchoReply
+ end
+
+ Stub = Service.rpc_stub_class
+ end
+end
diff --git a/src/ruby/end2end/protos/client_control.proto b/src/ruby/end2end/protos/client_control.proto
new file mode 100644
index 0000000000..f985bb486d
--- /dev/null
+++ b/src/ruby/end2end/protos/client_control.proto
@@ -0,0 +1,43 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package client_control;
+
+service ClientController {
+ rpc DoEchoRpc (DoEchoRpcRequest) returns (Void) {}
+ rpc Shutdown(Void) returns (Void) {}
+}
+
+message DoEchoRpcRequest {
+ string request = 1;
+}
+
+message Void{}
diff --git a/src/ruby/end2end/protos/echo.proto b/src/ruby/end2end/protos/echo.proto
new file mode 100644
index 0000000000..d47afef70f
--- /dev/null
+++ b/src/ruby/end2end/protos/echo.proto
@@ -0,0 +1,46 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package echo;
+
+service EchoServer {
+ rpc Echo (EchoRequest) returns (EchoReply) {}
+}
+
+// The request message containing the user's name.
+message EchoRequest {
+ string request = 1;
+}
+
+// The response message containing the greetings
+message EchoReply {
+ string response = 1;
+}
diff --git a/src/ruby/end2end/sig_handling_client.rb b/src/ruby/end2end/sig_handling_client.rb
new file mode 100755
index 0000000000..5b1e54718e
--- /dev/null
+++ b/src/ruby/end2end/sig_handling_client.rb
@@ -0,0 +1,89 @@
+#!/usr/bin/env ruby
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative './end2end_common'
+
+# Test client. Sends RPC's as normal but process also has signal handlers
+class SigHandlingClientController < ClientControl::ClientController::Service
+ def initialize(srv, stub)
+ @srv = srv
+ @stub = stub
+ end
+
+ def do_echo_rpc(req, _)
+ response = @stub.echo(Echo::EchoRequest.new(request: req.request))
+ fail 'bad response' unless response.response == req.request
+ ClientControl::Void.new
+ end
+
+ def shutdown(_, _)
+ Thread.new do
+ # TODO(apolcyn) There is a race between stopping the
+ # server and the "shutdown" rpc completing,
+ # See if stop method on server can end active RPC cleanly, to
+ # avoid this sleep.
+ sleep 3
+ @srv.stop
+ end
+ ClientControl::Void.new
+ end
+end
+
+def main
+ client_control_port = ''
+ server_port = ''
+ OptionParser.new do |opts|
+ opts.on('--client_control_port=P', String) do |p|
+ client_control_port = p
+ end
+ opts.on('--server_port=P', String) do |p|
+ server_port = p
+ end
+ end.parse!
+
+ Signal.trap('TERM') do
+ STDERR.puts 'SIGTERM received'
+ end
+
+ Signal.trap('INT') do
+ STDERR.puts 'SIGINT received'
+ end
+
+ srv = GRPC::RpcServer.new
+ srv.add_http2_port("0.0.0.0:#{client_control_port}",
+ :this_port_is_insecure)
+ stub = Echo::EchoServer::Stub.new("localhost:#{server_port}",
+ :this_channel_is_insecure)
+ srv.handle(SigHandlingClientController.new(srv, stub))
+ srv.run
+end
+
+main
diff --git a/src/ruby/end2end/sig_handling_driver.rb b/src/ruby/end2end/sig_handling_driver.rb
new file mode 100755
index 0000000000..c5d46e074c
--- /dev/null
+++ b/src/ruby/end2end/sig_handling_driver.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# smoke test for a grpc-using app that receives and
+# handles process-ending signals
+
+require_relative './end2end_common'
+
+def main
+ STDERR.puts 'start server'
+ server_runner = ServerRunner.new
+ server_port = server_runner.run
+
+ sleep 1
+
+ STDERR.puts 'start client'
+ control_stub, client_pid = start_client('sig_handling_client.rb', server_port)
+
+ sleep 1
+
+ count = 0
+ while count < 5
+ control_stub.do_echo_rpc(
+ ClientControl::DoEchoRpcRequest.new(request: 'hello'))
+ Process.kill('SIGTERM', client_pid)
+ Process.kill('SIGINT', client_pid)
+ count += 1
+ end
+
+ cleanup(control_stub, client_pid, server_runner)
+end
+
+main
diff --git a/src/ruby/end2end/sig_int_during_channel_watch_client.rb b/src/ruby/end2end/sig_int_during_channel_watch_client.rb
new file mode 100755
index 0000000000..389fc5ba33
--- /dev/null
+++ b/src/ruby/end2end/sig_int_during_channel_watch_client.rb
@@ -0,0 +1,70 @@
+#!/usr/bin/env ruby
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative './end2end_common'
+
+# Start polling the channel state in both the main thread
+# and a child thread. Try to get the driver to send process-ending
+# interrupt while both a child thread and the main thread are in the
+# middle of a blocking connectivity_state call.
+def main
+ server_port = ''
+ OptionParser.new do |opts|
+ opts.on('--client_control_port=P', String) do
+ STDERR.puts 'client_control_port not used'
+ end
+ opts.on('--server_port=P', String) do |p|
+ server_port = p
+ end
+ end.parse!
+
+ thd = Thread.new do
+ child_thread_channel = GRPC::Core::Channel.new("localhost:#{server_port}",
+ {},
+ :this_channel_is_insecure)
+ loop do
+ state = child_thread_channel.connectivity_state(false)
+ child_thread_channel.watch_connectivity_state(state, Time.now + 360)
+ end
+ end
+
+ main_channel = GRPC::Core::Channel.new("localhost:#{server_port}",
+ {},
+ :this_channel_is_insecure)
+ loop do
+ state = main_channel.connectivity_state(false)
+ main_channel.watch_connectivity_state(state, Time.now + 360)
+ end
+
+ thd.join
+end
+
+main
diff --git a/src/ruby/end2end/sig_int_during_channel_watch_driver.rb b/src/ruby/end2end/sig_int_during_channel_watch_driver.rb
new file mode 100755
index 0000000000..84d039bf19
--- /dev/null
+++ b/src/ruby/end2end/sig_int_during_channel_watch_driver.rb
@@ -0,0 +1,69 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# abruptly end a process that has active calls to
+# Channel.watch_connectivity_state
+
+require_relative './end2end_common'
+
+def main
+ STDERR.puts 'start server'
+ server_runner = ServerRunner.new
+ server_port = server_runner.run
+
+ sleep 1
+
+ STDERR.puts 'start client'
+ _, client_pid = start_client('sig_int_during_channel_watch_client.rb',
+ server_port)
+
+ # give time for the client to get into the middle
+ # of a channel state watch call
+ sleep 1
+ Process.kill('SIGINT', client_pid)
+
+ begin
+ Timeout.timeout(10) do
+ Process.wait(client_pid)
+ end
+ rescue Timeout::Error
+ STDERR.puts "timeout wait for client pid #{client_pid}"
+ Process.kill('SIGKILL', client_pid)
+ Process.wait(client_pid)
+ STDERR.puts 'killed client child'
+ raise 'Timed out waiting for client process. It likely hangs when a ' \
+ 'SIGINT is sent while there is an active connectivity_state call'
+ end
+
+ server_runner.stop
+end
+
+main
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index ecb66239b9..7067933832 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -71,6 +71,7 @@ ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
ENV['EMBED_OPENSSL'] = 'true'
ENV['EMBED_ZLIB'] = 'true'
+ENV['EMBED_CARES'] = 'true'
ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
diff --git a/src/ruby/ext/grpc/rb_channel.c b/src/ruby/ext/grpc/rb_channel.c
index 84e43d3f7b..1c20c8813f 100644
--- a/src/ruby/ext/grpc/rb_channel.c
+++ b/src/ruby/ext/grpc/rb_channel.c
@@ -32,21 +32,22 @@
*/
#include <ruby/ruby.h>
+#include <ruby/thread.h>
#include "rb_grpc_imports.generated.h"
-#include "rb_channel.h"
#include "rb_byte_buffer.h"
+#include "rb_channel.h"
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
-#include "rb_grpc.h"
#include "rb_call.h"
#include "rb_channel_args.h"
#include "rb_channel_credentials.h"
#include "rb_completion_queue.h"
+#include "rb_grpc.h"
#include "rb_server.h"
/* id_channel is the name of the hidden ivar that preserves a reference to the
@@ -73,9 +74,26 @@ typedef struct grpc_rb_channel {
/* The actual channel */
grpc_channel *wrapped;
- grpc_completion_queue *queue;
+ int request_safe_destroy;
+ int safe_to_destroy;
+ grpc_connectivity_state current_connectivity_state;
+
+ int mu_init_done;
+ int abort_watch_connectivity_state;
+ gpr_mu channel_mu;
+ gpr_cv channel_cv;
} grpc_rb_channel;
+/* Forward declarations of functions involved in temporary fix to
+ * https://github.com/grpc/grpc/issues/9941 */
+static void grpc_rb_channel_try_register_connection_polling(
+ grpc_rb_channel *wrapper);
+static void grpc_rb_channel_safe_destroy(grpc_rb_channel *wrapper);
+
+static grpc_completion_queue *channel_polling_cq;
+static gpr_mu global_connection_polling_mu;
+static int abort_channel_polling = 0;
+
/* Destroys Channel instances. */
static void grpc_rb_channel_free(void *p) {
grpc_rb_channel *ch = NULL;
@@ -85,8 +103,13 @@ static void grpc_rb_channel_free(void *p) {
ch = (grpc_rb_channel *)p;
if (ch->wrapped != NULL) {
- grpc_channel_destroy(ch->wrapped);
- grpc_rb_completion_queue_destroy(ch->queue);
+ grpc_rb_channel_safe_destroy(ch);
+ ch->wrapped = NULL;
+ }
+
+ if (ch->mu_init_done) {
+ gpr_mu_destroy(&ch->channel_mu);
+ gpr_cv_destroy(&ch->channel_cv);
}
xfree(p);
@@ -104,13 +127,15 @@ static void grpc_rb_channel_mark(void *p) {
}
}
-static rb_data_type_t grpc_channel_data_type = {
- "grpc_channel",
- {grpc_rb_channel_mark, grpc_rb_channel_free, GRPC_RB_MEMSIZE_UNAVAILABLE,
- {NULL, NULL}},
- NULL, NULL,
+static rb_data_type_t grpc_channel_data_type = {"grpc_channel",
+ {grpc_rb_channel_mark,
+ grpc_rb_channel_free,
+ GRPC_RB_MEMSIZE_UNAVAILABLE,
+ {NULL, NULL}},
+ NULL,
+ NULL,
#ifdef RUBY_TYPED_FREE_IMMEDIATELY
- RUBY_TYPED_FREE_IMMEDIATELY
+ RUBY_TYPED_FREE_IMMEDIATELY
#endif
};
@@ -145,6 +170,7 @@ static VALUE grpc_rb_channel_init(int argc, VALUE *argv, VALUE self) {
rb_scan_args(argc, argv, "3", &target, &channel_args, &credentials);
TypedData_Get_Struct(self, grpc_rb_channel, &grpc_channel_data_type, wrapper);
+ wrapper->mu_init_done = 0;
target_chars = StringValueCStr(target);
grpc_rb_hash_convert_to_channel_args(channel_args, &args);
if (TYPE(credentials) == T_SYMBOL) {
@@ -159,6 +185,27 @@ static VALUE grpc_rb_channel_init(int argc, VALUE *argv, VALUE self) {
creds = grpc_rb_get_wrapped_channel_credentials(credentials);
ch = grpc_secure_channel_create(creds, target_chars, &args, NULL);
}
+
+ GPR_ASSERT(ch);
+
+ wrapper->wrapped = ch;
+
+ gpr_mu_init(&wrapper->channel_mu);
+ gpr_cv_init(&wrapper->channel_cv);
+ wrapper->mu_init_done = 1;
+
+ gpr_mu_lock(&wrapper->channel_mu);
+ wrapper->abort_watch_connectivity_state = 0;
+ wrapper->current_connectivity_state = grpc_channel_check_connectivity_state(wrapper->wrapped, 0);
+ wrapper->safe_to_destroy = 0;
+ wrapper->request_safe_destroy = 0;
+
+ gpr_cv_broadcast(&wrapper->channel_cv);
+ gpr_mu_unlock(&wrapper->channel_mu);
+
+
+ grpc_rb_channel_try_register_connection_polling(wrapper);
+
if (args.args != NULL) {
xfree(args.args); /* Allocated by grpc_rb_hash_convert_to_channel_args */
}
@@ -169,25 +216,28 @@ static VALUE grpc_rb_channel_init(int argc, VALUE *argv, VALUE self) {
}
rb_ivar_set(self, id_target, target);
wrapper->wrapped = ch;
- wrapper->queue = grpc_completion_queue_create(NULL);
return self;
}
/*
call-seq:
- insecure_channel = Channel:new("myhost:8080", {'arg1': 'value1'})
- creds = ...
- secure_channel = Channel:new("myhost:443", {'arg1': 'value1'}, creds)
+ ch.connectivity_state -> state
+ ch.connectivity_state(true) -> state
- Creates channel instances. */
+ Indicates the current state of the channel, whose value is one of the
+ constants defined in GRPC::Core::ConnectivityStates.
+
+ It also tries to connect if the chennel is idle in the second form. */
static VALUE grpc_rb_channel_get_connectivity_state(int argc, VALUE *argv,
VALUE self) {
- VALUE try_to_connect = Qfalse;
+ VALUE try_to_connect_param = Qfalse;
+ int grpc_try_to_connect = 0;
grpc_rb_channel *wrapper = NULL;
grpc_channel *ch = NULL;
/* "01" == 0 mandatory args, 1 (try_to_connect) is optional */
- rb_scan_args(argc, argv, "01", try_to_connect);
+ rb_scan_args(argc, argv, "01", &try_to_connect_param);
+ grpc_try_to_connect = RTEST(try_to_connect_param) ? 1 : 0;
TypedData_Get_Struct(self, grpc_rb_channel, &grpc_channel_data_type, wrapper);
ch = wrapper->wrapped;
@@ -195,57 +245,88 @@ static VALUE grpc_rb_channel_get_connectivity_state(int argc, VALUE *argv,
rb_raise(rb_eRuntimeError, "closed!");
return Qnil;
}
- return NUM2LONG(
- grpc_channel_check_connectivity_state(ch, (int)try_to_connect));
+ return LONG2NUM(grpc_channel_check_connectivity_state(wrapper->wrapped, grpc_try_to_connect));
}
-/* Watch for a change in connectivity state.
+typedef struct watch_state_stack {
+ grpc_rb_channel *wrapper;
+ gpr_timespec deadline;
+ int last_state;
+} watch_state_stack;
+
+static void *watch_channel_state_without_gvl(void *arg) {
+ watch_state_stack *stack = (watch_state_stack*)arg;
+ gpr_timespec deadline = stack->deadline;
+ grpc_rb_channel *wrapper = stack->wrapper;
+ int last_state = stack->last_state;
+ void *return_value = (void*)0;
+
+ gpr_mu_lock(&wrapper->channel_mu);
+ while(wrapper->current_connectivity_state == last_state &&
+ !wrapper->request_safe_destroy &&
+ !wrapper->safe_to_destroy &&
+ !wrapper->abort_watch_connectivity_state &&
+ gpr_time_cmp(deadline, gpr_now(GPR_CLOCK_REALTIME)) > 0) {
+ gpr_cv_wait(&wrapper->channel_cv, &wrapper->channel_mu, deadline);
+ }
+ if (wrapper->current_connectivity_state != last_state) {
+ return_value = (void*)1;
+ }
+ gpr_mu_unlock(&wrapper->channel_mu);
+
+ return return_value;
+}
- Once the channel connectivity state is different from the last observed
- state, tag will be enqueued on cq with success=1
+static void watch_channel_state_unblocking_func(void *arg) {
+ grpc_rb_channel *wrapper = (grpc_rb_channel*)arg;
+ gpr_log(GPR_DEBUG, "GRPC_RUBY: watch channel state unblocking func called");
+ gpr_mu_lock(&wrapper->channel_mu);
+ wrapper->abort_watch_connectivity_state = 1;
+ gpr_cv_broadcast(&wrapper->channel_cv);
+ gpr_mu_unlock(&wrapper->channel_mu);
+}
- If deadline expires BEFORE the state is changed, tag will be enqueued on
- the completion queue with success=0 */
+/* Wait until the channel's connectivity state becomes different from
+ * "last_state", or "deadline" expires.
+ * Returns true if the the channel's connectivity state becomes
+ * different from "last_state" within "deadline".
+ * Returns false if "deadline" expires before the channel's connectivity
+ * state changes from "last_state".
+ * */
static VALUE grpc_rb_channel_watch_connectivity_state(VALUE self,
VALUE last_state,
VALUE deadline) {
grpc_rb_channel *wrapper = NULL;
- grpc_channel *ch = NULL;
- grpc_completion_queue *cq = NULL;
-
- void *tag = wrapper;
-
- grpc_event event;
+ watch_state_stack stack;
+ void* out;
TypedData_Get_Struct(self, grpc_rb_channel, &grpc_channel_data_type, wrapper);
- ch = wrapper->wrapped;
- cq = wrapper->queue;
- if (ch == NULL) {
+
+ if (wrapper->wrapped == NULL) {
rb_raise(rb_eRuntimeError, "closed!");
return Qnil;
}
- grpc_channel_watch_connectivity_state(
- ch,
- (grpc_connectivity_state)NUM2LONG(last_state),
- grpc_rb_time_timeval(deadline, /* absolute time */ 0),
- cq,
- tag);
- event = rb_completion_queue_pluck(cq, tag,
- gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
+ if (!FIXNUM_P(last_state)) {
+ rb_raise(rb_eTypeError, "bad type for last_state. want a GRPC::Core::ChannelState constant");
+ return Qnil;
+ }
- if (event.success) {
+ stack.wrapper = wrapper;
+ stack.deadline = grpc_rb_time_timeval(deadline, 0);
+ stack.last_state = NUM2LONG(last_state);
+ out = rb_thread_call_without_gvl(watch_channel_state_without_gvl, &stack, watch_channel_state_unblocking_func, wrapper);
+ if (out) {
return Qtrue;
- } else {
- return Qfalse;
}
+ return Qfalse;
}
/* Create a call given a grpc_channel, in order to call method. The request
is not sent until grpc_call_invoke is called. */
-static VALUE grpc_rb_channel_create_call(VALUE self, VALUE parent,
- VALUE mask, VALUE method,
- VALUE host, VALUE deadline) {
+static VALUE grpc_rb_channel_create_call(VALUE self, VALUE parent, VALUE mask,
+ VALUE method, VALUE host,
+ VALUE deadline) {
VALUE res = Qnil;
grpc_rb_channel *wrapper = NULL;
grpc_call *call = NULL;
@@ -256,10 +337,11 @@ static VALUE grpc_rb_channel_create_call(VALUE self, VALUE parent,
grpc_slice method_slice;
grpc_slice host_slice;
grpc_slice *host_slice_ptr = NULL;
- char* tmp_str = NULL;
+ char *tmp_str = NULL;
if (host != Qnil) {
- host_slice = grpc_slice_from_copied_buffer(RSTRING_PTR(host), RSTRING_LEN(host));
+ host_slice =
+ grpc_slice_from_copied_buffer(RSTRING_PTR(host), RSTRING_LEN(host));
host_slice_ptr = &host_slice;
}
if (mask != Qnil) {
@@ -277,17 +359,18 @@ static VALUE grpc_rb_channel_create_call(VALUE self, VALUE parent,
return Qnil;
}
- method_slice = grpc_slice_from_copied_buffer(RSTRING_PTR(method), RSTRING_LEN(method));
+ method_slice =
+ grpc_slice_from_copied_buffer(RSTRING_PTR(method), RSTRING_LEN(method));
call = grpc_channel_create_call(ch, parent_call, flags, cq, method_slice,
- host_slice_ptr, grpc_rb_time_timeval(
- deadline,
- /* absolute time */ 0), NULL);
+ host_slice_ptr,
+ grpc_rb_time_timeval(deadline,
+ /* absolute time */ 0),
+ NULL);
if (call == NULL) {
tmp_str = grpc_slice_to_c_string(method_slice);
- rb_raise(rb_eRuntimeError, "cannot create call with method %s",
- tmp_str);
+ rb_raise(rb_eRuntimeError, "cannot create call with method %s", tmp_str);
return Qnil;
}
@@ -304,7 +387,6 @@ static VALUE grpc_rb_channel_create_call(VALUE self, VALUE parent,
return res;
}
-
/* Closes the channel, calling it's destroy method */
static VALUE grpc_rb_channel_destroy(VALUE self) {
grpc_rb_channel *wrapper = NULL;
@@ -313,19 +395,18 @@ static VALUE grpc_rb_channel_destroy(VALUE self) {
TypedData_Get_Struct(self, grpc_rb_channel, &grpc_channel_data_type, wrapper);
ch = wrapper->wrapped;
if (ch != NULL) {
- grpc_channel_destroy(ch);
+ grpc_rb_channel_safe_destroy(wrapper);
wrapper->wrapped = NULL;
}
return Qnil;
}
-
/* Called to obtain the target that this channel accesses. */
static VALUE grpc_rb_channel_get_target(VALUE self) {
grpc_rb_channel *wrapper = NULL;
VALUE res = Qnil;
- char* target = NULL;
+ char *target = NULL;
TypedData_Get_Struct(self, grpc_rb_channel, &grpc_channel_data_type, wrapper);
target = grpc_channel_get_target(wrapper->wrapped);
@@ -335,10 +416,122 @@ static VALUE grpc_rb_channel_get_target(VALUE self) {
return res;
}
+// Either start polling channel connection state or signal that it's free to
+// destroy.
+// Not safe to call while a channel's connection state is polled.
+static void grpc_rb_channel_try_register_connection_polling(
+ grpc_rb_channel *wrapper) {
+ grpc_connectivity_state conn_state;
+ gpr_timespec sleep_time = gpr_time_add(
+ gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(20, GPR_TIMESPAN));
+
+ GPR_ASSERT(wrapper);
+ GPR_ASSERT(wrapper->wrapped);
+ gpr_mu_lock(&wrapper->channel_mu);
+ if (wrapper->request_safe_destroy) {
+ wrapper->safe_to_destroy = 1;
+ gpr_cv_broadcast(&wrapper->channel_cv);
+ gpr_mu_unlock(&wrapper->channel_mu);
+ return;
+ }
+ gpr_mu_lock(&global_connection_polling_mu);
+
+ conn_state = grpc_channel_check_connectivity_state(wrapper->wrapped, 0);
+ if (conn_state != wrapper->current_connectivity_state) {
+ wrapper->current_connectivity_state = conn_state;
+ gpr_cv_broadcast(&wrapper->channel_cv);
+ }
+ // avoid posting work to the channel polling cq if it's been shutdown
+ if (!abort_channel_polling && conn_state != GRPC_CHANNEL_SHUTDOWN) {
+ grpc_channel_watch_connectivity_state(
+ wrapper->wrapped, conn_state, sleep_time, channel_polling_cq, wrapper);
+ } else {
+ wrapper->safe_to_destroy = 1;
+ gpr_cv_broadcast(&wrapper->channel_cv);
+ }
+ gpr_mu_unlock(&global_connection_polling_mu);
+ gpr_mu_unlock(&wrapper->channel_mu);
+}
+
+// Note requires wrapper->wrapped, wrapper->channel_mu/cv initialized
+static void grpc_rb_channel_safe_destroy(grpc_rb_channel *wrapper) {
+ gpr_mu_lock(&wrapper->channel_mu);
+ wrapper->request_safe_destroy = 1;
+
+ while (!wrapper->safe_to_destroy) {
+ gpr_cv_wait(&wrapper->channel_cv, &wrapper->channel_mu,
+ gpr_inf_future(GPR_CLOCK_REALTIME));
+ }
+ GPR_ASSERT(wrapper->safe_to_destroy);
+ gpr_mu_unlock(&wrapper->channel_mu);
+
+ grpc_channel_destroy(wrapper->wrapped);
+}
+
+// Note this loop breaks out with a single call of
+// "grpc_rb_event_unblocking_func".
+// This assumes that a ruby call the unblocking func
+// indicates process shutdown.
+// In the worst case, this stops polling channel connectivity
+// early and falls back to current behavior.
+static void *run_poll_channels_loop_no_gil(void *arg) {
+ grpc_event event;
+ (void)arg;
+ for (;;) {
+ event = grpc_completion_queue_next(
+ channel_polling_cq, gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
+ if (event.type == GRPC_QUEUE_SHUTDOWN) {
+ break;
+ }
+ if (event.type == GRPC_OP_COMPLETE) {
+ grpc_rb_channel_try_register_connection_polling((grpc_rb_channel *)event.tag);
+ }
+ }
+ grpc_completion_queue_destroy(channel_polling_cq);
+ gpr_log(GPR_DEBUG, "GRPC_RUBY: run_poll_channels_loop_no_gil - exit connection polling loop");
+ return NULL;
+}
+
+// Notify the channel polling loop to cleanup and shutdown.
+static void grpc_rb_event_unblocking_func(void *arg) {
+ (void)arg;
+ gpr_mu_lock(&global_connection_polling_mu);
+ gpr_log(GPR_DEBUG, "GRPC_RUBY: grpc_rb_event_unblocking_func - begin aborting connection polling");
+ abort_channel_polling = 1;
+ grpc_completion_queue_shutdown(channel_polling_cq);
+ gpr_mu_unlock(&global_connection_polling_mu);
+}
+
+// Poll channel connectivity states in background thread without the GIL.
+static VALUE run_poll_channels_loop(VALUE arg) {
+ (void)arg;
+ gpr_log(GPR_DEBUG, "GRPC_RUBY: run_poll_channels_loop - create connection polling thread");
+ rb_thread_call_without_gvl(run_poll_channels_loop_no_gil, NULL,
+ grpc_rb_event_unblocking_func, NULL);
+ return Qnil;
+}
+
+/* Temporary fix for
+ * https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/899.
+ * Transports in idle channels can get destroyed. Normally c-core re-connects,
+ * but in grpc-ruby core never gets a thread until an RPC is made, because ruby
+ * only calls c-core's "completion_queu_pluck" API.
+ * This uses a global background thread that calls
+ * "completion_queue_next" on registered "watch_channel_connectivity_state"
+ * calls - so that c-core can reconnect if needed, when there aren't any RPC's.
+ * TODO(apolcyn) remove this when core handles new RPCs on dead connections.
+ */
+static void start_poll_channels_loop() {
+ channel_polling_cq = grpc_completion_queue_create(NULL);
+ gpr_mu_init(&global_connection_polling_mu);
+ abort_channel_polling = 0;
+ rb_thread_create(run_poll_channels_loop, NULL);
+}
+
static void Init_grpc_propagate_masks() {
/* Constants representing call propagation masks in grpc.h */
- VALUE grpc_rb_mPropagateMasks = rb_define_module_under(
- grpc_rb_mGrpcCore, "PropagateMasks");
+ VALUE grpc_rb_mPropagateMasks =
+ rb_define_module_under(grpc_rb_mGrpcCore, "PropagateMasks");
rb_define_const(grpc_rb_mPropagateMasks, "DEADLINE",
UINT2NUM(GRPC_PROPAGATE_DEADLINE));
rb_define_const(grpc_rb_mPropagateMasks, "CENSUS_STATS_CONTEXT",
@@ -353,8 +546,8 @@ static void Init_grpc_propagate_masks() {
static void Init_grpc_connectivity_states() {
/* Constants representing call propagation masks in grpc.h */
- VALUE grpc_rb_mConnectivityStates = rb_define_module_under(
- grpc_rb_mGrpcCore, "ConnectivityStates");
+ VALUE grpc_rb_mConnectivityStates =
+ rb_define_module_under(grpc_rb_mGrpcCore, "ConnectivityStates");
rb_define_const(grpc_rb_mConnectivityStates, "IDLE",
LONG2NUM(GRPC_CHANNEL_IDLE));
rb_define_const(grpc_rb_mConnectivityStates, "CONNECTING",
@@ -382,12 +575,11 @@ void Init_grpc_channel() {
/* Add ruby analogues of the Channel methods. */
rb_define_method(grpc_rb_cChannel, "connectivity_state",
- grpc_rb_channel_get_connectivity_state,
- -1);
+ grpc_rb_channel_get_connectivity_state, -1);
rb_define_method(grpc_rb_cChannel, "watch_connectivity_state",
- grpc_rb_channel_watch_connectivity_state, 4);
- rb_define_method(grpc_rb_cChannel, "create_call",
- grpc_rb_channel_create_call, 5);
+ grpc_rb_channel_watch_connectivity_state, 2);
+ rb_define_method(grpc_rb_cChannel, "create_call", grpc_rb_channel_create_call,
+ 5);
rb_define_method(grpc_rb_cChannel, "target", grpc_rb_channel_get_target, 0);
rb_define_method(grpc_rb_cChannel, "destroy", grpc_rb_channel_destroy, 0);
rb_define_alias(grpc_rb_cChannel, "close", "destroy");
@@ -405,6 +597,7 @@ void Init_grpc_channel() {
id_insecure_channel = rb_intern("this_channel_is_insecure");
Init_grpc_propagate_masks();
Init_grpc_connectivity_states();
+ start_poll_channels_loop();
}
/* Gets the wrapped channel from the ruby wrapper */
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index 3ef6f0eb29..063f92114c 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -91,6 +91,9 @@ grpc_init_type grpc_init_import;
grpc_shutdown_type grpc_shutdown_import;
grpc_version_string_type grpc_version_string_import;
grpc_g_stands_for_type grpc_g_stands_for_import;
+grpc_completion_queue_factory_lookup_type grpc_completion_queue_factory_lookup_import;
+grpc_completion_queue_create_for_next_type grpc_completion_queue_create_for_next_import;
+grpc_completion_queue_create_for_pluck_type grpc_completion_queue_create_for_pluck_import;
grpc_completion_queue_create_type grpc_completion_queue_create_import;
grpc_completion_queue_next_type grpc_completion_queue_next_import;
grpc_completion_queue_pluck_type grpc_completion_queue_pluck_import;
@@ -385,6 +388,9 @@ void grpc_rb_load_imports(HMODULE library) {
grpc_shutdown_import = (grpc_shutdown_type) GetProcAddress(library, "grpc_shutdown");
grpc_version_string_import = (grpc_version_string_type) GetProcAddress(library, "grpc_version_string");
grpc_g_stands_for_import = (grpc_g_stands_for_type) GetProcAddress(library, "grpc_g_stands_for");
+ grpc_completion_queue_factory_lookup_import = (grpc_completion_queue_factory_lookup_type) GetProcAddress(library, "grpc_completion_queue_factory_lookup");
+ grpc_completion_queue_create_for_next_import = (grpc_completion_queue_create_for_next_type) GetProcAddress(library, "grpc_completion_queue_create_for_next");
+ grpc_completion_queue_create_for_pluck_import = (grpc_completion_queue_create_for_pluck_type) GetProcAddress(library, "grpc_completion_queue_create_for_pluck");
grpc_completion_queue_create_import = (grpc_completion_queue_create_type) GetProcAddress(library, "grpc_completion_queue_create");
grpc_completion_queue_next_import = (grpc_completion_queue_next_type) GetProcAddress(library, "grpc_completion_queue_next");
grpc_completion_queue_pluck_import = (grpc_completion_queue_pluck_type) GetProcAddress(library, "grpc_completion_queue_pluck");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index ef9845dfe0..f5dcd68a8e 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -224,6 +224,15 @@ extern grpc_version_string_type grpc_version_string_import;
typedef const char *(*grpc_g_stands_for_type)(void);
extern grpc_g_stands_for_type grpc_g_stands_for_import;
#define grpc_g_stands_for grpc_g_stands_for_import
+typedef const grpc_completion_queue_factory *(*grpc_completion_queue_factory_lookup_type)(const grpc_completion_queue_attributes *attributes);
+extern grpc_completion_queue_factory_lookup_type grpc_completion_queue_factory_lookup_import;
+#define grpc_completion_queue_factory_lookup grpc_completion_queue_factory_lookup_import
+typedef grpc_completion_queue *(*grpc_completion_queue_create_for_next_type)(void *reserved);
+extern grpc_completion_queue_create_for_next_type grpc_completion_queue_create_for_next_import;
+#define grpc_completion_queue_create_for_next grpc_completion_queue_create_for_next_import
+typedef grpc_completion_queue *(*grpc_completion_queue_create_for_pluck_type)(void *reserved);
+extern grpc_completion_queue_create_for_pluck_type grpc_completion_queue_create_for_pluck_import;
+#define grpc_completion_queue_create_for_pluck grpc_completion_queue_create_for_pluck_import
typedef grpc_completion_queue *(*grpc_completion_queue_create_type)(void *reserved);
extern grpc_completion_queue_create_type grpc_completion_queue_create_import;
#define grpc_completion_queue_create grpc_completion_queue_create_import
diff --git a/src/ruby/spec/channel_connection_spec.rb b/src/ruby/spec/channel_connection_spec.rb
new file mode 100644
index 0000000000..940d68b9b0
--- /dev/null
+++ b/src/ruby/spec/channel_connection_spec.rb
@@ -0,0 +1,141 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'grpc'
+
+# A test message
+class EchoMsg
+ def self.marshal(_o)
+ ''
+ end
+
+ def self.unmarshal(_o)
+ EchoMsg.new
+ end
+end
+
+# A test service with an echo implementation.
+class EchoService
+ include GRPC::GenericService
+ rpc :an_rpc, EchoMsg, EchoMsg
+ attr_reader :received_md
+
+ def initialize(**kw)
+ @trailing_metadata = kw
+ @received_md = []
+ end
+
+ def an_rpc(req, call)
+ GRPC.logger.info('echo service received a request')
+ call.output_metadata.update(@trailing_metadata)
+ @received_md << call.metadata unless call.metadata.nil?
+ req
+ end
+end
+
+EchoStub = EchoService.rpc_stub_class
+
+def start_server(port = 0)
+ @srv = GRPC::RpcServer.new
+ server_port = @srv.add_http2_port("localhost:#{port}", :this_port_is_insecure)
+ @srv.handle(EchoService)
+ @server_thd = Thread.new { @srv.run }
+ @srv.wait_till_running
+ server_port
+end
+
+def stop_server
+ expect(@srv.stopped?).to be(false)
+ @srv.stop
+ @server_thd.join
+ expect(@srv.stopped?).to be(true)
+end
+
+describe 'channel connection behavior' do
+ it 'the client channel handles temporary loss of a transport' do
+ port = start_server
+ stub = EchoStub.new("localhost:#{port}", :this_channel_is_insecure)
+ req = EchoMsg.new
+ expect(stub.an_rpc(req)).to be_a(EchoMsg)
+ stop_server
+ sleep 1
+ # TODO(apolcyn) grabbing the same port might fail, is this stable enough?
+ start_server(port)
+ expect(stub.an_rpc(req)).to be_a(EchoMsg)
+ stop_server
+ end
+
+ it 'observably connects and reconnects to transient server' \
+ ' when using the channel state API' do
+ port = start_server
+ ch = GRPC::Core::Channel.new("localhost:#{port}", {},
+ :this_channel_is_insecure)
+
+ expect(ch.connectivity_state).to be(GRPC::Core::ConnectivityStates::IDLE)
+
+ state = ch.connectivity_state(true)
+
+ count = 0
+ while count < 20 && state != GRPC::Core::ConnectivityStates::READY
+ ch.watch_connectivity_state(state, Time.now + 60)
+ state = ch.connectivity_state(true)
+ count += 1
+ end
+
+ expect(state).to be(GRPC::Core::ConnectivityStates::READY)
+
+ stop_server
+
+ state = ch.connectivity_state
+
+ count = 0
+ while count < 20 && state == GRPC::Core::ConnectivityStates::READY
+ ch.watch_connectivity_state(state, Time.now + 60)
+ state = ch.connectivity_state
+ count += 1
+ end
+
+ expect(state).to_not be(GRPC::Core::ConnectivityStates::READY)
+
+ start_server(port)
+
+ state = ch.connectivity_state(true)
+
+ count = 0
+ while count < 20 && state != GRPC::Core::ConnectivityStates::READY
+ ch.watch_connectivity_state(state, Time.now + 60)
+ state = ch.connectivity_state(true)
+ count += 1
+ end
+
+ expect(state).to be(GRPC::Core::ConnectivityStates::READY)
+
+ stop_server
+ end
+end
diff --git a/src/ruby/spec/channel_spec.rb b/src/ruby/spec/channel_spec.rb
index 740eac631a..a289a00f04 100644
--- a/src/ruby/spec/channel_spec.rb
+++ b/src/ruby/spec/channel_spec.rb
@@ -153,6 +153,35 @@ describe GRPC::Core::Channel do
end
end
+ describe '#connectivity_state' do
+ it 'returns an enum' do
+ ch = GRPC::Core::Channel.new(fake_host, nil, :this_channel_is_insecure)
+ valid_states = [
+ GRPC::Core::ConnectivityStates::IDLE,
+ GRPC::Core::ConnectivityStates::CONNECTING,
+ GRPC::Core::ConnectivityStates::READY,
+ GRPC::Core::ConnectivityStates::TRANSIENT_FAILURE,
+ GRPC::Core::ConnectivityStates::FATAL_FAILURE
+ ]
+
+ expect(valid_states).to include(ch.connectivity_state)
+ end
+
+ it 'returns an enum when trying to connect' do
+ ch = GRPC::Core::Channel.new(fake_host, nil, :this_channel_is_insecure)
+ ch.connectivity_state(true)
+ valid_states = [
+ GRPC::Core::ConnectivityStates::IDLE,
+ GRPC::Core::ConnectivityStates::CONNECTING,
+ GRPC::Core::ConnectivityStates::READY,
+ GRPC::Core::ConnectivityStates::TRANSIENT_FAILURE,
+ GRPC::Core::ConnectivityStates::FATAL_FAILURE
+ ]
+
+ expect(valid_states).to include(ch.connectivity_state)
+ end
+ end
+
describe '::SSL_TARGET' do
it 'is a symbol' do
expect(GRPC::Core::Channel::SSL_TARGET).to be_a(Symbol)
diff --git a/templates/CMakeLists.txt.template b/templates/CMakeLists.txt.template
index 1c2ef0a9c1..e2fc216bca 100644
--- a/templates/CMakeLists.txt.template
+++ b/templates/CMakeLists.txt.template
@@ -40,17 +40,17 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<%!
-
+
import re
-
+
proto_re = re.compile('(.*)\\.proto')
-
+
def proto_replace_ext(filename, ext):
m = proto_re.match(filename)
if not m:
return filename
return '${_gRPC_PROTO_GENS_DIR}/' + m.group(1) + ext
-
+
def get_deps(target_dict):
deps = []
if target_dict.get('baselib', False):
@@ -63,19 +63,20 @@
deps.append("${_gRPC_PROTOBUF_LIBRARIES}")
if target_dict['name'] in ['grpc']:
deps.append("${_gRPC_ZLIB_LIBRARIES}")
+ deps.append("${_gRPC_CARES_LIBRARIES}")
deps.append("${_gRPC_ALLTARGETS_LIBRARIES}")
for d in target_dict.get('deps', []):
deps.append(d)
if target_dict.build == 'test' and target_dict.language == 'c++':
deps.append("${_gRPC_GFLAGS_LIBRARIES}")
return deps
-
+
def get_platforms_condition_begin(platforms):
if all(platform in platforms for platform in ['linux', 'mac', 'posix', 'windows']):
return ''
cond = ' OR '.join(['_gRPC_PLATFORM_%s' % platform.upper() for platform in platforms])
return 'if(%s)\n' % cond
-
+
def get_platforms_condition_end(platforms):
if not get_platforms_condition_begin(platforms):
return ''
@@ -90,7 +91,7 @@
set(PACKAGE_TARNAME "<%text>${PACKAGE_NAME}-${PACKAGE_VERSION}</%text>")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
project(<%text>${PACKAGE_NAME}</%text> C CXX)
-
+
# Options
option(gRPC_BUILD_TESTS "Build tests" OFF)
@@ -103,18 +104,21 @@
set(gRPC_ZLIB_PROVIDER "module" CACHE STRING "Provider of zlib library")
set_property(CACHE gRPC_ZLIB_PROVIDER PROPERTY STRINGS "module" "package")
+ set(gRPC_CARES_PROVIDER "module" CACHE STRING "Provider of c-ares library")
+ set_property(CACHE gRPC_CARES_PROVIDER PROPERTY STRINGS "module" "package")
+
set(gRPC_SSL_PROVIDER "module" CACHE STRING "Provider of ssl library")
set_property(CACHE gRPC_SSL_PROVIDER PROPERTY STRINGS "module" "package")
set(gRPC_PROTOBUF_PROVIDER "module" CACHE STRING "Provider of protobuf library")
set_property(CACHE gRPC_PROTOBUF_PROVIDER PROPERTY STRINGS "module" "package")
-
+
set(gRPC_GFLAGS_PROVIDER "module" CACHE STRING "Provider of gflags library")
set_property(CACHE gRPC_GFLAGS_PROVIDER PROPERTY STRINGS "module" "package")
-
+
set(gRPC_BENCHMARK_PROVIDER "module" CACHE STRING "Provider of benchmark library")
set_property(CACHE gRPC_BENCHMARK_PROVIDER PROPERTY STRINGS "module" "package")
-
+
set(gRPC_USE_PROTO_LITE OFF CACHE BOOL "Use the protobuf-lite library")
if(UNIX)
@@ -129,7 +133,7 @@
if(WIN32)
set(_gRPC_PLATFORM_WINDOWS ON)
endif()
-
+
## Some libraries are shared even with BUILD_SHARED_LIBRARIES=OFF
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
@@ -170,6 +174,37 @@
set(_gRPC_FIND_ZLIB "if(NOT ZLIB_FOUND)\n find_package(ZLIB)\nendif()")
endif()
+ if("<%text>${gRPC_CARES_PROVIDER}</%text>" STREQUAL "module")
+ if(NOT CARES_ROOT_DIR)
+ set(CARES_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/src/c-ares)
+ endif()
+ string(TOLOWER <%text>${CMAKE_SYSTEM_NAME}</%text> CARES_SYSTEM_NAME)
+ set(CARES_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/cares")
+ set(CARES_BUILD_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares")
+ set(CARES_PLATFORM_INCLUDE_DIR "<%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/cares/config_<%text>${CARES_SYSTEM_NAME}</%text>")
+ if(EXISTS "<%text>${CARES_ROOT_DIR}</%text>/CMakeLists.txt")
+ if("<%text>${CARES_SYSTEM_NAME}</%text>" MATCHES "windows")
+ add_definitions(-DCARES_STATICLIB=1)
+ add_definitions(-DWIN32_LEAN_AND_MEAN=1)
+ else()
+ add_definitions(-DHAVE_CONFIG_H=1)
+ add_definitions(-D_GNU_SOURCE=1)
+ endif()
+ add_subdirectory(src/c-ares third_party/cares)
+ if(TARGET cares)
+ set(_gRPC_CARES_LIBRARIES cares)
+ endif()
+ else()
+ message(WARNING "gRPC_CARES_PROVIDER is \"module\" but CARES_ROOT_DIR is wrong")
+ endif()
+ elseif("<%text>${gRPC_CARES_PROVIDER}</%text>" STREQUAL "package")
+ find_package(CARES)
+ if(TARGET CARES::CARES)
+ set(_gRPC_CARES_LIBRARIES CARES::CARES)
+ endif()
+ set(_gRPC_FIND_CARES "if(NOT CARES_FOUND)\n find_package(CARES)\nendif()")
+ endif()
+
if("<%text>${gRPC_PROTOBUF_PROVIDER}</%text>" STREQUAL "module")
# Building the protobuf tests require gmock what is not part of a standard protobuf checkout.
# Disable them unless they are explicitly requested from the cmake command line (when we assume
@@ -234,7 +269,7 @@
endif()
set(_gRPC_FIND_SSL "if(NOT OpenSSL_FOUND)\n find_package(OpenSSL)\nendif()")
endif()
-
+
if("<%text>${gRPC_GFLAGS_PROVIDER}</%text>" STREQUAL "module")
if(NOT GFLAGS_ROOT_DIR)
set(GFLAGS_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/gflags)
@@ -254,7 +289,7 @@
endif()
set(_gRPC_FIND_GFLAGS "if(NOT gflags_FOUND)\n find_package(gflags)\nendif()")
endif()
-
+
if("<%text>${gRPC_BENCHMARK_PROVIDER}</%text>" STREQUAL "module")
if(NOT BENCHMARK_ROOT_DIR)
set(BENCHMARK_ROOT_DIR <%text>${CMAKE_CURRENT_SOURCE_DIR}</%text>/third_party/benchmark)
@@ -292,11 +327,11 @@
if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR)
set(CMAKE_INSTALL_CMAKEDIR "<%text>${CMAKE_INSTALL_LIBDIR}</%text>/cmake/gRPC")
endif()
-
+
# Create directory for generated .proto files
set(_gRPC_PROTO_GENS_DIR <%text>${CMAKE_BINARY_DIR}/gens</%text>)
file(MAKE_DIRECTORY <%text>${_gRPC_PROTO_GENS_DIR}</%text>)
-
+
# protobuf_generate_grpc_cpp
# --------------------------
#
@@ -313,7 +348,7 @@
message(SEND_ERROR "Error: PROTOBUF_GENERATE_GRPC_CPP() called without any proto files")
return()
endif()
-
+
set(_protobuf_include_path -I .)
foreach(FIL <%text>${ARGN}</%text>)
get_filename_component(ABS_FIL <%text>${FIL}</%text> ABSOLUTE)
@@ -321,7 +356,7 @@
file(RELATIVE_PATH REL_FIL <%text>${CMAKE_SOURCE_DIR}</%text> <%text>${ABS_FIL}</%text>)
get_filename_component(REL_DIR <%text>${REL_FIL}</%text> DIRECTORY)
set(RELFIL_WE "<%text>${REL_DIR}/${FIL_WE}</%text>")
-
+
add_custom_command(
OUTPUT <%text>"${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.cc"</%text>
<%text>"${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.h"</%text>
@@ -337,11 +372,11 @@
WORKING_DIRECTORY <%text>${CMAKE_SOURCE_DIR}</%text>
COMMENT "Running gRPC C++ protocol buffer compiler on <%text>${FIL}</%text>"
VERBATIM)
-
+
<%text>set_source_files_properties("${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.cc" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.grpc.pb.h" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.pb.cc" "${_gRPC_PROTO_GENS_DIR}/${RELFIL_WE}.pb.h" PROPERTIES GENERATED TRUE)</%text>
endforeach()
endfunction()
-
+
add_custom_target(plugins
DEPENDS
% for tgt in targets:
@@ -350,7 +385,7 @@
% endif
% endfor
)
-
+
add_custom_target(tools_c
DEPENDS
% for tgt in targets:
@@ -359,7 +394,7 @@
% endif
% endfor
)
-
+
add_custom_target(tools_cxx
DEPENDS
% for tgt in targets:
@@ -368,10 +403,10 @@
% endif
% endfor
)
-
+
add_custom_target(tools
DEPENDS tools_c tools_cxx)
-
+
if (gRPC_BUILD_TESTS)
add_custom_target(buildtests_c)
% for tgt in targets:
@@ -381,7 +416,7 @@
${get_platforms_condition_end(tgt.platforms)}\
% endif
% endfor
-
+
add_custom_target(buildtests_cxx)
% for tgt in targets:
% if tgt.build == 'test' and tgt.language == 'c++' and not tgt.get('external_deps', None) and not tgt.boringssl:
@@ -390,11 +425,11 @@
${get_platforms_condition_end(tgt.platforms)}\
% endif
% endfor
-
+
add_custom_target(buildtests
DEPENDS buildtests_c buildtests_cxx)
endif (gRPC_BUILD_TESTS)
-
+
% for lib in libs:
% if lib.build in ["all", "protoc", "tool", "test", "private"] and not lib.boringssl:
% if not lib.get('build_system', []) or 'cmake' in lib.get('build_system', []):
@@ -470,6 +505,10 @@
PRIVATE <%text>${ZLIB_INCLUDE_DIR}</%text>
PRIVATE <%text>${BENCHMARK}</%text>/include
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
+ PRIVATE <%text>${CARES_BUILD_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CARES_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CARES_PLATFORM_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/cares/cares
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
% if lib.build in ['test', 'private'] and lib.language == 'c++':
PRIVATE third_party/googletest/include
@@ -519,7 +558,7 @@
third_party/googletest/src/gtest-all.cc
% endif
)
-
+
% for src in tgt.src:
% if proto_re.match(src):
protobuf_generate_grpc_cpp(
@@ -536,6 +575,10 @@
PRIVATE <%text>${BENCHMARK_ROOT_DIR}</%text>/include
PRIVATE <%text>${ZLIB_ROOT_DIR}</%text>
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/zlib
+ PRIVATE <%text>${CARES_BUILD_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CARES_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CARES_PLATFORM_INCLUDE_DIR}</%text>
+ PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/cares/cares
PRIVATE <%text>${CMAKE_CURRENT_BINARY_DIR}</%text>/third_party/gflags/include
% if tgt.build in ['test', 'private'] and tgt.language == 'c++':
PRIVATE third_party/googletest/include
diff --git a/templates/Makefile.template b/templates/Makefile.template
index f81d643991..3ea69f8ca5 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -405,7 +405,7 @@
SHARED_VERSION_CPP = -${settings.cpp_version.major}
SHARED_VERSION_CSHARP = -${settings.csharp_version.major}
else ifeq ($(SYSTEM),Darwin)
- EXECUTABLE_SUFFIX =
+ EXECUTABLE_SUFFIX =
SHARED_EXT_CORE = dylib
SHARED_EXT_CPP = dylib
SHARED_EXT_CSHARP = dylib
@@ -414,7 +414,7 @@
SHARED_VERSION_CPP =
SHARED_VERSION_CSHARP =
else
- EXECUTABLE_SUFFIX =
+ EXECUTABLE_SUFFIX =
SHARED_EXT_CORE = so.$(CORE_VERSION)
SHARED_EXT_CPP = so.$(CPP_VERSION)
SHARED_EXT_CSHARP = so.$(CSHARP_VERSION)
@@ -435,6 +435,7 @@
OPENSSL_NPN_CHECK_CMD = $(PKG_CONFIG) --atleast-version=1.0.1 openssl
ZLIB_CHECK_CMD = $(PKG_CONFIG) --exists zlib
PROTOBUF_CHECK_CMD = $(PKG_CONFIG) --atleast-version=3.0.0 protobuf
+ CARES_CHECK_CMD = $(PKG_CONFIG) --exists libcares
else # HAS_PKG_CONFIG
ifeq ($(SYSTEM),MINGW32)
@@ -448,6 +449,7 @@
BORINGSSL_COMPILE_CHECK_CMD = $(CC) $(CPPFLAGS) ${defaults.boringssl.CPPFLAGS} $(CFLAGS) ${defaults.boringssl.CFLAGS} -o $(TMPOUT) test/build/boringssl.c $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/zlib.c -lz $(LDFLAGS)
PROTOBUF_CHECK_CMD = $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(TMPOUT) test/build/protobuf.cc -lprotobuf $(LDFLAGS)
+ CARES_CHECK_CMD = $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(TMPOUT) test/build/c-ares.c -lcares $(LDFLAGS)
endif # HAS_PKG_CONFIG
@@ -487,12 +489,17 @@
ifeq ($(HAS_SYSTEM_PROTOBUF),true)
CACHE_MK += HAS_SYSTEM_PROTOBUF = true,
endif
+ HAS_SYSTEM_CARES ?= $(shell $(CARES_CHECK_CMD) 2> /dev/null && echo true || echo false)
+ ifeq ($(HAS_SYSTEM_CARES),true)
+ CACHE_MK += HAS_SYSTEM_CARES = true,
+ endif
else
# override system libraries if the config requires a custom compiled library
HAS_SYSTEM_OPENSSL_ALPN = false
HAS_SYSTEM_OPENSSL_NPN = false
HAS_SYSTEM_ZLIB = false
HAS_SYSTEM_PROTOBUF = false
+ HAS_SYSTEM_CARES = false
endif
HAS_PROTOC ?= $(shell $(PROTOC_CHECK_CMD) 2> /dev/null && echo true || echo false)
@@ -551,6 +558,12 @@
HAS_EMBEDDED_PROTOBUF = true
endif
+ ifeq ($(wildcard third_party/cares/cares/ares.h),)
+ HAS_EMBEDDED_CARES = false
+ else
+ HAS_EMBEDDED_CARES = true
+ endif
+
PC_REQUIRES_GRPC =
PC_LIBS_GRPC =
@@ -583,6 +596,37 @@
endif
endif
+ CARES_PKG_CONFIG = false
+
+ ifeq ($(HAS_SYSTEM_CARES),false)
+ ifeq ($(HAS_EMBEDDED_CARES), true)
+ EMBED_CARES ?= true
+ else
+ DEP_MISSING += cares
+ EMBED_CARES ?= broken
+ endif
+ else
+ EMBED_CARES ?= false
+ endif
+
+ ifeq ($(EMBED_CARES),true)
+ CARES_DEP = $(LIBDIR)/$(CONFIG)/libares.a
+ CARES_MERGE_OBJS = $(LIBARES_OBJS)
+ CARES_MERGE_LIBS = $(LIBDIR)/$(CONFIG)/libares.a
+ CPPFLAGS := -Ithird_party/cares -Ithird_party/cares/cares $(CPPFLAGS)
+ LDFLAGS := -L$(LIBDIR)/$(CONFIG)/c-ares $(LDFLAGS)
+ else
+ ifeq ($(HAS_PKG_CONFIG),true)
+ PC_REQUIRES_GRPC += libcares
+ CPPFLAGS += $(shell $(PKG_CONFIG) --cflags libcares)
+ LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libcares)
+ LIBS += $(patsubst -l%,%,$(shell $(PKG_CONFIG) --libs-only-l libcares))
+ else
+ PC_LIBS_GRPC += -lcares
+ LIBS += cares
+ endif
+ endif
+
OPENSSL_PKG_CONFIG = false
PC_REQUIRES_SECURE =
@@ -864,6 +908,7 @@
$(PERFTOOLS_CHECK_CMD) || true
$(PROTOBUF_CHECK_CMD) || true
$(PROTOC_CHECK_VERSION_CMD) || true
+ $(CARES_CHECK_CMD) || true
third_party/protobuf/configure:
$(E) "[AUTOGEN] Preparing protobuf"
@@ -1453,6 +1498,9 @@
% if lib.name != 'z':
$(ZLIB_DEP) \
% endif
+ % if lib.name != 'ares':
+ $(CARES_DEP) \
+ % endif
% endif
% if lib.language == 'c++':
$(PROTOBUF_DEP)\
@@ -1461,6 +1509,7 @@
% if lib.get('baselib', False):
$(LIBGPR_OBJS) \
$(ZLIB_MERGE_OBJS) \
+ $(CARES_MERGE_OBJS) \
% if lib.get('secure', 'check') == True:
$(OPENSSL_MERGE_OBJS) \
% endif
@@ -1473,6 +1522,7 @@
% if lib.get('baselib', False):
$(LIBGPR_OBJS) \
$(ZLIB_MERGE_OBJS) \
+ $(CARES_MERGE_OBJS) \
% if lib.get('secure', 'check') == True:
$(OPENSSL_MERGE_OBJS) \
% endif
@@ -1495,9 +1545,9 @@
common = '$(LIB' + lib.name.upper() + '_OBJS)'
link_libs = ''
- lib_deps = ' $(ZLIB_DEP)'
+ lib_deps = ' $(ZLIB_DEP) $(CARES_DEP)'
mingw_libs = ''
- mingw_lib_deps = ' $(ZLIB_DEP)'
+ mingw_lib_deps = ' $(ZLIB_DEP) $(CARES_DEP)'
if lib.language == 'c++':
lib_deps += ' $(PROTOBUF_DEP)'
mingw_lib_deps += ' $(PROTOBUF_DEP)'
@@ -1522,7 +1572,7 @@
security = lib.get('secure', 'check')
if security == True:
common = common + ' $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE)'
- common = common + ' $(ZLIB_MERGE_LIBS)'
+ common = common + ' $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS)'
if security in [True, 'check']:
for src in lib.src:
diff --git a/templates/binding.gyp.template b/templates/binding.gyp.template
index 5e401e8977..5ac97d235e 100644
--- a/templates/binding.gyp.template
+++ b/templates/binding.gyp.template
@@ -41,11 +41,9 @@
{
'variables': {
'runtime%': 'node',
- # UV integration in C core is disabled by default while bugs are ironed
- # out. It can be re-enabled for one build by setting the npm config
- # variable grpc_uv to true, and it can be re-enabled permanently by
- # setting it to true here.
- 'grpc_uv%': 'false',
+ # UV integration in C core is enabled by default. It can be disabled
+ # by setting this argument to anything else.
+ 'grpc_uv%': 'true',
# Some Node installations use the system installation of OpenSSL, and on
# some systems, the system OpenSSL still does not have ALPN support. This
# will let users recompile gRPC to work without ALPN.
@@ -62,6 +60,9 @@
'conditions': [
['grpc_uv=="true"', {
'defines': [
+ 'GRPC_ARES=0',
+ # Disabling this while bugs are ironed out. Uncomment this to
+ # re-enable libuv integration in C core.
'GRPC_UV'
]
}],
@@ -107,7 +108,8 @@
}],
['OS == "win"', {
"include_dirs": [
- "third_party/zlib"
+ "third_party/zlib",
+ "third_party/cares/cares"
],
"defines": [
'_WIN32_WINNT=0x0600',
@@ -130,7 +132,8 @@
'config': '<!(echo $CONFIG)',
},
'include_dirs': [
- '<(node_root_dir)/deps/zlib'
+ '<(node_root_dir)/deps/zlib',
+ '<(node_root_dir)/deps/cares/include',
],
'conditions': [
['config=="gcov"', {
@@ -236,6 +239,13 @@
}]
],
'targets': [
+ <%
+ for lib in libs:
+ if 'grpc' in lib.transitive_deps or lib.name == 'grpc':
+ lib.deps.append('node_modules/cares/deps/cares/cares.gyp:cares')
+ for module in node_modules:
+ module.deps.append('node_modules/cares/deps/cares/cares.gyp:cares')
+ %>
% for module in node_modules:
% for lib in libs:
% if lib.name in module.transitive_deps and lib.name not in ('boringssl', 'z'):
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index 9ed32e31cf..cbebc5d005 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -78,7 +78,7 @@
:submodules => true,
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
s.requires_arc = false
@@ -131,6 +131,7 @@
}
s.default_subspecs = 'Interface', 'Implementation'
+ s.compiler_flags = '-DGRPC_ARES=0'
# Like many other C libraries, gRPC-Core has its public headers under `include/<libname>/` and its
# sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't
@@ -161,8 +162,7 @@
s.subspec 'Cronet-Interface' do |ss|
ss.header_mappings_dir = 'include/grpc'
- ss.source_files = 'include/grpc/grpc_cronet.h',
- 'src/core/ext/transport/cronet/transport/cronet_transport.h'
+ ss.source_files = 'include/grpc/grpc_cronet.h'
end
s.subspec 'Cronet-Implementation' do |ss|
@@ -173,7 +173,7 @@
ss.dependency "#{s.name}/Cronet-Interface", version
ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
- 'src/core/ext/transport/cronet/transport/cronet_transport.c',
+ 'src/core/ext/transport/cronet/transport/cronet_transport.{c,h}',
'third_party/objective_c/Cronet/bidirectional_stream_c.h'
end
@@ -188,7 +188,7 @@
'test/core/end2end/end2end_test_utils.c',
'test/core/end2end/tests/*.{c,h}',
'test/core/end2end/data/*.{c,h}',
- 'test/core/util/debugger_macros.c',
+ 'test/core/util/debugger_macros.{c,h}',
'test/core/util/test_config.{c,h}',
'test/core/util/port.h',
'test/core/util/port.c',
diff --git a/templates/gRPC-ProtoRPC.podspec.template b/templates/gRPC-ProtoRPC.podspec.template
index 5d7d90d231..47b22dd2a5 100644
--- a/templates/gRPC-ProtoRPC.podspec.template
+++ b/templates/gRPC-ProtoRPC.podspec.template
@@ -50,7 +50,7 @@
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'ProtoRPC'
diff --git a/templates/gRPC-RxLibrary.podspec.template b/templates/gRPC-RxLibrary.podspec.template
index 35a06c8a85..48f0df8f9e 100644
--- a/templates/gRPC-RxLibrary.podspec.template
+++ b/templates/gRPC-RxLibrary.podspec.template
@@ -50,7 +50,7 @@
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'RxLibrary'
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index d33ce277dc..ce473608dd 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -49,7 +49,7 @@
:tag => "v#{version}",
}
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
name = 'GRPCClient'
diff --git a/templates/package.json.template b/templates/package.json.template
index 316c28e478..d093883cf5 100644
--- a/templates/package.json.template
+++ b/templates/package.json.template
@@ -26,7 +26,7 @@
"electron-build": "./node_modules/.bin/node-pre-gyp configure build --runtime=electron --disturl=https://atom.io/download/atom-shell",
"gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
- "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build"
+ "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build --library=static_library"
},
"bundledDependencies": [
"node-pre-gyp"
@@ -36,7 +36,8 @@
"lodash": "^4.15.0",
"nan": "^2.0.0",
"node-pre-gyp": "^0.6.0",
- "protobufjs": "^5.0.0"
+ "protobufjs": "^5.0.0",
+ "cares": "^1.1.5"
},
"devDependencies": {
"async": "^2.0.1",
@@ -54,7 +55,7 @@
"poisson-process": "^0.2.1"
},
"engines": {
- "node": ">=1.1.0"
+ "node": ">=4"
},
"binary": {
"module_name": "grpc_node",
diff --git a/templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.template b/templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.template
index 3a10cfab3c..d7d84f3c77 100644
--- a/templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.template
+++ b/templates/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec.template
@@ -103,9 +103,9 @@
s.preserve_paths = plugin
# Restrict the protoc version to the one supported by this plugin.
- s.dependency '!ProtoCompiler', '3.1.0'
+ s.dependency '!ProtoCompiler', '3.2.0'
# For the Protobuf dependency not to complain:
- s.ios.deployment_target = '7.1'
+ s.ios.deployment_target = '7.0'
s.osx.deployment_target = '10.9'
# Restrict the gRPC runtime version to the one supported by this plugin.
s.dependency 'gRPC-ProtoRPC', v
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
index 6204c3e2cb..12b9984425 100644
--- a/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
@@ -33,7 +33,7 @@
<%include file="../../go_path.include"/>
<%include file="../../python_deps.include"/>
- RUN pip install twisted h2
+ RUN pip install twisted h2 hyper
# Define the default command.
CMD ["bash"]
diff --git a/src/core/ext/client_channel/default_initial_connect_string.c b/test/build/c-ares.c
index 6db82d84ef..c954e9397f 100644
--- a/src/core/ext/client_channel/default_initial_connect_string.c
+++ b/test/build/c-ares.c
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2016, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,8 +31,13 @@
*
*/
-#include <grpc/slice.h>
-#include "src/core/lib/iomgr/resolve_address.h"
+#include <ares.h>
-void grpc_set_default_initial_connect_string(grpc_resolved_address **addr,
- grpc_slice *initial_str) {}
+int main(void) {
+ ares_channel channelptr;
+
+ ares_init(&channelptr);
+ ares_destroy(channelptr);
+
+ return 0;
+}
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c
index fdedfe284e..4870dc1a53 100644
--- a/test/core/bad_client/bad_client.c
+++ b/test/core/bad_client/bad_client.c
@@ -163,8 +163,9 @@ void grpc_run_bad_client_test(
gpr_event_wait(&a.done_write, grpc_timeout_seconds_to_deadline(5)));
if (flags & GRPC_BAD_CLIENT_DISCONNECT) {
- grpc_endpoint_shutdown(&exec_ctx, sfd.client,
- GRPC_ERROR_CREATE("Forced Disconnect"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, sfd.client,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Disconnect"));
grpc_endpoint_destroy(&exec_ctx, sfd.client);
grpc_exec_ctx_finish(&exec_ctx);
sfd.client = NULL;
@@ -190,8 +191,9 @@ void grpc_run_bad_client_test(
grpc_slice_buffer_destroy_internal(&exec_ctx, &args.incoming);
}
// Shutdown.
- grpc_endpoint_shutdown(&exec_ctx, sfd.client,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, sfd.client,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
grpc_endpoint_destroy(&exec_ctx, sfd.client);
grpc_exec_ctx_finish(&exec_ctx);
}
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c
index 76bb57346c..af551c4928 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.c
@@ -68,7 +68,7 @@ static void channel_destroy_func(grpc_exec_ctx *exec_ctx,
static void call_destroy_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *ignored) {
+ grpc_closure *ignored) {
++*(int *)(elem->channel_data);
}
@@ -139,10 +139,16 @@ static void test_create_channel_stack(void) {
GPR_ASSERT(*channel_data == 0);
call_stack = gpr_malloc(channel_stack->call_stack_size);
- grpc_error *error =
- grpc_call_stack_init(&exec_ctx, channel_stack, 1, free_call, call_stack,
- NULL, NULL, path, gpr_now(GPR_CLOCK_MONOTONIC),
- gpr_inf_future(GPR_CLOCK_MONOTONIC), call_stack);
+ const grpc_call_element_args args = {
+ .call_stack = call_stack,
+ .server_transport_data = NULL,
+ .context = NULL,
+ .path = path,
+ .start_time = gpr_now(GPR_CLOCK_MONOTONIC),
+ .deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC),
+ .arena = NULL};
+ grpc_error *error = grpc_call_stack_init(&exec_ctx, channel_stack, 1,
+ free_call, call_stack, &args);
GPR_ASSERT(error == GRPC_ERROR_NONE);
GPR_ASSERT(call_stack->count == 1);
call_elem = grpc_call_stack_element(call_stack, 0);
diff --git a/test/core/client_channel/BUILD b/test/core/client_channel/BUILD
index a29e9aca4e..55a74c6d01 100644
--- a/test/core/client_channel/BUILD
+++ b/test/core/client_channel/BUILD
@@ -45,10 +45,3 @@ cc_test(
deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:cq_verifier"],
copts = ['-std=c99']
)
-
-cc_test(
- name = "set_initial_connect_string_test",
- srcs = ["set_initial_connect_string_test.c"],
- deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
- copts = ['-std=c99']
-)
diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
index 187757d5b3..8449afcbbe 100644
--- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
+++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
@@ -48,22 +48,26 @@ static gpr_mu g_mu;
static bool g_fail_resolution = true;
static grpc_combiner *g_combiner;
-static grpc_error *my_resolve_address(const char *name, const char *addr,
- grpc_resolved_addresses **addrs) {
+static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
+ const char *default_port,
+ grpc_pollset_set *interested_parties,
+ grpc_closure *on_done,
+ grpc_resolved_addresses **addrs) {
gpr_mu_lock(&g_mu);
- GPR_ASSERT(0 == strcmp("test", name));
+ GPR_ASSERT(0 == strcmp("test", addr));
+ grpc_error *error = GRPC_ERROR_NONE;
if (g_fail_resolution) {
g_fail_resolution = false;
gpr_mu_unlock(&g_mu);
- return GRPC_ERROR_CREATE("Forced Failure");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Failure");
} else {
gpr_mu_unlock(&g_mu);
*addrs = gpr_malloc(sizeof(**addrs));
(*addrs)->naddrs = 1;
(*addrs)->addrs = gpr_malloc(sizeof(*(*addrs)->addrs));
(*addrs)->addrs[0].len = 123;
- return GRPC_ERROR_NONE;
}
+ grpc_closure_sched(exec_ctx, on_done, error);
}
static grpc_resolver *create_resolver(grpc_exec_ctx *exec_ctx,
@@ -135,7 +139,7 @@ int main(int argc, char **argv) {
grpc_init();
gpr_mu_init(&g_mu);
g_combiner = grpc_combiner_create(NULL);
- grpc_blocking_resolve_address = my_resolve_address;
+ grpc_resolve_address = my_resolve_address;
grpc_channel_args *result = (grpc_channel_args *)1;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
diff --git a/test/core/client_channel/set_initial_connect_string_test.c b/test/core/client_channel/set_initial_connect_string_test.c
deleted file mode 100644
index a0a33667cc..0000000000
--- a/test/core/client_channel/set_initial_connect_string_test.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/* With the addition of a libuv endpoint, sockaddr.h now includes uv.h when
- using that endpoint. Because of various transitive includes in uv.h,
- including windows.h on Windows, uv.h must be included before other system
- headers. Therefore, sockaddr.h must always be included first */
-#include "src/core/lib/iomgr/sockaddr.h"
-
-#include <string.h>
-
-#include <grpc/grpc.h>
-#include <grpc/slice.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/host_port.h>
-#include <grpc/support/log.h>
-#include <grpc/support/thd.h>
-
-#include "src/core/ext/client_channel/initial_connect_string.h"
-#include "src/core/lib/iomgr/sockaddr.h"
-#include "src/core/lib/security/credentials/fake/fake_credentials.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-#include "src/core/lib/support/string.h"
-#include "test/core/util/port.h"
-#include "test/core/util/test_config.h"
-#include "test/core/util/test_tcp_server.h"
-
-struct rpc_state {
- char *target;
- grpc_channel_credentials *creds;
- grpc_completion_queue *cq;
- grpc_channel *channel;
- grpc_call *call;
- grpc_op op;
- grpc_slice_buffer incoming_buffer;
- grpc_slice_buffer temp_incoming_buffer;
- grpc_endpoint *tcp;
- gpr_atm done_atm;
-};
-
-static const char *magic_connect_string = "magic initial string";
-static int server_port;
-static struct rpc_state state;
-static grpc_closure on_read;
-
-static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
- GPR_ASSERT(error == GRPC_ERROR_NONE);
- grpc_slice_buffer_move_into(&state.temp_incoming_buffer,
- &state.incoming_buffer);
- gpr_log(GPR_DEBUG, "got %" PRIuPTR " bytes, magic is %" PRIuPTR " bytes",
- state.incoming_buffer.length, strlen(magic_connect_string));
- if (state.incoming_buffer.length > strlen(magic_connect_string)) {
- gpr_atm_rel_store(&state.done_atm, 1);
- grpc_endpoint_shutdown(
- exec_ctx, state.tcp,
- GRPC_ERROR_CREATE("Incoming buffer longer than magic_connect_string"));
- grpc_endpoint_destroy(exec_ctx, state.tcp);
- } else {
- grpc_endpoint_read(exec_ctx, state.tcp, &state.temp_incoming_buffer,
- &on_read);
- }
-}
-
-static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
- grpc_pollset *accepting_pollset,
- grpc_tcp_server_acceptor *acceptor) {
- gpr_free(acceptor);
- test_tcp_server *server = arg;
- grpc_closure_init(&on_read, handle_read, NULL, grpc_schedule_on_exec_ctx);
- grpc_slice_buffer_init(&state.incoming_buffer);
- grpc_slice_buffer_init(&state.temp_incoming_buffer);
- state.tcp = tcp;
- grpc_endpoint_add_to_pollset(exec_ctx, tcp, server->pollset);
- grpc_endpoint_read(exec_ctx, tcp, &state.temp_incoming_buffer, &on_read);
-}
-
-static void set_magic_initial_string(grpc_resolved_address **addr,
- grpc_slice *connect_string) {
- GPR_ASSERT(addr);
- GPR_ASSERT((*addr)->len);
- *connect_string = grpc_slice_from_copied_string(magic_connect_string);
-}
-
-static void reset_addr_and_set_magic_string(grpc_resolved_address **addr,
- grpc_slice *connect_string) {
- struct sockaddr_in target;
- *connect_string = grpc_slice_from_copied_string(magic_connect_string);
- gpr_free(*addr);
- target.sin_family = AF_INET;
- target.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- target.sin_port = htons((uint16_t)server_port);
- *addr = (grpc_resolved_address *)gpr_malloc(sizeof(grpc_resolved_address));
- (*addr)->len = sizeof(target);
- memcpy((*addr)->addr, &target, sizeof(target));
-}
-
-static gpr_timespec n_sec_deadline(int seconds) {
- return gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
- gpr_time_from_seconds(seconds, GPR_TIMESPAN));
-}
-
-static void start_rpc(int use_creds, int target_port) {
- state.cq = grpc_completion_queue_create(NULL);
- if (use_creds) {
- state.creds = grpc_fake_transport_security_credentials_create();
- } else {
- state.creds = NULL;
- }
- gpr_join_host_port(&state.target, "127.0.0.1", target_port);
- if (use_creds) {
- state.channel =
- grpc_secure_channel_create(state.creds, state.target, NULL, NULL);
- } else {
- state.channel = grpc_insecure_channel_create(state.target, NULL, NULL);
- }
- grpc_slice host = grpc_slice_from_static_string("localhost");
- state.call = grpc_channel_create_call(
- state.channel, NULL, GRPC_PROPAGATE_DEFAULTS, state.cq,
- grpc_slice_from_static_string("/Service/Method"), &host,
- gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
- memset(&state.op, 0, sizeof(state.op));
- state.op.op = GRPC_OP_SEND_INITIAL_METADATA;
- state.op.data.send_initial_metadata.count = 0;
- state.op.flags = 0;
- state.op.reserved = NULL;
- GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(state.call, &state.op,
- (size_t)(1), NULL, NULL));
- grpc_completion_queue_next(state.cq, n_sec_deadline(5), NULL);
-}
-
-static void cleanup_rpc(void) {
- grpc_event ev;
- grpc_slice_buffer_destroy(&state.incoming_buffer);
- grpc_slice_buffer_destroy(&state.temp_incoming_buffer);
- grpc_channel_credentials_release(state.creds);
- grpc_call_destroy(state.call);
- grpc_completion_queue_shutdown(state.cq);
- do {
- ev = grpc_completion_queue_next(state.cq, n_sec_deadline(1), NULL);
- } while (ev.type != GRPC_QUEUE_SHUTDOWN);
- grpc_completion_queue_destroy(state.cq);
- grpc_channel_destroy(state.channel);
- gpr_free(state.target);
-}
-
-typedef struct {
- test_tcp_server *server;
- gpr_event *signal_when_done;
-} poll_args;
-
-static void actually_poll_server(void *arg) {
- poll_args *pa = arg;
- gpr_timespec deadline = n_sec_deadline(10);
- while (true) {
- bool done = gpr_atm_acq_load(&state.done_atm) != 0;
- gpr_timespec time_left =
- gpr_time_sub(deadline, gpr_now(GPR_CLOCK_REALTIME));
- gpr_log(GPR_DEBUG, "done=%d, time_left=%" PRId64 ".%09" PRId32, done,
- time_left.tv_sec, time_left.tv_nsec);
- if (done || gpr_time_cmp(time_left, gpr_time_0(GPR_TIMESPAN)) < 0) {
- break;
- }
- test_tcp_server_poll(pa->server, 1);
- }
- gpr_event_set(pa->signal_when_done, (void *)1);
- gpr_free(pa);
-}
-
-static void poll_server_until_read_done(test_tcp_server *server,
- gpr_event *signal_when_done) {
- gpr_atm_rel_store(&state.done_atm, 0);
- gpr_thd_id id;
- poll_args *pa = gpr_malloc(sizeof(*pa));
- pa->server = server;
- pa->signal_when_done = signal_when_done;
- gpr_thd_new(&id, actually_poll_server, pa, NULL);
-}
-
-static void match_initial_magic_string(grpc_slice_buffer *buffer) {
- size_t i, j, cmp_length;
- size_t magic_length = strlen(magic_connect_string);
- GPR_ASSERT(buffer->length >= magic_length);
- for (i = 0, j = 0; i < state.incoming_buffer.count && j < magic_length; i++) {
- char *dump = grpc_slice_to_c_string(state.incoming_buffer.slices[i]);
- cmp_length = GPR_MIN(strlen(dump), magic_length - j);
- GPR_ASSERT(strncmp(dump, magic_connect_string + j, cmp_length) == 0);
- j += cmp_length;
- gpr_free(dump);
- }
-}
-
-static void test_initial_string(test_tcp_server *server, int secure) {
- gpr_event ev;
- gpr_event_init(&ev);
- grpc_test_set_initial_connect_string_function(set_magic_initial_string);
- poll_server_until_read_done(server, &ev);
- start_rpc(secure, server_port);
- gpr_event_wait(&ev, gpr_inf_future(GPR_CLOCK_REALTIME));
- match_initial_magic_string(&state.incoming_buffer);
- cleanup_rpc();
-}
-
-static void test_initial_string_with_redirect(test_tcp_server *server,
- int secure) {
- gpr_event ev;
- gpr_event_init(&ev);
- int another_port = grpc_pick_unused_port_or_die();
- grpc_test_set_initial_connect_string_function(
- reset_addr_and_set_magic_string);
- poll_server_until_read_done(server, &ev);
- start_rpc(secure, another_port);
- gpr_event_wait(&ev, gpr_inf_future(GPR_CLOCK_REALTIME));
- match_initial_magic_string(&state.incoming_buffer);
- cleanup_rpc();
-}
-
-static void run_test(void (*test)(test_tcp_server *server, int secure),
- int secure) {
- test_tcp_server test_server;
- server_port = grpc_pick_unused_port_or_die();
- test_tcp_server_init(&test_server, on_connect, &test_server);
- test_tcp_server_start(&test_server, server_port);
- test(&test_server, secure);
- test_tcp_server_destroy(&test_server);
-}
-
-int main(int argc, char **argv) {
- grpc_test_init(argc, argv);
- grpc_init();
-
- run_test(test_initial_string, 0);
- run_test(test_initial_string, 1);
- run_test(test_initial_string_with_redirect, 0);
- run_test(test_initial_string_with_redirect, 1);
-
- grpc_shutdown();
- return 0;
-}
diff --git a/test/core/end2end/bad_server_response_test.c b/test/core/end2end/bad_server_response_test.c
index 39a98e84ca..c37a292af9 100644
--- a/test/core/end2end/bad_server_response_test.c
+++ b/test/core/end2end/bad_server_response_test.c
@@ -303,7 +303,7 @@ static void run_test(const char *response_payload,
/* clean up */
grpc_endpoint_shutdown(&exec_ctx, state.tcp,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
grpc_endpoint_destroy(&exec_ctx, state.tcp);
cleanup_rpc(&exec_ctx);
grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/end2end/connection_refused_test.c b/test/core/end2end/connection_refused_test.c
index 16a3005539..6ded12ad48 100644
--- a/test/core/end2end/connection_refused_test.c
+++ b/test/core/end2end/connection_refused_test.c
@@ -53,7 +53,6 @@ static void *tag(intptr_t i) { return (void *)i; }
static void run_test(bool wait_for_ready, bool use_service_config) {
grpc_channel *chan;
grpc_call *call;
- gpr_timespec deadline = grpc_timeout_seconds_to_deadline(2);
grpc_completion_queue *cq;
cq_verifier *cqv;
grpc_op ops[6];
@@ -98,6 +97,7 @@ static void run_test(bool wait_for_ready, bool use_service_config) {
gpr_log(GPR_INFO, "server: %s", addr);
chan = grpc_insecure_channel_create(addr, args, NULL);
grpc_slice host = grpc_slice_from_static_string("nonexistant");
+ gpr_timespec deadline = grpc_timeout_seconds_to_deadline(2);
call = grpc_channel_create_call(
chan, NULL, GRPC_PROPAGATE_DEFAULTS, cq,
grpc_slice_from_static_string("/service/method"), &host, deadline, NULL);
diff --git a/test/core/end2end/end2end_tests.h b/test/core/end2end/end2end_tests.h
index cb0afd9cd9..cdb26a67e9 100644
--- a/test/core/end2end/end2end_tests.h
+++ b/test/core/end2end/end2end_tests.h
@@ -39,12 +39,15 @@
typedef struct grpc_end2end_test_fixture grpc_end2end_test_fixture;
typedef struct grpc_end2end_test_config grpc_end2end_test_config;
+/* Test feature flags. */
#define FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION 1
#define FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION 2
#define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS 4
#define FEATURE_MASK_SUPPORTS_REQUEST_PROXYING 8
#define FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL 16
#define FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER 32
+#define FEATURE_MASK_DOES_NOT_SUPPORT_RESOURCE_QUOTA_SERVER 64
+#define FEATURE_MASK_DOES_NOT_SUPPORT_NETWORK_STATUS_CHANGE 128
#define FAIL_AUTH_CHECK_SERVER_ARG_NAME "fail_auth_check"
@@ -56,8 +59,12 @@ struct grpc_end2end_test_fixture {
};
struct grpc_end2end_test_config {
+ /* A descriptive name for this test fixture. */
const char *name;
+
+ /* Which features are supported by this fixture. See feature flags above. */
uint32_t feature_mask;
+
grpc_end2end_test_fixture (*create_fixture)(grpc_channel_args *client_args,
grpc_channel_args *server_args);
void (*init_client)(grpc_end2end_test_fixture *f,
diff --git a/test/core/end2end/fixtures/http_proxy_fixture.c b/test/core/end2end/fixtures/http_proxy_fixture.c
index bcd1c9914b..451ed268d3 100644
--- a/test/core/end2end/fixtures/http_proxy_fixture.c
+++ b/test/core/end2end/fixtures/http_proxy_fixture.c
@@ -342,7 +342,7 @@ static void on_read_request_done(grpc_exec_ctx* exec_ctx, void* arg,
char* msg;
gpr_asprintf(&msg, "HTTP proxy got request method %s",
conn->http_request.method);
- error = GRPC_ERROR_CREATE(msg);
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
gpr_free(msg);
proxy_connection_failed(exec_ctx, conn, true /* is_client */,
"HTTP proxy read request", error);
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 0de8b9459a..a0acf5bf60 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -390,9 +390,9 @@ static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg,
*r->addrs = addrs;
grpc_closure_sched(exec_ctx, r->on_done, GRPC_ERROR_NONE);
} else {
- grpc_closure_sched(
- exec_ctx, r->on_done,
- GRPC_ERROR_CREATE_REFERENCING("Resolution failed", &error, 1));
+ grpc_closure_sched(exec_ctx, r->on_done,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Resolution failed", &error, 1));
}
gpr_free(r->addr);
@@ -461,8 +461,8 @@ static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
grpc_endpoint **ep, gpr_timespec deadline) {
if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) < 0) {
*ep = NULL;
- grpc_closure_sched(exec_ctx, closure,
- GRPC_ERROR_CREATE("Connect deadline exceeded"));
+ grpc_closure_sched(exec_ctx, closure, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Connect deadline exceeded"));
return;
}
@@ -719,10 +719,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
grpc_test_only_set_slice_hash_seed(0);
if (squelch) gpr_set_log_function(dont_log);
input_stream inp = {data, data + size};
- grpc_resolve_address = my_resolve_address;
grpc_tcp_client_connect_impl = my_tcp_client_connect;
gpr_now_impl = now_impl;
grpc_init();
+ grpc_resolve_address = my_resolve_address;
GPR_ASSERT(g_channel == NULL);
GPR_ASSERT(g_server == NULL);
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6723650944237568 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6723650944237568
new file mode 100644
index 0000000000..e140fdc705
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6723650944237568
Binary files differ
diff --git a/test/core/end2end/goaway_server_test.c b/test/core/end2end/goaway_server_test.c
index a9634bfbae..22d93b321a 100644
--- a/test/core/end2end/goaway_server_test.c
+++ b/test/core/end2end/goaway_server_test.c
@@ -52,9 +52,11 @@ static void *tag(intptr_t i) { return (void *)i; }
static gpr_mu g_mu;
static int g_resolve_port = -1;
-static grpc_error *(*iomgr_resolve_address)(const char *name,
- const char *default_port,
- grpc_resolved_addresses **addrs);
+static void (*iomgr_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr,
+ const char *default_port,
+ grpc_pollset_set *interested_parties,
+ grpc_closure *on_done,
+ grpc_resolved_addresses **addresses);
static void set_resolve_port(int port) {
gpr_mu_lock(&g_mu);
@@ -62,16 +64,22 @@ static void set_resolve_port(int port) {
gpr_mu_unlock(&g_mu);
}
-static grpc_error *my_resolve_address(const char *name, const char *addr,
- grpc_resolved_addresses **addrs) {
- if (0 != strcmp(name, "test")) {
- return iomgr_resolve_address(name, addr, addrs);
+static void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
+ const char *default_port,
+ grpc_pollset_set *interested_parties,
+ grpc_closure *on_done,
+ grpc_resolved_addresses **addrs) {
+ if (0 != strcmp(addr, "test")) {
+ iomgr_resolve_address(exec_ctx, addr, default_port, interested_parties,
+ on_done, addrs);
+ return;
}
+ grpc_error *error = GRPC_ERROR_NONE;
gpr_mu_lock(&g_mu);
if (g_resolve_port < 0) {
gpr_mu_unlock(&g_mu);
- return GRPC_ERROR_CREATE("Forced Failure");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Failure");
} else {
*addrs = gpr_malloc(sizeof(**addrs));
(*addrs)->naddrs = 1;
@@ -83,8 +91,8 @@ static grpc_error *my_resolve_address(const char *name, const char *addr,
sa->sin_port = htons((uint16_t)g_resolve_port);
(*addrs)->addrs[0].len = sizeof(*sa);
gpr_mu_unlock(&g_mu);
- return GRPC_ERROR_NONE;
}
+ grpc_closure_sched(exec_ctx, on_done, error);
}
int main(int argc, char **argv) {
@@ -96,9 +104,9 @@ int main(int argc, char **argv) {
grpc_test_init(argc, argv);
gpr_mu_init(&g_mu);
- iomgr_resolve_address = grpc_blocking_resolve_address;
- grpc_blocking_resolve_address = my_resolve_address;
grpc_init();
+ iomgr_resolve_address = grpc_resolve_address;
+ grpc_resolve_address = my_resolve_address;
int was_cancelled1;
int was_cancelled2;
diff --git a/test/core/end2end/tests/filter_call_init_fails.c b/test/core/end2end/tests/filter_call_init_fails.c
index d2d6e82d57..ebfe3b03dc 100644
--- a/test/core/end2end/tests/filter_call_init_fails.c
+++ b/test/core/end2end/tests/filter_call_init_fails.c
@@ -206,14 +206,14 @@ static void test_request(grpc_end2end_test_config config) {
static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_element_args *args) {
- return grpc_error_set_int(GRPC_ERROR_CREATE("access denied"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_PERMISSION_DENIED);
+ return grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("access denied"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_PERMISSION_DENIED);
}
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {}
+ grpc_closure *ignored) {}
static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem,
diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c
index 25e606556d..e6b02eaeee 100644
--- a/test/core/end2end/tests/filter_causes_close.c
+++ b/test/core/end2end/tests/filter_causes_close.c
@@ -210,7 +210,7 @@ static void recv_im_ready(grpc_exec_ctx *exec_ctx, void *arg,
call_data *calld = elem->call_data;
grpc_closure_sched(
exec_ctx, calld->recv_im_ready,
- grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING(
+ grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failure that's not preventable.", &error, 1),
GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_PERMISSION_DENIED));
@@ -236,7 +236,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {}
+ grpc_closure *ignored) {}
static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem,
diff --git a/test/core/end2end/tests/filter_latency.c b/test/core/end2end/tests/filter_latency.c
index d05e9e79a1..2428c92a42 100644
--- a/test/core/end2end/tests/filter_latency.c
+++ b/test/core/end2end/tests/filter_latency.c
@@ -267,7 +267,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *ignored) {
gpr_mu_lock(&g_mu);
g_client_latency = final_info->stats.latency;
gpr_mu_unlock(&g_mu);
@@ -276,7 +276,7 @@ static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {
+ grpc_closure *ignored) {
gpr_mu_lock(&g_mu);
g_server_latency = final_info->stats.latency;
gpr_mu_unlock(&g_mu);
diff --git a/test/core/end2end/tests/network_status_change.c b/test/core/end2end/tests/network_status_change.c
index 7540ce93a1..d7a4106459 100644
--- a/test/core/end2end/tests/network_status_change.c
+++ b/test/core/end2end/tests/network_status_change.c
@@ -240,6 +240,10 @@ static void test_invoke_network_status_change(grpc_end2end_test_config config) {
}
void network_status_change(grpc_end2end_test_config config) {
+ if (config.feature_mask &
+ FEATURE_MASK_DOES_NOT_SUPPORT_NETWORK_STATUS_CHANGE) {
+ return;
+ }
test_invoke_network_status_change(config);
}
diff --git a/test/core/end2end/tests/resource_quota_server.c b/test/core/end2end/tests/resource_quota_server.c
index 4f9ed7a3a1..db26b4480e 100644
--- a/test/core/end2end/tests/resource_quota_server.c
+++ b/test/core/end2end/tests/resource_quota_server.c
@@ -113,6 +113,10 @@ static grpc_slice generate_random_slice() {
}
void resource_quota_server(grpc_end2end_test_config config) {
+ if (config.feature_mask &
+ FEATURE_MASK_DOES_NOT_SUPPORT_RESOURCE_QUOTA_SERVER) {
+ return;
+ }
grpc_resource_quota *resource_quota =
grpc_resource_quota_create("test_server");
grpc_resource_quota_resize(resource_quota, 5 * 1024 * 1024);
diff --git a/test/core/http/httpcli_test.c b/test/core/http/httpcli_test.c
index f690dbaffb..d3b45c4505 100644
--- a/test/core/http/httpcli_test.c
+++ b/test/core/http/httpcli_test.c
@@ -102,7 +102,7 @@ static void test_get(int port) {
"pollset_work",
grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops),
&worker, gpr_now(GPR_CLOCK_MONOTONIC),
- n_seconds_time(20))));
+ n_seconds_time(1))));
gpr_mu_unlock(g_mu);
grpc_exec_ctx_finish(&exec_ctx);
gpr_mu_lock(g_mu);
@@ -144,7 +144,7 @@ static void test_post(int port) {
"pollset_work",
grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops),
&worker, gpr_now(GPR_CLOCK_MONOTONIC),
- n_seconds_time(20))));
+ n_seconds_time(1))));
gpr_mu_unlock(g_mu);
grpc_exec_ctx_finish(&exec_ctx);
gpr_mu_lock(g_mu);
diff --git a/test/core/http/httpscli_test.c b/test/core/http/httpscli_test.c
index 549411037e..acc94091f4 100644
--- a/test/core/http/httpscli_test.c
+++ b/test/core/http/httpscli_test.c
@@ -103,7 +103,7 @@ static void test_get(int port) {
"pollset_work",
grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops),
&worker, gpr_now(GPR_CLOCK_MONOTONIC),
- n_seconds_time(20))));
+ n_seconds_time(1))));
gpr_mu_unlock(g_mu);
grpc_exec_ctx_finish(&exec_ctx);
gpr_mu_lock(g_mu);
@@ -146,7 +146,7 @@ static void test_post(int port) {
"pollset_work",
grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&g_pops),
&worker, gpr_now(GPR_CLOCK_MONOTONIC),
- n_seconds_time(20))));
+ n_seconds_time(1))));
gpr_mu_unlock(g_mu);
grpc_exec_ctx_finish(&exec_ctx);
gpr_mu_lock(g_mu);
diff --git a/test/core/iomgr/endpoint_tests.c b/test/core/iomgr/endpoint_tests.c
index 94067a8ca4..e274796e23 100644
--- a/test/core/iomgr/endpoint_tests.c
+++ b/test/core/iomgr/endpoint_tests.c
@@ -233,11 +233,13 @@ static void read_and_write_test(grpc_endpoint_test_config config,
if (shutdown) {
gpr_log(GPR_DEBUG, "shutdown read");
- grpc_endpoint_shutdown(&exec_ctx, state.read_ep,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, state.read_ep,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
gpr_log(GPR_DEBUG, "shutdown write");
- grpc_endpoint_shutdown(&exec_ctx, state.write_ep,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, state.write_ep,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
}
grpc_exec_ctx_flush(&exec_ctx);
@@ -299,7 +301,7 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) {
grpc_schedule_on_exec_ctx));
wait_for_fail_count(&exec_ctx, &fail_count, 0);
grpc_endpoint_shutdown(&exec_ctx, f.client_ep,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
wait_for_fail_count(&exec_ctx, &fail_count, 1);
grpc_endpoint_read(&exec_ctx, f.client_ep, &slice_buffer,
grpc_closure_create(inc_on_failure, &fail_count,
@@ -311,7 +313,7 @@ static void multiple_shutdown_test(grpc_endpoint_test_config config) {
grpc_schedule_on_exec_ctx));
wait_for_fail_count(&exec_ctx, &fail_count, 3);
grpc_endpoint_shutdown(&exec_ctx, f.client_ep,
- GRPC_ERROR_CREATE("Test Shutdown"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test Shutdown"));
wait_for_fail_count(&exec_ctx, &fail_count, 3);
grpc_slice_buffer_destroy_internal(&exec_ctx, &slice_buffer);
diff --git a/test/core/iomgr/error_test.c b/test/core/iomgr/error_test.c
index 2a6b1b17fd..5c60a4ddb8 100644
--- a/test/core/iomgr/error_test.c
+++ b/test/core/iomgr/error_test.c
@@ -44,7 +44,7 @@
#include "test/core/util/test_config.h"
static void test_set_get_int() {
- grpc_error* error = GRPC_ERROR_CREATE("Test");
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test");
GPR_ASSERT(error);
intptr_t i = 0;
GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_FILE_LINE, &i));
@@ -66,26 +66,27 @@ static void test_set_get_int() {
}
static void test_set_get_str() {
- grpc_error* error = GRPC_ERROR_CREATE("Test");
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test");
- GPR_ASSERT(!grpc_error_get_str(error, GRPC_ERROR_STR_SYSCALL));
- GPR_ASSERT(!grpc_error_get_str(error, GRPC_ERROR_STR_TSI_ERROR));
+ grpc_slice str;
+ GPR_ASSERT(!grpc_error_get_str(error, GRPC_ERROR_STR_SYSCALL, &str));
+ GPR_ASSERT(!grpc_error_get_str(error, GRPC_ERROR_STR_TSI_ERROR, &str));
- const char* c = grpc_error_get_str(error, GRPC_ERROR_STR_FILE);
- GPR_ASSERT(c);
- GPR_ASSERT(strstr(c, "error_test.c")); // __FILE__ expands differently on
- // Windows. All should at least
- // contain error_test.c
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_FILE, &str));
+ GPR_ASSERT(strstr((char*)GRPC_SLICE_START_PTR(str),
+ "error_test.c")); // __FILE__ expands differently on
+ // Windows. All should at least
+ // contain error_test.c
- c = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, "Test"));
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), "Test",
+ GRPC_SLICE_LENGTH(str)));
- error =
- grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "longer message");
- c = grpc_error_get_str(error, GRPC_ERROR_STR_GRPC_MESSAGE);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, "longer message"));
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string("longer message"));
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), "longer message",
+ GRPC_SLICE_LENGTH(str)));
GRPC_ERROR_UNREF(error);
}
@@ -93,26 +94,28 @@ static void test_set_get_str() {
static void test_copy_and_unref() {
// error1 has one ref
grpc_error* error1 = grpc_error_set_str(
- GRPC_ERROR_CREATE("Test"), GRPC_ERROR_STR_GRPC_MESSAGE, "message");
- const char* c = grpc_error_get_str(error1, GRPC_ERROR_STR_GRPC_MESSAGE);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, "message"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Test"), GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string("message"));
+ grpc_slice str;
+ GPR_ASSERT(grpc_error_get_str(error1, GRPC_ERROR_STR_GRPC_MESSAGE, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), "message",
+ GRPC_SLICE_LENGTH(str)));
// error 1 has two refs
GRPC_ERROR_REF(error1);
// this gives error3 a ref to the new error, and decrements error1 to one ref
- grpc_error* error3 =
- grpc_error_set_str(error1, GRPC_ERROR_STR_SYSCALL, "syscall");
+ grpc_error* error3 = grpc_error_set_str(
+ error1, GRPC_ERROR_STR_SYSCALL, grpc_slice_from_static_string("syscall"));
GPR_ASSERT(error3 != error1); // should not be the same because of extra ref
- c = grpc_error_get_str(error3, GRPC_ERROR_STR_GRPC_MESSAGE);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, "message"));
+ GPR_ASSERT(grpc_error_get_str(error3, GRPC_ERROR_STR_GRPC_MESSAGE, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), "message",
+ GRPC_SLICE_LENGTH(str)));
// error 1 should not have a syscall but 3 should
- GPR_ASSERT(!grpc_error_get_str(error1, GRPC_ERROR_STR_SYSCALL));
- c = grpc_error_get_str(error3, GRPC_ERROR_STR_SYSCALL);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, "syscall"));
+ GPR_ASSERT(!grpc_error_get_str(error1, GRPC_ERROR_STR_SYSCALL, &str));
+ GPR_ASSERT(grpc_error_get_str(error3, GRPC_ERROR_STR_SYSCALL, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), "syscall",
+ GRPC_SLICE_LENGTH(str)));
GRPC_ERROR_UNREF(error1);
GRPC_ERROR_UNREF(error3);
@@ -120,8 +123,10 @@ static void test_copy_and_unref() {
static void test_create_referencing() {
grpc_error* child = grpc_error_set_str(
- GRPC_ERROR_CREATE("Child"), GRPC_ERROR_STR_GRPC_MESSAGE, "message");
- grpc_error* parent = GRPC_ERROR_CREATE_REFERENCING("Parent", &child, 1);
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child"),
+ GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message"));
+ grpc_error* parent =
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", &child, 1);
GPR_ASSERT(parent);
GRPC_ERROR_UNREF(child);
@@ -130,14 +135,18 @@ static void test_create_referencing() {
static void test_create_referencing_many() {
grpc_error* children[3];
- children[0] = grpc_error_set_str(GRPC_ERROR_CREATE("Child1"),
- GRPC_ERROR_STR_GRPC_MESSAGE, "message");
- children[1] = grpc_error_set_int(GRPC_ERROR_CREATE("Child2"),
- GRPC_ERROR_INT_HTTP2_ERROR, 5);
- children[2] = grpc_error_set_str(GRPC_ERROR_CREATE("Child3"),
- GRPC_ERROR_STR_GRPC_MESSAGE, "message 3");
-
- grpc_error* parent = GRPC_ERROR_CREATE_REFERENCING("Parent", children, 3);
+ children[0] = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child1"),
+ GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message"));
+ children[1] =
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child2"),
+ GRPC_ERROR_INT_HTTP2_ERROR, 5);
+ children[2] = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Child3"),
+ GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_static_string("message 3"));
+
+ grpc_error* parent =
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", children, 3);
GPR_ASSERT(parent);
for (size_t i = 0; i < 3; ++i) {
@@ -148,10 +157,11 @@ static void test_create_referencing_many() {
static void print_error_string() {
grpc_error* error =
- grpc_error_set_int(GRPC_ERROR_CREATE("Error"), GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNIMPLEMENTED);
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNIMPLEMENTED);
error = grpc_error_set_int(error, GRPC_ERROR_INT_SIZE, 666);
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "message");
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string("message"));
// gpr_log(GPR_DEBUG, "%s", grpc_error_string(error));
GRPC_ERROR_UNREF(error);
}
@@ -159,15 +169,18 @@ static void print_error_string() {
static void print_error_string_reference() {
grpc_error* children[2];
children[0] = grpc_error_set_str(
- grpc_error_set_int(GRPC_ERROR_CREATE("1"), GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNIMPLEMENTED),
- GRPC_ERROR_STR_GRPC_MESSAGE, "message for child 1");
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("1"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNIMPLEMENTED),
+ GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string("message for child 1"));
children[1] = grpc_error_set_str(
- grpc_error_set_int(GRPC_ERROR_CREATE("2sd"), GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_INTERNAL),
- GRPC_ERROR_STR_GRPC_MESSAGE, "message for child 2");
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("2sd"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL),
+ GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string("message for child 2"));
- grpc_error* parent = GRPC_ERROR_CREATE_REFERENCING("Parent", children, 2);
+ grpc_error* parent =
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Parent", children, 2);
gpr_log(GPR_DEBUG, "%s", grpc_error_string(parent));
@@ -186,15 +199,17 @@ static void test_os_error() {
GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_ERRNO, &i));
GPR_ASSERT(i == fake_errno);
- const char* c = grpc_error_get_str(error, GRPC_ERROR_STR_SYSCALL);
- GPR_ASSERT(c);
- GPR_ASSERT(!strcmp(c, syscall));
+ grpc_slice str;
+ GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_SYSCALL, &str));
+ GPR_ASSERT(!strncmp((char*)GRPC_SLICE_START_PTR(str), syscall,
+ GRPC_SLICE_LENGTH(str)));
GRPC_ERROR_UNREF(error);
}
static void test_special() {
grpc_error* error = GRPC_ERROR_NONE;
- error = grpc_error_add_child(error, GRPC_ERROR_CREATE("test child"));
+ error = grpc_error_add_child(
+ error, GRPC_ERROR_CREATE_FROM_STATIC_STRING("test child"));
intptr_t i;
GPR_ASSERT(grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &i));
GPR_ASSERT(i == GRPC_STATUS_OK);
diff --git a/test/core/iomgr/ev_epoll_linux_test.c b/test/core/iomgr/ev_epoll_linux_test.c
index 4ec959995b..d69f9a9d15 100644
--- a/test/core/iomgr/ev_epoll_linux_test.c
+++ b/test/core/iomgr/ev_epoll_linux_test.c
@@ -90,7 +90,7 @@ static void test_fd_cleanup(grpc_exec_ctx *exec_ctx, test_fd *tfds,
for (i = 0; i < num_fds; i++) {
grpc_fd_shutdown(exec_ctx, tfds[i].fd,
- GRPC_ERROR_CREATE("test_fd_cleanup"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_fd_cleanup"));
grpc_exec_ctx_flush(exec_ctx);
grpc_fd_orphan(exec_ctx, tfds[i].fd, NULL, &release_fd, "test_fd_cleanup");
diff --git a/test/core/iomgr/fd_posix_test.c b/test/core/iomgr/fd_posix_test.c
index c1a0ef54d3..81d2692a08 100644
--- a/test/core/iomgr/fd_posix_test.c
+++ b/test/core/iomgr/fd_posix_test.c
@@ -133,7 +133,7 @@ static void session_shutdown_cb(grpc_exec_ctx *exec_ctx, void *arg, /*session */
gpr_free(se);
/* Start to shutdown listen fd. */
grpc_fd_shutdown(exec_ctx, sv->em_fd,
- GRPC_ERROR_CREATE("session_shutdown_cb"));
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("session_shutdown_cb"));
}
/* Called when data become readable in a session. */
diff --git a/test/core/iomgr/pollset_set_test.c b/test/core/iomgr/pollset_set_test.c
index f27e9db8c9..3a9d459579 100644
--- a/test/core/iomgr/pollset_set_test.c
+++ b/test/core/iomgr/pollset_set_test.c
@@ -143,7 +143,8 @@ static void cleanup_test_fds(grpc_exec_ctx *exec_ctx, test_fd *tfds,
int release_fd;
for (int i = 0; i < num_fds; i++) {
- grpc_fd_shutdown(exec_ctx, tfds[i].fd, GRPC_ERROR_CREATE("fd cleanup"));
+ grpc_fd_shutdown(exec_ctx, tfds[i].fd,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("fd cleanup"));
grpc_exec_ctx_flush(exec_ctx);
/* grpc_fd_orphan frees the memory allocated for grpc_fd. Normally it also
diff --git a/test/core/iomgr/tcp_client_posix_test.c b/test/core/iomgr/tcp_client_posix_test.c
index b324b5a65e..2fae6774e8 100644
--- a/test/core/iomgr/tcp_client_posix_test.c
+++ b/test/core/iomgr/tcp_client_posix_test.c
@@ -77,8 +77,9 @@ static void must_succeed(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) {
GPR_ASSERT(g_connecting != NULL);
GPR_ASSERT(error == GRPC_ERROR_NONE);
- grpc_endpoint_shutdown(exec_ctx, g_connecting,
- GRPC_ERROR_CREATE("must_succeed called"));
+ grpc_endpoint_shutdown(
+ exec_ctx, g_connecting,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("must_succeed called"));
grpc_endpoint_destroy(exec_ctx, g_connecting);
g_connecting = NULL;
finish_connection();
diff --git a/test/core/iomgr/tcp_client_uv_test.c b/test/core/iomgr/tcp_client_uv_test.c
index 064119f11b..92fc393422 100644
--- a/test/core/iomgr/tcp_client_uv_test.c
+++ b/test/core/iomgr/tcp_client_uv_test.c
@@ -73,8 +73,9 @@ static void must_succeed(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) {
GPR_ASSERT(g_connecting != NULL);
GPR_ASSERT(error == GRPC_ERROR_NONE);
- grpc_endpoint_shutdown(exec_ctx, g_connecting,
- GRPC_ERROR_CREATE("must_succeed called"));
+ grpc_endpoint_shutdown(
+ exec_ctx, g_connecting,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("must_succeed called"));
grpc_endpoint_destroy(exec_ctx, g_connecting);
g_connecting = NULL;
finish_connection();
diff --git a/test/core/iomgr/tcp_server_posix_test.c b/test/core/iomgr/tcp_server_posix_test.c
index 6e514324a5..112743b95b 100644
--- a/test/core/iomgr/tcp_server_posix_test.c
+++ b/test/core/iomgr/tcp_server_posix_test.c
@@ -163,7 +163,8 @@ static void test_addr_init_str(test_addr *addr) {
static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
grpc_pollset *pollset,
grpc_tcp_server_acceptor *acceptor) {
- grpc_endpoint_shutdown(exec_ctx, tcp, GRPC_ERROR_CREATE("Connected"));
+ grpc_endpoint_shutdown(exec_ctx, tcp,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected"));
grpc_endpoint_destroy(exec_ctx, tcp);
on_connect_result temp_result;
@@ -285,7 +286,7 @@ static grpc_error *tcp_connect(grpc_exec_ctx *exec_ctx, const test_addr *remote,
if (g_nconnects != nconnects_before + 1) {
gpr_mu_unlock(g_mu);
close(clifd);
- return GRPC_ERROR_CREATE("Didn't connect");
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Didn't connect");
}
close(clifd);
*result = g_result;
diff --git a/test/core/iomgr/tcp_server_uv_test.c b/test/core/iomgr/tcp_server_uv_test.c
index 0fc74599ea..1e039585c1 100644
--- a/test/core/iomgr/tcp_server_uv_test.c
+++ b/test/core/iomgr/tcp_server_uv_test.c
@@ -115,7 +115,8 @@ static void server_weak_ref_set(server_weak_ref *weak_ref,
static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
grpc_pollset *pollset,
grpc_tcp_server_acceptor *acceptor) {
- grpc_endpoint_shutdown(exec_ctx, tcp, GRPC_ERROR_CREATE("Connected"));
+ grpc_endpoint_shutdown(exec_ctx, tcp,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected"));
grpc_endpoint_destroy(exec_ctx, tcp);
on_connect_result temp_result;
diff --git a/test/core/iomgr/udp_server_test.c b/test/core/iomgr/udp_server_test.c
index 396ec959cd..12d8406323 100644
--- a/test/core/iomgr/udp_server_test.c
+++ b/test/core/iomgr/udp_server_test.c
@@ -48,9 +48,12 @@
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include <grpc/support/useful.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/iomgr.h"
+#include "src/core/lib/iomgr/socket_factory_posix.h"
#include "test/core/util/test_config.h"
#define LOG_TEST(x) gpr_log(GPR_INFO, "%s", #x)
@@ -94,16 +97,59 @@ static void on_fd_orphaned(grpc_exec_ctx *exec_ctx, grpc_fd *emfd,
g_number_of_orphan_calls++;
}
+struct test_socket_factory {
+ grpc_socket_factory base;
+ int number_of_socket_calls;
+ int number_of_bind_calls;
+};
+typedef struct test_socket_factory test_socket_factory;
+
+static int test_socket_factory_socket(grpc_socket_factory *factory, int domain,
+ int type, int protocol) {
+ test_socket_factory *f = (test_socket_factory *)factory;
+ f->number_of_socket_calls++;
+ return socket(domain, type, protocol);
+}
+
+static int test_socket_factory_bind(grpc_socket_factory *factory, int sockfd,
+ const grpc_resolved_address *addr) {
+ test_socket_factory *f = (test_socket_factory *)factory;
+ f->number_of_bind_calls++;
+ return bind(sockfd, (struct sockaddr *)addr->addr, (socklen_t)addr->len);
+}
+
+static int test_socket_factory_compare(grpc_socket_factory *a,
+ grpc_socket_factory *b) {
+ return GPR_ICMP(a, b);
+}
+
+static void test_socket_factory_destroy(grpc_socket_factory *factory) {
+ test_socket_factory *f = (test_socket_factory *)factory;
+ gpr_free(f);
+}
+
+static const grpc_socket_factory_vtable test_socket_factory_vtable = {
+ test_socket_factory_socket, test_socket_factory_bind,
+ test_socket_factory_compare, test_socket_factory_destroy};
+
+static test_socket_factory *test_socket_factory_create(void) {
+ test_socket_factory *factory = gpr_malloc(sizeof(test_socket_factory));
+ grpc_socket_factory_init(&factory->base, &test_socket_factory_vtable);
+ factory->number_of_socket_calls = 0;
+ factory->number_of_bind_calls = 0;
+ return factory;
+}
+
static void test_no_op(void) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- grpc_udp_server *s = grpc_udp_server_create();
+ grpc_udp_server *s = grpc_udp_server_create(NULL);
grpc_udp_server_destroy(&exec_ctx, s, NULL);
grpc_exec_ctx_finish(&exec_ctx);
}
static void test_no_op_with_start(void) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- grpc_udp_server *s = grpc_udp_server_create();
+ grpc_udp_server *s = grpc_udp_server_create(NULL);
LOG_TEST("test_no_op_with_start");
grpc_udp_server_start(&exec_ctx, s, NULL, 0, NULL);
grpc_udp_server_destroy(&exec_ctx, s, NULL);
@@ -115,7 +161,7 @@ static void test_no_op_with_port(void) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_resolved_address resolved_addr;
struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr;
- grpc_udp_server *s = grpc_udp_server_create();
+ grpc_udp_server *s = grpc_udp_server_create(NULL);
LOG_TEST("test_no_op_with_port");
memset(&resolved_addr, 0, sizeof(resolved_addr));
@@ -131,12 +177,44 @@ static void test_no_op_with_port(void) {
GPR_ASSERT(g_number_of_orphan_calls == 1);
}
+static void test_no_op_with_port_and_socket_factory(void) {
+ g_number_of_orphan_calls = 0;
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolved_address resolved_addr;
+ struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr;
+
+ test_socket_factory *socket_factory = test_socket_factory_create();
+ grpc_arg socket_factory_arg =
+ grpc_socket_factory_to_arg(&socket_factory->base);
+ grpc_channel_args *channel_args =
+ grpc_channel_args_copy_and_add(NULL, &socket_factory_arg, 1);
+ grpc_udp_server *s = grpc_udp_server_create(channel_args);
+ grpc_channel_args_destroy(&exec_ctx, channel_args);
+
+ LOG_TEST("test_no_op_with_port_and_socket_factory");
+
+ memset(&resolved_addr, 0, sizeof(resolved_addr));
+ resolved_addr.len = sizeof(struct sockaddr_in);
+ addr->sin_family = AF_INET;
+ GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, on_read, on_write,
+ on_fd_orphaned));
+ GPR_ASSERT(socket_factory->number_of_socket_calls == 1);
+ GPR_ASSERT(socket_factory->number_of_bind_calls == 1);
+
+ grpc_udp_server_destroy(&exec_ctx, s, NULL);
+ grpc_exec_ctx_finish(&exec_ctx);
+ grpc_socket_factory_unref(&socket_factory->base);
+
+ /* The server had a single FD, which should have been orphaned. */
+ GPR_ASSERT(g_number_of_orphan_calls == 1);
+}
+
static void test_no_op_with_port_and_start(void) {
g_number_of_orphan_calls = 0;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_resolved_address resolved_addr;
struct sockaddr_in *addr = (struct sockaddr_in *)resolved_addr.addr;
- grpc_udp_server *s = grpc_udp_server_create();
+ grpc_udp_server *s = grpc_udp_server_create(NULL);
LOG_TEST("test_no_op_with_port_and_start");
memset(&resolved_addr, 0, sizeof(resolved_addr));
@@ -160,7 +238,7 @@ static void test_receive(int number_of_clients) {
grpc_resolved_address resolved_addr;
struct sockaddr_storage *addr = (struct sockaddr_storage *)resolved_addr.addr;
int clifd, svrfd;
- grpc_udp_server *s = grpc_udp_server_create();
+ grpc_udp_server *s = grpc_udp_server_create(NULL);
int i;
int number_of_reads_before;
gpr_timespec deadline;
@@ -243,6 +321,7 @@ int main(int argc, char **argv) {
test_no_op();
test_no_op_with_start();
test_no_op_with_port();
+ test_no_op_with_port_and_socket_factory();
test_no_op_with_port_and_start();
test_receive(1);
test_receive(10);
diff --git a/test/core/memory_usage/client.c b/test/core/memory_usage/client.c
index 107abbc1b3..51ea51bc12 100644
--- a/test/core/memory_usage/client.c
+++ b/test/core/memory_usage/client.c
@@ -237,6 +237,11 @@ int main(int argc, char **argv) {
0, grpc_slice_from_static_string("Reflector/GetAfterSvrCreation"));
// warmup period
+ for (int i = 0; i < warmup_iterations; i++) {
+ send_snapshot_request(
+ 0, grpc_slice_from_static_string("Reflector/SimpleSnapshot"));
+ }
+
for (call_idx = 0; call_idx < warmup_iterations; ++call_idx) {
init_ping_pong_request(call_idx + 1);
}
diff --git a/test/core/security/secure_endpoint_test.c b/test/core/security/secure_endpoint_test.c
index d2b76bae39..b3775e91a7 100644
--- a/test/core/security/secure_endpoint_test.c
+++ b/test/core/security/secure_endpoint_test.c
@@ -166,10 +166,12 @@ static void test_leftover(grpc_endpoint_test_config config, size_t slice_size) {
GPR_ASSERT(incoming.count == 1);
GPR_ASSERT(grpc_slice_eq(s, incoming.slices[0]));
- grpc_endpoint_shutdown(&exec_ctx, f.client_ep,
- GRPC_ERROR_CREATE("test_leftover end"));
- grpc_endpoint_shutdown(&exec_ctx, f.server_ep,
- GRPC_ERROR_CREATE("test_leftover end"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, f.client_ep,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, f.server_ep,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("test_leftover end"));
grpc_endpoint_destroy(&exec_ctx, f.client_ep);
grpc_endpoint_destroy(&exec_ctx, f.server_ep);
grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/security/ssl_server_fuzzer.c b/test/core/security/ssl_server_fuzzer.c
index 7a3612c419..cbbaf9f298 100644
--- a/test/core/security/ssl_server_fuzzer.c
+++ b/test/core/security/ssl_server_fuzzer.c
@@ -115,8 +115,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
// server will wait for more data. Explicitly fail the server by shutting down
// the endpoint.
if (!state.done_callback_called) {
- grpc_endpoint_shutdown(&exec_ctx, mock_endpoint,
- GRPC_ERROR_CREATE("Explicit close"));
+ grpc_endpoint_shutdown(
+ &exec_ctx, mock_endpoint,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close"));
grpc_exec_ctx_flush(&exec_ctx);
}
diff --git a/test/core/support/cpu_test.c b/test/core/support/cpu_test.c
index ca0fe0ccb5..7b9bf6c5e1 100644
--- a/test/core/support/cpu_test.c
+++ b/test/core/support/cpu_test.c
@@ -81,9 +81,12 @@ static void worker_thread(void *arg) {
uint32_t cpu;
unsigned r = 12345678;
unsigned i, j;
- for (i = 0; i < 1000 / grpc_test_slowdown_factor(); i++) {
+ /* Avoid repetitive division calculations */
+ int64_t max_i = 1000 / grpc_test_slowdown_factor();
+ int64_t max_j = 1000000 / grpc_test_slowdown_factor();
+ for (i = 0; i < max_i; i++) {
/* run for a bit - just calculate something random. */
- for (j = 0; j < 1000000 / grpc_test_slowdown_factor(); j++) {
+ for (j = 0; j < max_j; j++) {
r = (r * 17) & ((r - i) | (r * i));
}
cpu = gpr_cpu_current_cpu();
diff --git a/test/core/surface/concurrent_connectivity_test.c b/test/core/surface/concurrent_connectivity_test.c
index ff927385d4..2f7c3dfb85 100644
--- a/test/core/surface/concurrent_connectivity_test.c
+++ b/test/core/surface/concurrent_connectivity_test.c
@@ -109,7 +109,8 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *vargs, grpc_endpoint *tcp,
grpc_tcp_server_acceptor *acceptor) {
gpr_free(acceptor);
struct server_thread_args *args = (struct server_thread_args *)vargs;
- grpc_endpoint_shutdown(exec_ctx, tcp, GRPC_ERROR_CREATE("Connected"));
+ grpc_endpoint_shutdown(exec_ctx, tcp,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected"));
grpc_endpoint_destroy(exec_ctx, tcp);
GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL));
}
diff --git a/test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112 b/test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112
new file mode 100644
index 0000000000..04d48d6d76
--- /dev/null
+++ b/test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112
Binary files differ
diff --git a/test/core/util/mock_endpoint.c b/test/core/util/mock_endpoint.c
index b8fed7e14b..c747297984 100644
--- a/test/core/util/mock_endpoint.c
+++ b/test/core/util/mock_endpoint.c
@@ -89,8 +89,9 @@ static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
grpc_mock_endpoint *m = (grpc_mock_endpoint *)ep;
gpr_mu_lock(&m->mu);
if (m->on_read) {
- grpc_closure_sched(exec_ctx, m->on_read, GRPC_ERROR_CREATE_REFERENCING(
- "Endpoint Shutdown", &why, 1));
+ grpc_closure_sched(exec_ctx, m->on_read,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Endpoint Shutdown", &why, 1));
m->on_read = NULL;
}
gpr_mu_unlock(&m->mu);
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index 5f27f9ae73..121567fc0d 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -75,7 +75,8 @@ static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
half *m = (half *)ep;
gpr_mu_lock(&m->parent->mu);
if (m->parent->shutdown) {
- grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_CREATE("Already shutdown"));
+ grpc_closure_sched(
+ exec_ctx, cb, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already shutdown"));
} else if (m->read_buffer.count > 0) {
grpc_slice_buffer_swap(&m->read_buffer, slices);
grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_NONE);
@@ -98,7 +99,7 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
grpc_error *error = GRPC_ERROR_NONE;
m->parent->stats->num_writes++;
if (m->parent->shutdown) {
- error = GRPC_ERROR_CREATE("Endpoint already shutdown");
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown");
} else if (m->on_read != NULL) {
for (size_t i = 0; i < slices->count; i++) {
grpc_slice_buffer_add(m->on_read_out, grpc_slice_ref(slices->slices[i]));
@@ -126,14 +127,16 @@ static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
gpr_mu_lock(&m->parent->mu);
m->parent->shutdown = true;
if (m->on_read) {
- grpc_closure_sched(exec_ctx, m->on_read,
- GRPC_ERROR_CREATE_REFERENCING("Shutdown", &why, 1));
+ grpc_closure_sched(
+ exec_ctx, m->on_read,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Shutdown", &why, 1));
m->on_read = NULL;
}
m = other_half(m);
if (m->on_read) {
- grpc_closure_sched(exec_ctx, m->on_read,
- GRPC_ERROR_CREATE_REFERENCING("Shutdown", &why, 1));
+ grpc_closure_sched(
+ exec_ctx, m->on_read,
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Shutdown", &why, 1));
m->on_read = NULL;
}
gpr_mu_unlock(&m->parent->mu);
diff --git a/test/core/util/reconnect_server.c b/test/core/util/reconnect_server.c
index 7fbd0ca6aa..90af1c107b 100644
--- a/test/core/util/reconnect_server.c
+++ b/test/core/util/reconnect_server.c
@@ -80,7 +80,8 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
timestamp_list *new_tail;
peer = grpc_endpoint_get_peer(tcp);
- grpc_endpoint_shutdown(exec_ctx, tcp, GRPC_ERROR_CREATE("Connected"));
+ grpc_endpoint_shutdown(exec_ctx, tcp,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Connected"));
grpc_endpoint_destroy(exec_ctx, tcp);
if (peer) {
last_colon = strrchr(peer, ':');
diff --git a/test/cpp/common/channel_arguments_test.cc b/test/cpp/common/channel_arguments_test.cc
index 190d32ce06..8e7b56cbd6 100644
--- a/test/cpp/common/channel_arguments_test.cc
+++ b/test/cpp/common/channel_arguments_test.cc
@@ -230,13 +230,6 @@ TEST_F(ChannelArgumentsTest, SetSocketMutator) {
EXPECT_TRUE(HasArg(arg1));
// arg0 is replaced by arg1
EXPECT_FALSE(HasArg(arg0));
-
- // arg0 is destroyed by grpc_socket_mutator_to_arg(mutator1)
- {
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- arg1.value.pointer.vtable->destroy(&exec_ctx, arg1.value.pointer.p);
- grpc_exec_ctx_finish(&exec_ctx);
- }
}
TEST_F(ChannelArgumentsTest, SetUserAgentPrefix) {
@@ -250,6 +243,22 @@ TEST_F(ChannelArgumentsTest, SetUserAgentPrefix) {
channel_args_.SetUserAgentPrefix(prefix);
EXPECT_TRUE(HasArg(arg0));
+
+ // Test if the user agent string is copied correctly
+ ChannelArguments new_channel_args(channel_args_);
+ grpc_channel_args args;
+ SetChannelArgs(new_channel_args, &args);
+ bool found = false;
+ for (size_t i = 0; i < args.num_args; i++) {
+ const grpc_arg& arg = args.args[i];
+ if (arg.type == GRPC_ARG_STRING &&
+ grpc::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) {
+ EXPECT_FALSE(found);
+ EXPECT_EQ(0, strcmp(arg.value.string, arg0.value.string));
+ found = true;
+ }
+ }
+ EXPECT_TRUE(found);
}
} // namespace testing
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index 014e2b96b5..1ef8caa690 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -53,6 +53,7 @@ extern "C" {
#include "src/core/lib/channel/http_client_filter.h"
#include "src/core/lib/channel/http_server_filter.h"
#include "src/core/lib/channel/message_size_filter.h"
+#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/transport_impl.h"
}
@@ -85,6 +86,9 @@ BENCHMARK(BM_Zalloc)
->Arg(6144)
->Arg(7168);
+////////////////////////////////////////////////////////////////////////////////
+// Benchmarks creating full stacks
+
class BaseChannelFixture {
public:
BaseChannelFixture(grpc_channel *channel) : channel_(channel) {}
@@ -130,6 +134,9 @@ static void BM_CallCreateDestroy(benchmark::State &state) {
BENCHMARK_TEMPLATE(BM_CallCreateDestroy, InsecureChannel);
BENCHMARK_TEMPLATE(BM_CallCreateDestroy, LameChannel);
+////////////////////////////////////////////////////////////////////////////////
+// Benchmarks isolating individual filters
+
static void *tag(int i) {
return reinterpret_cast<void *>(static_cast<intptr_t>(i));
}
@@ -232,7 +239,7 @@ static void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx,
static void DestroyCallElem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
- void *and_free_memory) {}
+ grpc_closure *then_sched_closure) {}
grpc_error *InitChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem,
grpc_channel_element_args *args) {
@@ -275,7 +282,7 @@ const char *name;
/* implementation of grpc_transport_init_stream */
int InitStream(grpc_exec_ctx *exec_ctx, grpc_transport *self,
grpc_stream *stream, grpc_stream_refcount *refcount,
- const void *server_data) {
+ const void *server_data, gpr_arena *arena) {
return 0;
}
@@ -299,7 +306,7 @@ void PerformOp(grpc_exec_ctx *exec_ctx, grpc_transport *self,
/* implementation of grpc_transport_destroy_stream */
void DestroyStream(grpc_exec_ctx *exec_ctx, grpc_transport *self,
- grpc_stream *stream, void *and_free_memory) {}
+ grpc_stream *stream, grpc_closure *then_sched_closure) {}
/* implementation of grpc_transport_destroy */
void Destroy(grpc_exec_ctx *exec_ctx, grpc_transport *self) {}
@@ -394,7 +401,7 @@ static void BM_IsolatedFilter(benchmark::State &state) {
grpc_channel_stack *channel_stack =
static_cast<grpc_channel_stack *>(gpr_zalloc(channel_size));
GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "call_stack_init",
+ "channel_stack_init",
grpc_channel_stack_init(&exec_ctx, 1, FilterDestroy, channel_stack,
&filters[0], filters.size(), &channel_args,
fixture.flags & REQUIRES_TRANSPORT
@@ -409,15 +416,29 @@ static void BM_IsolatedFilter(benchmark::State &state) {
grpc_slice method = grpc_slice_from_static_string("/foo/bar");
grpc_call_final_info final_info;
TestOp test_op_data;
+ grpc_call_element_args call_args;
+ call_args.call_stack = call_stack;
+ call_args.server_transport_data = NULL;
+ call_args.context = NULL;
+ call_args.path = method;
+ call_args.start_time = start_time;
+ call_args.deadline = deadline;
+ const int kArenaSize = 4096;
+ call_args.arena = gpr_arena_create(kArenaSize);
while (state.KeepRunning()) {
GRPC_ERROR_UNREF(grpc_call_stack_init(&exec_ctx, channel_stack, 1,
- DoNothing, NULL, NULL, NULL, method,
- start_time, deadline, call_stack));
+ DoNothing, NULL, &call_args));
typename TestOp::Op op(&exec_ctx, &test_op_data, call_stack);
grpc_call_stack_destroy(&exec_ctx, call_stack, &final_info, NULL);
op.Finish(&exec_ctx);
grpc_exec_ctx_flush(&exec_ctx);
+ // recreate arena every 64k iterations to avoid oom
+ if (0 == (state.iterations() & 0xffff)) {
+ gpr_arena_destroy(call_args.arena);
+ call_args.arena = gpr_arena_create(kArenaSize);
+ }
}
+ gpr_arena_destroy(call_args.arena);
grpc_channel_stack_destroy(&exec_ctx, channel_stack);
grpc_exec_ctx_finish(&exec_ctx);
gpr_free(channel_stack);
@@ -460,4 +481,205 @@ typedef Fixture<&grpc_load_reporting_filter, CHECKS_NOT_LAST>
BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter, NoOp);
BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter, SendEmptyMetadata);
+////////////////////////////////////////////////////////////////////////////////
+// Benchmarks isolating grpc_call
+
+namespace isolated_call_filter {
+
+static void StartTransportStreamOp(grpc_exec_ctx *exec_ctx,
+ grpc_call_element *elem,
+ grpc_transport_stream_op *op) {
+ if (op->recv_initial_metadata) {
+ grpc_closure_sched(exec_ctx, op->recv_initial_metadata_ready,
+ GRPC_ERROR_NONE);
+ }
+ if (op->recv_message) {
+ grpc_closure_sched(exec_ctx, op->recv_message_ready, GRPC_ERROR_NONE);
+ }
+ grpc_closure_sched(exec_ctx, op->on_complete, GRPC_ERROR_NONE);
+}
+
+static void StartTransportOp(grpc_exec_ctx *exec_ctx,
+ grpc_channel_element *elem,
+ grpc_transport_op *op) {
+ if (op->disconnect_with_error != GRPC_ERROR_NONE) {
+ GRPC_ERROR_UNREF(op->disconnect_with_error);
+ }
+ grpc_closure_sched(exec_ctx, op->on_consumed, GRPC_ERROR_NONE);
+}
+
+static grpc_error *InitCallElem(grpc_exec_ctx *exec_ctx,
+ grpc_call_element *elem,
+ const grpc_call_element_args *args) {
+ return GRPC_ERROR_NONE;
+}
+
+static void SetPollsetOrPollsetSet(grpc_exec_ctx *exec_ctx,
+ grpc_call_element *elem,
+ grpc_polling_entity *pollent) {}
+
+static void DestroyCallElem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ const grpc_call_final_info *final_info,
+ grpc_closure *then_sched_closure) {
+ grpc_closure_sched(exec_ctx, then_sched_closure, GRPC_ERROR_NONE);
+}
+
+grpc_error *InitChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem,
+ grpc_channel_element_args *args) {
+ return GRPC_ERROR_NONE;
+}
+
+void DestroyChannelElem(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem) {}
+
+char *GetPeer(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) {
+ return gpr_strdup("peer");
+}
+
+void GetChannelInfo(grpc_exec_ctx *exec_ctx, grpc_channel_element *elem,
+ const grpc_channel_info *channel_info) {}
+
+static const grpc_channel_filter isolated_call_filter = {
+ StartTransportStreamOp,
+ StartTransportOp,
+ 0,
+ InitCallElem,
+ SetPollsetOrPollsetSet,
+ DestroyCallElem,
+ 0,
+ InitChannelElem,
+ DestroyChannelElem,
+ GetPeer,
+ GetChannelInfo,
+ "isolated_call_filter"};
+}
+
+class IsolatedCallFixture : public TrackCounters {
+ public:
+ IsolatedCallFixture() {
+ grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
+ grpc_channel_stack_builder_set_name(builder, "dummy");
+ grpc_channel_stack_builder_set_target(builder, "dummy_target");
+ GPR_ASSERT(grpc_channel_stack_builder_append_filter(
+ builder, &isolated_call_filter::isolated_call_filter, NULL, NULL));
+ {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ channel_ = grpc_channel_create_with_builder(&exec_ctx, builder,
+ GRPC_CLIENT_CHANNEL);
+ grpc_exec_ctx_finish(&exec_ctx);
+ }
+ cq_ = grpc_completion_queue_create(NULL);
+ }
+
+ void Finish(benchmark::State &state) {
+ grpc_completion_queue_destroy(cq_);
+ grpc_channel_destroy(channel_);
+ TrackCounters::Finish(state);
+ }
+
+ grpc_channel *channel() const { return channel_; }
+ grpc_completion_queue *cq() const { return cq_; }
+
+ private:
+ grpc_completion_queue *cq_;
+ grpc_channel *channel_;
+};
+
+static void BM_IsolatedCall_NoOp(benchmark::State &state) {
+ IsolatedCallFixture fixture;
+ gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ void *method_hdl =
+ grpc_channel_register_call(fixture.channel(), "/foo/bar", NULL, NULL);
+ while (state.KeepRunning()) {
+ grpc_call_destroy(grpc_channel_create_registered_call(
+ fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
+ method_hdl, deadline, NULL));
+ }
+ fixture.Finish(state);
+}
+BENCHMARK(BM_IsolatedCall_NoOp);
+
+static void BM_IsolatedCall_Unary(benchmark::State &state) {
+ IsolatedCallFixture fixture;
+ gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ void *method_hdl =
+ grpc_channel_register_call(fixture.channel(), "/foo/bar", NULL, NULL);
+ grpc_slice slice = grpc_slice_from_static_string("hello world");
+ grpc_byte_buffer *send_message = grpc_raw_byte_buffer_create(&slice, 1);
+ grpc_byte_buffer *recv_message = NULL;
+ grpc_status_code status_code;
+ grpc_slice status_details = grpc_empty_slice();
+ grpc_metadata_array recv_initial_metadata;
+ grpc_metadata_array_init(&recv_initial_metadata);
+ grpc_metadata_array recv_trailing_metadata;
+ grpc_metadata_array_init(&recv_trailing_metadata);
+ grpc_op ops[6];
+ memset(ops, 0, sizeof(ops));
+ ops[0].op = GRPC_OP_SEND_INITIAL_METADATA;
+ ops[1].op = GRPC_OP_SEND_MESSAGE;
+ ops[1].data.send_message.send_message = send_message;
+ ops[2].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+ ops[3].op = GRPC_OP_RECV_INITIAL_METADATA;
+ ops[3].data.recv_initial_metadata.recv_initial_metadata =
+ &recv_initial_metadata;
+ ops[4].op = GRPC_OP_RECV_MESSAGE;
+ ops[4].data.recv_message.recv_message = &recv_message;
+ ops[5].op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+ ops[5].data.recv_status_on_client.status = &status_code;
+ ops[5].data.recv_status_on_client.status_details = &status_details;
+ ops[5].data.recv_status_on_client.trailing_metadata = &recv_trailing_metadata;
+ while (state.KeepRunning()) {
+ grpc_call *call = grpc_channel_create_registered_call(
+ fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
+ method_hdl, deadline, NULL);
+ grpc_call_start_batch(call, ops, 6, tag(1), NULL);
+ grpc_completion_queue_next(fixture.cq(),
+ gpr_inf_future(GPR_CLOCK_MONOTONIC), NULL);
+ grpc_call_destroy(call);
+ }
+ fixture.Finish(state);
+ grpc_metadata_array_destroy(&recv_initial_metadata);
+ grpc_metadata_array_destroy(&recv_trailing_metadata);
+ grpc_byte_buffer_destroy(send_message);
+}
+BENCHMARK(BM_IsolatedCall_Unary);
+
+static void BM_IsolatedCall_StreamingSend(benchmark::State &state) {
+ IsolatedCallFixture fixture;
+ gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ void *method_hdl =
+ grpc_channel_register_call(fixture.channel(), "/foo/bar", NULL, NULL);
+ grpc_slice slice = grpc_slice_from_static_string("hello world");
+ grpc_byte_buffer *send_message = grpc_raw_byte_buffer_create(&slice, 1);
+ grpc_metadata_array recv_initial_metadata;
+ grpc_metadata_array_init(&recv_initial_metadata);
+ grpc_metadata_array recv_trailing_metadata;
+ grpc_metadata_array_init(&recv_trailing_metadata);
+ grpc_op ops[2];
+ memset(ops, 0, sizeof(ops));
+ ops[0].op = GRPC_OP_SEND_INITIAL_METADATA;
+ ops[1].op = GRPC_OP_RECV_INITIAL_METADATA;
+ ops[1].data.recv_initial_metadata.recv_initial_metadata =
+ &recv_initial_metadata;
+ grpc_call *call = grpc_channel_create_registered_call(
+ fixture.channel(), nullptr, GRPC_PROPAGATE_DEFAULTS, fixture.cq(),
+ method_hdl, deadline, NULL);
+ grpc_call_start_batch(call, ops, 2, tag(1), NULL);
+ grpc_completion_queue_next(fixture.cq(), gpr_inf_future(GPR_CLOCK_MONOTONIC),
+ NULL);
+ memset(ops, 0, sizeof(ops));
+ ops[0].op = GRPC_OP_SEND_MESSAGE;
+ ops[0].data.send_message.send_message = send_message;
+ while (state.KeepRunning()) {
+ grpc_call_start_batch(call, ops, 1, tag(2), NULL);
+ grpc_completion_queue_next(fixture.cq(),
+ gpr_inf_future(GPR_CLOCK_MONOTONIC), NULL);
+ }
+ grpc_call_destroy(call);
+ fixture.Finish(state);
+ grpc_metadata_array_destroy(&recv_initial_metadata);
+ grpc_metadata_array_destroy(&recv_trailing_metadata);
+ grpc_byte_buffer_destroy(send_message);
+}
+BENCHMARK(BM_IsolatedCall_StreamingSend);
+
BENCHMARK_MAIN();
diff --git a/test/cpp/microbenchmarks/bm_chttp2_transport.cc b/test/cpp/microbenchmarks/bm_chttp2_transport.cc
new file mode 100644
index 0000000000..254d57de20
--- /dev/null
+++ b/test/cpp/microbenchmarks/bm_chttp2_transport.cc
@@ -0,0 +1,587 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* Microbenchmarks around CHTTP2 transport operations */
+
+#include <grpc++/support/channel_arguments.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <string.h>
+#include <memory>
+#include <queue>
+#include <sstream>
+extern "C" {
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include "src/core/lib/iomgr/resource_quota.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/static_metadata.h"
+}
+#include "test/cpp/microbenchmarks/helpers.h"
+#include "third_party/benchmark/include/benchmark/benchmark.h"
+
+auto &force_library_initialization = Library::get();
+
+////////////////////////////////////////////////////////////////////////////////
+// Helper classes
+//
+
+class DummyEndpoint : public grpc_endpoint {
+ public:
+ DummyEndpoint() {
+ static const grpc_endpoint_vtable my_vtable = {read,
+ write,
+ get_workqueue,
+ add_to_pollset,
+ add_to_pollset_set,
+ shutdown,
+ destroy,
+ get_resource_user,
+ get_peer,
+ get_fd};
+ grpc_endpoint::vtable = &my_vtable;
+ ru_ = grpc_resource_user_create(Library::get().rq(), "dummy_endpoint");
+ }
+
+ void PushInput(grpc_exec_ctx *exec_ctx, grpc_slice slice) {
+ if (read_cb_ == nullptr) {
+ GPR_ASSERT(!have_slice_);
+ buffered_slice_ = slice;
+ have_slice_ = true;
+ return;
+ }
+ grpc_slice_buffer_add(slices_, slice);
+ grpc_closure_sched(exec_ctx, read_cb_, GRPC_ERROR_NONE);
+ read_cb_ = nullptr;
+ }
+
+ private:
+ grpc_resource_user *ru_;
+ grpc_closure *read_cb_ = nullptr;
+ grpc_slice_buffer *slices_ = nullptr;
+ bool have_slice_ = false;
+ grpc_slice buffered_slice_;
+
+ void QueueRead(grpc_exec_ctx *exec_ctx, grpc_slice_buffer *slices,
+ grpc_closure *cb) {
+ GPR_ASSERT(read_cb_ == nullptr);
+ if (have_slice_) {
+ have_slice_ = false;
+ grpc_slice_buffer_add(slices, buffered_slice_);
+ grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_NONE);
+ return;
+ }
+ read_cb_ = cb;
+ slices_ = slices;
+ }
+
+ static void read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_slice_buffer *slices, grpc_closure *cb) {
+ static_cast<DummyEndpoint *>(ep)->QueueRead(exec_ctx, slices, cb);
+ }
+
+ static void write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_slice_buffer *slices, grpc_closure *cb) {
+ grpc_closure_sched(exec_ctx, cb, GRPC_ERROR_NONE);
+ }
+
+ static grpc_workqueue *get_workqueue(grpc_endpoint *ep) { return NULL; }
+
+ static void add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_pollset *pollset) {}
+
+ static void add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_pollset_set *pollset) {}
+
+ static void shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_error *why) {
+ grpc_resource_user_shutdown(exec_ctx,
+ static_cast<DummyEndpoint *>(ep)->ru_);
+ grpc_closure_sched(exec_ctx, static_cast<DummyEndpoint *>(ep)->read_cb_,
+ why);
+ }
+
+ static void destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
+ grpc_resource_user_unref(exec_ctx, static_cast<DummyEndpoint *>(ep)->ru_);
+ delete static_cast<DummyEndpoint *>(ep);
+ }
+
+ static grpc_resource_user *get_resource_user(grpc_endpoint *ep) {
+ return static_cast<DummyEndpoint *>(ep)->ru_;
+ }
+ static char *get_peer(grpc_endpoint *ep) { return gpr_strdup("test"); }
+ static int get_fd(grpc_endpoint *ep) { return 0; }
+};
+
+class Fixture {
+ public:
+ Fixture(const grpc::ChannelArguments &args, bool client) {
+ grpc_channel_args c_args = args.c_channel_args();
+ ep_ = new DummyEndpoint;
+ t_ = grpc_create_chttp2_transport(exec_ctx(), &c_args, ep_, client);
+ grpc_chttp2_transport_start_reading(exec_ctx(), t_, NULL);
+ FlushExecCtx();
+ }
+
+ void FlushExecCtx() { grpc_exec_ctx_flush(&exec_ctx_); }
+
+ ~Fixture() {
+ grpc_transport_destroy(&exec_ctx_, t_);
+ grpc_exec_ctx_finish(&exec_ctx_);
+ }
+
+ grpc_chttp2_transport *chttp2_transport() {
+ return reinterpret_cast<grpc_chttp2_transport *>(t_);
+ }
+ grpc_transport *transport() { return t_; }
+ grpc_exec_ctx *exec_ctx() { return &exec_ctx_; }
+
+ void PushInput(grpc_slice slice) { ep_->PushInput(exec_ctx(), slice); }
+
+ private:
+ DummyEndpoint *ep_;
+ grpc_exec_ctx exec_ctx_ = GRPC_EXEC_CTX_INIT;
+ grpc_transport *t_;
+};
+
+static void DoNothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {}
+
+class Stream {
+ public:
+ Stream(Fixture *f) : f_(f) {
+ GRPC_STREAM_REF_INIT(&refcount_, 1, DoNothing, nullptr, "test_stream");
+ stream_size_ = grpc_transport_stream_size(f->transport());
+ stream_ = gpr_malloc(stream_size_);
+ arena_ = gpr_arena_create(4096);
+ }
+
+ ~Stream() {
+ gpr_free(stream_);
+ gpr_arena_destroy(arena_);
+ }
+
+ void Init(benchmark::State &state) {
+ memset(stream_, 0, stream_size_);
+ if ((state.iterations() & 0xffff) == 0) {
+ gpr_arena_destroy(arena_);
+ arena_ = gpr_arena_create(4096);
+ }
+ grpc_transport_init_stream(f_->exec_ctx(), f_->transport(),
+ static_cast<grpc_stream *>(stream_), &refcount_,
+ NULL, arena_);
+ }
+
+ void DestroyThen(grpc_closure *closure) {
+ grpc_transport_destroy_stream(f_->exec_ctx(), f_->transport(),
+ static_cast<grpc_stream *>(stream_), closure);
+ }
+
+ void Op(grpc_transport_stream_op *op) {
+ grpc_transport_perform_stream_op(f_->exec_ctx(), f_->transport(),
+ static_cast<grpc_stream *>(stream_), op);
+ }
+
+ grpc_chttp2_stream *chttp2_stream() {
+ return static_cast<grpc_chttp2_stream *>(stream_);
+ }
+
+ private:
+ Fixture *f_;
+ grpc_stream_refcount refcount_;
+ gpr_arena *arena_;
+ size_t stream_size_;
+ void *stream_;
+};
+
+class Closure : public grpc_closure {
+ public:
+ virtual ~Closure() {}
+};
+
+template <class F>
+std::unique_ptr<Closure> MakeClosure(
+ F f, grpc_closure_scheduler *sched = grpc_schedule_on_exec_ctx) {
+ struct C : public Closure {
+ C(const F &f, grpc_closure_scheduler *sched) : f_(f) {
+ grpc_closure_init(this, Execute, this, sched);
+ }
+ F f_;
+ static void Execute(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
+ static_cast<C *>(arg)->f_(exec_ctx, error);
+ }
+ };
+ return std::unique_ptr<Closure>(new C(f, sched));
+}
+
+template <class F>
+grpc_closure *MakeOnceClosure(
+ F f, grpc_closure_scheduler *sched = grpc_schedule_on_exec_ctx) {
+ struct C : public grpc_closure {
+ C(const F &f) : f_(f) {}
+ F f_;
+ static void Execute(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
+ static_cast<C *>(arg)->f_(exec_ctx, error);
+ delete static_cast<C *>(arg);
+ }
+ };
+ auto *c = new C{f};
+ return grpc_closure_init(c, C::Execute, c, sched);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Benchmarks
+//
+
+static void BM_StreamCreateDestroy(benchmark::State &state) {
+ TrackCounters track_counters;
+ Fixture f(grpc::ChannelArguments(), true);
+ Stream s(&f);
+ std::unique_ptr<Closure> next =
+ MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (!state.KeepRunning()) return;
+ s.Init(state);
+ s.DestroyThen(next.get());
+ });
+ grpc_closure_run(f.exec_ctx(), next.get(), GRPC_ERROR_NONE);
+ f.FlushExecCtx();
+ track_counters.Finish(state);
+}
+BENCHMARK(BM_StreamCreateDestroy);
+
+class RepresentativeClientInitialMetadata {
+ public:
+ static std::vector<grpc_mdelem> GetElems(grpc_exec_ctx *exec_ctx) {
+ return {
+ GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST,
+ grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_PATH,
+ grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))),
+ grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY,
+ grpc_slice_intern(grpc_slice_from_static_string(
+ "foo.test.google.fr:1234"))),
+ GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP,
+ GRPC_MDELEM_TE_TRAILERS,
+ GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC,
+ grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_USER_AGENT,
+ grpc_slice_intern(grpc_slice_from_static_string(
+ "grpc-c/3.0.0-dev (linux; chttp2; green)")))};
+ }
+};
+
+template <class Metadata>
+static void BM_StreamCreateSendInitialMetadataDestroy(benchmark::State &state) {
+ TrackCounters track_counters;
+ Fixture f(grpc::ChannelArguments(), true);
+ Stream s(&f);
+ grpc_transport_stream_op op;
+ std::unique_ptr<Closure> start;
+ std::unique_ptr<Closure> done;
+
+ grpc_metadata_batch b;
+ grpc_metadata_batch_init(&b);
+ b.deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ std::vector<grpc_mdelem> elems = Metadata::GetElems(f.exec_ctx());
+ std::vector<grpc_linked_mdelem> storage(elems.size());
+ for (size_t i = 0; i < elems.size(); i++) {
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "addmd",
+ grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i])));
+ }
+
+ f.FlushExecCtx();
+ start = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (!state.KeepRunning()) return;
+ s.Init(state);
+ memset(&op, 0, sizeof(op));
+ op.on_complete = done.get();
+ op.send_initial_metadata = &b;
+ s.Op(&op);
+ });
+ done = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ memset(&op, 0, sizeof(op));
+ op.cancel_error = GRPC_ERROR_CANCELLED;
+ s.Op(&op);
+ s.DestroyThen(start.get());
+ });
+ grpc_closure_sched(f.exec_ctx(), start.get(), GRPC_ERROR_NONE);
+ f.FlushExecCtx();
+ grpc_metadata_batch_destroy(f.exec_ctx(), &b);
+ track_counters.Finish(state);
+}
+BENCHMARK_TEMPLATE(BM_StreamCreateSendInitialMetadataDestroy,
+ RepresentativeClientInitialMetadata);
+
+static void BM_TransportEmptyOp(benchmark::State &state) {
+ TrackCounters track_counters;
+ Fixture f(grpc::ChannelArguments(), true);
+ Stream s(&f);
+ s.Init(state);
+ grpc_transport_stream_op op;
+ std::unique_ptr<Closure> c =
+ MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (!state.KeepRunning()) return;
+ memset(&op, 0, sizeof(op));
+ op.on_complete = c.get();
+ s.Op(&op);
+ });
+ grpc_closure_sched(f.exec_ctx(), c.get(), GRPC_ERROR_NONE);
+ f.FlushExecCtx();
+ s.DestroyThen(
+ MakeOnceClosure([](grpc_exec_ctx *exec_ctx, grpc_error *error) {}));
+ f.FlushExecCtx();
+ track_counters.Finish(state);
+}
+BENCHMARK(BM_TransportEmptyOp);
+
+static void BM_TransportStreamSend(benchmark::State &state) {
+ TrackCounters track_counters;
+ Fixture f(grpc::ChannelArguments(), true);
+ Stream s(&f);
+ s.Init(state);
+ grpc_transport_stream_op op;
+ grpc_slice_buffer_stream send_stream;
+ grpc_slice_buffer send_buffer;
+ grpc_slice_buffer_init(&send_buffer);
+ grpc_slice_buffer_add(&send_buffer, gpr_slice_malloc(state.range(0)));
+ memset(GRPC_SLICE_START_PTR(send_buffer.slices[0]), 0,
+ GRPC_SLICE_LENGTH(send_buffer.slices[0]));
+
+ grpc_metadata_batch b;
+ grpc_metadata_batch_init(&b);
+ b.deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ std::vector<grpc_mdelem> elems =
+ RepresentativeClientInitialMetadata::GetElems(f.exec_ctx());
+ std::vector<grpc_linked_mdelem> storage(elems.size());
+ for (size_t i = 0; i < elems.size(); i++) {
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "addmd",
+ grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i])));
+ }
+
+ std::unique_ptr<Closure> c =
+ MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (!state.KeepRunning()) return;
+ // force outgoing window to be yuge
+ s.chttp2_stream()->outgoing_window_delta = 1024 * 1024 * 1024;
+ f.chttp2_transport()->outgoing_window = 1024 * 1024 * 1024;
+ grpc_slice_buffer_stream_init(&send_stream, &send_buffer, 0);
+ memset(&op, 0, sizeof(op));
+ op.on_complete = c.get();
+ op.send_message = &send_stream.base;
+ s.Op(&op);
+ });
+
+ memset(&op, 0, sizeof(op));
+ op.send_initial_metadata = &b;
+ op.on_complete = c.get();
+ s.Op(&op);
+
+ f.FlushExecCtx();
+ memset(&op, 0, sizeof(op));
+ op.cancel_error = GRPC_ERROR_CANCELLED;
+ s.Op(&op);
+ s.DestroyThen(
+ MakeOnceClosure([](grpc_exec_ctx *exec_ctx, grpc_error *error) {}));
+ f.FlushExecCtx();
+ track_counters.Finish(state);
+ grpc_metadata_batch_destroy(f.exec_ctx(), &b);
+ grpc_slice_buffer_destroy(&send_buffer);
+}
+BENCHMARK(BM_TransportStreamSend)->Range(0, 128 * 1024 * 1024);
+
+#define SLICE_FROM_BUFFER(s) grpc_slice_from_static_buffer(s, sizeof(s) - 1)
+
+static grpc_slice CreateIncomingDataSlice(size_t length, size_t frame_size) {
+ std::queue<char> unframed;
+
+ unframed.push(static_cast<uint8_t>(0));
+ unframed.push(static_cast<uint8_t>(length >> 24));
+ unframed.push(static_cast<uint8_t>(length >> 16));
+ unframed.push(static_cast<uint8_t>(length >> 8));
+ unframed.push(static_cast<uint8_t>(length));
+ for (size_t i = 0; i < length; i++) {
+ unframed.push('a');
+ }
+
+ std::vector<char> framed;
+ while (unframed.size() > frame_size) {
+ // frame size
+ framed.push_back(static_cast<uint8_t>(frame_size >> 16));
+ framed.push_back(static_cast<uint8_t>(frame_size >> 8));
+ framed.push_back(static_cast<uint8_t>(frame_size));
+ // data frame
+ framed.push_back(0);
+ // no flags
+ framed.push_back(0);
+ // stream id
+ framed.push_back(0);
+ framed.push_back(0);
+ framed.push_back(0);
+ framed.push_back(1);
+ // frame data
+ for (size_t i = 0; i < frame_size; i++) {
+ framed.push_back(unframed.front());
+ unframed.pop();
+ }
+ }
+
+ // frame size
+ framed.push_back(static_cast<uint8_t>(unframed.size() >> 16));
+ framed.push_back(static_cast<uint8_t>(unframed.size() >> 8));
+ framed.push_back(static_cast<uint8_t>(unframed.size()));
+ // data frame
+ framed.push_back(0);
+ // no flags
+ framed.push_back(0);
+ // stream id
+ framed.push_back(0);
+ framed.push_back(0);
+ framed.push_back(0);
+ framed.push_back(1);
+ while (!unframed.empty()) {
+ framed.push_back(unframed.front());
+ unframed.pop();
+ }
+
+ return grpc_slice_from_copied_buffer(framed.data(), framed.size());
+}
+
+static void BM_TransportStreamRecv(benchmark::State &state) {
+ TrackCounters track_counters;
+ Fixture f(grpc::ChannelArguments(), true);
+ Stream s(&f);
+ s.Init(state);
+ grpc_transport_stream_op op;
+ grpc_byte_stream *recv_stream;
+ grpc_slice incoming_data = CreateIncomingDataSlice(state.range(0), 16384);
+
+ grpc_metadata_batch b;
+ grpc_metadata_batch_init(&b);
+ grpc_metadata_batch b_recv;
+ grpc_metadata_batch_init(&b_recv);
+ b.deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ std::vector<grpc_mdelem> elems =
+ RepresentativeClientInitialMetadata::GetElems(f.exec_ctx());
+ std::vector<grpc_linked_mdelem> storage(elems.size());
+ for (size_t i = 0; i < elems.size(); i++) {
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "addmd",
+ grpc_metadata_batch_add_tail(f.exec_ctx(), &b, &storage[i], elems[i])));
+ }
+
+ std::unique_ptr<Closure> do_nothing =
+ MakeClosure([](grpc_exec_ctx *exec_ctx, grpc_error *error) {});
+
+ uint32_t received;
+
+ std::unique_ptr<Closure> drain_start;
+ std::unique_ptr<Closure> drain;
+ std::unique_ptr<Closure> drain_continue;
+ grpc_slice recv_slice;
+
+ std::unique_ptr<Closure> c =
+ MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (!state.KeepRunning()) return;
+ // force outgoing window to be yuge
+ s.chttp2_stream()->incoming_window_delta = 1024 * 1024 * 1024;
+ f.chttp2_transport()->incoming_window = 1024 * 1024 * 1024;
+ received = 0;
+ memset(&op, 0, sizeof(op));
+ op.on_complete = do_nothing.get();
+ op.recv_message = &recv_stream;
+ op.recv_message_ready = drain_start.get();
+ s.Op(&op);
+ f.PushInput(grpc_slice_ref(incoming_data));
+ });
+
+ drain_start = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ if (recv_stream == NULL) {
+ GPR_ASSERT(!state.KeepRunning());
+ return;
+ }
+ grpc_closure_run(exec_ctx, drain.get(), GRPC_ERROR_NONE);
+ });
+
+ drain = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ do {
+ if (received == recv_stream->length) {
+ grpc_byte_stream_destroy(exec_ctx, recv_stream);
+ grpc_closure_sched(exec_ctx, c.get(), GRPC_ERROR_NONE);
+ return;
+ }
+ } while (grpc_byte_stream_next(exec_ctx, recv_stream, &recv_slice,
+ recv_stream->length - received,
+ drain_continue.get()));
+ });
+
+ drain_continue = MakeClosure([&](grpc_exec_ctx *exec_ctx, grpc_error *error) {
+ received += GRPC_SLICE_LENGTH(recv_slice);
+ grpc_slice_unref_internal(exec_ctx, recv_slice);
+ grpc_closure_run(exec_ctx, drain.get(), GRPC_ERROR_NONE);
+ });
+
+ memset(&op, 0, sizeof(op));
+ op.send_initial_metadata = &b;
+ op.recv_initial_metadata = &b_recv;
+ op.on_complete = c.get();
+ s.Op(&op);
+ f.PushInput(SLICE_FROM_BUFFER(
+ "\x00\x00\x00\x04\x00\x00\x00\x00\x00"
+ // Generated using:
+ // tools/codegen/core/gen_header_frame.py <
+ // test/cpp/microbenchmarks/representative_server_initial_metadata.headers
+ "\x00\x00X\x01\x04\x00\x00\x00\x01"
+ "\x10\x07:status\x03"
+ "200"
+ "\x10\x0c"
+ "content-type\x10"
+ "application/grpc"
+ "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"));
+
+ f.FlushExecCtx();
+ memset(&op, 0, sizeof(op));
+ op.cancel_error = GRPC_ERROR_CANCELLED;
+ s.Op(&op);
+ s.DestroyThen(
+ MakeOnceClosure([](grpc_exec_ctx *exec_ctx, grpc_error *error) {}));
+ f.FlushExecCtx();
+ track_counters.Finish(state);
+ grpc_metadata_batch_destroy(f.exec_ctx(), &b);
+ grpc_metadata_batch_destroy(f.exec_ctx(), &b_recv);
+ grpc_slice_unref(incoming_data);
+}
+BENCHMARK(BM_TransportStreamRecv)->Range(0, 128 * 1024 * 1024);
+
+BENCHMARK_MAIN();
diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc
index c4f6aa19d5..00e1a08cab 100644
--- a/test/cpp/microbenchmarks/bm_error.cc
+++ b/test/cpp/microbenchmarks/bm_error.cc
@@ -51,21 +51,30 @@ class ErrorDeleter {
};
typedef std::unique_ptr<grpc_error, ErrorDeleter> ErrorPtr;
-static void BM_ErrorCreate(benchmark::State& state) {
+static void BM_ErrorCreateFromStatic(benchmark::State& state) {
TrackCounters track_counters;
while (state.KeepRunning()) {
- GRPC_ERROR_UNREF(GRPC_ERROR_CREATE("Error"));
+ GRPC_ERROR_UNREF(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"));
}
track_counters.Finish(state);
}
-BENCHMARK(BM_ErrorCreate);
+BENCHMARK(BM_ErrorCreateFromStatic);
+
+static void BM_ErrorCreateFromCopied(benchmark::State& state) {
+ TrackCounters track_counters;
+ while (state.KeepRunning()) {
+ GRPC_ERROR_UNREF(GRPC_ERROR_CREATE_FROM_COPIED_STRING("Error not inline"));
+ }
+ track_counters.Finish(state);
+}
+BENCHMARK(BM_ErrorCreateFromCopied);
static void BM_ErrorCreateAndSetStatus(benchmark::State& state) {
TrackCounters track_counters;
while (state.KeepRunning()) {
- GRPC_ERROR_UNREF(grpc_error_set_int(GRPC_ERROR_CREATE("Error"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_ABORTED));
+ GRPC_ERROR_UNREF(
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_ABORTED));
}
track_counters.Finish(state);
}
@@ -75,9 +84,10 @@ static void BM_ErrorCreateAndSetIntAndStr(benchmark::State& state) {
TrackCounters track_counters;
while (state.KeepRunning()) {
GRPC_ERROR_UNREF(grpc_error_set_str(
- grpc_error_set_int(GRPC_ERROR_CREATE("GOAWAY received"),
- GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)0),
- GRPC_ERROR_STR_RAW_BYTES, "raw bytes"));
+ grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
+ GRPC_ERROR_INT_HTTP2_ERROR, (intptr_t)0),
+ GRPC_ERROR_STR_RAW_BYTES, grpc_slice_from_static_string("raw bytes")));
}
track_counters.Finish(state);
}
@@ -85,7 +95,7 @@ BENCHMARK(BM_ErrorCreateAndSetIntAndStr);
static void BM_ErrorCreateAndSetIntLoop(benchmark::State& state) {
TrackCounters track_counters;
- grpc_error* error = GRPC_ERROR_CREATE("Error");
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error");
int n = 0;
while (state.KeepRunning()) {
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, n++);
@@ -97,10 +107,11 @@ BENCHMARK(BM_ErrorCreateAndSetIntLoop);
static void BM_ErrorCreateAndSetStrLoop(benchmark::State& state) {
TrackCounters track_counters;
- grpc_error* error = GRPC_ERROR_CREATE("Error");
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error");
const char* str = "hello";
while (state.KeepRunning()) {
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, str);
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ grpc_slice_from_static_string(str));
}
GRPC_ERROR_UNREF(error);
track_counters.Finish(state);
@@ -109,7 +120,7 @@ BENCHMARK(BM_ErrorCreateAndSetStrLoop);
static void BM_ErrorRefUnref(benchmark::State& state) {
TrackCounters track_counters;
- grpc_error* error = GRPC_ERROR_CREATE("Error");
+ grpc_error* error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error");
while (state.KeepRunning()) {
GRPC_ERROR_UNREF(GRPC_ERROR_REF(error));
}
@@ -138,8 +149,8 @@ BENCHMARK(BM_ErrorGetIntFromNoError);
static void BM_ErrorGetMissingInt(benchmark::State& state) {
TrackCounters track_counters;
- ErrorPtr error(
- grpc_error_set_int(GRPC_ERROR_CREATE("Error"), GRPC_ERROR_INT_INDEX, 1));
+ ErrorPtr error(grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_INDEX, 1));
while (state.KeepRunning()) {
intptr_t value;
grpc_error_get_int(error.get(), GRPC_ERROR_INT_OFFSET, &value);
@@ -150,8 +161,8 @@ BENCHMARK(BM_ErrorGetMissingInt);
static void BM_ErrorGetPresentInt(benchmark::State& state) {
TrackCounters track_counters;
- ErrorPtr error(
- grpc_error_set_int(GRPC_ERROR_CREATE("Error"), GRPC_ERROR_INT_OFFSET, 1));
+ ErrorPtr error(grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_OFFSET, 1));
while (state.KeepRunning()) {
intptr_t value;
grpc_error_get_int(error.get(), GRPC_ERROR_INT_OFFSET, &value);
@@ -186,7 +197,7 @@ class SimpleError {
private:
const gpr_timespec deadline_ = gpr_inf_future(GPR_CLOCK_MONOTONIC);
- ErrorPtr error_{GRPC_ERROR_CREATE("Error")};
+ ErrorPtr error_{GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error")};
};
class ErrorWithGrpcStatus {
@@ -196,9 +207,9 @@ class ErrorWithGrpcStatus {
private:
const gpr_timespec deadline_ = gpr_inf_future(GPR_CLOCK_MONOTONIC);
- ErrorPtr error_{grpc_error_set_int(GRPC_ERROR_CREATE("Error"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNIMPLEMENTED)};
+ ErrorPtr error_{grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_UNIMPLEMENTED)};
};
class ErrorWithHttpError {
@@ -208,9 +219,9 @@ class ErrorWithHttpError {
private:
const gpr_timespec deadline_ = gpr_inf_future(GPR_CLOCK_MONOTONIC);
- ErrorPtr error_{grpc_error_set_int(GRPC_ERROR_CREATE("Error"),
- GRPC_ERROR_INT_HTTP2_ERROR,
- GRPC_HTTP2_COMPRESSION_ERROR)};
+ ErrorPtr error_{grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_HTTP2_ERROR,
+ GRPC_HTTP2_COMPRESSION_ERROR)};
};
class ErrorWithNestedGrpcStatus {
@@ -220,11 +231,12 @@ class ErrorWithNestedGrpcStatus {
private:
const gpr_timespec deadline_ = gpr_inf_future(GPR_CLOCK_MONOTONIC);
- ErrorPtr nested_error_{grpc_error_set_int(GRPC_ERROR_CREATE("Error"),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNIMPLEMENTED)};
+ ErrorPtr nested_error_{grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Error"), GRPC_ERROR_INT_GRPC_STATUS,
+ GRPC_STATUS_UNIMPLEMENTED)};
grpc_error* nested_errors_[1] = {nested_error_.get()};
- ErrorPtr error_{GRPC_ERROR_CREATE_REFERENCING("Error", nested_errors_, 1)};
+ ErrorPtr error_{GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Error", nested_errors_, 1)};
};
template <class Fixture>
@@ -253,8 +265,8 @@ static void BM_ErrorGetStatus(benchmark::State& state) {
Fixture fixture;
while (state.KeepRunning()) {
grpc_status_code status;
- const char* msg;
- grpc_error_get_status(fixture.error(), fixture.deadline(), &status, &msg,
+ grpc_slice slice;
+ grpc_error_get_status(fixture.error(), fixture.deadline(), &status, &slice,
NULL);
}
track_counters.Finish(state);
diff --git a/test/cpp/microbenchmarks/bm_fullstack_streaming_ping_pong.cc b/test/cpp/microbenchmarks/bm_fullstack_streaming_ping_pong.cc
index dc0e7d769a..00e37f7912 100644
--- a/test/cpp/microbenchmarks/bm_fullstack_streaming_ping_pong.cc
+++ b/test/cpp/microbenchmarks/bm_fullstack_streaming_ping_pong.cc
@@ -54,86 +54,141 @@ auto& force_library_initialization = Library::get();
static void* tag(intptr_t x) { return reinterpret_cast<void*>(x); }
-template <class Fixture>
-static void BM_PumpStreamClientToServer(benchmark::State& state) {
+// Repeatedly makes Streaming Bidi calls (exchanging a configurable number of
+// messages in each call) in a loop on a single channel
+//
+// First parmeter (i.e state.range(0)): Message size (in bytes) to use
+// Second parameter (i.e state.range(1)): Number of ping pong messages.
+// Note: One ping-pong means two messages (one from client to server and
+// the other from server to client):
+template <class Fixture, class ClientContextMutator, class ServerContextMutator>
+static void BM_StreamingPingPong(benchmark::State& state) {
+ const int msg_size = state.range(0);
+ const int max_ping_pongs = state.range(1);
+
EchoTestService::AsyncService service;
std::unique_ptr<Fixture> fixture(new Fixture(&service));
{
+ EchoResponse send_response;
+ EchoResponse recv_response;
EchoRequest send_request;
EchoRequest recv_request;
- if (state.range(0) > 0) {
- send_request.set_message(std::string(state.range(0), 'a'));
+
+ if (msg_size > 0) {
+ send_request.set_message(std::string(msg_size, 'a'));
+ send_response.set_message(std::string(msg_size, 'b'));
}
- Status recv_status;
- ServerContext svr_ctx;
- ServerAsyncReaderWriter<EchoResponse, EchoRequest> response_rw(&svr_ctx);
- service.RequestBidiStream(&svr_ctx, &response_rw, fixture->cq(),
- fixture->cq(), tag(0));
+
std::unique_ptr<EchoTestService::Stub> stub(
EchoTestService::NewStub(fixture->channel()));
- ClientContext cli_ctx;
- auto request_rw = stub->AsyncBidiStream(&cli_ctx, fixture->cq(), tag(1));
- int need_tags = (1 << 0) | (1 << 1);
- void* t;
- bool ok;
- while (need_tags) {
- GPR_ASSERT(fixture->cq()->Next(&t, &ok));
- GPR_ASSERT(ok);
- int i = (int)(intptr_t)t;
- GPR_ASSERT(need_tags & (1 << i));
- need_tags &= ~(1 << i);
- }
- response_rw.Read(&recv_request, tag(0));
+
while (state.KeepRunning()) {
- GPR_TIMER_SCOPE("BenchmarkCycle", 0);
- request_rw->Write(send_request, tag(1));
- while (true) {
+ ServerContext svr_ctx;
+ ServerContextMutator svr_ctx_mut(&svr_ctx);
+ ServerAsyncReaderWriter<EchoResponse, EchoRequest> response_rw(&svr_ctx);
+ service.RequestBidiStream(&svr_ctx, &response_rw, fixture->cq(),
+ fixture->cq(), tag(0));
+
+ ClientContext cli_ctx;
+ ClientContextMutator cli_ctx_mut(&cli_ctx);
+ auto request_rw = stub->AsyncBidiStream(&cli_ctx, fixture->cq(), tag(1));
+
+ // Establish async stream between client side and server side
+ void* t;
+ bool ok;
+ int need_tags = (1 << 0) | (1 << 1);
+ while (need_tags) {
GPR_ASSERT(fixture->cq()->Next(&t, &ok));
- if (t == tag(0)) {
- response_rw.Read(&recv_request, tag(0));
- } else if (t == tag(1)) {
- break;
- } else {
- GPR_ASSERT(false);
+ GPR_ASSERT(ok);
+ int i = (int)(intptr_t)t;
+ GPR_ASSERT(need_tags & (1 << i));
+ need_tags &= ~(1 << i);
+ }
+
+ // Send 'max_ping_pongs' number of ping pong messages
+ int ping_pong_cnt = 0;
+ while (ping_pong_cnt < max_ping_pongs) {
+ request_rw->Write(send_request, tag(0)); // Start client send
+ response_rw.Read(&recv_request, tag(1)); // Start server recv
+ request_rw->Read(&recv_response, tag(2)); // Start client recv
+
+ need_tags = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3);
+ while (need_tags) {
+ GPR_ASSERT(fixture->cq()->Next(&t, &ok));
+ GPR_ASSERT(ok);
+ int i = (int)(intptr_t)t;
+
+ // If server recv is complete, start the server send operation
+ if (i == 1) {
+ response_rw.Write(send_response, tag(3));
+ }
+
+ GPR_ASSERT(need_tags & (1 << i));
+ need_tags &= ~(1 << i);
}
+
+ ping_pong_cnt++;
}
- }
- request_rw->WritesDone(tag(1));
- need_tags = (1 << 0) | (1 << 1);
- while (need_tags) {
- GPR_ASSERT(fixture->cq()->Next(&t, &ok));
- int i = (int)(intptr_t)t;
- GPR_ASSERT(need_tags & (1 << i));
- need_tags &= ~(1 << i);
+
+ request_rw->WritesDone(tag(0));
+ response_rw.Finish(Status::OK, tag(1));
+
+ Status recv_status;
+ request_rw->Finish(&recv_status, tag(2));
+
+ need_tags = (1 << 0) | (1 << 1) | (1 << 2);
+ while (need_tags) {
+ GPR_ASSERT(fixture->cq()->Next(&t, &ok));
+ int i = (int)(intptr_t)t;
+ GPR_ASSERT(need_tags & (1 << i));
+ need_tags &= ~(1 << i);
+ }
+
+ GPR_ASSERT(recv_status.ok());
}
}
+
fixture->Finish(state);
fixture.reset();
- state.SetBytesProcessed(state.range(0) * state.iterations());
+ state.SetBytesProcessed(msg_size * state.iterations() * max_ping_pongs * 2);
}
-template <class Fixture>
-static void BM_PumpStreamServerToClient(benchmark::State& state) {
+// Repeatedly sends ping pong messages in a single streaming Bidi call in a loop
+// First parmeter (i.e state.range(0)): Message size (in bytes) to use
+template <class Fixture, class ClientContextMutator, class ServerContextMutator>
+static void BM_StreamingPingPongMsgs(benchmark::State& state) {
+ const int msg_size = state.range(0);
+
EchoTestService::AsyncService service;
std::unique_ptr<Fixture> fixture(new Fixture(&service));
{
EchoResponse send_response;
EchoResponse recv_response;
- if (state.range(0) > 0) {
- send_response.set_message(std::string(state.range(0), 'a'));
+ EchoRequest send_request;
+ EchoRequest recv_request;
+
+ if (msg_size > 0) {
+ send_request.set_message(std::string(msg_size, 'a'));
+ send_response.set_message(std::string(msg_size, 'b'));
}
- Status recv_status;
+
+ std::unique_ptr<EchoTestService::Stub> stub(
+ EchoTestService::NewStub(fixture->channel()));
+
ServerContext svr_ctx;
+ ServerContextMutator svr_ctx_mut(&svr_ctx);
ServerAsyncReaderWriter<EchoResponse, EchoRequest> response_rw(&svr_ctx);
service.RequestBidiStream(&svr_ctx, &response_rw, fixture->cq(),
fixture->cq(), tag(0));
- std::unique_ptr<EchoTestService::Stub> stub(
- EchoTestService::NewStub(fixture->channel()));
+
ClientContext cli_ctx;
+ ClientContextMutator cli_ctx_mut(&cli_ctx);
auto request_rw = stub->AsyncBidiStream(&cli_ctx, fixture->cq(), tag(1));
- int need_tags = (1 << 0) | (1 << 1);
+
+ // Establish async stream between client side and server side
void* t;
bool ok;
+ int need_tags = (1 << 0) | (1 << 1);
while (need_tags) {
GPR_ASSERT(fixture->cq()->Next(&t, &ok));
GPR_ASSERT(ok);
@@ -141,54 +196,78 @@ static void BM_PumpStreamServerToClient(benchmark::State& state) {
GPR_ASSERT(need_tags & (1 << i));
need_tags &= ~(1 << i);
}
- request_rw->Read(&recv_response, tag(0));
+
while (state.KeepRunning()) {
GPR_TIMER_SCOPE("BenchmarkCycle", 0);
- response_rw.Write(send_response, tag(1));
- while (true) {
+ request_rw->Write(send_request, tag(0)); // Start client send
+ response_rw.Read(&recv_request, tag(1)); // Start server recv
+ request_rw->Read(&recv_response, tag(2)); // Start client recv
+
+ need_tags = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3);
+ while (need_tags) {
GPR_ASSERT(fixture->cq()->Next(&t, &ok));
- if (t == tag(0)) {
- request_rw->Read(&recv_response, tag(0));
- } else if (t == tag(1)) {
- break;
- } else {
- GPR_ASSERT(false);
+ GPR_ASSERT(ok);
+ int i = (int)(intptr_t)t;
+
+ // If server recv is complete, start the server send operation
+ if (i == 1) {
+ response_rw.Write(send_response, tag(3));
}
+
+ GPR_ASSERT(need_tags & (1 << i));
+ need_tags &= ~(1 << i);
}
}
+
+ request_rw->WritesDone(tag(0));
response_rw.Finish(Status::OK, tag(1));
- need_tags = (1 << 0) | (1 << 1);
+ Status recv_status;
+ request_rw->Finish(&recv_status, tag(2));
+
+ need_tags = (1 << 0) | (1 << 1) | (1 << 2);
while (need_tags) {
GPR_ASSERT(fixture->cq()->Next(&t, &ok));
int i = (int)(intptr_t)t;
GPR_ASSERT(need_tags & (1 << i));
need_tags &= ~(1 << i);
}
+
+ GPR_ASSERT(recv_status.ok());
}
+
fixture->Finish(state);
fixture.reset();
- state.SetBytesProcessed(state.range(0) * state.iterations());
+ state.SetBytesProcessed(msg_size * state.iterations() * 2);
}
/*******************************************************************************
* CONFIGURATIONS
*/
-BENCHMARK_TEMPLATE(BM_PumpStreamClientToServer, TCP)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamClientToServer, UDS)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamClientToServer, SockPair)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamClientToServer, InProcessCHTTP2)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamServerToClient, TCP)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamServerToClient, UDS)
- ->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamServerToClient, SockPair)
+// Generate Args for StreamingPingPong benchmarks. Currently generates args for
+// only "small streams" (i.e streams with 0, 1 or 2 messages)
+static void StreamingPingPongArgs(benchmark::internal::Benchmark* b) {
+ int msg_size = 0;
+
+ b->Args({0, 0}); // spl case: 0 ping-pong msgs (msg_size doesn't matter here)
+
+ for (msg_size = 0; msg_size <= 128 * 1024 * 1024;
+ msg_size == 0 ? msg_size++ : msg_size *= 8) {
+ b->Args({msg_size, 1});
+ b->Args({msg_size, 2});
+ }
+}
+
+BENCHMARK_TEMPLATE(BM_StreamingPingPong, InProcessCHTTP2, NoOpMutator,
+ NoOpMutator)
+ ->Apply(StreamingPingPongArgs);
+BENCHMARK_TEMPLATE(BM_StreamingPingPong, TCP, NoOpMutator, NoOpMutator)
+ ->Apply(StreamingPingPongArgs);
+
+BENCHMARK_TEMPLATE(BM_StreamingPingPongMsgs, InProcessCHTTP2, NoOpMutator,
+ NoOpMutator)
->Range(0, 128 * 1024 * 1024);
-BENCHMARK_TEMPLATE(BM_PumpStreamServerToClient, InProcessCHTTP2)
+BENCHMARK_TEMPLATE(BM_StreamingPingPongMsgs, TCP, NoOpMutator, NoOpMutator)
->Range(0, 128 * 1024 * 1024);
} // namespace testing
diff --git a/test/http2_test/http2_base_server.py b/test/http2_test/http2_base_server.py
index 8de028ceb1..e158e9b703 100644
--- a/test/http2_test/http2_base_server.py
+++ b/test/http2_test/http2_base_server.py
@@ -39,6 +39,7 @@ import twisted.internet.protocol
_READ_CHUNK_SIZE = 16384
_GRPC_HEADER_SIZE = 5
+_MIN_SETTINGS_MAX_FRAME_SIZE = 16384
class H2ProtocolBaseServer(twisted.internet.protocol.Protocol):
def __init__(self):
@@ -121,38 +122,46 @@ class H2ProtocolBaseServer(twisted.internet.protocol.Protocol):
)
self.transport.write(self._conn.data_to_send())
- def on_window_update_default(self, event):
- # send pending data, if any
- self.default_send(event.stream_id)
+ def on_window_update_default(self, _, pad_length=None, read_chunk_size=_READ_CHUNK_SIZE):
+ # try to resume sending on all active streams (update might be for connection)
+ for stream_id in self._send_remaining:
+ self.default_send(stream_id, pad_length=pad_length, read_chunk_size=read_chunk_size)
def send_reset_stream(self):
self._conn.reset_stream(self._stream_id)
self.transport.write(self._conn.data_to_send())
- def setup_send(self, data_to_send, stream_id):
+ def setup_send(self, data_to_send, stream_id, pad_length=None, read_chunk_size=_READ_CHUNK_SIZE):
logging.info('Setting up data to send for stream_id: %d' % stream_id)
self._send_remaining[stream_id] = len(data_to_send)
self._send_offset = 0
self._data_to_send = data_to_send
- self.default_send(stream_id)
+ self.default_send(stream_id, pad_length=pad_length, read_chunk_size=read_chunk_size)
- def default_send(self, stream_id):
+ def default_send(self, stream_id, pad_length=None, read_chunk_size=_READ_CHUNK_SIZE):
if not self._send_remaining.has_key(stream_id):
# not setup to send data yet
return
while self._send_remaining[stream_id] > 0:
lfcw = self._conn.local_flow_control_window(stream_id)
- if lfcw == 0:
+ padding_bytes = pad_length + 1 if pad_length is not None else 0
+ if lfcw - padding_bytes <= 0:
+ logging.info('Stream %d. lfcw: %d. padding bytes: %d. not enough quota yet' % (stream_id, lfcw, padding_bytes))
break
- chunk_size = min(lfcw, _READ_CHUNK_SIZE)
+ chunk_size = min(lfcw - padding_bytes, read_chunk_size)
bytes_to_send = min(chunk_size, self._send_remaining[stream_id])
- logging.info('flow_control_window = %d. sending [%d:%d] stream_id %d' %
- (lfcw, self._send_offset, self._send_offset + bytes_to_send,
- stream_id))
+ logging.info('flow_control_window = %d. sending [%d:%d] stream_id %d. includes %d total padding bytes' %
+ (lfcw, self._send_offset, self._send_offset + bytes_to_send + padding_bytes,
+ stream_id, padding_bytes))
+ # The receiver might allow sending frames larger than the http2 minimum
+ # max frame size (16384), but this test should never send more than 16384
+ # for simplicity (which is always legal).
+ if bytes_to_send + padding_bytes > _MIN_SETTINGS_MAX_FRAME_SIZE:
+ raise ValueError("overload: sending %d" % (bytes_to_send + padding_bytes))
data = self._data_to_send[self._send_offset : self._send_offset + bytes_to_send]
try:
- self._conn.send_data(stream_id, data, False)
+ self._conn.send_data(stream_id, data, end_stream=False, pad_length=pad_length)
except h2.exceptions.ProtocolError:
logging.info('Stream %d is closed' % stream_id)
break
@@ -200,5 +209,5 @@ class H2ProtocolBaseServer(twisted.internet.protocol.Protocol):
req_proto_str = recv_buffer[5:5+grpc_msg_size]
sr = messages_pb2.SimpleRequest()
sr.ParseFromString(req_proto_str)
- logging.info('Parsed request for stream %d: response_size=%s' % (stream_id, sr.response_size))
+ logging.info('Parsed simple request for stream %d' % stream_id)
return sr
diff --git a/test/http2_test/http2_server_health_check.py b/test/http2_test/http2_server_health_check.py
new file mode 100644
index 0000000000..dd9402b855
--- /dev/null
+++ b/test/http2_test/http2_server_health_check.py
@@ -0,0 +1,49 @@
+# Copyright 2017, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import argparse
+import hyper
+import sys
+
+# Utility to healthcheck the http2 server. Used when starting the server to
+# verify that the server is live before tests begin.
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--server_host', type=str, default='localhost')
+ parser.add_argument('--server_port', type=int, default=8080)
+ args = parser.parse_args()
+ server_host = args.server_host
+ server_port = args.server_port
+ conn = hyper.HTTP20Connection('%s:%d' % (server_host, server_port))
+ conn.request('POST', '/grpc.testing.TestService/UnaryCall')
+ resp = conn.get_response()
+ if resp.headers.get('grpc-encoding') is None:
+ sys.exit(1)
+ else:
+ sys.exit(0)
diff --git a/test/http2_test/http2_test_server.py b/test/http2_test/http2_test_server.py
index abde3433ad..6a7849b94a 100644
--- a/test/http2_test/http2_test_server.py
+++ b/test/http2_test/http2_test_server.py
@@ -31,6 +31,7 @@
import argparse
import logging
+import sys
import twisted
import twisted.internet
import twisted.internet.endpoints
@@ -43,6 +44,7 @@ import test_ping
import test_rst_after_data
import test_rst_after_header
import test_rst_during_data
+import test_data_frame_padding
_TEST_CASE_MAPPING = {
'rst_after_header': test_rst_after_header.TestcaseRstStreamAfterHeader,
@@ -51,11 +53,17 @@ _TEST_CASE_MAPPING = {
'goaway': test_goaway.TestcaseGoaway,
'ping': test_ping.TestcasePing,
'max_streams': test_max_streams.TestcaseSettingsMaxStreams,
+
+ # Positive tests below:
+ 'data_frame_padding': test_data_frame_padding.TestDataFramePadding,
+ 'no_df_padding_sanity_test': test_data_frame_padding.TestDataFramePadding,
}
+_exit_code = 0
+
class H2Factory(twisted.internet.protocol.Factory):
def __init__(self, testcase):
- logging.info('Creating H2Factory for new connection.')
+ logging.info('Creating H2Factory for new connection (%s)', testcase)
self._num_streams = 0
self._testcase = testcase
@@ -70,6 +78,8 @@ class H2Factory(twisted.internet.protocol.Factory):
if self._testcase == 'goaway':
return t(self._num_streams).get_base_server()
+ elif self._testcase == 'no_df_padding_sanity_test':
+ return t(use_padding=False).get_base_server()
else:
return t().get_base_server()
@@ -78,11 +88,23 @@ def parse_arguments():
parser.add_argument('--base_port', type=int, default=8080,
help='base port to run the servers (default: 8080). One test server is '
'started on each incrementing port, beginning with base_port, in the '
- 'following order: goaway,max_streams,ping,rst_after_data,rst_after_header,'
+ 'following order: data_frame_padding,goaway,max_streams,'
+ 'no_df_padding_sanity_test,ping,rst_after_data,rst_after_header,'
'rst_during_data'
)
return parser.parse_args()
+def listen(endpoint, test_case):
+ deferred = endpoint.listen(H2Factory(test_case))
+ def listen_error(reason):
+ # If listening fails, we stop the reactor and exit the program
+ # with exit code 1.
+ global _exit_code
+ _exit_code = 1
+ logging.error('Listening failed: %s' % reason.value)
+ twisted.internet.reactor.stop()
+ deferred.addErrback(listen_error)
+
def start_test_servers(base_port):
""" Start one server per test case on incrementing port numbers
beginning with base_port """
@@ -92,7 +114,9 @@ def start_test_servers(base_port):
logging.warning('serving on port %d : %s'%(portnum, test_case))
endpoint = twisted.internet.endpoints.TCP4ServerEndpoint(
twisted.internet.reactor, portnum, backlog=128)
- endpoint.listen(H2Factory(test_case))
+ # Wait until the reactor is running before calling endpoint.listen().
+ twisted.internet.reactor.callWhenRunning(listen, endpoint, test_case)
+
index += 1
if __name__ == '__main__':
@@ -102,3 +126,4 @@ if __name__ == '__main__':
args = parse_arguments()
start_test_servers(args.base_port)
twisted.internet.reactor.run()
+ sys.exit(_exit_code)
diff --git a/test/http2_test/test_data_frame_padding.py b/test/http2_test/test_data_frame_padding.py
new file mode 100644
index 0000000000..e1db28faed
--- /dev/null
+++ b/test/http2_test/test_data_frame_padding.py
@@ -0,0 +1,94 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import http2_base_server
+import logging
+import messages_pb2
+
+# Set the number of padding bytes per data frame to be very large
+# relative to the number of data bytes for each data frame sent.
+_LARGE_PADDING_LENGTH = 255
+_SMALL_READ_CHUNK_SIZE = 5
+
+class TestDataFramePadding(object):
+ """
+ In response to an incoming request, this test sends headers, followed by
+ data, followed by a reset stream frame. Client asserts that the RPC failed.
+ Client needs to deliver the complete message to the application layer.
+ """
+ def __init__(self, use_padding=True):
+ self._base_server = http2_base_server.H2ProtocolBaseServer()
+ self._base_server._handlers['DataReceived'] = self.on_data_received
+ self._base_server._handlers['WindowUpdated'] = self.on_window_update
+ self._base_server._handlers['RequestReceived'] = self.on_request_received
+
+ # _total_updates maps stream ids to total flow control updates received
+ self._total_updates = {}
+ # zero window updates so far for connection window (stream id '0')
+ self._total_updates[0] = 0
+ self._read_chunk_size = _SMALL_READ_CHUNK_SIZE
+
+ if use_padding:
+ self._pad_length = _LARGE_PADDING_LENGTH
+ else:
+ self._pad_length = None
+
+ def get_base_server(self):
+ return self._base_server
+
+ def on_data_received(self, event):
+ logging.info('on data received. Stream id: %d. Data length: %d' % (event.stream_id, len(event.data)))
+ self._base_server.on_data_received_default(event)
+ if len(event.data) == 0:
+ return
+ sr = self._base_server.parse_received_data(event.stream_id)
+ stream_bytes = ''
+ # Check if full grpc msg has been read into the recv buffer yet
+ if sr:
+ response_data = self._base_server.default_response_data(sr.response_size)
+ logging.info('Stream id: %d. total resp size: %d' % (event.stream_id, len(response_data)))
+ # Begin sending the response. Add ``self._pad_length`` padding to each
+ # data frame and split the whole message into data frames each carrying
+ # only self._read_chunk_size of data.
+ # The purpose is to have the majority of the data frame response bytes
+ # be padding bytes, since ``self._pad_length`` >> ``self._read_chunk_size``.
+ self._base_server.setup_send(response_data , event.stream_id, pad_length=self._pad_length, read_chunk_size=self._read_chunk_size)
+
+ def on_request_received(self, event):
+ self._base_server.on_request_received_default(event)
+ logging.info('on request received. Stream id: %s.' % event.stream_id)
+ self._total_updates[event.stream_id] = 0
+
+ # Log debug info and try to resume sending on all currently active streams.
+ def on_window_update(self, event):
+ logging.info('on window update. Stream id: %s. Delta: %s' % (event.stream_id, event.delta))
+ self._total_updates[event.stream_id] += event.delta
+ total = self._total_updates[event.stream_id]
+ logging.info('... - total updates for stream %d : %d' % (event.stream_id, total))
+ self._base_server.on_window_update_default(event, pad_length=self._pad_length, read_chunk_size=self._read_chunk_size)
diff --git a/third_party/cares/ares_build.h b/third_party/cares/ares_build.h
new file mode 100644
index 0000000000..7d69f1e6ae
--- /dev/null
+++ b/third_party/cares/ares_build.h
@@ -0,0 +1,254 @@
+#ifndef __CARES_BUILD_H
+#define __CARES_BUILD_H
+
+
+/* Copyright (C) 2009 - 2013 by Daniel Stenberg et al
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ */
+
+/* ================================================================ */
+/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * See file ares_build.h.in, run configure, and forget that this file
+ * exists it is only used for non-configure systems.
+ * But you can keep reading if you want ;-)
+ *
+ */
+
+/* ================================================================ */
+/* NOTES FOR NON-CONFIGURE SYSTEMS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * c-ares library user nor by the c-ares library builder.
+ *
+ * If you think that something actually needs to be changed, adjusted
+ * or fixed in this file, then, report it on the c-ares development
+ * mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
+ *
+ * Try to keep one section per platform, compiler and architecture,
+ * otherwise, if an existing section is reused for a different one and
+ * later on the original is adjusted, probably the piggybacking one can
+ * be adversely changed.
+ *
+ * In order to differentiate between platforms/compilers/architectures
+ * use only compiler built in predefined preprocessor symbols.
+ *
+ * This header file shall only export symbols which are 'cares' or 'CARES'
+ * prefixed, otherwise public name space would be polluted.
+ *
+ * NOTE 2:
+ * -------
+ *
+ * Right now you might be staring at file ares_build.h.dist or ares_build.h,
+ * this is due to the following reason: file ares_build.h.dist is renamed
+ * to ares_build.h when the c-ares source code distribution archive file is
+ * created.
+ *
+ * File ares_build.h.dist is not included in the distribution archive.
+ * File ares_build.h is not present in the git tree.
+ *
+ * The distributed ares_build.h file is only intended to be used on systems
+ * which can not run the also distributed configure script.
+ *
+ * On systems capable of running the configure script, the configure process
+ * will overwrite the distributed ares_build.h file with one that is suitable
+ * and specific to the library being configured and built, which is generated
+ * from the ares_build.h.in template file.
+ *
+ * If you check out from git on a non-configure platform, you must run the
+ * appropriate buildconf* script to set up ares_build.h and other local files.
+ *
+ */
+
+/* ================================================================ */
+/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
+/* ================================================================ */
+
+#ifdef CARES_SIZEOF_LONG
+# error "CARES_SIZEOF_LONG shall not be defined except in ares_build.h"
+ Error Compilation_aborted_CARES_SIZEOF_LONG_already_defined
+#endif
+
+#ifdef CARES_TYPEOF_ARES_SOCKLEN_T
+# error "CARES_TYPEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
+ Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CARES_SIZEOF_ARES_SOCKLEN_T
+# error "CARES_SIZEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
+ Error Compilation_aborted_CARES_SIZEOF_ARES_SOCKLEN_T_already_defined
+#endif
+
+/* ================================================================ */
+/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */
+/* ================================================================ */
+
+#if defined(__DJGPP__) || defined(__GO32__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__SALFORDC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__BORLANDC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__TURBOC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__WATCOMC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__POCC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__LCC__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__SYMBIAN32__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__MWERKS__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(_WIN32_WCE)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__MINGW32__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__VMS)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+#elif defined(__OS400__)
+# if defined(__ILEC400__)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+# define CARES_PULL_SYS_TYPES_H 1
+# define CARES_PULL_SYS_SOCKET_H 1
+# endif
+
+#elif defined(__MVS__)
+# if defined(__IBMC__) || defined(__IBMCPP__)
+# if defined(_ILP32)
+# define CARES_SIZEOF_LONG 4
+# elif defined(_LP64)
+# define CARES_SIZEOF_LONG 8
+# endif
+# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+# define CARES_PULL_SYS_TYPES_H 1
+# define CARES_PULL_SYS_SOCKET_H 1
+# endif
+
+#elif defined(__370__)
+# if defined(__IBMC__) || defined(__IBMCPP__)
+# if defined(_ILP32)
+# define CARES_SIZEOF_LONG 4
+# elif defined(_LP64)
+# define CARES_SIZEOF_LONG 8
+# endif
+# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+# define CARES_PULL_SYS_TYPES_H 1
+# define CARES_PULL_SYS_SOCKET_H 1
+# endif
+
+#elif defined(TPF)
+# define CARES_SIZEOF_LONG 8
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+/* ===================================== */
+/* KEEP MSVC THE PENULTIMATE ENTRY */
+/* ===================================== */
+
+#elif defined(_MSC_VER)
+# define CARES_SIZEOF_LONG 4
+# define CARES_TYPEOF_ARES_SOCKLEN_T int
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+
+/* ===================================== */
+/* KEEP GENERIC GCC THE LAST ENTRY */
+/* ===================================== */
+
+#elif defined(__GNUC__)
+# if defined(__LP64__) || \
+ defined(__x86_64__) || defined(__ppc64__)
+# define CARES_SIZEOF_LONG 8
+# elif defined(__ILP32__) || \
+ defined(__i386__) || defined(__ppc__) || defined(__arm__)
+# define CARES_SIZEOF_LONG 4
+# endif
+# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
+# define CARES_SIZEOF_ARES_SOCKLEN_T 4
+# define CARES_PULL_SYS_TYPES_H 1
+# define CARES_PULL_SYS_SOCKET_H 1
+
+#else
+# error "Unknown non-configure build target!"
+ Error Compilation_aborted_Unknown_non_configure_build_target
+#endif
+
+/* CARES_PULL_SYS_TYPES_H is defined above when inclusion of header file */
+/* sys/types.h is required here to properly make type definitions below. */
+#ifdef CARES_PULL_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+/* CARES_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
+/* sys/socket.h is required here to properly make type definitions below. */
+#ifdef CARES_PULL_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+
+/* Data type definition of ares_socklen_t. */
+
+#ifdef CARES_TYPEOF_ARES_SOCKLEN_T
+ typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
+#endif
+
+#endif /* __CARES_BUILD_H */
diff --git a/third_party/cares/cares b/third_party/cares/cares
new file mode 160000
+Subproject 7691f773af79bf75a62d1863fd0f13ebf9dc51b
diff --git a/third_party/cares/cares.BUILD b/third_party/cares/cares.BUILD
new file mode 100644
index 0000000000..48096aa055
--- /dev/null
+++ b/third_party/cares/cares.BUILD
@@ -0,0 +1,94 @@
+cc_library(
+ name = "ares",
+ srcs = [
+ "cares/ares__close_sockets.c",
+ "cares/ares__get_hostent.c",
+ "cares/ares__read_line.c",
+ "cares/ares__timeval.c",
+ "cares/ares_cancel.c",
+ "cares/ares_create_query.c",
+ "cares/ares_data.c",
+ "cares/ares_destroy.c",
+ "cares/ares_expand_name.c",
+ "cares/ares_expand_string.c",
+ "cares/ares_fds.c",
+ "cares/ares_free_hostent.c",
+ "cares/ares_free_string.c",
+ "cares/ares_getenv.c",
+ "cares/ares_gethostbyaddr.c",
+ "cares/ares_gethostbyname.c",
+ "cares/ares_getnameinfo.c",
+ "cares/ares_getopt.c",
+ "cares/ares_getsock.c",
+ "cares/ares_init.c",
+ "cares/ares_library_init.c",
+ "cares/ares_llist.c",
+ "cares/ares_mkquery.c",
+ "cares/ares_nowarn.c",
+ "cares/ares_options.c",
+ "cares/ares_parse_a_reply.c",
+ "cares/ares_parse_aaaa_reply.c",
+ "cares/ares_parse_mx_reply.c",
+ "cares/ares_parse_naptr_reply.c",
+ "cares/ares_parse_ns_reply.c",
+ "cares/ares_parse_ptr_reply.c",
+ "cares/ares_parse_soa_reply.c",
+ "cares/ares_parse_srv_reply.c",
+ "cares/ares_parse_txt_reply.c",
+ "cares/ares_platform.c",
+ "cares/ares_process.c",
+ "cares/ares_query.c",
+ "cares/ares_search.c",
+ "cares/ares_send.c",
+ "cares/ares_strcasecmp.c",
+ "cares/ares_strdup.c",
+ "cares/ares_strerror.c",
+ "cares/ares_timeout.c",
+ "cares/ares_version.c",
+ "cares/ares_writev.c",
+ "cares/bitncmp.c",
+ "cares/inet_net_pton.c",
+ "cares/inet_ntop.c",
+ "cares/windows_port.c",
+ ],
+ hdrs = [
+ "ares_build.h",
+ "config_linux/ares_config.h",
+ "cares/ares.h",
+ "cares/ares_data.h",
+ "cares/ares_dns.h",
+ "cares/ares_getenv.h",
+ "cares/ares_getopt.h",
+ "cares/ares_inet_net_pton.h",
+ "cares/ares_iphlpapi.h",
+ "cares/ares_ipv6.h",
+ "cares/ares_library_init.h",
+ "cares/ares_llist.h",
+ "cares/ares_nowarn.h",
+ "cares/ares_platform.h",
+ "cares/ares_private.h",
+ "cares/ares_rules.h",
+ "cares/ares_setup.h",
+ "cares/ares_strcasecmp.h",
+ "cares/ares_strdup.h",
+ "cares/ares_version.h",
+ "cares/bitncmp.h",
+ "cares/config-win32.h",
+ "cares/setup_once.h",
+ ],
+ includes = [
+ ".",
+ "config_linux",
+ "cares",
+ ],
+ linkstatic = 1,
+ visibility = [
+ "//visibility:public",
+ ],
+ copts = [
+ "-D_GNU_SOURCE",
+ "-D_HAS_EXCEPTIONS=0",
+ "-DNOMINMAX",
+ "-DHAVE_CONFIG_H",
+ ],
+)
diff --git a/third_party/cares/config_darwin/ares_config.h b/third_party/cares/config_darwin/ares_config.h
new file mode 100644
index 0000000000..0f5bd4b6a5
--- /dev/null
+++ b/third_party/cares/config_darwin/ares_config.h
@@ -0,0 +1,523 @@
+/* ares_config.h. Generated from ares_config.h.in by configure. */
+/* ares_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* define this if ares is built for a big endian system */
+/* #undef ARES_BIG_ENDIAN */
+
+/* when building as static part of libcurl */
+/* #undef BUILDING_LIBCURL */
+
+/* Defined for build that exposes internal static functions for testing. */
+/* #undef CARES_EXPOSE_STATICS */
+
+/* Defined for build with symbol hiding. */
+#define CARES_SYMBOL_HIDING 1
+
+/* Definition to make a library symbol externally visible. */
+#define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default")))
+
+/* Use resolver library to configure cares */
+/* #undef CARES_USE_LIBRESOLV */
+
+/* if a /etc/inet dir is being used */
+/* #undef ETC_INET */
+
+/* Define to the type of arg 2 for gethostname. */
+#define GETHOSTNAME_TYPE_ARG2 size_t
+
+/* Define to the type qualifier of arg 1 for getnameinfo. */
+#define GETNAMEINFO_QUAL_ARG1 const
+
+/* Define to the type of arg 1 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
+
+/* Define to the type of arg 2 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG2 socklen_t
+
+/* Define to the type of args 4 and 6 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG46 socklen_t
+
+/* Define to the type of arg 7 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG7 int
+
+/* Specifies the number of arguments to getservbyport_r */
+/* #undef GETSERVBYPORT_R_ARGS */
+
+/* Specifies the size of the buffer to pass to getservbyport_r */
+/* #undef GETSERVBYPORT_R_BUFSIZE */
+
+/* Define to 1 if you have AF_INET6. */
+#define HAVE_AF_INET6 1
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `bitncmp' function. */
+/* #undef HAVE_BITNCMP */
+
+/* Define to 1 if bool is an available type. */
+#define HAVE_BOOL_T 1
+
+/* Define to 1 if you have the clock_gettime function and monotonic timer. */
+/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */
+
+/* Define to 1 if you have the closesocket function. */
+/* #undef HAVE_CLOSESOCKET */
+
+/* Define to 1 if you have the CloseSocket camel case function. */
+/* #undef HAVE_CLOSESOCKET_CAMEL */
+
+/* Define to 1 if you have the connect function. */
+#define HAVE_CONNECT 1
+
+/* define if the compiler supports basic C++11 syntax */
+#define HAVE_CXX11 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the fcntl function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
+#define HAVE_FCNTL_O_NONBLOCK 1
+
+/* Define to 1 if you have the freeaddrinfo function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have a working getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+#define HAVE_GETADDRINFO_THREADSAFE 1
+
+/* Define to 1 if you have the getenv function. */
+#define HAVE_GETENV 1
+
+/* Define to 1 if you have the gethostbyaddr function. */
+#define HAVE_GETHOSTBYADDR 1
+
+/* Define to 1 if you have the gethostbyname function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the gethostname function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the getnameinfo function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the getservbyport_r function. */
+/* #undef HAVE_GETSERVBYPORT_R */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#define HAVE_IF_INDEXTONAME 1
+
+/* Define to 1 if you have a IPv6 capable working inet_net_pton function. */
+#define HAVE_INET_NET_PTON 1
+
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the ioctl function. */
+#define HAVE_IOCTL 1
+
+/* Define to 1 if you have the ioctlsocket function. */
+/* #undef HAVE_IOCTLSOCKET */
+
+/* Define to 1 if you have the IoctlSocket camel case function. */
+/* #undef HAVE_IOCTLSOCKET_CAMEL */
+
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
+ */
+/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
+
+/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
+/* #undef HAVE_IOCTLSOCKET_FIONBIO */
+
+/* Define to 1 if you have a working ioctl FIONBIO function. */
+#define HAVE_IOCTL_FIONBIO 1
+
+/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
+#define HAVE_IOCTL_SIOCGIFADDR 1
+
+/* Define to 1 if you have the `resolve' library (-lresolve). */
+/* #undef HAVE_LIBRESOLVE */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* if your compiler supports LL */
+#define HAVE_LL 1
+
+/* Define to 1 if the compiler supports the 'long long' data type. */
+#define HAVE_LONGLONG 1
+
+/* Define to 1 if you have the malloc.h header file. */
+/* #undef HAVE_MALLOC_H */
+
+/* Define to 1 if you have the memory.h header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the MSG_NOSIGNAL flag. */
+/* #undef HAVE_MSG_NOSIGNAL */
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have PF_INET6. */
+#define HAVE_PF_INET6 1
+
+/* Define to 1 if you have the recv function. */
+#define HAVE_RECV 1
+
+/* Define to 1 if you have the recvfrom function. */
+#define HAVE_RECVFROM 1
+
+/* Define to 1 if you have the send function. */
+#define HAVE_SEND 1
+
+/* Define to 1 if you have the setsockopt function. */
+#define HAVE_SETSOCKOPT 1
+
+/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
+/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if sig_atomic_t is an available typedef. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if sig_atomic_t is already defined as volatile. */
+/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
+
+/* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+
+/* Define to 1 if you have the socket function. */
+#define HAVE_SOCKET 1
+
+/* Define to 1 if you have the <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the strcmpi function. */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the stricmp function. */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the strncasecmp function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the strncmpi function. */
+/* #undef HAVE_STRNCMPI */
+
+/* Define to 1 if you have the strnicmp function. */
+/* #undef HAVE_STRNICMP */
+
+/* Define to 1 if you have the <stropts.h> header file. */
+/* #undef HAVE_STROPTS_H */
+
+/* Define to 1 if you have struct addrinfo. */
+#define HAVE_STRUCT_ADDRINFO 1
+
+/* Define to 1 if you have struct in6_addr. */
+#define HAVE_STRUCT_IN6_ADDR 1
+
+/* Define to 1 if you have struct sockaddr_in6. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* if struct sockaddr_storage is defined */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the timeval struct. */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the windows.h header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the winsock2.h header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if you have the winsock.h header file. */
+/* #undef HAVE_WINSOCK_H */
+
+/* Define to 1 if you have the writev function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the ws2tcpip.h header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if you need the malloc.h header file even with stdlib.h */
+/* #undef NEED_MALLOC_H */
+
+/* Define to 1 if you need the memory.h header file even with stdlib.h */
+/* #undef NEED_MEMORY_H */
+
+/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
+/* #undef NEED_REENTRANT */
+
+/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
+/* #undef NEED_THREAD_SAFE */
+
+/* cpu-machine-OS */
+#define OS "i386-apple-darwin9.8.0"
+
+/* Name of package */
+#define PACKAGE "c-ares"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "c-ares"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "c-ares -"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "c-ares"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "-"
+
+/* a suitable file/device to read random data from */
+#define RANDOM_FILE "/dev/urandom"
+
+/* Define to the type qualifier pointed by arg 5 for recvfrom. */
+#define RECVFROM_QUAL_ARG5
+
+/* Define to the type of arg 1 for recvfrom. */
+#define RECVFROM_TYPE_ARG1 int
+
+/* Define to the type pointed by arg 2 for recvfrom. */
+#define RECVFROM_TYPE_ARG2 void
+
+/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
+#define RECVFROM_TYPE_ARG2_IS_VOID 1
+
+/* Define to the type of arg 3 for recvfrom. */
+#define RECVFROM_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recvfrom. */
+#define RECVFROM_TYPE_ARG4 int
+
+/* Define to the type pointed by arg 5 for recvfrom. */
+#define RECVFROM_TYPE_ARG5 struct sockaddr
+
+/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
+
+/* Define to the type pointed by arg 6 for recvfrom. */
+#define RECVFROM_TYPE_ARG6 socklen_t
+
+/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
+
+/* Define to the function return type for recvfrom. */
+#define RECVFROM_TYPE_RETV ssize_t
+
+/* Define to the type of arg 1 for recv. */
+#define RECV_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for recv. */
+#define RECV_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for recv. */
+#define RECV_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recv. */
+#define RECV_TYPE_ARG4 int
+
+/* Define to the function return type for recv. */
+#define RECV_TYPE_RETV ssize_t
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to the type qualifier of arg 2 for send. */
+#define SEND_QUAL_ARG2 const
+
+/* Define to the type of arg 1 for send. */
+#define SEND_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for send. */
+#define SEND_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for send. */
+#define SEND_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for send. */
+#define SEND_TYPE_ARG4 int
+
+/* Define to the function return type for send. */
+#define SEND_TYPE_RETV ssize_t
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `struct in6_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN6_ADDR 16
+
+/* The size of `struct in_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN_ADDR 4
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to disable non-blocking sockets. */
+/* #undef USE_BLOCKING_SOCKETS */
+
+/* Version number of package */
+#define VERSION "-"
+
+/* Define to avoid automatic inclusion of winsock.h */
+/* #undef WIN32_LEAN_AND_MEAN */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if OS is AIX. */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Type to use in place of in_addr_t when system does not provide it. */
+/* #undef in_addr_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
diff --git a/third_party/cares/config_linux/ares_config.h b/third_party/cares/config_linux/ares_config.h
new file mode 100644
index 0000000000..265974cfae
--- /dev/null
+++ b/third_party/cares/config_linux/ares_config.h
@@ -0,0 +1,524 @@
+/* ares_config.h. Generated from ares_config.h.in by configure. */
+/* ares_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* define this if ares is built for a big endian system */
+/* #undef ARES_BIG_ENDIAN */
+
+/* when building as static part of libcurl */
+/* #undef BUILDING_LIBCURL */
+
+/* Defined for build that exposes internal static functions for testing. */
+/* #undef CARES_EXPOSE_STATICS */
+
+/* Defined for build with symbol hiding. */
+#define CARES_SYMBOL_HIDING 1
+
+/* Definition to make a library symbol externally visible. */
+#define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default")))
+
+/* Use resolver library to configure cares */
+/* #undef CARES_USE_LIBRESOLV */
+
+/* if a /etc/inet dir is being used */
+/* #undef ETC_INET */
+
+/* Define to the type of arg 2 for gethostname. */
+#define GETHOSTNAME_TYPE_ARG2 size_t
+
+/* Define to the type qualifier of arg 1 for getnameinfo. */
+#define GETNAMEINFO_QUAL_ARG1 const
+
+/* Define to the type of arg 1 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
+
+/* Define to the type of arg 2 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG2 socklen_t
+
+/* Define to the type of args 4 and 6 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG46 socklen_t
+
+/* Define to the type of arg 7 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG7 int
+
+/* Specifies the number of arguments to getservbyport_r */
+#define GETSERVBYPORT_R_ARGS 6
+
+/* Specifies the size of the buffer to pass to getservbyport_r */
+#define GETSERVBYPORT_R_BUFSIZE 4096
+
+/* Define to 1 if you have AF_INET6. */
+#define HAVE_AF_INET6 1
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `bitncmp' function. */
+/* #undef HAVE_BITNCMP */
+
+/* Define to 1 if bool is an available type. */
+#define HAVE_BOOL_T 1
+
+/* Define to 1 if you have the clock_gettime function and monotonic timer. */
+#define HAVE_CLOCK_GETTIME_MONOTONIC 1
+
+/* Define to 1 if you have the closesocket function. */
+/* #undef HAVE_CLOSESOCKET */
+
+/* Define to 1 if you have the CloseSocket camel case function. */
+/* #undef HAVE_CLOSESOCKET_CAMEL */
+
+/* Define to 1 if you have the connect function. */
+#define HAVE_CONNECT 1
+
+/* define if the compiler supports basic C++11 syntax */
+#define HAVE_CXX11 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the fcntl function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
+#define HAVE_FCNTL_O_NONBLOCK 1
+
+/* Define to 1 if you have the freeaddrinfo function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have a working getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+#define HAVE_GETADDRINFO_THREADSAFE 1
+
+/* Define to 1 if you have the getenv function. */
+#define HAVE_GETENV 1
+
+/* Define to 1 if you have the gethostbyaddr function. */
+#define HAVE_GETHOSTBYADDR 1
+
+/* Define to 1 if you have the gethostbyname function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the gethostname function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the getnameinfo function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the getservbyport_r function. */
+#define HAVE_GETSERVBYPORT_R 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#define HAVE_IF_INDEXTONAME 1
+
+/* Define to 1 if you have a IPv6 capable working inet_net_pton function. */
+/* #undef HAVE_INET_NET_PTON */
+
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the ioctl function. */
+#define HAVE_IOCTL 1
+
+/* Define to 1 if you have the ioctlsocket function. */
+/* #undef HAVE_IOCTLSOCKET */
+
+/* Define to 1 if you have the IoctlSocket camel case function. */
+/* #undef HAVE_IOCTLSOCKET_CAMEL */
+
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
+ */
+/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
+
+/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
+/* #undef HAVE_IOCTLSOCKET_FIONBIO */
+
+/* Define to 1 if you have a working ioctl FIONBIO function. */
+#define HAVE_IOCTL_FIONBIO 1
+
+/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
+#define HAVE_IOCTL_SIOCGIFADDR 1
+
+/* Define to 1 if you have the `resolve' library (-lresolve). */
+/* #undef HAVE_LIBRESOLVE */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* if your compiler supports LL */
+#define HAVE_LL 1
+
+/* Define to 1 if the compiler supports the 'long long' data type. */
+#define HAVE_LONGLONG 1
+
+/* Define to 1 if you have the malloc.h header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the memory.h header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the MSG_NOSIGNAL flag. */
+#define HAVE_MSG_NOSIGNAL 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have PF_INET6. */
+#define HAVE_PF_INET6 1
+
+/* Define to 1 if you have the recv function. */
+#define HAVE_RECV 1
+
+/* Define to 1 if you have the recvfrom function. */
+#define HAVE_RECVFROM 1
+
+/* Define to 1 if you have the send function. */
+#define HAVE_SEND 1
+
+/* Define to 1 if you have the setsockopt function. */
+#define HAVE_SETSOCKOPT 1
+
+/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
+/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if sig_atomic_t is an available typedef. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if sig_atomic_t is already defined as volatile. */
+/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
+
+/* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+
+/* Define to 1 if you have the socket function. */
+#define HAVE_SOCKET 1
+
+/* Define to 1 if you have the <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the strcmpi function. */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the stricmp function. */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the strncasecmp function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the strncmpi function. */
+/* #undef HAVE_STRNCMPI */
+
+/* Define to 1 if you have the strnicmp function. */
+/* #undef HAVE_STRNICMP */
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#define HAVE_STROPTS_H 1
+
+/* Define to 1 if you have struct addrinfo. */
+#define HAVE_STRUCT_ADDRINFO 1
+
+/* Define to 1 if you have struct in6_addr. */
+#define HAVE_STRUCT_IN6_ADDR 1
+
+/* Define to 1 if you have struct sockaddr_in6. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* if struct sockaddr_storage is defined */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the timeval struct. */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the windows.h header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the winsock2.h header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if you have the winsock.h header file. */
+/* #undef HAVE_WINSOCK_H */
+
+/* Define to 1 if you have the writev function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the ws2tcpip.h header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if you need the malloc.h header file even with stdlib.h */
+/* #undef NEED_MALLOC_H */
+
+/* Define to 1 if you need the memory.h header file even with stdlib.h */
+/* #undef NEED_MEMORY_H */
+
+/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
+/* #undef NEED_REENTRANT */
+
+/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
+/* #undef NEED_THREAD_SAFE */
+
+/* cpu-machine-OS */
+#define OS "i386-unknown-linux-gnu"
+
+/* Name of package */
+#define PACKAGE "c-ares"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "c-ares"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "c-ares -"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "c-ares"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "-"
+
+/* a suitable file/device to read random data from */
+#define RANDOM_FILE "/dev/urandom"
+
+/* Define to the type qualifier pointed by arg 5 for recvfrom. */
+#define RECVFROM_QUAL_ARG5
+
+/* Define to the type of arg 1 for recvfrom. */
+#define RECVFROM_TYPE_ARG1 int
+
+/* Define to the type pointed by arg 2 for recvfrom. */
+#define RECVFROM_TYPE_ARG2 void
+
+/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
+#define RECVFROM_TYPE_ARG2_IS_VOID 1
+
+/* Define to the type of arg 3 for recvfrom. */
+#define RECVFROM_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recvfrom. */
+#define RECVFROM_TYPE_ARG4 int
+
+/* Define to the type pointed by arg 5 for recvfrom. */
+#define RECVFROM_TYPE_ARG5 struct sockaddr
+
+/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
+
+/* Define to the type pointed by arg 6 for recvfrom. */
+#define RECVFROM_TYPE_ARG6 socklen_t
+
+/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
+
+/* Define to the function return type for recvfrom. */
+#define RECVFROM_TYPE_RETV ssize_t
+
+/* Define to the type of arg 1 for recv. */
+#define RECV_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for recv. */
+#define RECV_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for recv. */
+#define RECV_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recv. */
+#define RECV_TYPE_ARG4 int
+
+/* Define to the function return type for recv. */
+#define RECV_TYPE_RETV ssize_t
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to the type qualifier of arg 2 for send. */
+#define SEND_QUAL_ARG2 const
+
+/* Define to the type of arg 1 for send. */
+#define SEND_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for send. */
+#define SEND_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for send. */
+#define SEND_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for send. */
+#define SEND_TYPE_ARG4 int
+
+/* Define to the function return type for send. */
+#define SEND_TYPE_RETV ssize_t
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `struct in6_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN6_ADDR 16
+
+/* The size of `struct in_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN_ADDR 4
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to disable non-blocking sockets. */
+/* #undef USE_BLOCKING_SOCKETS */
+
+/* Version number of package */
+#define VERSION "-"
+
+/* Define to avoid automatic inclusion of winsock.h */
+/* #undef WIN32_LEAN_AND_MEAN */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if OS is AIX. */
+#ifndef _ALL_SOURCE
+/* # undef _ALL_SOURCE */
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Type to use in place of in_addr_t when system does not provide it. */
+/* #undef in_addr_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
diff --git a/tools/buildgen/generate_build_additions.sh b/tools/buildgen/generate_build_additions.sh
index a4373ed350..9b5e2113af 100644
--- a/tools/buildgen/generate_build_additions.sh
+++ b/tools/buildgen/generate_build_additions.sh
@@ -35,6 +35,7 @@ gen_build_yaml_dirs=" \
src/benchmark \
src/proto \
src/zlib \
+ src/c-ares \
test/core/bad_client \
test/core/bad_ssl \
test/core/end2end \
diff --git a/tools/buildgen/plugins/expand_bin_attrs.py b/tools/buildgen/plugins/expand_bin_attrs.py
index dc72bf3b9d..f52168a9d3 100755
--- a/tools/buildgen/plugins/expand_bin_attrs.py
+++ b/tools/buildgen/plugins/expand_bin_attrs.py
@@ -52,9 +52,11 @@ def mako_plugin(dictionary):
tgt['ci_platforms'] = sorted(tgt.get('ci_platforms', tgt['platforms']))
tgt['boringssl'] = tgt.get('boringssl', False)
tgt['zlib'] = tgt.get('zlib', False)
+ tgt['ares'] = tgt.get('ares', False)
tgt['gtest'] = tgt.get('gtest', False)
libs = dictionary.get('libs')
for lib in libs:
lib['boringssl'] = lib.get('boringssl', False)
lib['zlib'] = lib.get('zlib', False)
+ lib['ares'] = lib.get('ares', False)
diff --git a/tools/buildgen/plugins/expand_filegroups.py b/tools/buildgen/plugins/expand_filegroups.py
index 46739f8f10..9eaba463ec 100755
--- a/tools/buildgen/plugins/expand_filegroups.py
+++ b/tools/buildgen/plugins/expand_filegroups.py
@@ -57,6 +57,7 @@ FILEGROUP_DEFAULTS = {
'language': 'c',
'boringssl': False,
'zlib': False,
+ 'ares': False,
}
diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py
index ba9825acb9..5fc28ddd31 100644
--- a/tools/buildgen/plugins/make_fuzzer_tests.py
+++ b/tools/buildgen/plugins/make_fuzzer_tests.py
@@ -52,7 +52,7 @@ def mako_plugin(dictionary):
'exclude_iomgrs': ['uv'],
'exclude_configs': ['tsan'],
'uses_polling': False,
- 'platforms': ['linux'],
+ 'platforms': ['mac', 'linux'],
'ci_platforms': ['linux'],
'flaky': False,
'language': 'c',
diff --git a/tools/distrib/check_copyright.py b/tools/distrib/check_copyright.py
index 9397afc587..710e8709e9 100755
--- a/tools/distrib/check_copyright.py
+++ b/tools/distrib/check_copyright.py
@@ -127,7 +127,9 @@ RE_LICENSE = dict(
if args.precommit:
FILE_LIST_COMMAND = 'git status -z | grep -Poz \'(?<=^[MARC][MARCD ] )[^\s]+\''
else:
- FILE_LIST_COMMAND = 'git ls-tree -r --name-only -r HEAD | grep -v ^third_party/'
+ FILE_LIST_COMMAND = 'git ls-tree -r --name-only -r HEAD | ' \
+ 'grep -v ^third_party/ |' \
+ 'grep -v "\(ares_config.h\|ares_build.h\)"'
def load(name):
with open(name) as f:
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index ed27f1f835..211d442f17 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -203,6 +203,10 @@ def extension_modules():
setuptools.setup(
name='grpcio-tools',
version=grpc_version.VERSION,
+ description='Protobuf code generator for gRPC',
+ author='The gRPC Authors',
+ author_email='grpc-io@googlegroups.com',
+ url='http://www.grpc.io',
license='3-clause BSD',
ext_modules=extension_modules(),
packages=setuptools.find_packages('.'),
diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
index 7109862911..06be7bec18 100644
--- a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
@@ -39,7 +39,7 @@ RUN yum update -y
RUN yum remove -y git
RUN yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc
RUN cd /usr/src && \
- wget https://kernel.org/pub/software/scm/git/git-2.0.5.tar.gz && \
+ curl -O -L https://kernel.org/pub/software/scm/git/git-2.0.5.tar.gz && \
tar xzf git-2.0.5.tar.gz
RUN cd /usr/src/git-2.0.5 && \
make prefix=/usr/local/git all && \
diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
index 36286bca53..8693e30cb4 100644
--- a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
@@ -39,7 +39,7 @@ RUN yum update -y
RUN yum remove -y git
RUN yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc
RUN cd /usr/src && \
- wget https://kernel.org/pub/software/scm/git/git-2.0.5.tar.gz && \
+ curl -O -L https://kernel.org/pub/software/scm/git/git-2.0.5.tar.gz && \
tar xzf git-2.0.5.tar.gz
RUN cd /usr/src/git-2.0.5 && \
make prefix=/usr/local/git all && \
diff --git a/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
index 66d9b4f640..acc984acb0 100644
--- a/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
@@ -47,7 +47,7 @@ RUN pip install pip --upgrade
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0
-RUN pip install twisted h2
+RUN pip install twisted h2 hyper
# Define the default command.
CMD ["bash"]
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index b5021ede15..2469b90bdb 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -764,6 +764,7 @@ INPUT = doc/PROTOCOL-HTTP2.md \
doc/PROTOCOL-WEB.md \
doc/binary-logging.md \
doc/c-style-guide.md \
+doc/combiner-explainer.md \
doc/command_line_tool.md \
doc/compression.md \
doc/compression_cookbook.md \
@@ -779,11 +780,11 @@ doc/fail_fast.md \
doc/g_stands_for.md \
doc/health-checking.md \
doc/http-grpc-status-mapping.md \
+doc/http2-interop-test-descriptions.md \
doc/internationalization.md \
doc/interop-test-descriptions.md \
doc/load-balancing.md \
doc/naming.md \
-doc/negative-http2-interop-test-descriptions.md \
doc/server-reflection.md \
doc/server_reflection_tutorial.md \
doc/server_side_auth.md \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 758ba2402a..117738aed8 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -764,6 +764,7 @@ INPUT = doc/PROTOCOL-HTTP2.md \
doc/PROTOCOL-WEB.md \
doc/binary-logging.md \
doc/c-style-guide.md \
+doc/combiner-explainer.md \
doc/command_line_tool.md \
doc/compression.md \
doc/compression_cookbook.md \
@@ -779,11 +780,11 @@ doc/fail_fast.md \
doc/g_stands_for.md \
doc/health-checking.md \
doc/http-grpc-status-mapping.md \
+doc/http2-interop-test-descriptions.md \
doc/internationalization.md \
doc/interop-test-descriptions.md \
doc/load-balancing.md \
doc/naming.md \
-doc/negative-http2-interop-test-descriptions.md \
doc/server-reflection.md \
doc/server_reflection_tutorial.md \
doc/server_side_auth.md \
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index cd3f2af44c..272bb4cebf 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -764,12 +764,14 @@ INPUT = doc/PROTOCOL-HTTP2.md \
doc/PROTOCOL-WEB.md \
doc/binary-logging.md \
doc/c-style-guide.md \
+doc/combiner-explainer.md \
doc/command_line_tool.md \
doc/compression.md \
doc/compression_cookbook.md \
doc/connection-backoff-interop-test-description.md \
doc/connection-backoff.md \
doc/connectivity-semantics-and-api.md \
+doc/core/grpc-error.md \
doc/core/pending_api_cleanups.md \
doc/cpp-style-guide.md \
doc/environment_variables.md \
@@ -778,11 +780,11 @@ doc/fail_fast.md \
doc/g_stands_for.md \
doc/health-checking.md \
doc/http-grpc-status-mapping.md \
+doc/http2-interop-test-descriptions.md \
doc/internationalization.md \
doc/interop-test-descriptions.md \
doc/load-balancing.md \
doc/naming.md \
-doc/negative-http2-interop-test-descriptions.md \
doc/server-reflection.md \
doc/server_reflection_tutorial.md \
doc/server_side_auth.md \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index e4f56f2374..d09ddaa04d 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -764,12 +764,14 @@ INPUT = doc/PROTOCOL-HTTP2.md \
doc/PROTOCOL-WEB.md \
doc/binary-logging.md \
doc/c-style-guide.md \
+doc/combiner-explainer.md \
doc/command_line_tool.md \
doc/compression.md \
doc/compression_cookbook.md \
doc/connection-backoff-interop-test-description.md \
doc/connection-backoff.md \
doc/connectivity-semantics-and-api.md \
+doc/core/grpc-error.md \
doc/core/pending_api_cleanups.md \
doc/cpp-style-guide.md \
doc/environment_variables.md \
@@ -778,11 +780,11 @@ doc/fail_fast.md \
doc/g_stands_for.md \
doc/health-checking.md \
doc/http-grpc-status-mapping.md \
+doc/http2-interop-test-descriptions.md \
doc/internationalization.md \
doc/interop-test-descriptions.md \
doc/load-balancing.md \
doc/naming.md \
-doc/negative-http2-interop-test-descriptions.md \
doc/server-reflection.md \
doc/server_reflection_tutorial.md \
doc/server_side_auth.md \
@@ -903,13 +905,10 @@ src/core/ext/client_channel/client_channel_factory.h \
src/core/ext/client_channel/client_channel_plugin.c \
src/core/ext/client_channel/connector.c \
src/core/ext/client_channel/connector.h \
-src/core/ext/client_channel/default_initial_connect_string.c \
src/core/ext/client_channel/http_connect_handshaker.c \
src/core/ext/client_channel/http_connect_handshaker.h \
src/core/ext/client_channel/http_proxy.c \
src/core/ext/client_channel/http_proxy.h \
-src/core/ext/client_channel/initial_connect_string.c \
-src/core/ext/client_channel/initial_connect_string.h \
src/core/ext/client_channel/lb_policy.c \
src/core/ext/client_channel/lb_policy.h \
src/core/ext/client_channel/lb_policy_factory.c \
@@ -928,6 +927,8 @@ src/core/ext/client_channel/resolver_factory.c \
src/core/ext/client_channel/resolver_factory.h \
src/core/ext/client_channel/resolver_registry.c \
src/core/ext/client_channel/resolver_registry.h \
+src/core/ext/client_channel/retry_throttle.c \
+src/core/ext/client_channel/retry_throttle.h \
src/core/ext/client_channel/subchannel.c \
src/core/ext/client_channel/subchannel.h \
src/core/ext/client_channel/subchannel_index.c \
@@ -949,6 +950,11 @@ src/core/ext/load_reporting/load_reporting.h \
src/core/ext/load_reporting/load_reporting_filter.c \
src/core/ext/load_reporting/load_reporting_filter.h \
src/core/ext/resolver/README.md \
+src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c \
+src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h \
+src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c \
+src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c \
+src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h \
src/core/ext/resolver/dns/native/README.md \
src/core/ext/resolver/dns/native/dns_resolver.c \
src/core/ext/resolver/sockaddr/README.md \
@@ -1110,6 +1116,8 @@ src/core/lib/iomgr/sockaddr_posix.h \
src/core/lib/iomgr/sockaddr_utils.c \
src/core/lib/iomgr/sockaddr_utils.h \
src/core/lib/iomgr/sockaddr_windows.h \
+src/core/lib/iomgr/socket_factory_posix.c \
+src/core/lib/iomgr/socket_factory_posix.h \
src/core/lib/iomgr/socket_mutator.c \
src/core/lib/iomgr/socket_mutator.h \
src/core/lib/iomgr/socket_utils.h \
@@ -1130,6 +1138,10 @@ src/core/lib/iomgr/tcp_posix.c \
src/core/lib/iomgr/tcp_posix.h \
src/core/lib/iomgr/tcp_server.h \
src/core/lib/iomgr/tcp_server_posix.c \
+src/core/lib/iomgr/tcp_server_utils_posix.h \
+src/core/lib/iomgr/tcp_server_utils_posix_common.c \
+src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c \
+src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c \
src/core/lib/iomgr/tcp_server_uv.c \
src/core/lib/iomgr/tcp_server_windows.c \
src/core/lib/iomgr/tcp_uv.c \
@@ -1230,6 +1242,7 @@ src/core/lib/slice/slice_string_helpers.h \
src/core/lib/support/alloc.c \
src/core/lib/support/arena.c \
src/core/lib/support/arena.h \
+src/core/lib/support/atm.c \
src/core/lib/support/avl.c \
src/core/lib/support/backoff.c \
src/core/lib/support/backoff.h \
@@ -1303,6 +1316,8 @@ src/core/lib/surface/channel_stack_type.c \
src/core/lib/surface/channel_stack_type.h \
src/core/lib/surface/completion_queue.c \
src/core/lib/surface/completion_queue.h \
+src/core/lib/surface/completion_queue_factory.c \
+src/core/lib/surface/completion_queue_factory.h \
src/core/lib/surface/event_string.c \
src/core/lib/surface/event_string.h \
src/core/lib/surface/init.c \
diff --git a/tools/internal_ci/linux/grpc_interop_badserver_java.sh b/tools/internal_ci/linux/grpc_interop_badserver_java.sh
index 0985e657c6..c309c623e0 100755
--- a/tools/internal_ci/linux/grpc_interop_badserver_java.sh
+++ b/tools/internal_ci/linux/grpc_interop_badserver_java.sh
@@ -37,5 +37,5 @@ cd $(dirname $0)/../../..
git submodule update --init
-tools/run_tests/run_interop_tests.py -l java --use_docker --http2_badserver_interop $@
+tools/run_tests/run_interop_tests.py -l java --use_docker --http2_server_interop $@
diff --git a/tools/internal_ci/linux/grpc_interop_badserver_python.sh b/tools/internal_ci/linux/grpc_interop_badserver_python.sh
index 3fff537d2b..c3bb92f33d 100755
--- a/tools/internal_ci/linux/grpc_interop_badserver_python.sh
+++ b/tools/internal_ci/linux/grpc_interop_badserver_python.sh
@@ -37,5 +37,5 @@ cd $(dirname $0)/../../..
git submodule update --init
-tools/run_tests/run_interop_tests.py -l python --use_docker --http2_badserver_interop $@
+tools/run_tests/run_interop_tests.py -l python --use_docker --http2_server_interop $@
diff --git a/tools/internal_ci/linux/grpc_portability.cfg b/tools/internal_ci/linux/grpc_portability.cfg
index 0c25661d62..5cc49f1046 100644
--- a/tools/internal_ci/linux/grpc_portability.cfg
+++ b/tools/internal_ci/linux/grpc_portability.cfg
@@ -31,7 +31,7 @@
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/linux/grpc_portability.sh"
-timeout_mins: 360
+timeout_mins: 720
action {
define_artifacts {
regex: "**/*sponge_log.xml"
diff --git a/tools/jenkins/comment_on_pr.sh b/tools/jenkins/comment_on_pr.sh
new file mode 100755
index 0000000000..85f33aa917
--- /dev/null
+++ b/tools/jenkins/comment_on_pr.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+# Copyright 2017, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# This script is invoked by Jenkins to comment $1 on pull requests
+# when triggered by a build
+
+set -e
+
+if [ -z "$1" ] || [ -z $JENKINS_OAUTH_TOKEN ] || [ -z $ghprbPullId ]; then
+ echo "Insufficient arguments or environment variables provided."
+ exit 1
+fi
+
+# Format the comment message to JSON
+COMMENT_MESSAGE="{\"body\":\"$1\"}"
+
+curl -k -H "Authorization: token $JENKINS_OAUTH_TOKEN" -H "Content-Type: application/json" \
+ -d "$COMMENT_MESSAGE" https://api.github.com/repos/grpc/grpc/issues/$ghprbPullId/comments
diff --git a/tools/jenkins/run_interop.sh b/tools/jenkins/run_interop.sh
index 2a9fc662a9..13c208e97c 100755
--- a/tools/jenkins/run_interop.sh
+++ b/tools/jenkins/run_interop.sh
@@ -36,4 +36,4 @@ export LANG=en_US.UTF-8
# Enter the gRPC repo root
cd $(dirname $0)/../..
-tools/run_tests/run_interop_tests.py -l all -s all --cloud_to_prod --cloud_to_prod_auth --use_docker --http2_interop --http2_badserver_interop -t -j 12 $@ || true
+tools/run_tests/run_interop_tests.py -l all -s all --cloud_to_prod --cloud_to_prod_auth --use_docker --http2_interop --http2_server_interop -t -j 12 $@ || true
diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 99b920f6a0..2b05a8d04d 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -31,7 +31,12 @@
# This script is invoked by Jenkins and runs performance smoke test.
set -ex
+# List of benchmarks that provide good signal for analyzing performance changes in pull requests
+BENCHMARKS_TO_RUN="bm_closure bm_cq bm_call_create bm_error bm_chttp2_hpack bm_chttp2_transport bm_pollset bm_metadata"
+
# Enter the gRPC repo root
cd $(dirname $0)/../..
tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python --netperf --category smoketest
+# todo(mattkwong): Change performance test to use microbenchmarking
+# tools/run_tests/run_microbenchmark.py -c summary --diff_perf origin/$ghprbTargetBranch -b $BENCHMARKS_TO_RUN
diff --git a/tools/profiling/microbenchmarks/bm_json.py b/tools/profiling/microbenchmarks/bm_json.py
index 4695f829f4..ca0af414a3 100644
--- a/tools/profiling/microbenchmarks/bm_json.py
+++ b/tools/profiling/microbenchmarks/bm_json.py
@@ -101,6 +101,18 @@ _BM_SPECS = {
'BM_PollEmptyPollset_SpeedOfLight': {
'tpl': [],
'dyn': ['request_size', 'request_count'],
+ },
+ 'BM_StreamCreateSendInitialMetadataDestroy': {
+ 'tpl': ['fixture'],
+ 'dyn': [],
+ },
+ 'BM_TransportStreamSend': {
+ 'tpl': [],
+ 'dyn': ['request_size'],
+ },
+ 'BM_TransportStreamRecv': {
+ 'tpl': [],
+ 'dyn': ['request_size'],
}
}
diff --git a/tools/run_tests/artifacts/build_artifact_node.bat b/tools/run_tests/artifacts/build_artifact_node.bat
index 0a2bc4b9d7..336a63b9f5 100644
--- a/tools/run_tests/artifacts/build_artifact_node.bat
+++ b/tools/run_tests/artifacts/build_artifact_node.bat
@@ -27,7 +27,7 @@
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-set node_versions=1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0 7.0.0
+set node_versions=4.0.0 5.0.0 6.0.0 7.0.0
set electron_versions=1.0.0 1.1.0 1.2.0 1.3.0 1.4.0
diff --git a/tools/run_tests/artifacts/build_artifact_node.sh b/tools/run_tests/artifacts/build_artifact_node.sh
index 47b1f339fb..a33ab45ac2 100755
--- a/tools/run_tests/artifacts/build_artifact_node.sh
+++ b/tools/run_tests/artifacts/build_artifact_node.sh
@@ -42,7 +42,7 @@ mkdir -p artifacts
npm update
-node_versions=( 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0 7.0.0 )
+node_versions=( 4.0.0 5.0.0 6.0.0 7.0.0 )
electron_versions=( 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 )
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 866d8a55c9..61d3c5e88e 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -1932,24 +1932,6 @@
"gpr",
"gpr_test_util",
"grpc",
- "grpc_test_util",
- "test_tcp_server"
- ],
- "headers": [],
- "is_filegroup": false,
- "language": "c",
- "name": "set_initial_connect_string_test",
- "src": [
- "test/core/client_channel/set_initial_connect_string_test.c"
- ],
- "third_party": false,
- "type": "target"
- },
- {
- "deps": [
- "gpr",
- "gpr_test_util",
- "grpc",
"grpc_test_util"
],
"headers": [],
@@ -2521,6 +2503,27 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
+ "name": "bm_chttp2_transport",
+ "src": [
+ "test/cpp/microbenchmarks/bm_chttp2_transport.cc"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "benchmark",
+ "gpr",
+ "gpr_test_util",
+ "grpc",
+ "grpc++",
+ "grpc++_test_util",
+ "grpc_benchmark",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
"name": "bm_closure",
"src": [
"test/cpp/microbenchmarks/bm_closure.cc"
@@ -5574,6 +5577,7 @@
"grpc_lb_policy_pick_first",
"grpc_lb_policy_round_robin",
"grpc_load_reporting",
+ "grpc_resolver_dns_ares",
"grpc_resolver_dns_native",
"grpc_resolver_sockaddr",
"grpc_secure",
@@ -5675,6 +5679,7 @@
"grpc_lb_policy_pick_first",
"grpc_lb_policy_round_robin",
"grpc_load_reporting",
+ "grpc_resolver_dns_ares",
"grpc_resolver_dns_native",
"grpc_resolver_sockaddr",
"grpc_transport_chttp2_client_insecure",
@@ -7020,6 +7025,41 @@
"type": "lib"
},
{
+ "deps": [],
+ "headers": [
+ "third_party/cares/ares_build.h",
+ "third_party/cares/cares/ares.h",
+ "third_party/cares/cares/ares_data.h",
+ "third_party/cares/cares/ares_dns.h",
+ "third_party/cares/cares/ares_getenv.h",
+ "third_party/cares/cares/ares_getopt.h",
+ "third_party/cares/cares/ares_inet_net_pton.h",
+ "third_party/cares/cares/ares_iphlpapi.h",
+ "third_party/cares/cares/ares_ipv6.h",
+ "third_party/cares/cares/ares_library_init.h",
+ "third_party/cares/cares/ares_llist.h",
+ "third_party/cares/cares/ares_nowarn.h",
+ "third_party/cares/cares/ares_platform.h",
+ "third_party/cares/cares/ares_private.h",
+ "third_party/cares/cares/ares_rules.h",
+ "third_party/cares/cares/ares_setup.h",
+ "third_party/cares/cares/ares_strcasecmp.h",
+ "third_party/cares/cares/ares_strdup.h",
+ "third_party/cares/cares/ares_version.h",
+ "third_party/cares/cares/bitncmp.h",
+ "third_party/cares/cares/config-win32.h",
+ "third_party/cares/cares/setup_once.h",
+ "third_party/cares/config_darwin/ares_config.h",
+ "third_party/cares/config_linux/ares_config.h"
+ ],
+ "is_filegroup": false,
+ "language": "c",
+ "name": "ares",
+ "src": [],
+ "third_party": false,
+ "type": "lib"
+ },
+ {
"deps": [
"gpr",
"gpr_test_util",
@@ -7350,6 +7390,7 @@
"src/core/lib/support/alloc.c",
"src/core/lib/support/arena.c",
"src/core/lib/support/arena.h",
+ "src/core/lib/support/atm.c",
"src/core/lib/support/avl.c",
"src/core/lib/support/backoff.c",
"src/core/lib/support/backoff.h",
@@ -7508,6 +7549,7 @@
"src/core/lib/iomgr/sockaddr_posix.h",
"src/core/lib/iomgr/sockaddr_utils.h",
"src/core/lib/iomgr/sockaddr_windows.h",
+ "src/core/lib/iomgr/socket_factory_posix.h",
"src/core/lib/iomgr/socket_mutator.h",
"src/core/lib/iomgr/socket_utils.h",
"src/core/lib/iomgr/socket_utils_posix.h",
@@ -7516,6 +7558,7 @@
"src/core/lib/iomgr/tcp_client_posix.h",
"src/core/lib/iomgr/tcp_posix.h",
"src/core/lib/iomgr/tcp_server.h",
+ "src/core/lib/iomgr/tcp_server_utils_posix.h",
"src/core/lib/iomgr/tcp_uv.h",
"src/core/lib/iomgr/tcp_windows.h",
"src/core/lib/iomgr/time_averaged_stats.h",
@@ -7546,6 +7589,7 @@
"src/core/lib/surface/channel_init.h",
"src/core/lib/surface/channel_stack_type.h",
"src/core/lib/surface/completion_queue.h",
+ "src/core/lib/surface/completion_queue_factory.h",
"src/core/lib/surface/event_string.h",
"src/core/lib/surface/init.h",
"src/core/lib/surface/lame_client.h",
@@ -7676,6 +7720,8 @@
"src/core/lib/iomgr/sockaddr_utils.c",
"src/core/lib/iomgr/sockaddr_utils.h",
"src/core/lib/iomgr/sockaddr_windows.h",
+ "src/core/lib/iomgr/socket_factory_posix.c",
+ "src/core/lib/iomgr/socket_factory_posix.h",
"src/core/lib/iomgr/socket_mutator.c",
"src/core/lib/iomgr/socket_mutator.h",
"src/core/lib/iomgr/socket_utils.h",
@@ -7696,6 +7742,10 @@
"src/core/lib/iomgr/tcp_posix.h",
"src/core/lib/iomgr/tcp_server.h",
"src/core/lib/iomgr/tcp_server_posix.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix.h",
+ "src/core/lib/iomgr/tcp_server_utils_posix_common.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c",
+ "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c",
"src/core/lib/iomgr/tcp_server_uv.c",
"src/core/lib/iomgr/tcp_server_windows.c",
"src/core/lib/iomgr/tcp_uv.c",
@@ -7737,6 +7787,7 @@
"src/core/lib/json/json_string.c",
"src/core/lib/json/json_writer.c",
"src/core/lib/json/json_writer.h",
+ "src/core/lib/security/util/b64.c",
"src/core/lib/slice/percent_encoding.c",
"src/core/lib/slice/percent_encoding.h",
"src/core/lib/slice/slice.c",
@@ -7766,6 +7817,8 @@
"src/core/lib/surface/channel_stack_type.h",
"src/core/lib/surface/completion_queue.c",
"src/core/lib/surface/completion_queue.h",
+ "src/core/lib/surface/completion_queue_factory.c",
+ "src/core/lib/surface/completion_queue_factory.h",
"src/core/lib/surface/event_string.c",
"src/core/lib/surface/event_string.h",
"src/core/lib/surface/init.h",
@@ -7819,7 +7872,6 @@
"src/core/ext/client_channel/connector.h",
"src/core/ext/client_channel/http_connect_handshaker.h",
"src/core/ext/client_channel/http_proxy.h",
- "src/core/ext/client_channel/initial_connect_string.h",
"src/core/ext/client_channel/lb_policy.h",
"src/core/ext/client_channel/lb_policy_factory.h",
"src/core/ext/client_channel/lb_policy_registry.h",
@@ -7829,6 +7881,7 @@
"src/core/ext/client_channel/resolver.h",
"src/core/ext/client_channel/resolver_factory.h",
"src/core/ext/client_channel/resolver_registry.h",
+ "src/core/ext/client_channel/retry_throttle.h",
"src/core/ext/client_channel/subchannel.h",
"src/core/ext/client_channel/subchannel_index.h",
"src/core/ext/client_channel/uri_parser.h"
@@ -7845,13 +7898,10 @@
"src/core/ext/client_channel/client_channel_plugin.c",
"src/core/ext/client_channel/connector.c",
"src/core/ext/client_channel/connector.h",
- "src/core/ext/client_channel/default_initial_connect_string.c",
"src/core/ext/client_channel/http_connect_handshaker.c",
"src/core/ext/client_channel/http_connect_handshaker.h",
"src/core/ext/client_channel/http_proxy.c",
"src/core/ext/client_channel/http_proxy.h",
- "src/core/ext/client_channel/initial_connect_string.c",
- "src/core/ext/client_channel/initial_connect_string.h",
"src/core/ext/client_channel/lb_policy.c",
"src/core/ext/client_channel/lb_policy.h",
"src/core/ext/client_channel/lb_policy_factory.c",
@@ -7870,6 +7920,8 @@
"src/core/ext/client_channel/resolver_factory.h",
"src/core/ext/client_channel/resolver_registry.c",
"src/core/ext/client_channel/resolver_registry.h",
+ "src/core/ext/client_channel/retry_throttle.c",
+ "src/core/ext/client_channel/retry_throttle.h",
"src/core/ext/client_channel/subchannel.c",
"src/core/ext/client_channel/subchannel.h",
"src/core/ext/client_channel/subchannel_index.c",
@@ -8025,6 +8077,29 @@
"grpc_base",
"grpc_client_channel"
],
+ "headers": [
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
+ ],
+ "is_filegroup": true,
+ "language": "c",
+ "name": "grpc_resolver_dns_ares",
+ "src": [
+ "src/core/ext/resolver/dns/c_ares/dns_resolver_ares.c",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver.h",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.c",
+ "src/core/ext/resolver/dns/c_ares/grpc_ares_wrapper.h"
+ ],
+ "third_party": false,
+ "type": "filegroup"
+ },
+ {
+ "deps": [
+ "gpr",
+ "grpc_base",
+ "grpc_client_channel"
+ ],
"headers": [],
"is_filegroup": true,
"language": "c",
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index b81b98bc5a..6202346fc2 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -2013,30 +2013,6 @@
"posix",
"windows"
],
- "cpu_cost": 0.1,
- "exclude_configs": [],
- "exclude_iomgrs": [
- "uv"
- ],
- "flaky": false,
- "gtest": false,
- "language": "c",
- "name": "set_initial_connect_string_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
- "windows"
- ]
- },
- {
- "args": [],
- "ci_platforms": [
- "linux",
- "mac",
- "posix",
- "windows"
- ],
"cpu_cost": 1.0,
"exclude_configs": [],
"exclude_iomgrs": [],
@@ -2710,6 +2686,28 @@
"flaky": false,
"gtest": false,
"language": "c++",
+ "name": "bm_chttp2_transport",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ]
+ },
+ {
+ "args": [
+ "--benchmark_min_time=0"
+ ],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
"name": "bm_closure",
"platforms": [
"linux",
@@ -41145,6 +41143,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41167,6 +41166,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41189,6 +41189,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41211,6 +41212,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41233,6 +41235,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41255,6 +41258,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41277,6 +41281,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41299,6 +41304,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41321,6 +41327,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41343,6 +41350,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41365,6 +41373,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41387,6 +41396,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41409,6 +41419,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41431,6 +41442,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41453,6 +41465,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41475,6 +41488,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41497,6 +41511,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41519,6 +41534,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41541,6 +41557,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41563,6 +41580,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41585,6 +41603,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41607,6 +41626,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41629,6 +41649,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41651,6 +41672,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41673,6 +41695,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41695,6 +41718,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41717,6 +41741,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41739,6 +41764,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41761,6 +41787,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41783,6 +41810,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41805,6 +41833,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41827,6 +41856,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41849,6 +41879,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41871,6 +41902,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41893,6 +41925,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41915,6 +41948,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41937,6 +41971,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41959,6 +41994,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -41981,6 +42017,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42003,6 +42040,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42025,6 +42063,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42047,6 +42086,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42069,6 +42109,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42091,6 +42132,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42113,6 +42155,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42135,6 +42178,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42157,6 +42201,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42179,6 +42224,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42201,6 +42247,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42223,6 +42270,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42245,6 +42293,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42267,6 +42316,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42289,6 +42339,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42311,6 +42362,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42333,6 +42385,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42355,6 +42408,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42377,6 +42431,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42399,6 +42454,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42421,6 +42477,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42443,6 +42500,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42465,6 +42523,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42487,6 +42546,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42509,6 +42569,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42531,6 +42592,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42553,6 +42615,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42575,6 +42638,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42597,6 +42661,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42619,6 +42684,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42641,6 +42707,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42663,6 +42730,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42685,6 +42753,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42707,6 +42776,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42729,6 +42799,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42751,6 +42822,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42773,6 +42845,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42795,6 +42868,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42817,6 +42891,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42839,6 +42914,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42861,6 +42937,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42883,6 +42960,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42905,6 +42983,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42927,6 +43006,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42949,6 +43029,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42971,6 +43052,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -42993,6 +43075,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43015,6 +43098,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43037,6 +43121,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43059,6 +43144,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43081,6 +43167,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43103,6 +43190,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43125,6 +43213,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43147,6 +43236,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43169,6 +43259,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43191,6 +43282,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43213,6 +43305,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43235,6 +43328,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43257,6 +43351,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43279,6 +43374,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43301,6 +43397,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43323,6 +43420,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43345,6 +43443,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43367,6 +43466,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43389,6 +43489,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43411,6 +43512,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43433,6 +43535,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43455,6 +43558,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43477,6 +43581,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43499,6 +43604,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43521,6 +43627,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43543,6 +43650,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43565,6 +43673,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43587,6 +43696,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43609,6 +43719,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43631,6 +43742,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43653,6 +43765,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43675,6 +43788,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43697,6 +43811,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43719,6 +43834,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43741,6 +43857,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43763,6 +43880,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43785,6 +43903,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43807,6 +43926,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43829,6 +43949,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43851,6 +43972,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43873,6 +43995,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43895,6 +44018,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43917,6 +44041,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43939,6 +44064,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43961,6 +44087,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -43983,6 +44110,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44005,6 +44133,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44027,6 +44156,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44049,6 +44179,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44071,6 +44202,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44093,6 +44225,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44115,6 +44248,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44137,6 +44271,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44159,6 +44294,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44181,6 +44317,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44203,6 +44340,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44225,6 +44363,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44247,6 +44386,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44269,6 +44409,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44291,6 +44432,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44313,6 +44455,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44335,6 +44478,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44357,6 +44501,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44379,6 +44524,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44401,6 +44547,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44423,6 +44570,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44445,6 +44593,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44467,6 +44616,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44489,6 +44639,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44511,6 +44662,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44533,6 +44685,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44555,6 +44708,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44577,6 +44731,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44599,6 +44754,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44621,6 +44777,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44643,6 +44800,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44665,6 +44823,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44687,6 +44846,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44709,6 +44869,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44731,6 +44892,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44753,6 +44915,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44775,6 +44938,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44797,6 +44961,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44819,6 +44984,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44841,6 +45007,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44863,6 +45030,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44885,6 +45053,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44907,6 +45076,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44929,6 +45099,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44951,6 +45122,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44973,6 +45145,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -44995,6 +45168,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45017,6 +45191,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45039,6 +45214,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45061,6 +45237,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45083,6 +45260,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45105,6 +45283,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45127,6 +45306,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45149,6 +45329,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45171,6 +45352,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45193,6 +45375,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45215,6 +45398,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45237,6 +45421,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45259,6 +45444,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45281,6 +45467,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45303,6 +45490,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45325,6 +45513,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45347,6 +45536,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45369,6 +45559,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45391,6 +45582,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45413,6 +45605,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45435,6 +45628,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45457,6 +45651,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45479,6 +45674,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45501,6 +45697,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45523,6 +45720,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45545,6 +45743,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45567,6 +45766,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45589,6 +45789,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45611,6 +45812,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45633,6 +45835,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45655,6 +45858,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45677,6 +45881,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45699,6 +45904,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45721,6 +45927,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45743,6 +45950,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45765,6 +45973,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45787,6 +45996,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45809,6 +46019,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45831,6 +46042,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45853,6 +46065,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45875,6 +46088,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45897,6 +46111,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45919,6 +46134,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45941,6 +46157,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45963,6 +46180,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -45985,6 +46203,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46007,6 +46226,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46029,6 +46249,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46051,6 +46272,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46073,6 +46295,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46095,6 +46318,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46117,6 +46341,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46139,6 +46364,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46161,6 +46387,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46183,6 +46410,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46205,6 +46433,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46227,6 +46456,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46249,6 +46479,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46271,6 +46502,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46293,6 +46525,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46315,6 +46548,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46337,6 +46571,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46359,6 +46594,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46381,6 +46617,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46403,6 +46640,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46425,6 +46663,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46447,6 +46686,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46469,6 +46709,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46491,6 +46732,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46513,6 +46755,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46535,6 +46778,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46557,6 +46801,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46579,6 +46824,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46601,6 +46847,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46623,6 +46870,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46645,6 +46893,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46667,6 +46916,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46689,6 +46939,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46711,6 +46962,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46733,6 +46985,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46755,6 +47008,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46777,6 +47031,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46799,6 +47054,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46821,6 +47077,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46843,6 +47100,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46865,6 +47123,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46887,6 +47146,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46909,6 +47169,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46931,6 +47192,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46953,6 +47215,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46975,6 +47238,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -46997,6 +47261,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47019,6 +47284,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47041,6 +47307,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47063,6 +47330,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47085,6 +47353,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47107,6 +47376,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47129,6 +47399,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47151,6 +47422,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47173,6 +47445,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47195,6 +47468,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47217,6 +47491,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47239,6 +47514,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47261,6 +47537,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47283,6 +47560,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47305,6 +47583,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47327,6 +47606,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47349,6 +47629,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47371,6 +47652,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47393,6 +47675,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47415,6 +47698,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47437,6 +47721,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47459,6 +47744,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47481,6 +47767,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47503,6 +47790,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47525,6 +47813,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47547,6 +47836,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47569,6 +47859,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47591,6 +47882,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47613,6 +47905,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47635,6 +47928,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47657,6 +47951,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47679,6 +47974,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47701,6 +47997,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47723,6 +48020,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47745,6 +48043,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47767,6 +48066,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47789,6 +48089,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47811,6 +48112,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47833,6 +48135,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47855,6 +48158,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47877,6 +48181,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47899,6 +48204,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47921,6 +48227,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47943,6 +48250,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47965,6 +48273,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -47987,6 +48296,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48009,6 +48319,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48031,6 +48342,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48053,6 +48365,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48075,6 +48388,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48097,6 +48411,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48119,6 +48434,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48141,6 +48457,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48163,6 +48480,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48185,6 +48503,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48207,6 +48526,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48229,6 +48549,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48251,6 +48572,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48273,6 +48595,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48295,6 +48618,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48317,6 +48641,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48339,6 +48664,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48361,6 +48687,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48383,6 +48710,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48405,6 +48733,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48427,6 +48756,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48449,6 +48779,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48471,6 +48802,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48493,6 +48825,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48515,6 +48848,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48537,6 +48871,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48559,6 +48894,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48581,6 +48917,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48603,6 +48940,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48625,6 +48963,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48647,6 +48986,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48669,6 +49009,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48691,6 +49032,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48713,6 +49055,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48735,6 +49078,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48757,6 +49101,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48779,6 +49124,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48801,6 +49147,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48823,6 +49170,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48845,6 +49193,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48867,6 +49216,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48889,6 +49239,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48911,6 +49262,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48933,6 +49285,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48955,6 +49308,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48977,6 +49331,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -48999,6 +49354,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49021,6 +49377,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49043,6 +49400,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49065,6 +49423,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49087,6 +49446,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49109,6 +49469,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49131,6 +49492,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49153,6 +49515,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49175,6 +49538,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49197,6 +49561,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49219,6 +49584,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49241,6 +49607,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49263,6 +49630,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49285,6 +49653,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49307,6 +49676,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49329,6 +49699,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49351,6 +49722,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49373,6 +49745,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49395,6 +49768,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49417,6 +49791,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49439,6 +49814,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49461,6 +49837,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49483,6 +49860,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49505,6 +49883,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49527,6 +49906,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49549,6 +49929,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49571,6 +49952,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49593,6 +49975,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49615,6 +49998,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49637,6 +50021,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49659,6 +50044,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49681,6 +50067,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49703,6 +50090,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49725,6 +50113,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49747,6 +50136,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49769,6 +50159,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49791,6 +50182,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49813,6 +50205,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49835,6 +50228,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49857,6 +50251,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49879,6 +50274,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49901,6 +50297,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49923,6 +50320,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49945,6 +50343,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49967,6 +50366,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -49989,6 +50389,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50011,6 +50412,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50033,6 +50435,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50055,6 +50458,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50077,6 +50481,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50099,6 +50504,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50121,6 +50527,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50143,6 +50550,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50165,6 +50573,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50187,6 +50596,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50209,6 +50619,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50231,6 +50642,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50253,6 +50665,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50275,6 +50688,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50297,6 +50711,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50319,6 +50734,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50341,6 +50757,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50363,6 +50780,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50385,6 +50803,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50407,6 +50826,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50429,6 +50849,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50451,6 +50872,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50473,6 +50895,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50495,6 +50918,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50517,6 +50941,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50539,6 +50964,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50561,6 +50987,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50583,6 +51010,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50605,6 +51033,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50627,6 +51056,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50649,6 +51079,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50671,6 +51102,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50693,6 +51125,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50715,6 +51148,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50737,6 +51171,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50759,6 +51194,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50781,6 +51217,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50803,6 +51240,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50825,6 +51263,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50847,6 +51286,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50869,6 +51309,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50891,6 +51332,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50913,6 +51355,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50935,6 +51378,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50957,6 +51401,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -50979,6 +51424,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51001,6 +51447,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51023,6 +51470,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51045,6 +51493,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51067,6 +51516,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51089,6 +51539,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51111,6 +51562,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51133,6 +51585,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51155,6 +51608,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51177,6 +51631,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51199,6 +51654,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51221,6 +51677,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51243,6 +51700,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51265,6 +51723,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51287,6 +51746,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51309,6 +51769,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51331,6 +51792,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51353,6 +51815,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51375,6 +51838,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51397,6 +51861,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51419,6 +51884,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51441,6 +51907,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51463,6 +51930,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51485,6 +51953,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51507,6 +51976,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51529,6 +51999,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51551,6 +52022,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51573,6 +52045,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51595,6 +52068,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51617,6 +52091,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51639,6 +52114,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51661,6 +52137,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51683,6 +52160,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51705,6 +52183,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51727,6 +52206,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51749,6 +52229,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51771,6 +52252,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51793,6 +52275,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51815,6 +52298,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51837,6 +52321,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51859,6 +52344,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51881,6 +52367,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51903,6 +52390,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51925,6 +52413,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51947,6 +52436,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51969,6 +52459,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -51991,6 +52482,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52013,6 +52505,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52035,6 +52528,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52057,6 +52551,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52079,6 +52574,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52101,6 +52597,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52123,6 +52620,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52145,6 +52643,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52167,6 +52666,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52189,6 +52689,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52211,6 +52712,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52233,6 +52735,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52255,6 +52758,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52277,6 +52781,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52299,6 +52804,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52321,6 +52827,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52343,6 +52850,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52365,6 +52873,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52387,6 +52896,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52409,6 +52919,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52431,6 +52942,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52453,6 +52965,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52475,6 +52988,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52497,6 +53011,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52519,6 +53034,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52541,6 +53057,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52563,6 +53080,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52585,6 +53103,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52607,6 +53126,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52629,6 +53149,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52651,6 +53172,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52673,6 +53195,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52695,6 +53218,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52717,6 +53241,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52739,6 +53264,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52761,6 +53287,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52783,6 +53310,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52805,6 +53333,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52827,6 +53356,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52849,6 +53379,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52871,6 +53402,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52893,6 +53425,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52915,6 +53448,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52937,6 +53471,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52959,6 +53494,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -52981,6 +53517,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53003,6 +53540,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53025,6 +53563,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53047,6 +53586,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53069,6 +53609,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53091,6 +53632,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53113,6 +53655,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53135,6 +53678,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53157,6 +53701,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53179,6 +53724,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53201,6 +53747,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53223,6 +53770,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53245,6 +53793,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53267,6 +53816,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53289,6 +53839,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53311,6 +53862,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53333,6 +53885,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53355,6 +53908,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53377,6 +53931,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53399,6 +53954,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53421,6 +53977,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53443,6 +54000,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53465,6 +54023,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53487,6 +54046,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53509,6 +54069,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53531,6 +54092,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53553,6 +54115,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53575,6 +54138,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53597,6 +54161,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53619,6 +54184,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53641,6 +54207,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53663,6 +54230,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53685,6 +54253,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53707,6 +54276,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53729,6 +54299,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53751,6 +54322,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53773,6 +54345,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53795,6 +54368,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53817,6 +54391,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53839,6 +54414,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53861,6 +54437,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53883,6 +54460,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53905,6 +54483,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53927,6 +54506,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53949,6 +54529,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53971,6 +54552,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -53993,6 +54575,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54015,6 +54598,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54037,6 +54621,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54059,6 +54644,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54081,6 +54667,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54103,6 +54690,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54125,6 +54713,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54147,6 +54736,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54169,6 +54759,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54191,6 +54782,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54213,6 +54805,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54235,6 +54828,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54257,6 +54851,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54279,6 +54874,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54301,6 +54897,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54323,6 +54920,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54345,6 +54943,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54367,6 +54966,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54389,6 +54989,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54411,6 +55012,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54433,6 +55035,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54455,6 +55058,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54477,6 +55081,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54499,6 +55104,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54521,6 +55127,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54543,6 +55150,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54565,6 +55173,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54587,6 +55196,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54609,6 +55219,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54631,6 +55242,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54653,6 +55265,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54675,6 +55288,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54697,6 +55311,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54719,6 +55334,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54741,6 +55357,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54763,6 +55380,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54785,6 +55403,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54807,6 +55426,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54829,6 +55449,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54851,6 +55472,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54873,6 +55495,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54895,6 +55518,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54917,6 +55541,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54939,6 +55564,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54961,6 +55587,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -54983,6 +55610,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55005,6 +55633,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55027,6 +55656,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55049,6 +55679,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55071,6 +55702,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55093,6 +55725,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55115,6 +55748,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55137,6 +55771,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55159,6 +55794,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55181,6 +55817,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55203,6 +55840,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55225,6 +55863,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55247,6 +55886,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55269,6 +55909,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55291,6 +55932,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55313,6 +55955,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55335,6 +55978,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55357,6 +56001,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55379,6 +56024,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55401,6 +56047,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55423,6 +56070,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55445,6 +56093,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55467,6 +56116,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55489,6 +56139,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55511,6 +56162,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55533,6 +56185,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55555,6 +56208,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55577,6 +56231,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55599,6 +56254,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55621,6 +56277,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55643,6 +56300,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55665,6 +56323,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55687,6 +56346,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55709,6 +56369,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55731,6 +56392,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55753,6 +56415,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55775,6 +56438,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55797,6 +56461,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55819,6 +56484,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55841,6 +56507,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55863,6 +56530,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55885,6 +56553,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55907,6 +56576,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55929,6 +56599,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55951,6 +56622,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55973,6 +56645,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -55995,6 +56668,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56017,6 +56691,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56039,6 +56714,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56061,6 +56737,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56083,6 +56760,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56105,6 +56783,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56127,6 +56806,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56149,6 +56829,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56171,6 +56852,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56193,6 +56875,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56215,6 +56898,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56237,6 +56921,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56259,6 +56944,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56281,6 +56967,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56303,6 +56990,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56325,6 +57013,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56347,6 +57036,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56369,6 +57059,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56391,6 +57082,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56413,6 +57105,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56435,6 +57128,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56457,6 +57151,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56479,6 +57174,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56501,6 +57197,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56523,6 +57220,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56545,6 +57243,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56567,6 +57266,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56589,6 +57289,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56611,6 +57312,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56633,6 +57335,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56655,6 +57358,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56677,6 +57381,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56699,6 +57404,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56721,6 +57427,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56743,6 +57450,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56765,6 +57473,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56787,6 +57496,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56809,6 +57519,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56831,6 +57542,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56853,6 +57565,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56875,6 +57588,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56897,6 +57611,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56919,6 +57634,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56941,6 +57657,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56963,6 +57680,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -56985,6 +57703,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57007,6 +57726,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57029,6 +57749,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57051,6 +57772,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57073,6 +57795,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57095,6 +57818,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57117,6 +57841,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57139,6 +57864,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57161,6 +57887,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57183,6 +57910,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57205,6 +57933,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57227,6 +57956,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57249,6 +57979,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57271,6 +58002,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57293,6 +58025,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57315,6 +58048,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57337,6 +58071,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57359,6 +58094,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57381,6 +58117,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57403,6 +58140,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57425,6 +58163,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57447,6 +58186,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57469,6 +58209,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57491,6 +58232,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57513,6 +58255,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57535,6 +58278,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57557,6 +58301,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57579,6 +58324,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57601,6 +58347,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57623,6 +58370,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57645,6 +58393,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57667,6 +58416,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57689,6 +58439,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57711,6 +58462,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57733,6 +58485,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57755,6 +58508,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57777,6 +58531,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57799,6 +58554,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57821,6 +58577,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57843,6 +58600,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57865,6 +58623,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57887,6 +58646,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57909,6 +58669,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57931,6 +58692,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57953,6 +58715,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57975,6 +58738,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -57997,6 +58761,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58019,6 +58784,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58041,6 +58807,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58063,6 +58830,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58085,6 +58853,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58107,6 +58876,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58129,6 +58899,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58151,6 +58922,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58173,6 +58945,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58195,6 +58968,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58217,6 +58991,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58239,6 +59014,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58261,6 +59037,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58283,6 +59060,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58305,6 +59083,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58327,6 +59106,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58349,6 +59129,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58371,6 +59152,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58393,6 +59175,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58415,6 +59198,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58437,6 +59221,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58459,6 +59244,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58481,6 +59267,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58503,6 +59290,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58525,6 +59313,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58547,6 +59336,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58569,6 +59359,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58591,6 +59382,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58613,6 +59405,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58635,6 +59428,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58657,6 +59451,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58679,6 +59474,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58701,6 +59497,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58723,6 +59520,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58745,6 +59543,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58767,6 +59566,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58789,6 +59589,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58811,6 +59612,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58833,6 +59635,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58855,6 +59658,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58877,6 +59681,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58899,6 +59704,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58921,6 +59727,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58943,6 +59750,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58965,6 +59773,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -58987,6 +59796,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59009,6 +59819,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59031,6 +59842,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59053,6 +59865,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59075,6 +59888,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59097,6 +59911,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59119,6 +59934,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59141,6 +59957,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59163,6 +59980,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59185,6 +60003,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59207,6 +60026,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59229,6 +60049,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59251,6 +60072,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59273,6 +60095,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59295,6 +60118,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59317,6 +60141,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59339,6 +60164,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59361,6 +60187,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59383,6 +60210,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59405,6 +60233,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59427,6 +60256,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59449,6 +60279,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59471,6 +60302,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59493,6 +60325,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59515,6 +60348,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59537,6 +60371,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59559,6 +60394,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59581,6 +60417,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59603,6 +60440,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59625,6 +60463,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59647,6 +60486,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59669,6 +60509,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59691,6 +60532,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59713,6 +60555,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59735,6 +60578,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59757,6 +60601,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59779,6 +60624,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59801,6 +60647,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59823,6 +60670,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59845,6 +60693,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59867,6 +60716,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59889,6 +60739,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59911,6 +60762,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59933,6 +60785,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59955,6 +60808,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59977,6 +60831,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -59999,6 +60854,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60021,6 +60877,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60043,6 +60900,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60065,6 +60923,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60087,6 +60946,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60109,6 +60969,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60131,6 +60992,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60153,6 +61015,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60175,6 +61038,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60197,6 +61061,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60219,6 +61084,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60241,6 +61107,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60263,6 +61130,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60285,6 +61153,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60307,6 +61176,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60329,6 +61199,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60351,6 +61222,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60373,6 +61245,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60395,6 +61268,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60417,6 +61291,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60439,6 +61314,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60461,6 +61337,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60483,6 +61360,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60505,6 +61383,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60527,6 +61406,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60549,6 +61429,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60571,6 +61452,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60593,6 +61475,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60615,6 +61498,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60637,6 +61521,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60659,6 +61544,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60681,6 +61567,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60703,6 +61590,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60725,6 +61613,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60747,6 +61636,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60769,6 +61659,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60791,6 +61682,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60813,6 +61705,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60835,6 +61728,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60857,6 +61751,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60879,6 +61774,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60901,6 +61797,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60923,6 +61820,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60945,6 +61843,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60967,6 +61866,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -60989,6 +61889,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61011,6 +61912,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61033,6 +61935,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61055,6 +61958,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61077,6 +61981,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61099,6 +62004,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61121,6 +62027,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61143,6 +62050,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61165,6 +62073,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61187,6 +62096,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61209,6 +62119,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61231,6 +62142,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61253,6 +62165,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61275,6 +62188,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61297,6 +62211,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61319,6 +62234,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61341,6 +62257,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61363,6 +62280,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61385,6 +62303,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61407,6 +62326,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61429,6 +62349,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61451,6 +62372,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61473,6 +62395,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61495,6 +62418,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61517,6 +62441,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61539,6 +62464,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61561,6 +62487,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61583,6 +62510,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61605,6 +62533,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61627,6 +62556,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61649,6 +62579,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61671,6 +62602,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61693,6 +62625,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61715,6 +62648,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61737,6 +62671,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61759,6 +62694,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61781,6 +62717,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61803,6 +62740,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61825,6 +62763,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61847,6 +62786,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61869,6 +62809,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61891,6 +62832,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61913,6 +62855,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61935,6 +62878,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61957,6 +62901,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -61979,6 +62924,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62001,6 +62947,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62023,6 +62970,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62045,6 +62993,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62067,6 +63016,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62089,6 +63039,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62111,6 +63062,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62133,6 +63085,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62155,6 +63108,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62177,6 +63131,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62199,6 +63154,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62221,6 +63177,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62243,6 +63200,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62265,6 +63223,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62287,6 +63246,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62309,6 +63269,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62331,6 +63292,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62353,6 +63315,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62375,6 +63338,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62397,6 +63361,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62419,6 +63384,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62441,6 +63407,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62463,6 +63430,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62485,6 +63453,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62507,6 +63476,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62529,6 +63499,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62551,6 +63522,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62573,6 +63545,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62595,6 +63568,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62617,6 +63591,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62639,6 +63614,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62661,6 +63637,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62683,6 +63660,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62705,6 +63683,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62727,6 +63706,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62749,6 +63729,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62771,6 +63752,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62793,6 +63775,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62815,6 +63798,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62837,6 +63821,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62859,6 +63844,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62881,6 +63867,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62903,6 +63890,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62925,6 +63913,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62947,6 +63936,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62969,6 +63959,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -62991,6 +63982,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63013,6 +64005,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63035,6 +64028,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63057,6 +64051,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63079,6 +64074,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63101,6 +64097,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63123,6 +64120,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63145,6 +64143,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63167,6 +64166,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63189,6 +64189,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63211,6 +64212,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63233,6 +64235,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63255,6 +64258,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63277,6 +64281,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63299,6 +64304,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63321,6 +64327,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63343,6 +64350,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63365,6 +64373,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63387,6 +64396,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63409,6 +64419,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63431,6 +64442,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63453,6 +64465,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63475,6 +64488,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63497,6 +64511,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63519,6 +64534,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63541,6 +64557,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63563,6 +64580,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63585,6 +64603,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63607,6 +64626,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63629,6 +64649,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63651,6 +64672,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63673,6 +64695,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63695,6 +64718,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63717,6 +64741,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63739,6 +64764,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63761,6 +64787,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63783,6 +64810,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63805,6 +64833,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63827,6 +64856,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63849,6 +64879,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63871,6 +64902,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63893,6 +64925,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63915,6 +64948,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63937,6 +64971,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63959,6 +64994,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -63981,6 +65017,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64003,6 +65040,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64025,6 +65063,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64047,6 +65086,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64069,6 +65109,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64091,6 +65132,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64113,6 +65155,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64135,6 +65178,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64157,6 +65201,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64179,6 +65224,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64201,6 +65247,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64223,6 +65270,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64245,6 +65293,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64267,6 +65316,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64289,6 +65339,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64311,6 +65362,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64333,6 +65385,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64355,6 +65408,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64377,6 +65431,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64399,6 +65454,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64421,6 +65477,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64443,6 +65500,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64465,6 +65523,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64487,6 +65546,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64509,6 +65569,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64531,6 +65592,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64553,6 +65615,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64575,6 +65638,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64597,6 +65661,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64619,6 +65684,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64641,6 +65707,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64663,6 +65730,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64685,6 +65753,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64707,6 +65776,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64729,6 +65799,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64751,6 +65822,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64773,6 +65845,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64795,6 +65868,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64817,6 +65891,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64839,6 +65914,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64861,6 +65937,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64883,6 +65960,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64905,6 +65983,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64927,6 +66006,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64949,6 +66029,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64971,6 +66052,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -64993,6 +66075,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65015,6 +66098,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65037,6 +66121,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65059,6 +66144,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65081,6 +66167,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65103,6 +66190,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65125,6 +66213,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65147,6 +66236,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65169,6 +66259,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65191,6 +66282,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65213,6 +66305,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65235,6 +66328,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65257,6 +66351,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65279,6 +66374,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65301,6 +66397,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65323,6 +66420,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65345,6 +66443,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65367,6 +66466,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65389,6 +66489,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65411,6 +66512,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65433,6 +66535,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65455,6 +66558,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65477,6 +66581,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65499,6 +66604,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65521,6 +66627,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65543,6 +66650,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65565,6 +66673,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65587,6 +66696,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65609,6 +66719,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65631,6 +66742,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65653,6 +66765,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65675,6 +66788,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65697,6 +66811,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65719,6 +66834,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65741,6 +66857,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65763,6 +66880,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65785,6 +66903,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65807,6 +66926,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65829,6 +66949,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65851,6 +66972,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65873,6 +66995,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65895,6 +67018,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65917,6 +67041,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65939,6 +67064,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65961,6 +67087,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -65983,6 +67110,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66005,6 +67133,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66027,6 +67156,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66049,6 +67179,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66071,6 +67202,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66093,6 +67225,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66115,6 +67248,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66137,6 +67271,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66159,6 +67294,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66181,6 +67317,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66203,6 +67340,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66225,6 +67363,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66247,6 +67386,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66269,6 +67409,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66291,6 +67432,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66313,6 +67455,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66335,6 +67478,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66357,6 +67501,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66379,6 +67524,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66401,6 +67547,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66423,6 +67570,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66445,6 +67593,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66467,6 +67616,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66489,6 +67639,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66511,6 +67662,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66533,6 +67685,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66555,6 +67708,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66577,6 +67731,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66599,6 +67754,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66621,6 +67777,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66643,6 +67800,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66665,6 +67823,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66687,6 +67846,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66709,6 +67869,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66731,6 +67892,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66753,6 +67915,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66775,6 +67938,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66797,6 +67961,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66819,6 +67984,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66841,6 +68007,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66863,6 +68030,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66885,6 +68053,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66907,6 +68076,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66929,6 +68099,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66951,6 +68122,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66973,6 +68145,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -66995,6 +68168,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67017,6 +68191,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67039,6 +68214,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67061,6 +68237,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67083,6 +68260,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67105,6 +68283,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67127,6 +68306,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67149,6 +68329,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67171,6 +68352,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67193,6 +68375,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67215,6 +68398,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67237,6 +68421,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67259,6 +68444,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67281,6 +68467,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67303,6 +68490,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67325,6 +68513,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67347,6 +68536,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67369,6 +68559,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67391,6 +68582,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67413,6 +68605,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67435,6 +68628,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67457,6 +68651,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67479,6 +68674,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67501,6 +68697,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67523,6 +68720,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67545,6 +68743,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67567,6 +68766,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67589,6 +68789,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67611,6 +68812,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67633,6 +68835,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67655,6 +68858,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67677,6 +68881,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67699,6 +68904,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67721,6 +68927,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67743,6 +68950,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67765,6 +68973,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67787,6 +68996,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67809,6 +69019,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67831,6 +69042,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67853,6 +69065,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67875,6 +69088,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67897,6 +69111,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67919,6 +69134,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67941,6 +69157,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67963,6 +69180,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -67985,6 +69203,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68007,6 +69226,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68029,6 +69249,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68051,6 +69272,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68073,6 +69295,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68095,6 +69318,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68117,6 +69341,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68139,6 +69364,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68161,6 +69387,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68183,6 +69410,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68205,6 +69433,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68227,6 +69456,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68249,6 +69479,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68271,6 +69502,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68293,6 +69525,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68315,6 +69548,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68337,6 +69571,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68359,6 +69594,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68381,6 +69617,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68403,6 +69640,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68425,6 +69663,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68447,6 +69686,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68469,6 +69709,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68491,6 +69732,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68513,6 +69755,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68535,6 +69778,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68557,6 +69801,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68579,6 +69824,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68601,6 +69847,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68623,6 +69870,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68645,6 +69893,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68667,6 +69916,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68689,6 +69939,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68711,6 +69962,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68733,6 +69985,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68755,6 +70008,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68777,6 +70031,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68799,6 +70054,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68821,6 +70077,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68843,6 +70100,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68865,6 +70123,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68887,6 +70146,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68909,6 +70169,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68931,6 +70192,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68953,6 +70215,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68975,6 +70238,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -68997,6 +70261,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69019,6 +70284,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69041,6 +70307,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69063,6 +70330,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69085,6 +70353,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69107,6 +70376,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69129,6 +70399,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69151,6 +70422,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69173,6 +70445,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69195,6 +70468,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69217,6 +70491,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69239,6 +70514,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69261,6 +70537,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69283,6 +70560,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69305,6 +70583,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69327,6 +70606,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69349,6 +70629,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69371,6 +70652,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69393,6 +70675,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69415,6 +70698,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69437,6 +70721,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69459,6 +70744,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69481,6 +70767,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69503,6 +70790,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69525,6 +70813,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69547,6 +70836,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69569,6 +70859,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69591,6 +70882,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69613,6 +70905,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69635,6 +70928,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69657,6 +70951,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69679,6 +70974,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69701,6 +70997,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69723,6 +71020,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69745,6 +71043,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69767,6 +71066,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69789,6 +71089,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69811,6 +71112,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69833,6 +71135,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69855,6 +71158,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69877,6 +71181,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69899,6 +71204,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69921,6 +71227,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69943,6 +71250,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69965,6 +71273,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -69987,6 +71296,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70009,6 +71319,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70031,6 +71342,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70053,6 +71365,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70075,6 +71388,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70097,6 +71411,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70119,6 +71434,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70141,6 +71457,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70163,6 +71480,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70185,6 +71503,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70207,6 +71526,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70229,6 +71549,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70251,6 +71572,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70273,6 +71595,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70295,6 +71618,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70317,6 +71641,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70339,6 +71664,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70361,6 +71687,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70383,6 +71710,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70405,6 +71733,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70427,6 +71756,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70449,6 +71779,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70471,6 +71802,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70493,6 +71825,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70515,6 +71848,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70537,6 +71871,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70559,6 +71894,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70581,6 +71917,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70603,6 +71940,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70625,6 +71963,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70647,6 +71986,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70669,6 +72009,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70691,6 +72032,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70713,6 +72055,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70735,6 +72078,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70757,6 +72101,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70779,6 +72124,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70801,6 +72147,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70823,6 +72170,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70845,6 +72193,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70867,6 +72216,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70889,6 +72239,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70911,6 +72262,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70933,6 +72285,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70955,6 +72308,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70977,6 +72331,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -70999,6 +72354,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71021,6 +72377,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71043,6 +72400,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71065,6 +72423,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71087,6 +72446,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71109,6 +72469,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71131,6 +72492,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71153,6 +72515,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71175,6 +72538,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71197,6 +72561,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71219,6 +72584,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71241,6 +72607,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71263,6 +72630,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71285,6 +72653,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71307,6 +72676,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71329,6 +72699,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71351,6 +72722,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71373,6 +72745,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71395,6 +72768,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71417,6 +72791,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71439,6 +72814,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71461,6 +72837,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71483,6 +72860,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71505,6 +72883,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71527,6 +72906,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71549,6 +72929,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71571,6 +72952,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71593,6 +72975,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71615,6 +72998,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71637,6 +73021,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71659,6 +73044,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71681,6 +73067,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71703,6 +73090,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71725,6 +73113,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71747,6 +73136,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71769,6 +73159,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71791,6 +73182,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71813,6 +73205,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71835,6 +73228,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71857,6 +73251,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71879,6 +73274,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71901,6 +73297,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71923,6 +73320,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71945,6 +73343,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71967,6 +73366,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -71989,6 +73389,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72011,6 +73412,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72033,6 +73435,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72055,6 +73458,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72077,6 +73481,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72099,6 +73504,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72121,6 +73527,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72143,6 +73550,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72165,6 +73573,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72187,6 +73596,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72209,6 +73619,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72231,6 +73642,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72253,6 +73665,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72275,6 +73688,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72297,6 +73711,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72319,6 +73734,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72341,6 +73757,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72363,6 +73780,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72385,6 +73803,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72407,6 +73826,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72429,6 +73849,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72451,6 +73872,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72473,6 +73895,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72495,6 +73918,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72517,6 +73941,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72539,6 +73964,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72561,6 +73987,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72583,6 +74010,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72605,6 +74033,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72627,6 +74056,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72649,6 +74079,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72671,6 +74102,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72693,6 +74125,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72715,6 +74148,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72737,6 +74171,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72759,6 +74194,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72781,6 +74217,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72803,6 +74240,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72825,6 +74263,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72847,6 +74286,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72869,6 +74309,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72891,6 +74332,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72913,6 +74355,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72935,6 +74378,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72957,6 +74401,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -72979,6 +74424,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73001,6 +74447,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73023,6 +74470,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73045,6 +74493,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73067,6 +74516,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73089,6 +74539,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73111,6 +74562,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73133,6 +74585,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73155,6 +74608,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73177,6 +74631,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73199,6 +74654,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73221,6 +74677,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73243,6 +74700,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73265,6 +74723,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73287,6 +74746,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73309,6 +74769,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73331,6 +74792,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73353,6 +74815,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73375,6 +74838,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73397,6 +74861,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73419,6 +74884,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73441,6 +74907,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73463,6 +74930,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73485,6 +74953,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73507,6 +74976,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73529,6 +74999,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73551,6 +75022,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73573,6 +75045,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73595,6 +75068,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73617,6 +75091,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73639,6 +75114,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73661,6 +75137,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73683,6 +75160,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73705,6 +75183,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73727,6 +75206,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73749,6 +75229,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73771,6 +75252,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73793,6 +75275,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73815,6 +75298,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73837,6 +75321,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73859,6 +75344,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73881,6 +75367,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73903,6 +75390,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73925,6 +75413,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73947,6 +75436,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73969,6 +75459,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -73991,6 +75482,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74013,6 +75505,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74035,6 +75528,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74057,6 +75551,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74079,6 +75574,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74101,6 +75597,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74123,6 +75620,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74145,6 +75643,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74167,6 +75666,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74189,6 +75689,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74211,6 +75712,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74233,6 +75735,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74255,6 +75758,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74277,6 +75781,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74299,6 +75804,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74321,6 +75827,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74343,6 +75850,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74365,6 +75873,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74387,6 +75896,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74409,6 +75919,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74431,6 +75942,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74453,6 +75965,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74475,6 +75988,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74497,6 +76011,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74519,6 +76034,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74541,6 +76057,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74563,6 +76080,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74585,6 +76103,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74607,6 +76126,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74629,6 +76149,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74651,6 +76172,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74673,6 +76195,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74695,6 +76218,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74717,6 +76241,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74739,6 +76264,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74761,6 +76287,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74783,6 +76310,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74805,6 +76333,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74827,6 +76356,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74849,6 +76379,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74871,6 +76402,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74893,6 +76425,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74915,6 +76448,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74937,6 +76471,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74959,6 +76494,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -74981,6 +76517,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75003,6 +76540,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75025,6 +76563,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75047,6 +76586,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75069,6 +76609,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75091,6 +76632,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75113,6 +76655,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75135,6 +76678,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75157,6 +76701,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75179,6 +76724,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75201,6 +76747,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75223,6 +76770,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75245,6 +76793,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75267,6 +76816,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75289,6 +76839,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75311,6 +76862,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75333,6 +76885,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75355,6 +76908,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75377,6 +76931,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75399,6 +76954,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75421,6 +76977,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75443,6 +77000,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75465,6 +77023,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75487,6 +77046,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75509,6 +77069,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75531,6 +77092,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75553,6 +77115,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75575,6 +77138,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75597,6 +77161,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75619,6 +77184,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75641,6 +77207,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75663,6 +77230,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75685,6 +77253,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75707,6 +77276,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75729,6 +77299,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75751,6 +77322,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75773,6 +77345,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75795,6 +77368,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75817,6 +77391,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75839,6 +77414,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75861,6 +77437,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75883,6 +77460,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75905,6 +77483,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75927,6 +77506,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75949,6 +77529,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75971,6 +77552,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -75993,6 +77575,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76015,6 +77598,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76037,6 +77621,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76059,6 +77644,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76081,6 +77667,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76103,6 +77690,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76125,6 +77713,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76147,6 +77736,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76169,6 +77759,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76191,6 +77782,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76213,6 +77805,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76235,6 +77828,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76257,6 +77851,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76279,6 +77874,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76301,6 +77897,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76323,6 +77920,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76345,6 +77943,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76367,6 +77966,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76389,6 +77989,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76411,6 +78012,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76433,6 +78035,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76455,6 +78058,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76477,6 +78081,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76499,6 +78104,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76521,6 +78127,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76543,6 +78150,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76565,6 +78173,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76587,6 +78196,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76609,6 +78219,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76631,6 +78242,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76653,6 +78265,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76675,6 +78288,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76697,6 +78311,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76719,6 +78334,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76741,6 +78357,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76763,6 +78380,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76785,6 +78403,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76807,6 +78426,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76829,6 +78449,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76851,6 +78472,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76873,6 +78495,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76895,6 +78518,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76917,6 +78541,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76939,6 +78564,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76961,6 +78587,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -76983,6 +78610,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77005,6 +78633,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77027,6 +78656,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77049,6 +78679,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77071,6 +78702,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77093,6 +78725,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77115,6 +78748,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77137,6 +78771,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77159,6 +78794,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77181,6 +78817,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77203,6 +78840,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77225,6 +78863,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77247,6 +78886,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77269,6 +78909,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77291,6 +78932,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77313,6 +78955,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77335,6 +78978,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77357,6 +79001,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77379,6 +79024,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77401,6 +79047,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77423,6 +79070,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77445,6 +79093,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77467,6 +79116,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77489,6 +79139,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77511,6 +79162,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77533,6 +79185,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77555,6 +79208,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77577,6 +79231,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77599,6 +79254,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77621,6 +79277,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77643,6 +79300,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77665,6 +79323,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77687,6 +79346,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77709,6 +79369,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77731,6 +79392,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77753,6 +79415,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77775,6 +79438,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77797,6 +79461,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77819,6 +79484,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77841,6 +79507,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77863,6 +79530,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77885,6 +79553,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77907,6 +79576,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77929,6 +79599,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77951,6 +79622,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77973,6 +79645,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -77995,6 +79668,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78017,6 +79691,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78039,6 +79714,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78061,6 +79737,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78083,6 +79760,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78105,6 +79783,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78127,6 +79806,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78149,6 +79829,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78171,6 +79852,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78193,6 +79875,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78215,6 +79898,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78237,6 +79921,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78259,6 +79944,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78281,6 +79967,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78303,6 +79990,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78325,6 +80013,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78347,6 +80036,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78369,6 +80059,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78391,6 +80082,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78413,6 +80105,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78435,6 +80128,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78457,6 +80151,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78479,6 +80174,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78501,6 +80197,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78523,6 +80220,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78545,6 +80243,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78567,6 +80266,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78589,6 +80289,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78611,6 +80312,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78633,6 +80335,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78655,6 +80358,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78677,6 +80381,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78699,6 +80404,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78721,6 +80427,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78743,6 +80450,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78765,6 +80473,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78787,6 +80496,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78809,6 +80519,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78831,6 +80542,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78853,6 +80565,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78875,6 +80588,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78897,6 +80611,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78919,6 +80634,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78941,6 +80657,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78963,6 +80680,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -78985,6 +80703,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79007,6 +80726,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79029,6 +80749,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79051,6 +80772,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79073,6 +80795,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79095,6 +80818,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79117,6 +80841,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79139,6 +80864,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79161,6 +80887,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79183,6 +80910,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79205,6 +80933,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79227,6 +80956,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79249,6 +80979,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79271,6 +81002,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79293,6 +81025,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79315,6 +81048,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79337,6 +81071,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79359,6 +81094,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79381,6 +81117,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79403,6 +81140,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79425,6 +81163,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79447,6 +81186,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79469,6 +81209,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79491,6 +81232,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79513,6 +81255,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79535,6 +81278,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79557,6 +81301,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79579,6 +81324,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79601,6 +81347,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79623,6 +81370,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79645,6 +81393,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79667,6 +81416,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79689,6 +81439,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79711,6 +81462,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79733,6 +81485,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79755,6 +81508,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79777,6 +81531,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79799,6 +81554,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79821,6 +81577,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79843,6 +81600,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79865,6 +81623,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79887,6 +81646,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79909,6 +81669,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79931,6 +81692,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79953,6 +81715,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79975,6 +81738,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -79997,6 +81761,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80019,6 +81784,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80041,6 +81807,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80063,6 +81830,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80085,6 +81853,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80107,6 +81876,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80129,6 +81899,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80151,6 +81922,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80173,6 +81945,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80195,6 +81968,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80217,6 +81991,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80239,6 +82014,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80261,6 +82037,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80283,6 +82060,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80305,6 +82083,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80327,6 +82106,30 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
+ "linux"
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-6723650944237568"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [
+ "tsan"
+ ],
+ "exclude_iomgrs": [
+ "uv"
+ ],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80349,6 +82152,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80371,6 +82175,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80393,6 +82198,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80415,6 +82221,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80437,6 +82244,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80459,6 +82267,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80481,6 +82290,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80503,6 +82313,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80525,6 +82336,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80547,6 +82359,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80569,6 +82382,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80591,6 +82405,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80613,6 +82428,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80635,6 +82451,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80657,6 +82474,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80679,6 +82497,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80701,6 +82520,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80723,6 +82543,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80745,6 +82566,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80767,6 +82589,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80789,6 +82612,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80811,6 +82635,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80833,6 +82658,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80855,6 +82681,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80877,6 +82704,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80899,6 +82727,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80921,6 +82750,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80943,6 +82773,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80965,6 +82796,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -80987,6 +82819,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81009,6 +82842,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81031,6 +82865,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81053,6 +82888,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81075,6 +82911,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81097,6 +82934,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81119,6 +82957,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81141,6 +82980,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81163,6 +83003,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81185,6 +83026,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81207,6 +83049,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81229,6 +83072,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81251,6 +83095,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81273,6 +83118,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81295,6 +83141,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81317,6 +83164,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81339,6 +83187,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81361,6 +83210,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81383,6 +83233,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81405,6 +83256,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81427,6 +83279,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81449,6 +83302,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81471,6 +83325,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81493,6 +83348,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81515,6 +83371,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81537,6 +83394,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81559,6 +83417,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81581,6 +83440,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81603,6 +83463,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81625,6 +83486,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81647,6 +83509,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81669,6 +83532,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81691,6 +83555,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81713,6 +83578,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81735,6 +83601,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81757,6 +83624,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81779,6 +83647,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81801,6 +83670,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81823,6 +83693,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81845,6 +83716,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81867,6 +83739,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81889,6 +83762,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81911,6 +83785,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81933,6 +83808,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81955,6 +83831,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81977,6 +83854,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -81999,6 +83877,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82021,6 +83900,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82043,6 +83923,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82065,6 +83946,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82087,6 +83969,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82109,6 +83992,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82131,6 +84015,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82153,6 +84038,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82175,6 +84061,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82197,6 +84084,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82219,6 +84107,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82241,6 +84130,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82263,6 +84153,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82285,6 +84176,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82307,6 +84199,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82329,6 +84222,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82351,6 +84245,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82373,6 +84268,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82395,6 +84291,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82417,6 +84314,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82439,6 +84337,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82461,6 +84360,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82483,6 +84383,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82505,6 +84406,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82527,6 +84429,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82549,6 +84452,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82571,6 +84475,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82593,6 +84498,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82615,6 +84521,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82637,6 +84544,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82659,6 +84567,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82681,6 +84590,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82703,6 +84613,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82725,6 +84636,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82747,6 +84659,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82769,6 +84682,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82791,6 +84705,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82813,6 +84728,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82835,6 +84751,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82857,6 +84774,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82879,6 +84797,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82901,6 +84820,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82923,6 +84843,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82945,6 +84866,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82967,6 +84889,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -82989,6 +84912,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83011,6 +84935,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83033,6 +84958,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83055,6 +84981,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83077,6 +85004,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83099,6 +85027,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83121,6 +85050,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83143,6 +85073,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83165,6 +85096,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83187,6 +85119,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83209,6 +85142,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83231,6 +85165,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83253,6 +85188,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83275,6 +85211,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83297,6 +85234,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83319,6 +85257,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83341,6 +85280,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83363,6 +85303,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83385,6 +85326,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83407,6 +85349,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83429,6 +85372,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83451,6 +85395,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83473,6 +85418,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83495,6 +85441,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83517,6 +85464,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83539,6 +85487,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83561,6 +85510,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83583,6 +85533,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83605,6 +85556,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83627,6 +85579,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83649,6 +85602,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83671,6 +85625,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83693,6 +85648,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83715,6 +85671,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83737,6 +85694,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83759,6 +85717,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83781,6 +85740,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83803,6 +85763,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83825,6 +85786,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83847,6 +85809,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83869,6 +85832,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83891,6 +85855,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83913,6 +85878,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83935,6 +85901,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83957,6 +85924,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -83979,6 +85947,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84001,6 +85970,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84023,6 +85993,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84045,6 +86016,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84067,6 +86039,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84089,6 +86062,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84111,6 +86085,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84133,6 +86108,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84155,6 +86131,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84177,6 +86154,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84199,6 +86177,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84221,6 +86200,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84243,6 +86223,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84265,6 +86246,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84287,6 +86269,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84309,6 +86292,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84331,6 +86315,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84353,6 +86338,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84375,6 +86361,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84397,6 +86384,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84419,6 +86407,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84441,6 +86430,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84463,6 +86453,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84485,6 +86476,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84507,6 +86499,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84529,6 +86522,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84551,6 +86545,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84573,6 +86568,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84595,6 +86591,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84617,6 +86614,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84639,6 +86637,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84661,6 +86660,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84683,6 +86683,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84705,6 +86706,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84727,6 +86729,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84749,6 +86752,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84771,6 +86775,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84793,6 +86798,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84815,6 +86821,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84837,6 +86844,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84859,6 +86867,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84881,6 +86890,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84903,6 +86913,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84925,6 +86936,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84947,6 +86959,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84969,6 +86982,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -84991,6 +87005,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85013,6 +87028,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85035,6 +87051,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85057,6 +87074,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85079,6 +87097,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85101,6 +87120,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85123,6 +87143,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85145,6 +87166,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85167,6 +87189,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85189,6 +87212,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85211,6 +87235,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85233,6 +87258,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85255,6 +87281,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85277,6 +87304,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85299,6 +87327,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85321,6 +87350,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85343,6 +87373,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85365,6 +87396,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85387,6 +87419,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85409,6 +87442,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85431,6 +87465,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85453,6 +87488,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85475,6 +87511,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85497,6 +87534,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85519,6 +87557,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85541,6 +87580,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85563,6 +87603,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85585,6 +87626,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85607,6 +87649,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85629,6 +87672,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85651,6 +87695,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85673,6 +87718,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85695,6 +87741,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85717,6 +87764,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85739,6 +87787,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85761,6 +87810,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85783,6 +87833,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85805,6 +87856,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85827,6 +87879,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85849,6 +87902,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85871,6 +87925,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85893,6 +87948,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85915,6 +87971,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85937,6 +87994,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85959,6 +88017,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -85981,6 +88040,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86003,6 +88063,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86025,6 +88086,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86047,6 +88109,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86069,6 +88132,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86091,6 +88155,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86113,6 +88178,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86135,6 +88201,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86157,6 +88224,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86179,6 +88247,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86201,6 +88270,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86223,6 +88293,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86245,6 +88316,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86267,6 +88339,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86289,6 +88362,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86311,6 +88385,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86333,6 +88408,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86355,6 +88431,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86377,6 +88454,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86399,6 +88477,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86421,6 +88500,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86443,6 +88523,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86465,6 +88546,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86487,6 +88569,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86509,6 +88592,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86531,6 +88615,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86553,6 +88638,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86575,6 +88661,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86597,6 +88684,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86619,6 +88707,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86641,6 +88730,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86663,6 +88753,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86685,6 +88776,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86707,6 +88799,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86729,6 +88822,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86751,6 +88845,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86773,6 +88868,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86795,6 +88891,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86817,6 +88914,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86839,6 +88937,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86861,6 +88960,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86883,6 +88983,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86905,6 +89006,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86927,6 +89029,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86949,6 +89052,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86971,6 +89075,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -86993,6 +89098,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87015,6 +89121,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87037,6 +89144,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87059,6 +89167,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87081,6 +89190,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87103,6 +89213,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87125,6 +89236,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87147,6 +89259,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87169,6 +89282,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87191,6 +89305,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87213,6 +89328,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87235,6 +89351,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87257,6 +89374,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87279,6 +89397,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87301,6 +89420,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87323,6 +89443,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87345,6 +89466,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87367,6 +89489,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87389,6 +89512,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87411,6 +89535,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87433,6 +89558,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87455,6 +89581,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87477,6 +89604,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87499,6 +89627,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87521,6 +89650,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87543,6 +89673,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87565,6 +89696,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87587,6 +89719,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87609,6 +89742,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87631,6 +89765,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87653,6 +89788,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87675,6 +89811,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87697,6 +89834,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87719,6 +89857,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87741,6 +89880,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87763,6 +89903,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87785,6 +89926,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87807,6 +89949,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87829,6 +89972,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87851,6 +89995,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87873,6 +90018,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87895,6 +90041,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87917,6 +90064,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87939,6 +90087,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87961,6 +90110,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -87983,6 +90133,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88005,6 +90156,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88027,6 +90179,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88049,6 +90202,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88071,6 +90225,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88093,6 +90248,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88115,6 +90271,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88137,6 +90294,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88159,6 +90317,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88181,6 +90340,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88203,6 +90363,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88225,6 +90386,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88247,6 +90409,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88269,6 +90432,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88291,6 +90455,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88313,6 +90478,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88335,6 +90501,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88357,6 +90524,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88379,6 +90547,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88401,6 +90570,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88423,6 +90593,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88445,6 +90616,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88467,6 +90639,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88489,6 +90662,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88511,6 +90685,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88533,6 +90708,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88555,6 +90731,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88577,6 +90754,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88599,6 +90777,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88621,6 +90800,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88643,6 +90823,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88665,6 +90846,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88687,6 +90869,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88709,6 +90892,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88731,6 +90915,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88753,6 +90938,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88775,6 +90961,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88797,6 +90984,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88819,6 +91007,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88841,6 +91030,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88863,6 +91053,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88885,6 +91076,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88907,6 +91099,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88929,6 +91122,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88951,6 +91145,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88973,6 +91168,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -88995,6 +91191,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89017,6 +91214,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89039,6 +91237,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89061,6 +91260,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89083,6 +91283,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89105,6 +91306,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89127,6 +91329,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89149,6 +91352,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89171,6 +91375,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89193,6 +91398,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89215,6 +91421,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89237,6 +91444,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89259,6 +91467,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89281,6 +91490,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89303,6 +91513,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89325,6 +91536,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89347,6 +91559,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89369,6 +91582,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89391,6 +91605,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89413,6 +91628,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89435,6 +91651,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89457,6 +91674,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89479,6 +91697,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89501,6 +91720,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89523,6 +91743,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89545,6 +91766,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89567,6 +91789,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89589,6 +91812,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89611,6 +91835,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89633,6 +91858,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89655,6 +91881,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89677,6 +91904,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89699,6 +91927,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89721,6 +91950,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89743,6 +91973,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89765,6 +91996,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89787,6 +92019,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89809,6 +92042,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89831,6 +92065,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89853,6 +92088,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89875,6 +92111,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89897,6 +92134,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89919,6 +92157,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89941,6 +92180,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89963,6 +92203,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -89985,6 +92226,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90007,6 +92249,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90029,6 +92272,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90051,6 +92295,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90073,6 +92318,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90095,6 +92341,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90117,6 +92364,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90139,6 +92387,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90161,6 +92410,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90183,6 +92433,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90205,6 +92456,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90227,6 +92479,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90249,6 +92502,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90271,6 +92525,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90293,6 +92548,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90315,6 +92571,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90337,6 +92594,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90359,6 +92617,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90381,6 +92640,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90403,6 +92663,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90425,6 +92686,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90447,6 +92709,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90469,6 +92732,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90491,6 +92755,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90513,6 +92778,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90535,6 +92801,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90557,6 +92824,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90579,6 +92847,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90601,6 +92870,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90623,6 +92893,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90645,6 +92916,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90667,6 +92939,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90689,6 +92962,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90711,6 +92985,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90733,6 +93008,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90755,6 +93031,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90777,6 +93054,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90799,6 +93077,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90821,6 +93100,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90843,6 +93123,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90865,6 +93146,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90887,6 +93169,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90909,6 +93192,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90931,6 +93215,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90953,6 +93238,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90975,6 +93261,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -90997,6 +93284,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91019,6 +93307,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91041,6 +93330,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91063,6 +93353,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91085,6 +93376,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91107,6 +93399,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91129,6 +93422,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91151,6 +93445,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91173,6 +93468,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91195,6 +93491,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91217,6 +93514,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91239,6 +93537,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91261,6 +93560,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91283,6 +93583,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91305,6 +93606,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91327,6 +93629,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91349,6 +93652,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91371,6 +93675,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91393,6 +93698,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91415,6 +93721,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91437,6 +93744,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91459,6 +93767,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91481,6 +93790,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91503,6 +93813,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91525,6 +93836,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91547,6 +93859,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91569,6 +93882,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91591,6 +93905,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91613,6 +93928,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91635,6 +93951,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91657,6 +93974,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91679,6 +93997,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91701,6 +94020,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91723,6 +94043,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91745,6 +94066,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91767,6 +94089,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91789,6 +94112,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91811,6 +94135,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91833,6 +94158,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91855,6 +94181,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91877,6 +94204,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91899,6 +94227,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91921,6 +94250,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91943,6 +94273,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91965,6 +94296,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -91987,6 +94319,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92009,6 +94342,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92031,6 +94365,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92053,6 +94388,7 @@
"language": "c",
"name": "api_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92075,6 +94411,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92097,6 +94434,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92119,6 +94457,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92141,6 +94480,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92163,6 +94503,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92185,6 +94526,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92207,6 +94549,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92229,6 +94572,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92251,6 +94595,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92273,6 +94618,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92295,6 +94641,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92317,6 +94664,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92339,6 +94687,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92361,6 +94710,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92383,6 +94733,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92405,6 +94756,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92427,6 +94779,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92449,6 +94802,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92471,6 +94825,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92493,6 +94848,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92515,6 +94871,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92537,6 +94894,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92559,6 +94917,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92581,6 +94940,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92603,6 +94963,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92625,6 +94986,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92647,6 +95009,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92669,6 +95032,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92691,6 +95055,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92713,6 +95078,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92735,6 +95101,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92757,6 +95124,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92779,6 +95147,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92801,6 +95170,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92823,6 +95193,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92845,6 +95216,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92867,6 +95239,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92889,6 +95262,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92911,6 +95285,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92933,6 +95308,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92955,6 +95331,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92977,6 +95354,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -92999,6 +95377,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93021,6 +95400,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93043,6 +95423,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93065,6 +95446,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93087,6 +95469,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93109,6 +95492,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93131,6 +95515,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93153,6 +95538,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93175,6 +95561,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93197,6 +95584,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93219,6 +95607,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93241,6 +95630,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93263,6 +95653,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93285,6 +95676,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93307,6 +95699,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93329,6 +95722,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93351,6 +95745,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93373,6 +95768,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93395,6 +95791,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93417,6 +95814,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93439,6 +95837,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93461,6 +95860,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93483,6 +95883,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93505,6 +95906,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93527,6 +95929,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93549,6 +95952,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93571,6 +95975,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93593,6 +95998,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93615,6 +96021,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93637,6 +96044,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93659,6 +96067,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93681,6 +96090,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93703,6 +96113,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93725,6 +96136,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93747,6 +96159,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93769,6 +96182,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93791,6 +96205,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93813,6 +96228,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93835,6 +96251,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93857,6 +96274,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93879,6 +96297,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93901,6 +96320,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93923,6 +96343,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93945,6 +96366,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93967,6 +96389,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -93989,6 +96412,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94011,6 +96435,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94033,6 +96458,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94055,6 +96481,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94077,6 +96504,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94099,6 +96527,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94121,6 +96550,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94143,6 +96573,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94165,6 +96596,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94187,6 +96619,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94209,6 +96642,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94231,6 +96665,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94253,6 +96688,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94275,6 +96711,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94297,6 +96734,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94319,6 +96757,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94341,6 +96780,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94363,6 +96803,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94385,6 +96826,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94407,6 +96849,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94429,6 +96872,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94451,6 +96895,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94473,6 +96918,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94495,6 +96941,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94517,6 +96964,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94539,6 +96987,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94561,6 +97010,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94583,6 +97033,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94605,6 +97056,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94627,6 +97079,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94649,6 +97102,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94671,6 +97125,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94693,6 +97148,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94715,6 +97171,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94737,6 +97194,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94759,6 +97217,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94781,6 +97240,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94803,6 +97263,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94825,6 +97286,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94847,6 +97309,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94869,6 +97332,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94891,6 +97355,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94913,6 +97378,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94935,6 +97401,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94957,6 +97424,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -94979,6 +97447,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95001,6 +97470,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95023,6 +97493,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95045,6 +97516,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95067,6 +97539,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95089,6 +97562,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95111,6 +97585,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95133,6 +97608,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95155,6 +97631,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95177,6 +97654,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95199,6 +97677,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95221,6 +97700,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95243,6 +97723,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95265,6 +97746,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95287,6 +97769,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95309,6 +97792,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95331,6 +97815,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95353,6 +97838,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95375,6 +97861,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95397,6 +97884,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95419,6 +97907,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95441,6 +97930,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95463,6 +97953,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95485,6 +97976,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95507,6 +97999,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95529,6 +98022,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95551,6 +98045,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95573,6 +98068,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95595,6 +98091,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95617,6 +98114,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95639,6 +98137,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95661,6 +98160,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95683,6 +98183,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95705,6 +98206,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95727,6 +98229,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95749,6 +98252,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95771,6 +98275,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95793,6 +98298,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95815,6 +98321,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95837,6 +98344,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95859,6 +98367,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95881,6 +98390,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95903,6 +98413,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95925,6 +98436,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95947,6 +98459,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95969,6 +98482,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -95991,6 +98505,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96013,6 +98528,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96035,6 +98551,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96057,6 +98574,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96079,6 +98597,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96101,6 +98620,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96123,6 +98643,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96145,6 +98666,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96167,6 +98689,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96189,6 +98712,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96211,6 +98735,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96233,6 +98758,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96255,6 +98781,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96277,6 +98804,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96299,6 +98827,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96321,6 +98850,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96343,6 +98873,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96365,6 +98896,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96387,6 +98919,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96409,6 +98942,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96431,6 +98965,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96453,6 +98988,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96475,6 +99011,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96497,6 +99034,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96519,6 +99057,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96541,6 +99080,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96563,6 +99103,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96585,6 +99126,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96607,6 +99149,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96629,6 +99172,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96651,6 +99195,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96673,6 +99218,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96695,6 +99241,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96717,6 +99264,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96739,6 +99287,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96761,6 +99310,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96783,6 +99333,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96805,6 +99356,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96827,6 +99379,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96849,6 +99402,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96871,6 +99425,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96893,6 +99448,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96915,6 +99471,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96937,6 +99494,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96959,6 +99517,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -96981,6 +99540,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97003,6 +99563,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97025,6 +99586,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97047,6 +99609,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97069,6 +99632,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97091,6 +99655,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97113,6 +99678,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97135,6 +99701,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97157,6 +99724,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97179,6 +99747,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97201,6 +99770,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97223,6 +99793,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97245,6 +99816,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97267,6 +99839,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97289,6 +99862,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97311,6 +99885,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97333,6 +99908,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97355,6 +99931,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97377,6 +99954,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97399,6 +99977,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97421,6 +100000,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97443,6 +100023,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97465,6 +100046,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97487,6 +100069,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97509,6 +100092,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97531,6 +100115,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97553,6 +100138,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97575,6 +100161,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97597,6 +100184,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97619,6 +100207,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97641,6 +100230,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97663,6 +100253,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97685,6 +100276,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97707,6 +100299,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97729,6 +100322,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97751,6 +100345,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97773,6 +100368,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97795,6 +100391,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97817,6 +100414,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97839,6 +100437,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97861,6 +100460,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97883,6 +100483,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97905,6 +100506,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97927,6 +100529,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97949,6 +100552,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97971,6 +100575,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -97993,6 +100598,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98015,6 +100621,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98037,6 +100644,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98059,6 +100667,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98081,6 +100690,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98103,6 +100713,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98125,6 +100736,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98147,6 +100759,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98169,6 +100782,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98191,6 +100805,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98213,6 +100828,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98235,6 +100851,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98257,6 +100874,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98279,6 +100897,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98301,6 +100920,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98323,6 +100943,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98345,6 +100966,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98367,6 +100989,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98389,6 +101012,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98411,6 +101035,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98433,6 +101058,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98455,6 +101081,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98477,6 +101104,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98499,6 +101127,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98521,6 +101150,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98543,6 +101173,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98565,6 +101196,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98587,6 +101219,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98609,6 +101242,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98631,6 +101265,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98653,6 +101288,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98675,6 +101311,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98697,6 +101334,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98719,6 +101357,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98741,6 +101380,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98763,6 +101403,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98785,6 +101426,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98807,6 +101449,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98829,6 +101472,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98851,6 +101495,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98873,6 +101518,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98895,6 +101541,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98917,6 +101564,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98939,6 +101587,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98961,6 +101610,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -98983,6 +101633,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99005,6 +101656,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99027,6 +101679,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99049,6 +101702,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99071,6 +101725,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99093,6 +101748,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99115,6 +101771,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99137,6 +101794,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99159,6 +101817,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99181,6 +101840,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99203,6 +101863,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99225,6 +101886,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99247,6 +101909,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99269,6 +101932,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99291,6 +101955,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99313,6 +101978,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99335,6 +102001,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99357,6 +102024,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99379,6 +102047,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99401,6 +102070,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99423,6 +102093,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99445,6 +102116,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99467,6 +102139,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99489,6 +102162,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99511,6 +102185,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99533,6 +102208,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99555,6 +102231,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99577,6 +102254,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99599,6 +102277,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99621,6 +102300,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99643,6 +102323,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99665,6 +102346,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99687,6 +102369,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99709,6 +102392,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99731,6 +102415,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99753,6 +102438,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99775,6 +102461,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99797,6 +102484,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99819,6 +102507,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99841,6 +102530,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99863,6 +102553,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99885,6 +102576,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99907,6 +102599,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99929,6 +102622,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99951,6 +102645,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99973,6 +102668,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -99995,6 +102691,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100017,6 +102714,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100039,6 +102737,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100061,6 +102760,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100083,6 +102783,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100105,6 +102806,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100127,6 +102829,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100149,6 +102852,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100171,6 +102875,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100193,6 +102898,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100215,6 +102921,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100237,6 +102944,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100259,6 +102967,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100281,6 +102990,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100303,6 +103013,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100325,6 +103036,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100347,6 +103059,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100369,6 +103082,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100391,6 +103105,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100413,6 +103128,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100435,6 +103151,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100457,6 +103174,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100479,6 +103197,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100501,6 +103220,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100523,6 +103243,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100545,6 +103266,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100567,6 +103289,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100589,6 +103312,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100611,6 +103335,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100633,6 +103358,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100655,6 +103381,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100677,6 +103404,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100699,6 +103427,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100721,6 +103450,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100743,6 +103473,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100765,6 +103496,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100787,6 +103519,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100809,6 +103542,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100831,6 +103565,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100853,6 +103588,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100875,6 +103611,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100897,6 +103634,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100919,6 +103657,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100941,6 +103680,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100963,6 +103703,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -100985,6 +103726,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101007,6 +103749,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101029,6 +103772,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101051,6 +103795,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101073,6 +103818,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101095,6 +103841,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101117,6 +103864,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101139,6 +103887,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101161,6 +103910,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101183,6 +103933,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101205,6 +103956,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101227,6 +103979,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101249,6 +104002,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101271,6 +104025,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101293,6 +104048,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101315,6 +104071,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101337,6 +104094,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101359,6 +104117,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101381,6 +104140,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101403,6 +104163,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101425,6 +104186,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101447,6 +104209,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101469,6 +104232,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101491,6 +104255,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101513,6 +104278,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101535,6 +104301,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101557,6 +104324,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101579,6 +104347,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101601,6 +104370,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101623,6 +104393,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101645,6 +104416,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101667,6 +104439,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101689,6 +104462,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101711,6 +104485,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101733,6 +104508,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101755,6 +104531,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101777,6 +104554,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101799,6 +104577,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101821,6 +104600,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101843,6 +104623,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101865,6 +104646,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101887,6 +104669,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101909,6 +104692,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101931,6 +104715,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101953,6 +104738,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101975,6 +104761,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -101997,6 +104784,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102019,6 +104807,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102041,6 +104830,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102063,6 +104853,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102085,6 +104876,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102107,6 +104899,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102129,6 +104922,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102151,6 +104945,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102173,6 +104968,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102195,6 +104991,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102217,6 +105014,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102239,6 +105037,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102261,6 +105060,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102283,6 +105083,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102305,6 +105106,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102327,6 +105129,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102349,6 +105152,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102371,6 +105175,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102393,6 +105198,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102415,6 +105221,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102437,6 +105244,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102459,6 +105267,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102481,6 +105290,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102503,6 +105313,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102525,6 +105336,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102547,6 +105359,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102569,6 +105382,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102591,6 +105405,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102613,6 +105428,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102635,6 +105451,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102657,6 +105474,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102679,6 +105497,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102701,6 +105520,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102723,6 +105543,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102745,6 +105566,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102767,6 +105589,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102789,6 +105612,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102811,6 +105635,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102833,6 +105658,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102855,6 +105681,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102877,6 +105704,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102899,6 +105727,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102921,6 +105750,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102943,6 +105773,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102965,6 +105796,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -102987,6 +105819,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103009,6 +105842,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103031,6 +105865,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103053,6 +105888,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103075,6 +105911,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103097,6 +105934,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103119,6 +105957,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103141,6 +105980,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103163,6 +106003,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103185,6 +106026,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103207,6 +106049,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103229,6 +106072,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103251,6 +106095,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103273,6 +106118,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103295,6 +106141,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103317,6 +106164,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103339,6 +106187,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103361,6 +106210,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103383,6 +106233,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103405,6 +106256,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103427,6 +106279,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103449,6 +106302,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103471,6 +106325,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103493,6 +106348,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103515,6 +106371,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103537,6 +106394,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103559,6 +106417,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103581,6 +106440,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103603,6 +106463,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103625,6 +106486,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103647,6 +106509,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103669,6 +106532,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103691,6 +106555,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103713,6 +106578,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103735,6 +106601,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103757,6 +106624,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103779,6 +106647,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103801,6 +106670,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103823,6 +106693,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103845,6 +106716,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103867,6 +106739,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103889,6 +106762,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103911,6 +106785,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103933,6 +106808,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103955,6 +106831,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103977,6 +106854,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -103999,6 +106877,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104021,6 +106900,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104043,6 +106923,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104065,6 +106946,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104087,6 +106969,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104109,6 +106992,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104131,6 +107015,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104153,6 +107038,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104175,6 +107061,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104197,6 +107084,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104219,6 +107107,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104241,6 +107130,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104263,6 +107153,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104285,6 +107176,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104307,6 +107199,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104329,6 +107222,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104351,6 +107245,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104373,6 +107268,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104395,6 +107291,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104417,6 +107314,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104439,6 +107337,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104461,6 +107360,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104483,6 +107383,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104505,6 +107406,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104527,6 +107429,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104549,6 +107452,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104571,6 +107475,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104593,6 +107498,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104615,6 +107521,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104637,6 +107544,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104659,6 +107567,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104681,6 +107590,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104703,6 +107613,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104725,6 +107636,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104747,6 +107659,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104769,6 +107682,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104791,6 +107705,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104813,6 +107728,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104835,6 +107751,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104857,6 +107774,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104879,6 +107797,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104901,6 +107820,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104923,6 +107843,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104945,6 +107866,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104967,6 +107889,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -104989,6 +107912,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105011,6 +107935,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105033,6 +107958,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105055,6 +107981,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105077,6 +108004,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105099,6 +108027,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105121,6 +108050,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105143,6 +108073,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105165,6 +108096,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105187,6 +108119,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105209,6 +108142,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105231,6 +108165,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105253,6 +108188,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105275,6 +108211,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105297,6 +108234,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105319,6 +108257,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105341,6 +108280,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105363,6 +108303,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105385,6 +108326,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105407,6 +108349,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105429,6 +108372,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105451,6 +108395,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105473,6 +108418,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105495,6 +108441,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105517,6 +108464,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105539,6 +108487,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105561,6 +108510,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105583,6 +108533,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105605,6 +108556,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105627,6 +108579,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105649,6 +108602,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105671,6 +108625,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105693,6 +108648,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105715,6 +108671,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105737,6 +108694,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105759,6 +108717,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105781,6 +108740,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105803,6 +108763,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105825,6 +108786,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105847,6 +108809,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105869,6 +108832,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105891,6 +108855,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105913,6 +108878,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105935,6 +108901,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105957,6 +108924,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -105979,6 +108947,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106001,6 +108970,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106023,6 +108993,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106045,6 +109016,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106067,6 +109039,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106089,6 +109062,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106111,6 +109085,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106133,6 +109108,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106155,6 +109131,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106177,6 +109154,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106199,6 +109177,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106221,6 +109200,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106243,6 +109223,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106265,6 +109246,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106287,6 +109269,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106309,6 +109292,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106331,6 +109315,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106353,6 +109338,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106375,6 +109361,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106397,6 +109384,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106419,6 +109407,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106441,6 +109430,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106463,6 +109453,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106485,6 +109476,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106507,6 +109499,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106529,6 +109522,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106551,6 +109545,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106573,6 +109568,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106595,6 +109591,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106617,6 +109614,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106639,6 +109637,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106661,6 +109660,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106683,6 +109683,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106705,6 +109706,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106727,6 +109729,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106749,6 +109752,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106771,6 +109775,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106793,6 +109798,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106815,6 +109821,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106837,6 +109844,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106859,6 +109867,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106881,6 +109890,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106903,6 +109913,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106925,6 +109936,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106947,6 +109959,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106969,6 +109982,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -106991,6 +110005,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107013,6 +110028,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107035,6 +110051,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107057,6 +110074,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107079,6 +110097,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107101,6 +110120,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107123,6 +110143,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107145,6 +110166,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107167,6 +110189,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107189,6 +110212,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107211,6 +110235,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107233,6 +110258,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107255,6 +110281,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107277,6 +110304,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107299,6 +110327,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107321,6 +110350,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107343,6 +110373,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107365,6 +110396,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107387,6 +110419,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107409,6 +110442,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107431,6 +110465,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107453,6 +110488,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107475,6 +110511,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107497,6 +110534,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107519,6 +110557,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107541,6 +110580,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107563,6 +110603,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107585,6 +110626,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107607,6 +110649,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107629,6 +110672,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107651,6 +110695,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107673,6 +110718,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107695,6 +110741,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107717,6 +110764,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107739,6 +110787,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107761,6 +110810,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107783,6 +110833,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107805,6 +110856,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107827,6 +110879,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107849,6 +110902,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107871,6 +110925,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107893,6 +110948,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107915,6 +110971,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107937,6 +110994,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107959,6 +111017,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -107981,6 +111040,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108003,6 +111063,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108025,6 +111086,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108047,6 +111109,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108069,6 +111132,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108091,6 +111155,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108113,6 +111178,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108135,6 +111201,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108157,6 +111224,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108179,6 +111247,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108201,6 +111270,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108223,6 +111293,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108245,6 +111316,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108267,6 +111339,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108289,6 +111362,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108311,6 +111385,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108333,6 +111408,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108355,6 +111431,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108377,6 +111454,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108399,6 +111477,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108421,6 +111500,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108443,6 +111523,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108465,6 +111546,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108487,6 +111569,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108509,6 +111592,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108531,6 +111615,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108553,6 +111638,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108575,6 +111661,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108597,6 +111684,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108619,6 +111707,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108641,6 +111730,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108663,6 +111753,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108685,6 +111776,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108707,6 +111799,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108729,6 +111822,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108751,6 +111845,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108773,6 +111868,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108795,6 +111891,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108817,6 +111914,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108839,6 +111937,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108861,6 +111960,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108883,6 +111983,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108905,6 +112006,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108927,6 +112029,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108949,6 +112052,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108971,6 +112075,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -108993,6 +112098,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109015,6 +112121,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109037,6 +112144,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109059,6 +112167,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109081,6 +112190,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109103,6 +112213,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109125,6 +112236,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109147,6 +112259,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109169,6 +112282,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109191,6 +112305,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109213,6 +112328,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109235,6 +112351,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109257,6 +112374,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109279,6 +112397,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109301,6 +112420,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109323,6 +112443,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109345,6 +112466,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109367,6 +112489,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109389,6 +112512,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109411,6 +112535,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109433,6 +112558,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109455,6 +112581,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109477,6 +112604,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109499,6 +112627,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109521,6 +112650,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109543,6 +112673,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109565,6 +112696,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109587,6 +112719,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109609,6 +112742,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109631,6 +112765,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109653,6 +112788,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109675,6 +112811,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109697,6 +112834,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109719,6 +112857,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109741,6 +112880,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109763,6 +112903,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109785,6 +112926,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109807,6 +112949,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109829,6 +112972,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109851,6 +112995,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109873,6 +113018,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109895,6 +113041,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109917,6 +113064,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109939,6 +113087,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109961,6 +113110,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -109983,6 +113133,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110005,6 +113156,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110027,6 +113179,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110049,6 +113202,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110071,6 +113225,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110093,6 +113248,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110115,6 +113271,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110137,6 +113294,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110159,6 +113317,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110181,6 +113340,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110203,6 +113363,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110225,6 +113386,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110247,6 +113409,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110269,6 +113432,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110291,6 +113455,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110313,6 +113478,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110335,6 +113501,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110357,6 +113524,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110379,6 +113547,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110401,6 +113570,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110423,6 +113593,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110445,6 +113616,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110467,6 +113639,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110489,6 +113662,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110511,6 +113685,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110533,6 +113708,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110555,6 +113731,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110577,6 +113754,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110599,6 +113777,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110621,6 +113800,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110643,6 +113823,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110665,6 +113846,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110687,6 +113869,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110709,6 +113892,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110731,6 +113915,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110753,6 +113938,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110775,6 +113961,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110797,6 +113984,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110819,6 +114007,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110841,6 +114030,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110863,6 +114053,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110885,6 +114076,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110907,6 +114099,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110929,6 +114122,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110951,6 +114145,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110973,6 +114168,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -110995,6 +114191,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111017,6 +114214,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111039,6 +114237,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111061,6 +114260,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111083,6 +114283,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111105,6 +114306,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111127,6 +114329,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111149,6 +114352,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111171,6 +114375,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111193,6 +114398,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111215,6 +114421,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111237,6 +114444,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111259,6 +114467,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111281,6 +114490,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111303,6 +114513,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111325,6 +114536,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111347,6 +114559,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111369,6 +114582,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111391,6 +114605,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111413,6 +114628,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111435,6 +114651,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111457,6 +114674,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111479,6 +114697,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111501,6 +114720,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111523,6 +114743,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111545,6 +114766,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111567,6 +114789,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111589,6 +114812,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111611,6 +114835,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111633,6 +114858,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111655,6 +114881,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111677,6 +114904,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111699,6 +114927,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111721,6 +114950,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111743,6 +114973,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111765,6 +114996,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111787,6 +115019,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111809,6 +115042,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111831,6 +115065,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111853,6 +115088,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111875,6 +115111,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111897,6 +115134,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111919,6 +115157,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111941,6 +115180,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111963,6 +115203,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -111985,6 +115226,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112007,6 +115249,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112029,6 +115272,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112051,6 +115295,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112073,6 +115318,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112095,6 +115341,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112117,6 +115364,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112139,6 +115387,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112161,6 +115410,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112183,6 +115433,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112205,6 +115456,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112227,6 +115479,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112249,6 +115502,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112271,6 +115525,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112293,6 +115548,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112315,6 +115571,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112337,6 +115594,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112359,6 +115617,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112381,6 +115640,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112403,6 +115663,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112425,6 +115686,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112447,6 +115709,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112469,6 +115732,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112491,6 +115755,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112513,6 +115778,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112535,6 +115801,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112557,6 +115824,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112579,6 +115847,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112601,6 +115870,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112623,6 +115893,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112645,6 +115916,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112667,6 +115939,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112689,6 +115962,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112711,6 +115985,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112733,6 +116008,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112755,6 +116031,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112777,6 +116054,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112799,6 +116077,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112821,6 +116100,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112843,6 +116123,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112865,6 +116146,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112887,6 +116169,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112909,6 +116192,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112931,6 +116215,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112953,6 +116238,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112975,6 +116261,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -112997,6 +116284,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113019,6 +116307,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113041,6 +116330,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113063,6 +116353,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113085,6 +116376,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113107,6 +116399,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113129,6 +116422,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113151,6 +116445,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113173,6 +116468,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113195,6 +116491,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113217,6 +116514,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113239,6 +116537,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113261,6 +116560,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113283,6 +116583,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113305,6 +116606,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113327,6 +116629,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113349,6 +116652,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113371,6 +116675,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113393,6 +116698,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113415,6 +116721,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113437,6 +116744,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113459,6 +116767,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113481,6 +116790,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113503,6 +116813,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113525,6 +116836,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113547,6 +116859,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113569,6 +116882,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113591,6 +116905,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113613,6 +116928,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113635,6 +116951,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113657,6 +116974,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113679,6 +116997,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113701,6 +117020,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113723,6 +117043,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113745,6 +117066,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113767,6 +117089,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113789,6 +117112,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113811,6 +117135,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113833,6 +117158,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113855,6 +117181,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113877,6 +117204,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113899,6 +117227,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113921,6 +117250,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113943,6 +117273,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113965,6 +117296,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -113987,6 +117319,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114009,6 +117342,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114031,6 +117365,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114053,6 +117388,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114075,6 +117411,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114097,6 +117434,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114119,6 +117457,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114141,6 +117480,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114163,6 +117503,30 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
+ "linux"
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [
+ "test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [
+ "tsan"
+ ],
+ "exclude_iomgrs": [
+ "uv"
+ ],
+ "flaky": false,
+ "language": "c",
+ "name": "hpack_parser_fuzzer_test_one_entry",
+ "platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114185,6 +117549,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114207,6 +117572,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114229,6 +117595,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114251,6 +117618,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114273,6 +117641,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114295,6 +117664,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114317,6 +117687,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114339,6 +117710,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114361,6 +117733,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114383,6 +117756,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114405,6 +117779,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114427,6 +117802,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114449,6 +117825,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114471,6 +117848,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114493,6 +117871,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114515,6 +117894,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114537,6 +117917,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114559,6 +117940,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114581,6 +117963,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114603,6 +117986,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114625,6 +118009,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114647,6 +118032,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114669,6 +118055,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114691,6 +118078,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114713,6 +118101,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114735,6 +118124,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114757,6 +118147,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114779,6 +118170,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114801,6 +118193,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114823,6 +118216,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114845,6 +118239,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114867,6 +118262,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114889,6 +118285,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114911,6 +118308,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114933,6 +118331,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114955,6 +118354,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114977,6 +118377,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -114999,6 +118400,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115021,6 +118423,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115043,6 +118446,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115065,6 +118469,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115087,6 +118492,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115109,6 +118515,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115131,6 +118538,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115153,6 +118561,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115175,6 +118584,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115197,6 +118607,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115219,6 +118630,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115241,6 +118653,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115263,6 +118676,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115285,6 +118699,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115307,6 +118722,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115329,6 +118745,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115351,6 +118768,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115373,6 +118791,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115395,6 +118814,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115417,6 +118837,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115439,6 +118860,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115461,6 +118883,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115483,6 +118906,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115505,6 +118929,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115527,6 +118952,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115549,6 +118975,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115571,6 +118998,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115593,6 +119021,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115615,6 +119044,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115637,6 +119067,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115659,6 +119090,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115681,6 +119113,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115703,6 +119136,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115725,6 +119159,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115747,6 +119182,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115769,6 +119205,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115791,6 +119228,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115813,6 +119251,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115835,6 +119274,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115857,6 +119297,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115879,6 +119320,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115901,6 +119343,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115923,6 +119366,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115945,6 +119389,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115967,6 +119412,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -115989,6 +119435,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116011,6 +119458,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116033,6 +119481,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116055,6 +119504,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116077,6 +119527,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116099,6 +119550,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116121,6 +119573,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116143,6 +119596,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116165,6 +119619,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116187,6 +119642,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116209,6 +119665,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116231,6 +119688,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116253,6 +119711,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116275,6 +119734,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116297,6 +119757,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116319,6 +119780,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116341,6 +119803,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116363,6 +119826,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116385,6 +119849,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116407,6 +119872,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116429,6 +119895,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116451,6 +119918,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116473,6 +119941,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116495,6 +119964,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116517,6 +119987,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116539,6 +120010,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116561,6 +120033,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116583,6 +120056,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116605,6 +120079,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116627,6 +120102,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116649,6 +120125,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116671,6 +120148,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116693,6 +120171,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116715,6 +120194,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116737,6 +120217,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116759,6 +120240,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116781,6 +120263,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116803,6 +120286,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116825,6 +120309,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116847,6 +120332,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116869,6 +120355,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116891,6 +120378,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116913,6 +120401,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116935,6 +120424,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116957,6 +120447,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -116979,6 +120470,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117001,6 +120493,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117023,6 +120516,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117045,6 +120539,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117067,6 +120562,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117089,6 +120585,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117111,6 +120608,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117133,6 +120631,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117155,6 +120654,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117177,6 +120677,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117199,6 +120700,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117221,6 +120723,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117243,6 +120746,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117265,6 +120769,7 @@
"language": "c",
"name": "http_request_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117287,6 +120792,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117309,6 +120815,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117331,6 +120838,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117353,6 +120861,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117375,6 +120884,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117397,6 +120907,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117419,6 +120930,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117441,6 +120953,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117463,6 +120976,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117485,6 +120999,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117507,6 +121022,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117529,6 +121045,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117551,6 +121068,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117573,6 +121091,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117595,6 +121114,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117617,6 +121137,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117639,6 +121160,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117661,6 +121183,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117683,6 +121206,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117705,6 +121229,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117727,6 +121252,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117749,6 +121275,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117771,6 +121298,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117793,6 +121321,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117815,6 +121344,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117837,6 +121367,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117859,6 +121390,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117881,6 +121413,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117903,6 +121436,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117925,6 +121459,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117947,6 +121482,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117969,6 +121505,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -117991,6 +121528,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118013,6 +121551,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118035,6 +121574,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118057,6 +121597,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118079,6 +121620,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118101,6 +121643,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118123,6 +121666,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118145,6 +121689,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118167,6 +121712,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118189,6 +121735,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118211,6 +121758,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118233,6 +121781,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118255,6 +121804,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118277,6 +121827,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118299,6 +121850,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118321,6 +121873,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118343,6 +121896,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118365,6 +121919,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118387,6 +121942,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118409,6 +121965,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118431,6 +121988,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118453,6 +122011,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118475,6 +122034,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118497,6 +122057,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118519,6 +122080,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118541,6 +122103,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118563,6 +122126,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118585,6 +122149,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118607,6 +122172,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118629,6 +122195,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118651,6 +122218,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118673,6 +122241,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118695,6 +122264,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118717,6 +122287,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118739,6 +122310,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118761,6 +122333,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118783,6 +122356,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118805,6 +122379,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118827,6 +122402,7 @@
"language": "c",
"name": "http_response_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118849,6 +122425,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118871,6 +122448,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118893,6 +122471,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118915,6 +122494,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118937,6 +122517,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118959,6 +122540,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -118981,6 +122563,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119003,6 +122586,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119025,6 +122609,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119047,6 +122632,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119069,6 +122655,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119091,6 +122678,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119113,6 +122701,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119135,6 +122724,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119157,6 +122747,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119179,6 +122770,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119201,6 +122793,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119223,6 +122816,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119245,6 +122839,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119267,6 +122862,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119289,6 +122885,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119311,6 +122908,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119333,6 +122931,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119355,6 +122954,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119377,6 +122977,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119399,6 +123000,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119421,6 +123023,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119443,6 +123046,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119465,6 +123069,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119487,6 +123092,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119509,6 +123115,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119531,6 +123138,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119553,6 +123161,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119575,6 +123184,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119597,6 +123207,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119619,6 +123230,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119641,6 +123253,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119663,6 +123276,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119685,6 +123299,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119707,6 +123322,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119729,6 +123345,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119751,6 +123368,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119773,6 +123391,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119795,6 +123414,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119817,6 +123437,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119839,6 +123460,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119861,6 +123483,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119883,6 +123506,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119905,6 +123529,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119927,6 +123552,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119949,6 +123575,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119971,6 +123598,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -119993,6 +123621,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120015,6 +123644,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120037,6 +123667,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120059,6 +123690,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120081,6 +123713,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120103,6 +123736,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120125,6 +123759,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120147,6 +123782,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120169,6 +123805,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120191,6 +123828,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120213,6 +123851,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120235,6 +123874,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120257,6 +123897,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120279,6 +123920,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120301,6 +123943,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120323,6 +123966,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120345,6 +123989,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120367,6 +124012,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120389,6 +124035,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120411,6 +124058,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120433,6 +124081,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120455,6 +124104,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120477,6 +124127,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120499,6 +124150,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120521,6 +124173,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120543,6 +124196,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120565,6 +124219,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120587,6 +124242,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120609,6 +124265,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120631,6 +124288,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120653,6 +124311,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120675,6 +124334,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120697,6 +124357,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120719,6 +124380,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120741,6 +124403,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120763,6 +124426,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120785,6 +124449,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120807,6 +124472,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120829,6 +124495,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120851,6 +124518,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120873,6 +124541,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120895,6 +124564,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120917,6 +124587,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120939,6 +124610,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120961,6 +124633,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -120983,6 +124656,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121005,6 +124679,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121027,6 +124702,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121049,6 +124725,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121071,6 +124748,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121093,6 +124771,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121115,6 +124794,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121137,6 +124817,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121159,6 +124840,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121181,6 +124863,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121203,6 +124886,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121225,6 +124909,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121247,6 +124932,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121269,6 +124955,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121291,6 +124978,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121313,6 +125001,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121335,6 +125024,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121357,6 +125047,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121379,6 +125070,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121401,6 +125093,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121423,6 +125116,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121445,6 +125139,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121467,6 +125162,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121489,6 +125185,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121511,6 +125208,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121533,6 +125231,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121555,6 +125254,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121577,6 +125277,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121599,6 +125300,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121621,6 +125323,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121643,6 +125346,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121665,6 +125369,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121687,6 +125392,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121709,6 +125415,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121731,6 +125438,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121753,6 +125461,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121775,6 +125484,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121797,6 +125507,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121819,6 +125530,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121841,6 +125553,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121863,6 +125576,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121885,6 +125599,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121907,6 +125622,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121929,6 +125645,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121951,6 +125668,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121973,6 +125691,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -121995,6 +125714,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122017,6 +125737,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122039,6 +125760,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122061,6 +125783,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122083,6 +125806,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122105,6 +125829,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122127,6 +125852,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122149,6 +125875,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122171,6 +125898,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122193,6 +125921,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122215,6 +125944,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122237,6 +125967,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122259,6 +125990,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122281,6 +126013,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122303,6 +126036,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122325,6 +126059,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122347,6 +126082,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122369,6 +126105,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122391,6 +126128,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122413,6 +126151,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122435,6 +126174,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122457,6 +126197,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122479,6 +126220,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122501,6 +126243,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122523,6 +126266,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122545,6 +126289,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122567,6 +126312,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122589,6 +126335,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122611,6 +126358,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122633,6 +126381,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122655,6 +126404,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122677,6 +126427,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122699,6 +126450,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122721,6 +126473,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122743,6 +126496,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122765,6 +126519,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122787,6 +126542,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122809,6 +126565,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122831,6 +126588,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122853,6 +126611,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122875,6 +126634,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122897,6 +126657,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122919,6 +126680,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122941,6 +126703,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122963,6 +126726,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -122985,6 +126749,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123007,6 +126772,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123029,6 +126795,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123051,6 +126818,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123073,6 +126841,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123095,6 +126864,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123117,6 +126887,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123139,6 +126910,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123161,6 +126933,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123183,6 +126956,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123205,6 +126979,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123227,6 +127002,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123249,6 +127025,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123271,6 +127048,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123293,6 +127071,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123315,6 +127094,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123337,6 +127117,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123359,6 +127140,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123381,6 +127163,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123403,6 +127186,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123425,6 +127209,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123447,6 +127232,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123469,6 +127255,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123491,6 +127278,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123513,6 +127301,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123535,6 +127324,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123557,6 +127347,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123579,6 +127370,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123601,6 +127393,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123623,6 +127416,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123645,6 +127439,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123667,6 +127462,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123689,6 +127485,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123711,6 +127508,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123733,6 +127531,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123755,6 +127554,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123777,6 +127577,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123799,6 +127600,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123821,6 +127623,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123843,6 +127646,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123865,6 +127669,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123887,6 +127692,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123909,6 +127715,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123931,6 +127738,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123953,6 +127761,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123975,6 +127784,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -123997,6 +127807,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124019,6 +127830,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124041,6 +127853,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124063,6 +127876,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124085,6 +127899,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124107,6 +127922,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124129,6 +127945,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124151,6 +127968,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124173,6 +127991,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124195,6 +128014,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124217,6 +128037,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124239,6 +128060,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124261,6 +128083,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124283,6 +128106,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124305,6 +128129,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124327,6 +128152,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124349,6 +128175,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124371,6 +128198,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124393,6 +128221,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124415,6 +128244,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124437,6 +128267,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124459,6 +128290,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124481,6 +128313,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124503,6 +128336,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124525,6 +128359,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124547,6 +128382,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124569,6 +128405,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124591,6 +128428,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124613,6 +128451,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124635,6 +128474,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124657,6 +128497,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124679,6 +128520,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124701,6 +128543,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124723,6 +128566,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124745,6 +128589,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124767,6 +128612,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124789,6 +128635,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124811,6 +128658,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124833,6 +128681,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124855,6 +128704,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124877,6 +128727,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124899,6 +128750,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124921,6 +128773,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124943,6 +128796,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124965,6 +128819,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -124987,6 +128842,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125009,6 +128865,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125031,6 +128888,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125053,6 +128911,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125075,6 +128934,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125097,6 +128957,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125119,6 +128980,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125141,6 +129003,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125163,6 +129026,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125185,6 +129049,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125207,6 +129072,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125229,6 +129095,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125251,6 +129118,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125273,6 +129141,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125295,6 +129164,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125317,6 +129187,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125339,6 +129210,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125361,6 +129233,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125383,6 +129256,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125405,6 +129279,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125427,6 +129302,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125449,6 +129325,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125471,6 +129348,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125493,6 +129371,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125515,6 +129394,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125537,6 +129417,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125559,6 +129440,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125581,6 +129463,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125603,6 +129486,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125625,6 +129509,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125647,6 +129532,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125669,6 +129555,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125691,6 +129578,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125713,6 +129601,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125735,6 +129624,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125757,6 +129647,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125779,6 +129670,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125801,6 +129693,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125823,6 +129716,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125845,6 +129739,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125867,6 +129762,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125889,6 +129785,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125911,6 +129808,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125933,6 +129831,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125955,6 +129854,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125977,6 +129877,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -125999,6 +129900,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126021,6 +129923,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126043,6 +129946,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126065,6 +129969,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126087,6 +129992,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126109,6 +130015,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126131,6 +130038,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126153,6 +130061,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126175,6 +130084,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126197,6 +130107,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126219,6 +130130,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126241,6 +130153,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126263,6 +130176,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126285,6 +130199,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126307,6 +130222,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126329,6 +130245,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126351,6 +130268,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126373,6 +130291,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126395,6 +130314,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126417,6 +130337,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126439,6 +130360,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126461,6 +130383,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126483,6 +130406,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126505,6 +130429,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126527,6 +130452,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126549,6 +130475,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126571,6 +130498,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126593,6 +130521,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126615,6 +130544,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126637,6 +130567,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126659,6 +130590,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126681,6 +130613,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126703,6 +130636,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126725,6 +130659,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126747,6 +130682,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126769,6 +130705,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126791,6 +130728,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126813,6 +130751,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126835,6 +130774,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126857,6 +130797,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126879,6 +130820,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126901,6 +130843,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126923,6 +130866,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126945,6 +130889,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126967,6 +130912,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -126989,6 +130935,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127011,6 +130958,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127033,6 +130981,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127055,6 +131004,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127077,6 +131027,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127099,6 +131050,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127121,6 +131073,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127143,6 +131096,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127165,6 +131119,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127187,6 +131142,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127209,6 +131165,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127231,6 +131188,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127253,6 +131211,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127275,6 +131234,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127297,6 +131257,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127319,6 +131280,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127341,6 +131303,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127363,6 +131326,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127385,6 +131349,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127407,6 +131372,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127429,6 +131395,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127451,6 +131418,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127473,6 +131441,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127495,6 +131464,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127517,6 +131487,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127539,6 +131510,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127561,6 +131533,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127583,6 +131556,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127605,6 +131579,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127627,6 +131602,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127649,6 +131625,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127671,6 +131648,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127693,6 +131671,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127715,6 +131694,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127737,6 +131717,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127759,6 +131740,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127781,6 +131763,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127803,6 +131786,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127825,6 +131809,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127847,6 +131832,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127869,6 +131855,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127891,6 +131878,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127913,6 +131901,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127935,6 +131924,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127957,6 +131947,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -127979,6 +131970,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128001,6 +131993,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128023,6 +132016,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128045,6 +132039,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128067,6 +132062,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128089,6 +132085,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128111,6 +132108,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128133,6 +132131,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128155,6 +132154,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128177,6 +132177,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128199,6 +132200,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128221,6 +132223,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128243,6 +132246,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128265,6 +132269,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128287,6 +132292,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128309,6 +132315,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128331,6 +132338,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128353,6 +132361,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128375,6 +132384,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128397,6 +132407,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128419,6 +132430,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128441,6 +132453,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128463,6 +132476,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128485,6 +132499,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128507,6 +132522,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128529,6 +132545,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128551,6 +132568,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128573,6 +132591,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128595,6 +132614,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128617,6 +132637,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128639,6 +132660,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128661,6 +132683,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128683,6 +132706,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128705,6 +132729,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128727,6 +132752,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128749,6 +132775,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128771,6 +132798,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128793,6 +132821,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128815,6 +132844,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128837,6 +132867,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128859,6 +132890,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128881,6 +132913,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128903,6 +132936,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128925,6 +132959,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128947,6 +132982,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128969,6 +133005,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -128991,6 +133028,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129013,6 +133051,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129035,6 +133074,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129057,6 +133097,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129079,6 +133120,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129101,6 +133143,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129123,6 +133166,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129145,6 +133189,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129167,6 +133212,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129189,6 +133235,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129211,6 +133258,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129233,6 +133281,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129255,6 +133304,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129277,6 +133327,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129299,6 +133350,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129321,6 +133373,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129343,6 +133396,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129365,6 +133419,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129387,6 +133442,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129409,6 +133465,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129431,6 +133488,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129453,6 +133511,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129475,6 +133534,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129497,6 +133557,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129519,6 +133580,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129541,6 +133603,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129563,6 +133626,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129585,6 +133649,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129607,6 +133672,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129629,6 +133695,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129651,6 +133718,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129673,6 +133741,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129695,6 +133764,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129717,6 +133787,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129739,6 +133810,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129761,6 +133833,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129783,6 +133856,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129805,6 +133879,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129827,6 +133902,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129849,6 +133925,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129871,6 +133948,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129893,6 +133971,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129915,6 +133994,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129937,6 +134017,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129959,6 +134040,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -129981,6 +134063,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130003,6 +134086,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130025,6 +134109,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130047,6 +134132,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130069,6 +134155,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130091,6 +134178,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130113,6 +134201,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130135,6 +134224,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130157,6 +134247,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130179,6 +134270,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130201,6 +134293,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130223,6 +134316,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130245,6 +134339,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130267,6 +134362,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130289,6 +134385,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130311,6 +134408,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130333,6 +134431,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130355,6 +134454,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130377,6 +134477,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130399,6 +134500,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130421,6 +134523,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130443,6 +134546,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130465,6 +134569,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130487,6 +134592,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130509,6 +134615,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130531,6 +134638,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130553,6 +134661,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130575,6 +134684,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130597,6 +134707,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130619,6 +134730,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130641,6 +134753,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130663,6 +134776,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130685,6 +134799,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130707,6 +134822,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130729,6 +134845,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130751,6 +134868,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130773,6 +134891,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130795,6 +134914,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130817,6 +134937,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130839,6 +134960,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130861,6 +134983,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130883,6 +135006,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130905,6 +135029,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130927,6 +135052,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130949,6 +135075,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130971,6 +135098,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -130993,6 +135121,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131015,6 +135144,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131037,6 +135167,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131059,6 +135190,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131081,6 +135213,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131103,6 +135236,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131125,6 +135259,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131147,6 +135282,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131169,6 +135305,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131191,6 +135328,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131213,6 +135351,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131235,6 +135374,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131257,6 +135397,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131279,6 +135420,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131301,6 +135443,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131323,6 +135466,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131345,6 +135489,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131367,6 +135512,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131389,6 +135535,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131411,6 +135558,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131433,6 +135581,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131455,6 +135604,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131477,6 +135627,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131499,6 +135650,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131521,6 +135673,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131543,6 +135696,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131565,6 +135719,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131587,6 +135742,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131609,6 +135765,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131631,6 +135788,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131653,6 +135811,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131675,6 +135834,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131697,6 +135857,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131719,6 +135880,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131741,6 +135903,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131763,6 +135926,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131785,6 +135949,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131807,6 +135972,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131829,6 +135995,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131851,6 +136018,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131873,6 +136041,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131895,6 +136064,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131917,6 +136087,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131939,6 +136110,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131961,6 +136133,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -131983,6 +136156,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132005,6 +136179,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132027,6 +136202,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132049,6 +136225,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132071,6 +136248,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132093,6 +136271,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132115,6 +136294,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132137,6 +136317,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132159,6 +136340,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132181,6 +136363,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132203,6 +136386,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132225,6 +136409,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132247,6 +136432,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132269,6 +136455,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132291,6 +136478,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132313,6 +136501,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132335,6 +136524,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132357,6 +136547,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132379,6 +136570,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132401,6 +136593,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132423,6 +136616,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132445,6 +136639,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132467,6 +136662,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132489,6 +136685,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132511,6 +136708,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132533,6 +136731,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132555,6 +136754,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132577,6 +136777,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132599,6 +136800,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132621,6 +136823,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132643,6 +136846,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132665,6 +136869,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132687,6 +136892,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132709,6 +136915,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132731,6 +136938,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132753,6 +136961,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132775,6 +136984,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132797,6 +137007,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132819,6 +137030,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132841,6 +137053,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132863,6 +137076,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132885,6 +137099,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132907,6 +137122,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132929,6 +137145,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132951,6 +137168,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132973,6 +137191,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -132995,6 +137214,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133017,6 +137237,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133039,6 +137260,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133061,6 +137283,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133083,6 +137306,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133105,6 +137329,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133127,6 +137352,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133149,6 +137375,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133171,6 +137398,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133193,6 +137421,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133215,6 +137444,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133237,6 +137467,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133259,6 +137490,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133281,6 +137513,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133303,6 +137536,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133325,6 +137559,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133347,6 +137582,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133369,6 +137605,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133391,6 +137628,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133413,6 +137651,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133435,6 +137674,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133457,6 +137697,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133479,6 +137720,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133501,6 +137743,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133523,6 +137766,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133545,6 +137789,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133567,6 +137812,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133589,6 +137835,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133611,6 +137858,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133633,6 +137881,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133655,6 +137904,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133677,6 +137927,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133699,6 +137950,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133721,6 +137973,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133743,6 +137996,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133765,6 +138019,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133787,6 +138042,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133809,6 +138065,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133831,6 +138088,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133853,6 +138111,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133875,6 +138134,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133897,6 +138157,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133919,6 +138180,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133941,6 +138203,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133963,6 +138226,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -133985,6 +138249,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134007,6 +138272,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134029,6 +138295,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134051,6 +138318,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134073,6 +138341,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134095,6 +138364,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134117,6 +138387,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134139,6 +138410,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134161,6 +138433,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134183,6 +138456,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134205,6 +138479,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134227,6 +138502,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134249,6 +138525,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134271,6 +138548,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134293,6 +138571,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134315,6 +138594,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134337,6 +138617,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134359,6 +138640,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134381,6 +138663,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134403,6 +138686,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134425,6 +138709,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134447,6 +138732,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134469,6 +138755,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134491,6 +138778,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134513,6 +138801,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134535,6 +138824,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134557,6 +138847,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134579,6 +138870,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134601,6 +138893,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134623,6 +138916,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134645,6 +138939,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134667,6 +138962,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134689,6 +138985,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134711,6 +139008,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134733,6 +139031,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134755,6 +139054,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134777,6 +139077,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134799,6 +139100,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134821,6 +139123,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134843,6 +139146,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134865,6 +139169,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134887,6 +139192,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134909,6 +139215,7 @@
"language": "c",
"name": "percent_decode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134931,6 +139238,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134953,6 +139261,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134975,6 +139284,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -134997,6 +139307,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135019,6 +139330,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135041,6 +139353,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135063,6 +139376,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135085,6 +139399,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135107,6 +139422,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135129,6 +139445,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135151,6 +139468,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135173,6 +139491,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135195,6 +139514,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135217,6 +139537,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135239,6 +139560,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135261,6 +139583,7 @@
"language": "c",
"name": "percent_encode_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135283,6 +139606,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135305,6 +139629,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135327,6 +139652,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135349,6 +139675,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135371,6 +139698,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135393,6 +139721,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135415,6 +139744,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135437,6 +139767,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135459,6 +139790,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135481,6 +139813,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135503,6 +139836,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135525,6 +139859,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135547,6 +139882,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135569,6 +139905,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135591,6 +139928,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135613,6 +139951,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135635,6 +139974,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135657,6 +139997,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135679,6 +140020,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135701,6 +140043,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135723,6 +140066,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135745,6 +140089,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135767,6 +140112,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135789,6 +140135,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135811,6 +140158,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135833,6 +140181,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135855,6 +140204,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135877,6 +140227,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135899,6 +140250,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135921,6 +140273,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135943,6 +140296,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135965,6 +140319,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -135987,6 +140342,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136009,6 +140365,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136031,6 +140388,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136053,6 +140411,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136075,6 +140434,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136097,6 +140457,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136119,6 +140480,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136141,6 +140503,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136163,6 +140526,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136185,6 +140549,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136207,6 +140572,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136229,6 +140595,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136251,6 +140618,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136273,6 +140641,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136295,6 +140664,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136317,6 +140687,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136339,6 +140710,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136361,6 +140733,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136383,6 +140756,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136405,6 +140779,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136427,6 +140802,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136449,6 +140825,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136471,6 +140848,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136493,6 +140871,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136515,6 +140894,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136537,6 +140917,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136559,6 +140940,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136581,6 +140963,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136603,6 +140986,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136625,6 +141009,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136647,6 +141032,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136669,6 +141055,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136691,6 +141078,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136713,6 +141101,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136735,6 +141124,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136757,6 +141147,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136779,6 +141170,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136801,6 +141193,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136823,6 +141216,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136845,6 +141239,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136867,6 +141262,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136889,6 +141285,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136911,6 +141308,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136933,6 +141331,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136955,6 +141354,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136977,6 +141377,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -136999,6 +141400,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137021,6 +141423,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137043,6 +141446,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137065,6 +141469,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137087,6 +141492,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137109,6 +141515,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137131,6 +141538,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137153,6 +141561,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137175,6 +141584,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137197,6 +141607,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137219,6 +141630,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137241,6 +141653,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137263,6 +141676,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137285,6 +141699,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137307,6 +141722,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137329,6 +141745,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137351,6 +141768,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137373,6 +141791,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137395,6 +141814,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137417,6 +141837,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137439,6 +141860,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137461,6 +141883,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137483,6 +141906,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137505,6 +141929,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137527,6 +141952,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137549,6 +141975,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137571,6 +141998,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137593,6 +142021,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137615,6 +142044,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137637,6 +142067,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137659,6 +142090,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137681,6 +142113,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137703,6 +142136,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137725,6 +142159,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137747,6 +142182,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137769,6 +142205,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137791,6 +142228,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137813,6 +142251,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137835,6 +142274,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137857,6 +142297,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137879,6 +142320,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137901,6 +142343,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137923,6 +142366,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137945,6 +142389,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137967,6 +142412,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -137989,6 +142435,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138011,6 +142458,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138033,6 +142481,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138055,6 +142504,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138077,6 +142527,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138099,6 +142550,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138121,6 +142573,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138143,6 +142596,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138165,6 +142619,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138187,6 +142642,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138209,6 +142665,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138231,6 +142688,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138253,6 +142711,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138275,6 +142734,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138297,6 +142757,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138319,6 +142780,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138341,6 +142803,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138363,6 +142826,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138385,6 +142849,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138407,6 +142872,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138429,6 +142895,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138451,6 +142918,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138473,6 +142941,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138495,6 +142964,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138517,6 +142987,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138539,6 +143010,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138561,6 +143033,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138583,6 +143056,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138605,6 +143079,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138627,6 +143102,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138649,6 +143125,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138671,6 +143148,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138693,6 +143171,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138715,6 +143194,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138737,6 +143217,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138759,6 +143240,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138781,6 +143263,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138803,6 +143286,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138825,6 +143309,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138847,6 +143332,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138869,6 +143355,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138891,6 +143378,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138913,6 +143401,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138935,6 +143424,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138957,6 +143447,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -138979,6 +143470,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139001,6 +143493,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139023,6 +143516,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139045,6 +143539,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139067,6 +143562,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139089,6 +143585,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139111,6 +143608,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139133,6 +143631,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139155,6 +143654,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139177,6 +143677,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139199,6 +143700,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139221,6 +143723,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139243,6 +143746,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139265,6 +143769,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139287,6 +143792,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139309,6 +143815,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139331,6 +143838,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139353,6 +143861,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139375,6 +143884,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139397,6 +143907,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139419,6 +143930,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139441,6 +143953,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139463,6 +143976,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139485,6 +143999,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139507,6 +144022,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139529,6 +144045,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139551,6 +144068,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139573,6 +144091,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139595,6 +144114,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139617,6 +144137,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139639,6 +144160,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139661,6 +144183,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139683,6 +144206,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139705,6 +144229,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139727,6 +144252,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139749,6 +144275,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139771,6 +144298,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139793,6 +144321,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139815,6 +144344,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139837,6 +144367,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139859,6 +144390,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139881,6 +144413,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139903,6 +144436,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139925,6 +144459,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139947,6 +144482,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139969,6 +144505,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -139991,6 +144528,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140013,6 +144551,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140035,6 +144574,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140057,6 +144597,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140079,6 +144620,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140101,6 +144643,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140123,6 +144666,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140145,6 +144689,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140167,6 +144712,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140189,6 +144735,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140211,6 +144758,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140233,6 +144781,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140255,6 +144804,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140277,6 +144827,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140299,6 +144850,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140321,6 +144873,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140343,6 +144896,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140365,6 +144919,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140387,6 +144942,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140409,6 +144965,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140431,6 +144988,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140453,6 +145011,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140475,6 +145034,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140497,6 +145057,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140519,6 +145080,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140541,6 +145103,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140563,6 +145126,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140585,6 +145149,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140607,6 +145172,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140629,6 +145195,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140651,6 +145218,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140673,6 +145241,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140695,6 +145264,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140717,6 +145287,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140739,6 +145310,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140761,6 +145333,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140783,6 +145356,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140805,6 +145379,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140827,6 +145402,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140849,6 +145425,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140871,6 +145448,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140893,6 +145471,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140915,6 +145494,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140937,6 +145517,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140959,6 +145540,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -140981,6 +145563,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141003,6 +145586,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141025,6 +145609,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141047,6 +145632,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141069,6 +145655,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141091,6 +145678,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141113,6 +145701,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141135,6 +145724,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141157,6 +145747,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141179,6 +145770,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141201,6 +145793,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141223,6 +145816,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141245,6 +145839,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141267,6 +145862,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141289,6 +145885,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141311,6 +145908,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141333,6 +145931,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141355,6 +145954,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141377,6 +145977,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141399,6 +146000,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141421,6 +146023,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141443,6 +146046,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141465,6 +146069,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141487,6 +146092,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141509,6 +146115,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141531,6 +146138,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141553,6 +146161,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141575,6 +146184,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141597,6 +146207,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141619,6 +146230,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141641,6 +146253,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141663,6 +146276,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141685,6 +146299,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141707,6 +146322,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141729,6 +146345,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141751,6 +146368,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141773,6 +146391,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141795,6 +146414,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141817,6 +146437,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141839,6 +146460,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141861,6 +146483,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141883,6 +146506,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141905,6 +146529,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141927,6 +146552,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141949,6 +146575,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141971,6 +146598,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -141993,6 +146621,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142015,6 +146644,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142037,6 +146667,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142059,6 +146690,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142081,6 +146713,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142103,6 +146736,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142125,6 +146759,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142147,6 +146782,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142169,6 +146805,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142191,6 +146828,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142213,6 +146851,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142235,6 +146874,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142257,6 +146897,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142279,6 +146920,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142301,6 +146943,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142323,6 +146966,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142345,6 +146989,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142367,6 +147012,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142389,6 +147035,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142411,6 +147058,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142433,6 +147081,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142455,6 +147104,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142477,6 +147127,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142499,6 +147150,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142521,6 +147173,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142543,6 +147196,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142565,6 +147219,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142587,6 +147242,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142609,6 +147265,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142631,6 +147288,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142653,6 +147311,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142675,6 +147334,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142697,6 +147357,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142719,6 +147380,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142741,6 +147403,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142763,6 +147426,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142785,6 +147449,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142807,6 +147472,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142829,6 +147495,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142851,6 +147518,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142873,6 +147541,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142895,6 +147564,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142917,6 +147587,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142939,6 +147610,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142961,6 +147633,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -142983,6 +147656,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143005,6 +147679,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143027,6 +147702,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143049,6 +147725,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143071,6 +147748,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143093,6 +147771,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143115,6 +147794,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143137,6 +147817,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143159,6 +147840,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143181,6 +147863,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143203,6 +147886,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143225,6 +147909,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143247,6 +147932,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143269,6 +147955,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143291,6 +147978,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143313,6 +148001,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143335,6 +148024,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143357,6 +148047,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143379,6 +148070,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143401,6 +148093,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143423,6 +148116,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143445,6 +148139,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143467,6 +148162,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143489,6 +148185,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143511,6 +148208,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143533,6 +148231,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143555,6 +148254,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143577,6 +148277,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143599,6 +148300,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143621,6 +148323,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143643,6 +148346,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143665,6 +148369,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143687,6 +148392,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143709,6 +148415,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143731,6 +148438,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143753,6 +148461,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143775,6 +148484,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143797,6 +148507,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143819,6 +148530,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143841,6 +148553,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143863,6 +148576,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143885,6 +148599,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143907,6 +148622,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143929,6 +148645,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143951,6 +148668,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143973,6 +148691,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -143995,6 +148714,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144017,6 +148737,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144039,6 +148760,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144061,6 +148783,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144083,6 +148806,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144105,6 +148829,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144127,6 +148852,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144149,6 +148875,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144171,6 +148898,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144193,6 +148921,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144215,6 +148944,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144237,6 +148967,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144259,6 +148990,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144281,6 +149013,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144303,6 +149036,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144325,6 +149059,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144347,6 +149082,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144369,6 +149105,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144391,6 +149128,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144413,6 +149151,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144435,6 +149174,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144457,6 +149197,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144479,6 +149220,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144501,6 +149243,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144523,6 +149266,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144545,6 +149289,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144567,6 +149312,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144589,6 +149335,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144611,6 +149358,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144633,6 +149381,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144655,6 +149404,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144677,6 +149427,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144699,6 +149450,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144721,6 +149473,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144743,6 +149496,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144765,6 +149519,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144787,6 +149542,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144809,6 +149565,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144831,6 +149588,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144853,6 +149611,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144875,6 +149634,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144897,6 +149657,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144919,6 +149680,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144941,6 +149703,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144963,6 +149726,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -144985,6 +149749,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145007,6 +149772,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145029,6 +149795,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145051,6 +149818,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145073,6 +149841,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145095,6 +149864,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145117,6 +149887,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145139,6 +149910,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145161,6 +149933,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145183,6 +149956,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145205,6 +149979,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145227,6 +150002,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145249,6 +150025,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145271,6 +150048,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145293,6 +150071,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145315,6 +150094,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145337,6 +150117,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145359,6 +150140,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145381,6 +150163,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145403,6 +150186,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145425,6 +150209,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145447,6 +150232,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145469,6 +150255,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145491,6 +150278,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145513,6 +150301,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145535,6 +150324,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145557,6 +150347,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145579,6 +150370,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145601,6 +150393,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145623,6 +150416,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145645,6 +150439,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145667,6 +150462,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145689,6 +150485,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145711,6 +150508,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145733,6 +150531,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145755,6 +150554,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145777,6 +150577,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145799,6 +150600,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145821,6 +150623,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145843,6 +150646,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145865,6 +150669,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145887,6 +150692,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145909,6 +150715,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145931,6 +150738,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145953,6 +150761,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145975,6 +150784,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -145997,6 +150807,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146019,6 +150830,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146041,6 +150853,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146063,6 +150876,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146085,6 +150899,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146107,6 +150922,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146129,6 +150945,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146151,6 +150968,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146173,6 +150991,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146195,6 +151014,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146217,6 +151037,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146239,6 +151060,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146261,6 +151083,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146283,6 +151106,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146305,6 +151129,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146327,6 +151152,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146349,6 +151175,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146371,6 +151198,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146393,6 +151221,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146415,6 +151244,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146437,6 +151267,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146459,6 +151290,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146481,6 +151313,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146503,6 +151336,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146525,6 +151359,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146547,6 +151382,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146569,6 +151405,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146591,6 +151428,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146613,6 +151451,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146635,6 +151474,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146657,6 +151497,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146679,6 +151520,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146701,6 +151543,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146723,6 +151566,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146745,6 +151589,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146767,6 +151612,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146789,6 +151635,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146811,6 +151658,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146833,6 +151681,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146855,6 +151704,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146877,6 +151727,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146899,6 +151750,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146921,6 +151773,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146943,6 +151796,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146965,6 +151819,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -146987,6 +151842,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147009,6 +151865,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147031,6 +151888,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147053,6 +151911,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147075,6 +151934,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147097,6 +151957,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147119,6 +151980,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147141,6 +152003,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147163,6 +152026,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147185,6 +152049,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147207,6 +152072,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147229,6 +152095,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147251,6 +152118,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147273,6 +152141,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147295,6 +152164,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147317,6 +152187,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147339,6 +152210,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147361,6 +152233,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147383,6 +152256,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147405,6 +152279,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147427,6 +152302,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147449,6 +152325,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147471,6 +152348,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147493,6 +152371,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147515,6 +152394,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147537,6 +152417,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147559,6 +152440,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147581,6 +152463,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147603,6 +152486,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147625,6 +152509,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147647,6 +152532,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147669,6 +152555,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147691,6 +152578,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147713,6 +152601,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147735,6 +152624,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147757,6 +152647,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147779,6 +152670,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147801,6 +152693,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147823,6 +152716,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147845,6 +152739,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147867,6 +152762,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147889,6 +152785,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147911,6 +152808,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147933,6 +152831,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147955,6 +152854,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147977,6 +152877,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -147999,6 +152900,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148021,6 +152923,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148043,6 +152946,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148065,6 +152969,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148087,6 +152992,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148109,6 +153015,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148131,6 +153038,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148153,6 +153061,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148175,6 +153084,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148197,6 +153107,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148219,6 +153130,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148241,6 +153153,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148263,6 +153176,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148285,6 +153199,7 @@
"language": "c",
"name": "ssl_server_fuzzer_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148307,6 +153222,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148329,6 +153245,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148351,6 +153268,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148373,6 +153291,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148395,6 +153314,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148417,6 +153337,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148439,6 +153360,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148461,6 +153383,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148483,6 +153406,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148505,6 +153429,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148527,6 +153452,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148549,6 +153475,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148571,6 +153498,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148593,6 +153521,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148615,6 +153544,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148637,6 +153567,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148659,6 +153590,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148681,6 +153613,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148703,6 +153636,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148725,6 +153659,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148747,6 +153682,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148769,6 +153705,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148791,6 +153728,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148813,6 +153751,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148835,6 +153774,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148857,6 +153797,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148879,6 +153820,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148901,6 +153843,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148923,6 +153866,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148945,6 +153889,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148967,6 +153912,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -148989,6 +153935,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149011,6 +153958,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149033,6 +153981,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149055,6 +154004,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149077,6 +154027,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149099,6 +154050,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149121,6 +154073,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149143,6 +154096,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149165,6 +154119,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149187,6 +154142,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149209,6 +154165,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149231,6 +154188,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149253,6 +154211,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149275,6 +154234,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149297,6 +154257,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149319,6 +154280,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149341,6 +154303,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149363,6 +154326,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149385,6 +154349,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149407,6 +154372,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149429,6 +154395,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149451,6 +154418,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149473,6 +154441,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149495,6 +154464,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149517,6 +154487,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149539,6 +154510,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149561,6 +154533,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149583,6 +154556,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149605,6 +154579,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149627,6 +154602,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149649,6 +154625,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
@@ -149671,6 +154648,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
+ "mac",
"linux"
],
"uses_polling": false
diff --git a/tools/run_tests/helper_scripts/run_ruby_end2end_tests.sh b/tools/run_tests/helper_scripts/run_ruby_end2end_tests.sh
new file mode 100755
index 0000000000..d7da6364d8
--- /dev/null
+++ b/tools/run_tests/helper_scripts/run_ruby_end2end_tests.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+# change to grpc repo root
+cd $(dirname $0)/../../..
+
+EXIT_CODE=0
+ruby src/ruby/end2end/sig_handling_driver.rb || EXIT_CODE=1
+ruby src/ruby/end2end/channel_state_driver.rb || EXIT_CODE=1
+ruby src/ruby/end2end/channel_closing_driver.rb || EXIT_CODE=1
+ruby src/ruby/end2end/sig_int_during_channel_watch_driver.rb || EXIT_CODE=1
+exit $EXIT_CODE
diff --git a/tools/run_tests/interop/interop_html_report.template b/tools/run_tests/interop/interop_html_report.template
index 88ecd4e4db..6d9de5c62e 100644
--- a/tools/run_tests/interop/interop_html_report.template
+++ b/tools/run_tests/interop/interop_html_report.template
@@ -106,19 +106,19 @@
% endfor
% endif
-% if http2_badserver_cases:
- <h2>HTTP/2 Bad Server Tests</h2>
+% if http2_server_cases:
+ <h2>HTTP/2 Server Tests</h2>
## Each column header is the client language.
<table style="width:100%" border="1">
<tr bgcolor="#00BFFF">
<th>Client languages &#9658;<br/>Test Cases &#9660;</th>
- % for client_lang in client_langs_http2_badserver_cases:
+ % for client_lang in client_langs:
<th>${client_lang}</th>
% endfor
</tr>
- % for test_case in http2_badserver_cases:
+ % for test_case in http2_server_cases:
<tr><td><b>${test_case}</b></td>
- % for client_lang in client_langs_http2_badserver_cases:
+ % for client_lang in client_langs:
<%
shortname = 'cloud_to_cloud:%s:http2_server:%s' % (client_lang,
test_case)
diff --git a/tools/run_tests/python_utils/dockerjob.py b/tools/run_tests/python_utils/dockerjob.py
index 0869c5cee9..709fc121a9 100755
--- a/tools/run_tests/python_utils/dockerjob.py
+++ b/tools/run_tests/python_utils/dockerjob.py
@@ -70,6 +70,23 @@ def docker_mapped_port(cid, port, timeout_seconds=15):
(port, cid))
+def wait_for_healthy(cid, shortname, timeout_seconds):
+ """Wait timeout_seconds for the container to become healthy"""
+ started = time.time()
+ while time.time() - started < timeout_seconds:
+ try:
+ output = subprocess.check_output(
+ ['docker', 'inspect', '--format="{{.State.Health.Status}}"', cid],
+ stderr=_DEVNULL)
+ if output.strip('\n') == 'healthy':
+ return
+ except subprocess.CalledProcessError as e:
+ pass
+ time.sleep(1)
+ raise Exception('Timed out waiting for %s (%s) to pass health check' %
+ (shortname, cid))
+
+
def finish_jobs(jobs):
"""Kills given docker containers and waits for corresponding jobs to finish"""
for job in jobs:
@@ -113,6 +130,9 @@ class DockerJob:
def mapped_port(self, port):
return docker_mapped_port(self._container_name, port)
+ def wait_for_healthy(self, timeout_seconds):
+ wait_for_healthy(self._container_name, self._spec.shortname, timeout_seconds)
+
def kill(self, suppress_failure=False):
"""Sends kill signal to the container."""
if suppress_failure:
diff --git a/tools/run_tests/python_utils/report_utils.py b/tools/run_tests/python_utils/report_utils.py
index 131772f55f..3b2b4f8712 100644
--- a/tools/run_tests/python_utils/report_utils.py
+++ b/tools/run_tests/python_utils/report_utils.py
@@ -80,10 +80,9 @@ def render_junit_xml_report(resultset, xml_report, suite_package='grpc',
tree = ET.ElementTree(root)
tree.write(xml_report, encoding='UTF-8')
-
def render_interop_html_report(
client_langs, server_langs, test_cases, auth_test_cases, http2_cases,
- http2_badserver_cases, client_langs_http2_badserver_cases, resultset,
+ http2_server_cases, resultset,
num_failures, cloud_to_prod, prod_servers, http2_interop):
"""Generate HTML report for interop tests."""
template_file = 'tools/run_tests/interop/interop_html_report.template'
@@ -99,9 +98,7 @@ def render_interop_html_report(
sorted_test_cases = sorted(test_cases)
sorted_auth_test_cases = sorted(auth_test_cases)
sorted_http2_cases = sorted(http2_cases)
- sorted_http2_badserver_cases = sorted(http2_badserver_cases)
- sorted_client_langs_http2_badserver_cases = sorted(
- client_langs_http2_badserver_cases)
+ sorted_http2_server_cases = sorted(http2_server_cases)
sorted_client_langs = sorted(client_langs)
sorted_server_langs = sorted(server_langs)
sorted_prod_servers = sorted(prod_servers)
@@ -111,9 +108,7 @@ def render_interop_html_report(
'test_cases': sorted_test_cases,
'auth_test_cases': sorted_auth_test_cases,
'http2_cases': sorted_http2_cases,
- 'http2_badserver_cases': sorted_http2_badserver_cases,
- 'client_langs_http2_badserver_cases': (
- sorted_client_langs_http2_badserver_cases),
+ 'http2_server_cases': sorted_http2_server_cases,
'resultset': resultset,
'num_failures': num_failures,
'cloud_to_prod': cloud_to_prod,
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 29d5a9aaa0..2d7f4a625d 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -45,6 +45,7 @@ import tempfile
import time
import uuid
import six
+import traceback
import python_utils.dockerjob as dockerjob
import python_utils.jobset as jobset
@@ -73,6 +74,10 @@ _SKIP_ADVANCED = ['status_code_and_message',
_TEST_TIMEOUT = 3*60
+# disable this test on core-based languages,
+# see https://github.com/grpc/grpc/issues/9779
+_SKIP_DATA_FRAME_PADDING = ['data_frame_padding']
+
class CXXLanguage:
def __init__(self):
@@ -97,7 +102,7 @@ class CXXLanguage:
return {}
def unimplemented_test_cases(self):
- return []
+ return _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return []
@@ -126,7 +131,7 @@ class CSharpLanguage:
return {}
def unimplemented_test_cases(self):
- return _SKIP_SERVER_COMPRESSION
+ return _SKIP_SERVER_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -155,7 +160,7 @@ class CSharpCoreCLRLanguage:
return {}
def unimplemented_test_cases(self):
- return _SKIP_SERVER_COMPRESSION
+ return _SKIP_SERVER_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -250,7 +255,7 @@ class Http2Server:
return {}
def unimplemented_test_cases(self):
- return _TEST_CASES
+ return _TEST_CASES + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _TEST_CASES
@@ -281,7 +286,7 @@ class Http2Client:
return _TEST_CASES
def unimplemented_test_cases_server(self):
- return []
+ return _TEST_CASES
def __str__(self):
return 'http2'
@@ -308,7 +313,7 @@ class NodeLanguage:
return {}
def unimplemented_test_cases(self):
- return _SKIP_COMPRESSION
+ return _SKIP_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -333,7 +338,7 @@ class PHPLanguage:
return {}
def unimplemented_test_cases(self):
- return _SKIP_COMPRESSION
+ return _SKIP_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return []
@@ -358,7 +363,7 @@ class PHP7Language:
return {}
def unimplemented_test_cases(self):
- return _SKIP_COMPRESSION
+ return _SKIP_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return []
@@ -389,7 +394,7 @@ class RubyLanguage:
return {}
def unimplemented_test_cases(self):
- return _SKIP_SERVER_COMPRESSION
+ return _SKIP_SERVER_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -437,7 +442,7 @@ class PythonLanguage:
'PYTHONPATH': '{}/src/python/gens'.format(DOCKER_WORKDIR_ROOT)}
def unimplemented_test_cases(self):
- return _SKIP_COMPRESSION
+ return _SKIP_COMPRESSION + _SKIP_DATA_FRAME_PADDING
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -476,10 +481,14 @@ _AUTH_TEST_CASES = ['compute_engine_creds', 'jwt_token_creds',
_HTTP2_TEST_CASES = ['tls', 'framing']
-_HTTP2_BADSERVER_TEST_CASES = ['rst_after_header', 'rst_after_data', 'rst_during_data',
- 'goaway', 'ping', 'max_streams']
+_HTTP2_SERVER_TEST_CASES = ['rst_after_header', 'rst_after_data', 'rst_during_data',
+ 'goaway', 'ping', 'max_streams', 'data_frame_padding', 'no_df_padding_sanity_test']
-_LANGUAGES_FOR_HTTP2_BADSERVER_TESTS = ['java', 'go', 'python', 'c++']
+_GRPC_CLIENT_TEST_CASES_FOR_HTTP2_SERVER_TEST_CASES = { 'data_frame_padding': 'large_unary', 'no_df_padding_sanity_test': 'large_unary' }
+
+_HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS = _GRPC_CLIENT_TEST_CASES_FOR_HTTP2_SERVER_TEST_CASES.keys()
+
+_LANGUAGES_WITH_HTTP2_CLIENTS_FOR_HTTP2_SERVER_TEST_CASES = ['java', 'go', 'python', 'c++']
DOCKER_WORKDIR_ROOT = '/var/local/git/grpc'
@@ -631,20 +640,30 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
'--use_tls=%s' % ('false' if insecure else 'true'),
'--use_test_ca=true',
]
+
+ client_test_case = test_case
+ if test_case in _HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS:
+ client_test_case = _GRPC_CLIENT_TEST_CASES_FOR_HTTP2_SERVER_TEST_CASES[test_case]
+ if client_test_case in language.unimplemented_test_cases():
+ print('asking client %s to run unimplemented test case %s' % (repr(language), client_test_case))
+ sys.exit(1)
+
common_options = [
- '--test_case=%s' % test_case,
+ '--test_case=%s' % client_test_case,
'--server_host=%s' % server_host,
+ '--server_port=%s' % server_port,
]
- if test_case in _HTTP2_BADSERVER_TEST_CASES:
- # We are running the http2_badserver_interop test. Adjust command line accordingly.
- offset = sorted(_HTTP2_BADSERVER_TEST_CASES).index(test_case)
- client_options = common_options + ['--server_port=%s' %
- (int(server_port)+offset)]
- cmdline = bash_cmdline(language.client_cmd_http2interop(client_options))
- cwd = language.http2_cwd
+
+ if test_case in _HTTP2_SERVER_TEST_CASES:
+ if test_case in _HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS:
+ client_options = interop_only_options + common_options
+ cmdline = bash_cmdline(language.client_cmd(client_options))
+ cwd = language.client_cwd
+ else:
+ cmdline = bash_cmdline(language.client_cmd_http2interop(common_options))
+ cwd = language.http2_cwd
else:
- client_options = interop_only_options + common_options + ['--server_port=%s' % server_port]
- cmdline = bash_cmdline(language.client_cmd(client_options))
+ cmdline = bash_cmdline(language.client_cmd(common_options+interop_only_options))
cwd = language.client_cwd
environ = language.global_env()
@@ -682,30 +701,40 @@ def server_jobspec(language, docker_image, insecure=False, manual_cmd_log=None):
language.server_cmd(['--port=%s' % _DEFAULT_SERVER_PORT,
'--use_tls=%s' % ('false' if insecure else 'true')]))
environ = language.global_env()
+ docker_args = ['--name=%s' % container_name]
if language.safename == 'http2':
# we are running the http2 interop server. Open next N ports beginning
# with the server port. These ports are used for http2 interop test
- # (one test case per port). We also attach the docker container running
- # the server to local network, so we don't have to mess with port mapping
- port_args = [
- '-p', str(_DEFAULT_SERVER_PORT+0),
- '-p', str(_DEFAULT_SERVER_PORT+1),
- '-p', str(_DEFAULT_SERVER_PORT+2),
- '-p', str(_DEFAULT_SERVER_PORT+3),
- '-p', str(_DEFAULT_SERVER_PORT+4),
- '-p', str(_DEFAULT_SERVER_PORT+5),
- '-p', str(_DEFAULT_SERVER_PORT+6),
- '--net=host',
+ # (one test case per port).
+ docker_args += list(
+ itertools.chain.from_iterable(('-p', str(_DEFAULT_SERVER_PORT + i))
+ for i in range(
+ len(_HTTP2_SERVER_TEST_CASES))))
+ # Enable docker's healthcheck mechanism.
+ # This runs a Python script inside the container every second. The script
+ # pings the http2 server to verify it is ready. The 'health-retries' flag
+ # specifies the number of consecutive failures before docker will report
+ # the container's status as 'unhealthy'. Prior to the first 'health_retries'
+ # failures or the first success, the status will be 'starting'. 'docker ps'
+ # or 'docker inspect' can be used to see the health of the container on the
+ # command line.
+ docker_args += [
+ '--health-cmd=python test/http2_test/http2_server_health_check.py '
+ '--server_host=%s --server_port=%d'
+ % ('localhost', _DEFAULT_SERVER_PORT),
+ '--health-interval=1s',
+ '--health-retries=5',
+ '--health-timeout=10s',
]
+
else:
- port_args = ['-p', str(_DEFAULT_SERVER_PORT)]
+ docker_args += ['-p', str(_DEFAULT_SERVER_PORT)]
docker_cmdline = docker_run_cmdline(cmdline,
image=docker_image,
cwd=language.server_cwd,
environ=environ,
- docker_args=port_args +
- ['--name=%s' % container_name])
+ docker_args=docker_args)
if manual_cmd_log is not None:
manual_cmd_log.append(manual_cmdline(docker_cmdline))
server_job = jobset.JobSpec(
@@ -850,11 +879,11 @@ argp.add_argument('--http2_interop',
action='store_const',
const=True,
help='Enable HTTP/2 client edge case testing. (Bad client, good server)')
-argp.add_argument('--http2_badserver_interop',
+argp.add_argument('--http2_server_interop',
default=False,
action='store_const',
const=True,
- help='Enable HTTP/2 server edge case testing. (Good client, bad server)')
+ help='Enable HTTP/2 server edge case testing. (Includes positive and negative tests')
argp.add_argument('--insecure',
default=False,
action='store_const',
@@ -889,25 +918,26 @@ languages = set(_LANGUAGES[l]
six.iterkeys(_LANGUAGES) if x == 'all' else [x]
for x in args.language))
-languages_http2_badserver_interop = set()
-if args.http2_badserver_interop:
- languages_http2_badserver_interop = set(
- _LANGUAGES[l] for l in _LANGUAGES_FOR_HTTP2_BADSERVER_TESTS)
+languages_http2_clients_for_http2_server_interop = set()
+if args.http2_server_interop:
+ languages_http2_clients_for_http2_server_interop = set(
+ _LANGUAGES[l] for l in _LANGUAGES_WITH_HTTP2_CLIENTS_FOR_HTTP2_SERVER_TEST_CASES
+ if 'all' in args.language or l in args.language)
http2Interop = Http2Client() if args.http2_interop else None
-http2InteropServer = Http2Server() if args.http2_badserver_interop else None
+http2InteropServer = Http2Server() if args.http2_server_interop else None
docker_images={}
if args.use_docker:
# languages for which to build docker images
languages_to_build = set(
_LANGUAGES[k] for k in set([str(l) for l in languages] + [s for s in servers]))
- languages_to_build = languages_to_build | languages_http2_badserver_interop
+ languages_to_build = languages_to_build | languages_http2_clients_for_http2_server_interop
if args.http2_interop:
languages_to_build.add(http2Interop)
- if args.http2_badserver_interop:
+ if args.http2_server_interop:
languages_to_build.add(http2InteropServer)
build_jobs = []
@@ -949,14 +979,15 @@ try:
# don't run the server, set server port to a placeholder value
server_addresses[lang] = ('localhost', '${SERVER_PORT}')
- if args.http2_badserver_interop:
+ http2_server_job = None
+ if args.http2_server_interop:
# launch a HTTP2 server emulator that creates edge cases
lang = str(http2InteropServer)
spec = server_jobspec(http2InteropServer, docker_images.get(lang),
manual_cmd_log=server_manual_cmd_log)
if not args.manual_run:
- job = dockerjob.DockerJob(spec)
- server_jobs[lang] = job
+ http2_server_job = dockerjob.DockerJob(spec)
+ server_jobs[lang] = http2_server_job
else:
# don't run the server, set server port to a placeholder value
server_addresses[lang] = ('localhost', '${SERVER_PORT}')
@@ -1040,17 +1071,48 @@ try:
manual_cmd_log=client_manual_cmd_log)
jobs.append(test_job)
- if args.http2_badserver_interop:
- for language in languages_http2_badserver_interop:
- for test_case in _HTTP2_BADSERVER_TEST_CASES:
+ if args.http2_server_interop:
+ if not args.manual_run:
+ http2_server_job.wait_for_healthy(timeout_seconds=600)
+ for language in languages_http2_clients_for_http2_server_interop:
+ for test_case in set(_HTTP2_SERVER_TEST_CASES) - set(_HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS):
+ offset = sorted(_HTTP2_SERVER_TEST_CASES).index(test_case)
+ server_port = _DEFAULT_SERVER_PORT+offset
+ if not args.manual_run:
+ server_port = http2_server_job.mapped_port(server_port)
test_job = cloud_to_cloud_jobspec(language,
test_case,
str(http2InteropServer),
'localhost',
- _DEFAULT_SERVER_PORT,
+ server_port,
docker_image=docker_images.get(str(language)),
manual_cmd_log=client_manual_cmd_log)
jobs.append(test_job)
+ for language in languages:
+ # HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS is a subset of
+ # HTTP_SERVER_TEST_CASES, in which clients use their gRPC interop clients rather
+ # than specialized http2 clients, reusing existing test implementations.
+ # For example, in the "data_frame_padding" test, use language's gRPC
+ # interop clients and make them think that theyre running "large_unary"
+ # test case. This avoids implementing a new test case in each language.
+ for test_case in _HTTP2_SERVER_TEST_CASES_THAT_USE_GRPC_CLIENTS:
+ if test_case not in language.unimplemented_test_cases():
+ offset = sorted(_HTTP2_SERVER_TEST_CASES).index(test_case)
+ server_port = _DEFAULT_SERVER_PORT+offset
+ if not args.manual_run:
+ server_port = http2_server_job.mapped_port(server_port)
+ if not args.insecure:
+ print(('Creating grpc cient to http2 server test case with insecure connection, even though'
+ ' args.insecure is False. Http2 test server only supports insecure connections.'))
+ test_job = cloud_to_cloud_jobspec(language,
+ test_case,
+ str(http2InteropServer),
+ 'localhost',
+ server_port,
+ docker_image=docker_images.get(str(language)),
+ insecure=True,
+ manual_cmd_log=client_manual_cmd_log)
+ jobs.append(test_job)
if not jobs:
print('No jobs to run.')
@@ -1078,16 +1140,17 @@ try:
if "http2" in name:
job[0].http2results = aggregate_http2_results(job[0].message)
- http2_badserver_test_cases = (
- _HTTP2_BADSERVER_TEST_CASES if args.http2_badserver_interop else [])
+ http2_server_test_cases = (
+ _HTTP2_SERVER_TEST_CASES if args.http2_server_interop else [])
report_utils.render_interop_html_report(
set([str(l) for l in languages]), servers, _TEST_CASES, _AUTH_TEST_CASES,
- _HTTP2_TEST_CASES, http2_badserver_test_cases,
- _LANGUAGES_FOR_HTTP2_BADSERVER_TESTS, resultset, num_failures,
+ _HTTP2_TEST_CASES, http2_server_test_cases, resultset, num_failures,
args.cloud_to_prod_auth or args.cloud_to_prod, args.prod_servers,
args.http2_interop)
-
+except Exception as e:
+ print('exception occurred:')
+ traceback.print_exc(file=sys.stdout)
finally:
# Check if servers are still running.
for server, job in server_jobs.items():
diff --git a/tools/run_tests/run_microbenchmark.py b/tools/run_tests/run_microbenchmark.py
index 57b2636e56..19cf16ed49 100755
--- a/tools/run_tests/run_microbenchmark.py
+++ b/tools/run_tests/run_microbenchmark.py
@@ -38,6 +38,19 @@ import argparse
import python_utils.jobset as jobset
import python_utils.start_port_server as start_port_server
+_AVAILABLE_BENCHMARK_TESTS = ['bm_fullstack_unary_ping_pong',
+ 'bm_fullstack_streaming_ping_pong',
+ 'bm_fullstack_streaming_pump',
+ 'bm_closure',
+ 'bm_cq',
+ 'bm_call_create',
+ 'bm_error',
+ 'bm_chttp2_hpack',
+ 'bm_chttp2_transport',
+ 'bm_pollset',
+ 'bm_metadata',
+ 'bm_fullstack_trickle']
+
flamegraph_dir = os.path.join(os.path.expanduser('~'), 'FlameGraph')
os.chdir(os.path.join(os.path.dirname(sys.argv[0]), '../..'))
@@ -201,17 +214,8 @@ argp.add_argument('-c', '--collect',
default=sorted(collectors.keys()),
help='Which collectors should be run against each benchmark')
argp.add_argument('-b', '--benchmarks',
- default=['bm_fullstack_unary_ping_pong',
- 'bm_fullstack_streaming_ping_pong',
- 'bm_fullstack_streaming_pump',
- 'bm_closure',
- 'bm_cq',
- 'bm_call_create',
- 'bm_error',
- 'bm_chttp2_hpack',
- 'bm_metadata',
- 'bm_fullstack_trickle',
- ],
+ choices=_AVAILABLE_BENCHMARK_TESTS,
+ default=_AVAILABLE_BENCHMARK_TESTS,
nargs='+',
type=str,
help='Which microbenchmarks should be run')
@@ -235,6 +239,7 @@ try:
for bm_name in args.benchmarks:
collectors[collect](bm_name, args)
if args.diff_perf:
+ git_comment = 'Performance differences between this PR and %s\\n' % args.diff_perf
if 'summary' not in args.collect:
for bm_name in args.benchmarks:
run_summary(bm_name, 'opt', bm_name)
@@ -262,7 +267,14 @@ try:
if diff:
heading('Performance diff: %s' % bm_name)
text(diff)
+ git_comment += '```\\nPerformance diff: %s\\n%s\\n```\\n' % (bm_name, diff.replace('\n', '\\n'))
finally:
+ if args.diff_perf:
+ subprocess.call(['tools/jenkins/comment_on_pr.sh "%s"' % git_comment.replace('`', '\`')],
+ stdout=subprocess.PIPE,
+ shell=True)
+ if not os.path.exists('reports'):
+ os.makedirs('reports')
index_html += "</body>\n</html>\n"
with open('reports/index.html', 'w') as f:
f.write(index_html)
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index cba91a9a63..fa21743f28 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -250,6 +250,9 @@ class CLanguage(object):
_ROOT + '/src/core/lib/tsi/test_creds/ca.pem',
'GRPC_POLL_STRATEGY': polling_strategy,
'GRPC_VERBOSITY': 'DEBUG'}
+ resolver = os.environ.get('GRPC_DNS_RESOLVER', None);
+ if resolver:
+ env['GRPC_DNS_RESOLVER'] = resolver
shortname_ext = '' if polling_strategy=='all' else ' GRPC_POLL_STRATEGY=%s' % polling_strategy
timeout_scaling = 1
if polling_strategy == 'poll-cv':
@@ -693,9 +696,13 @@ class RubyLanguage(object):
_check_compiler(self.args.compiler, ['default'])
def test_specs(self):
- return [self.config.job_spec(['tools/run_tests/helper_scripts/run_ruby.sh'],
- timeout_seconds=10*60,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ tests = [self.config.job_spec(['tools/run_tests/helper_scripts/run_ruby.sh'],
+ timeout_seconds=10*60,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ tests.append(self.config.job_spec(['tools/run_tests/helper_scripts/run_ruby_end2end_tests.sh'],
+ timeout_seconds=10*60,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS))
+ return tests
def pre_build_steps(self):
return [['tools/run_tests/helper_scripts/pre_build_ruby.sh']]
diff --git a/tools/run_tests/run_tests_matrix.py b/tools/run_tests/run_tests_matrix.py
index b9bf6e5037..6c1d4bd15d 100755
--- a/tools/run_tests/run_tests_matrix.py
+++ b/tools/run_tests/run_tests_matrix.py
@@ -55,7 +55,8 @@ _DEFAULT_INNER_JOBS = 2
_REPORT_SUFFIX = 'sponge_log.xml'
-def _docker_jobspec(name, runtests_args=[], inner_jobs=_DEFAULT_INNER_JOBS):
+def _docker_jobspec(name, runtests_args=[], runtests_envs={},
+ inner_jobs=_DEFAULT_INNER_JOBS):
"""Run a single instance of run_tests.py in a docker container"""
test_job = jobset.JobSpec(
cmdline=['python', 'tools/run_tests/run_tests.py',
@@ -64,16 +65,19 @@ def _docker_jobspec(name, runtests_args=[], inner_jobs=_DEFAULT_INNER_JOBS):
'-j', str(inner_jobs),
'-x', 'report_%s_%s' % (name, _REPORT_SUFFIX),
'--report_suite_name', '%s' % name] + runtests_args,
+ environ=runtests_envs,
shortname='run_tests_%s' % name,
timeout_seconds=_RUNTESTS_TIMEOUT)
return test_job
-def _workspace_jobspec(name, runtests_args=[], workspace_name=None, inner_jobs=_DEFAULT_INNER_JOBS):
+def _workspace_jobspec(name, runtests_args=[], workspace_name=None,
+ runtests_envs={}, inner_jobs=_DEFAULT_INNER_JOBS):
"""Run a single instance of run_tests.py in a separate workspace"""
if not workspace_name:
workspace_name = 'workspace_%s' % name
env = {'WORKSPACE_NAME': workspace_name}
+ env.update(runtests_envs)
test_job = jobset.JobSpec(
cmdline=['bash',
'tools/run_tests/helper_scripts/run_tests_in_workspace.sh',
@@ -89,7 +93,7 @@ def _workspace_jobspec(name, runtests_args=[], workspace_name=None, inner_jobs=_
def _generate_jobs(languages, configs, platforms, iomgr_platform = 'native',
arch=None, compiler=None,
- labels=[], extra_args=[],
+ labels=[], extra_args=[], extra_envs={},
inner_jobs=_DEFAULT_INNER_JOBS):
result = []
for language in languages:
@@ -103,11 +107,16 @@ def _generate_jobs(languages, configs, platforms, iomgr_platform = 'native',
name += '_%s_%s' % (arch, compiler)
runtests_args += ['--arch', arch,
'--compiler', compiler]
+ for extra_env in extra_envs:
+ name += '_%s_%s' % (extra_env, extra_envs[extra_env])
+
runtests_args += extra_args
if platform == 'linux':
- job = _docker_jobspec(name=name, runtests_args=runtests_args, inner_jobs=inner_jobs)
+ job = _docker_jobspec(name=name, runtests_args=runtests_args,
+ runtests_envs=extra_envs, inner_jobs=inner_jobs)
else:
- job = _workspace_jobspec(name=name, runtests_args=runtests_args, inner_jobs=inner_jobs)
+ job = _workspace_jobspec(name=name, runtests_args=runtests_args,
+ runtests_envs=extra_envs, inner_jobs=inner_jobs)
job.labels = [platform, config, language, iomgr_platform] + labels
result.append(job)
@@ -212,6 +221,21 @@ def _create_portability_test_jobs(extra_args=[], inner_jobs=_DEFAULT_INNER_JOBS)
extra_args=extra_args,
inner_jobs=inner_jobs)
+ # C and C++ with the c-ares DNS resolver on Linux
+ test_jobs += _generate_jobs(languages=['c', 'c++'],
+ configs=['dbg'], platforms=['linux'],
+ labels=['portability'],
+ extra_args=extra_args,
+ extra_envs={'GRPC_DNS_RESOLVER': 'ares'})
+
+ # TODO(zyc): Turn on this test after adding c-ares support on windows.
+ # C with the c-ares DNS resolver on Windonws
+ # test_jobs += _generate_jobs(languages=['c'],
+ # configs=['dbg'], platforms=['windows'],
+ # labels=['portability'],
+ # extra_args=extra_args,
+ # extra_envs={'GRPC_DNS_RESOLVER': 'ares'})
+
# cmake build for C and C++
# TODO(jtattermusch): some of the tests are failing, so we force --build_only
# to make sure it's buildable at least.
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 3c5ba16b93..38dfe277ae 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -49,6 +49,7 @@ cat << EOF | awk '{ print $1 }' | sort > $want_submodules
593e917c176b5bc5aafa57bf9f6030d749d91cd5 third_party/protobuf (v3.1.0-alpha-1-326-g593e917)
bcad91771b7f0bff28a1cac1981d7ef2b9bcef3c third_party/thrift (bcad917)
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
+ 7691f773af79bf75a62d1863fd0f13ebf9dc51b1 third_party/cares/cares (1.12.0)
EOF
diff -u $submodules $want_submodules
diff --git a/tools/tsan_suppressions.txt b/tools/tsan_suppressions.txt
index 765fa098f9..e0c7907228 100644
--- a/tools/tsan_suppressions.txt
+++ b/tools/tsan_suppressions.txt
@@ -6,6 +6,8 @@ race:cleanse_ctr
race:ssleay_rand_add
race:ssleay_rand_bytes
race:__sleep_for
-# protobuf has an idempotent write race in ByteSize
+# protobuf has an idempotent write race in ByteSize/GetCachedSize
# https://github.com/google/protobuf/issues/2169
race:ByteSize
+race:ByteSizeLong
+race:GetCachedSize
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index c5bbaed60c..c8fcacf75b 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -1395,18 +1395,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server_test", "vcxproj\test
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "set_initial_connect_string_test", "vcxproj\test\set_initial_connect_string_test\set_initial_connect_string_test.vcxproj", "{4A48E5A5-2E69-ED6D-063C-C297180A54D0}"
- ProjectSection(myProperties) = preProject
- lib = "False"
- EndProjectSection
- ProjectSection(ProjectDependencies) = postProject
- {E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
- {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple_request_bad_client_test", "vcxproj\test\simple_request_bad_client_test\simple_request_bad_client_test.vcxproj", "{63422647-93FA-46BB-4827-95473D9D503C}"
ProjectSection(myProperties) = preProject
lib = "False"
@@ -3749,22 +3737,6 @@ Global
{E765AC67-E4E5-C350-59A1-C6CA2BD9F64B}.Release-DLL|Win32.Build.0 = Release|Win32
{E765AC67-E4E5-C350-59A1-C6CA2BD9F64B}.Release-DLL|x64.ActiveCfg = Release|x64
{E765AC67-E4E5-C350-59A1-C6CA2BD9F64B}.Release-DLL|x64.Build.0 = Release|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug|Win32.ActiveCfg = Debug|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug|x64.ActiveCfg = Debug|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release|Win32.ActiveCfg = Release|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release|x64.ActiveCfg = Release|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug|Win32.Build.0 = Debug|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug|x64.Build.0 = Debug|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release|Win32.Build.0 = Release|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release|x64.Build.0 = Release|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug-DLL|Win32.Build.0 = Debug|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug-DLL|x64.ActiveCfg = Debug|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Debug-DLL|x64.Build.0 = Debug|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release-DLL|Win32.ActiveCfg = Release|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release-DLL|Win32.Build.0 = Release|Win32
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release-DLL|x64.ActiveCfg = Release|x64
- {4A48E5A5-2E69-ED6D-063C-C297180A54D0}.Release-DLL|x64.Build.0 = Release|x64
{63422647-93FA-46BB-4827-95473D9D503C}.Debug|Win32.ActiveCfg = Debug|Win32
{63422647-93FA-46BB-4827-95473D9D503C}.Debug|x64.ActiveCfg = Debug|x64
{63422647-93FA-46BB-4827-95473D9D503C}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/grpc.sln b/vsprojects/grpc.sln
index 591d3b5edb..87970e90f1 100644
--- a/vsprojects/grpc.sln
+++ b/vsprojects/grpc.sln
@@ -3,6 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ares", "vcxproj\.\ares\ares.vcxproj", "{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}"
+ ProjectSection(myProperties) = preProject
+ lib = "True"
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_hpack_tables", "vcxproj\.\gen_hpack_tables\gen_hpack_tables.vcxproj", "{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}"
ProjectSection(myProperties) = preProject
lib = "False"
@@ -160,6 +165,22 @@ Global
Release-DLL|x64 = Release-DLL|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|x64.ActiveCfg = Debug|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|Win32.ActiveCfg = Release|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|x64.ActiveCfg = Release|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|Win32.Build.0 = Debug|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug|x64.Build.0 = Debug|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|Win32.Build.0 = Release|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release|x64.Build.0 = Release|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|Win32.Build.0 = Debug|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|x64.ActiveCfg = Debug|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Debug-DLL|x64.Build.0 = Debug|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|Win32.ActiveCfg = Release|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|Win32.Build.0 = Release|Win32
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|x64.ActiveCfg = Release|x64
+ {1769D06D-F18C-B4C2-B019-31D7F83F3C9A}.Release-DLL|x64.Build.0 = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|Win32.ActiveCfg = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|x64.ActiveCfg = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/ares/ares.vcxproj b/vsprojects/vcxproj/ares/ares.vcxproj
new file mode 100644
index 0000000000..811f7c72c3
--- /dev/null
+++ b/vsprojects/vcxproj/ares/ares.vcxproj
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{1769D06D-F18C-B4C2-B019-31D7F83F3C9A}</ProjectGuid>
+ <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+ <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+ <TargetName>ares</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'">
+ <TargetName>ares</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemGroup>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_data.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_dns.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_getenv.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_getopt.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_inet_net_pton.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_iphlpapi.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_ipv6.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_library_init.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_llist.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_nowarn.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_platform.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_private.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_rules.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_setup.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_strcasecmp.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_strdup.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_version.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\bitncmp.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\config-win32.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\setup_once.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\ares_build.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\config_linux\ares_config.h" />
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\config_darwin\ares_config.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__close_sockets.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__get_hostent.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__read_line.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__timeval.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_cancel.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_create_query.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_data.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_destroy.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_expand_name.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_expand_string.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_fds.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_free_hostent.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_free_string.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getenv.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_gethostbyaddr.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_gethostbyname.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getnameinfo.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getopt.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getsock.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_init.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_library_init.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_llist.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_mkquery.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_nowarn.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_options.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_a_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_aaaa_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_mx_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_naptr_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_ns_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_ptr_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_soa_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_srv_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_txt_reply.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_platform.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_process.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_query.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_search.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_send.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strcasecmp.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strdup.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strerror.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_timeout.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_version.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_writev.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\bitncmp.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\inet_net_pton.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\inet_ntop.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\windows_port.c">
+ </ClCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/ares/ares.vcxproj.filters b/vsprojects/vcxproj/ares/ares.vcxproj.filters
new file mode 100644
index 0000000000..282a404868
--- /dev/null
+++ b/vsprojects/vcxproj/ares/ares.vcxproj.filters
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__close_sockets.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__get_hostent.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__read_line.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares__timeval.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_cancel.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_create_query.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_data.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_destroy.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_expand_name.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_expand_string.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_fds.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_free_hostent.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_free_string.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getenv.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_gethostbyaddr.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_gethostbyname.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getnameinfo.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getopt.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_getsock.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_init.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_library_init.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_llist.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_mkquery.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_nowarn.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_options.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_a_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_aaaa_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_mx_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_naptr_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_ns_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_ptr_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_soa_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_srv_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_parse_txt_reply.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_platform.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_process.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_query.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_search.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_send.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strcasecmp.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strdup.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_strerror.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_timeout.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_version.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\ares_writev.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\bitncmp.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\inet_net_pton.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\inet_ntop.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\third_party\cares\cares\windows_port.c">
+ <Filter>third_party\cares\cares</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_data.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_dns.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_getenv.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_getopt.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_inet_net_pton.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_iphlpapi.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_ipv6.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_library_init.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_llist.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_nowarn.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_platform.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_private.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_rules.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_setup.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_strcasecmp.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_strdup.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\ares_version.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\bitncmp.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\config-win32.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\cares\setup_once.h">
+ <Filter>third_party\cares\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\ares_build.h">
+ <Filter>third_party\cares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\config_linux\ares_config.h">
+ <Filter>third_party\cares\config_linux</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\third_party\cares\config_darwin\ares_config.h">
+ <Filter>third_party\cares\config_darwin</Filter>
+ </ClInclude>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Filter Include="third_party">
+ <UniqueIdentifier>{6463a17d-379b-4a21-51a9-c729ed28c9c1}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="third_party\cares">
+ <UniqueIdentifier>{f5276ab6-c78a-eea3-7ce9-54d2081b3d6a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="third_party\cares\cares">
+ <UniqueIdentifier>{390f10a8-7730-6295-681d-6fbd990ad488}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="third_party\cares\config_darwin">
+ <UniqueIdentifier>{02918eea-69d3-f65c-08aa-6c6c3dd50c7a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="third_party\cares\config_linux">
+ <UniqueIdentifier>{8b1c2965-c2f3-d13b-2c35-9e2c298acda5}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
+
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj
index 1b37ace69a..32dedee55d 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj
@@ -211,6 +211,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\arena.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\atm.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\avl.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\backoff.c">
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
index fafd54cdf9..94699c8ff8 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
@@ -13,6 +13,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\arena.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\atm.c">
+ <Filter>src\core\lib\support</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\avl.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index fde60be3e2..7abff218dd 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -349,6 +349,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_posix.h" />
@@ -357,6 +358,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_client_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_windows.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\time_averaged_stats.h" />
@@ -387,6 +389,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_stack_type.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
@@ -456,7 +459,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.h" />
- <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_registry.h" />
@@ -466,6 +468,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel_index.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\uri_parser.h" />
@@ -478,6 +481,8 @@
<ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_common.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_decode.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_encode.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting_filter.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\census\aggregation.h" />
@@ -594,6 +599,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_common_posix.c">
@@ -618,6 +625,12 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_windows.c">
@@ -662,6 +675,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\slice.c">
@@ -698,6 +713,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.c">
@@ -824,8 +841,6 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\security\transport\tsi_error.c">
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\json_util.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\init_secure.c">
@@ -850,14 +865,10 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.c">
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\default_initial_connect_string.c">
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.c">
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.c">
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_factory.c">
@@ -876,6 +887,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel_index.c">
@@ -910,6 +923,12 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\round_robin\round_robin.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\dns_resolver_ares.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver_posix.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\native\dns_resolver.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 8edbbc22be..aa3e5a77aa 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -145,6 +145,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -181,6 +184,15 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -247,6 +259,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
<Filter>src\core\lib\json</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ <Filter>src\core\lib\security\util</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
<Filter>src\core\lib\slice</Filter>
</ClCompile>
@@ -301,6 +316,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ <Filter>src\core\lib\surface</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
@@ -490,9 +508,6 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\security\transport\tsi_error.c">
<Filter>src\core\lib\security\transport</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
- <Filter>src\core\lib\security\util</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\json_util.c">
<Filter>src\core\lib\security\util</Filter>
</ClCompile>
@@ -529,18 +544,12 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\default_initial_connect_string.c">
- <Filter>src\core\ext\client_channel</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.c">
- <Filter>src\core\ext\client_channel</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
@@ -568,6 +577,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.c">
+ <Filter>src\core\ext\client_channel</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
@@ -619,6 +631,15 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\round_robin\round_robin.c">
<Filter>src\core\ext\lb_policy\round_robin</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\dns_resolver_ares.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver_posix.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\native\dns_resolver.c">
<Filter>src\core\ext\resolver\dns\native</Filter>
</ClCompile>
@@ -920,6 +941,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -944,6 +968,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -1034,6 +1061,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h">
+ <Filter>src\core\lib\surface</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
@@ -1241,9 +1271,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
- <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.h">
- <Filter>src\core\ext\client_channel</Filter>
- </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
@@ -1271,6 +1298,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.h">
+ <Filter>src\core\ext\client_channel</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
@@ -1307,6 +1337,12 @@
<ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_encode.h">
<Filter>third_party\nanopb</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver.h">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.h">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting.h">
<Filter>src\core\ext\load_reporting</Filter>
</ClInclude>
@@ -1427,6 +1463,9 @@
<Filter Include="src\core\ext\resolver\dns">
<UniqueIdentifier>{e8fe6413-ab8c-48d5-2c7b-aa79e3db4ab2}</UniqueIdentifier>
</Filter>
+ <Filter Include="src\core\ext\resolver\dns\c_ares">
+ <UniqueIdentifier>{2b72688f-79b8-05dd-2896-c7d5dec07dd6}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\core\ext\resolver\dns\native">
<UniqueIdentifier>{94e34be0-29d2-1731-3c1e-617ec4986acb}</UniqueIdentifier>
</Filter>
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
index e7c9fb71f3..9f3743b238 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
@@ -244,6 +244,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_posix.h" />
@@ -252,6 +253,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_client_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_windows.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\time_averaged_stats.h" />
@@ -282,6 +284,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_stack_type.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
@@ -437,6 +440,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_common_posix.c">
@@ -461,6 +466,12 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_windows.c">
@@ -505,6 +516,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\slice.c">
@@ -541,6 +554,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.c">
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
index 3d36948aae..bc52644206 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
@@ -202,6 +202,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -238,6 +241,15 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -304,6 +316,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
<Filter>src\core\lib\json</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ <Filter>src\core\lib\security\util</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
<Filter>src\core\lib\slice</Filter>
</ClCompile>
@@ -358,6 +373,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ <Filter>src\core\lib\surface</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
@@ -704,6 +722,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -728,6 +749,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -818,6 +842,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h">
+ <Filter>src\core\lib\surface</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
@@ -917,6 +944,12 @@
<Filter Include="src\core\lib\json">
<UniqueIdentifier>{89bc8f83-e29a-ddab-8f6b-22df11cdc867}</UniqueIdentifier>
</Filter>
+ <Filter Include="src\core\lib\security">
+ <UniqueIdentifier>{83d9c8a0-c579-769e-e2df-270c67b8c159}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\core\lib\security\util">
+ <UniqueIdentifier>{d55417ff-35a3-ef69-80c4-e6a95673728b}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\core\lib\slice">
<UniqueIdentifier>{4d172bbc-20c4-6e7d-872a-2d287b589aa0}</UniqueIdentifier>
</Filter>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 22f4740b8f..1a0c38cecb 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -339,6 +339,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_posix.h" />
@@ -347,6 +348,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_client_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_windows.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\time_averaged_stats.h" />
@@ -377,6 +379,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\channel_stack_type.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\init.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.h" />
@@ -422,7 +425,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.h" />
- <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_registry.h" />
@@ -432,9 +434,12 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel_index.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\uri_parser.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting_filter.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\grpclb.h" />
@@ -561,6 +566,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_utils_common_posix.c">
@@ -585,6 +592,12 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_windows.c">
@@ -629,6 +642,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\slice.c">
@@ -665,6 +680,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\lame_client.c">
@@ -767,14 +784,10 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.c">
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\default_initial_connect_string.c">
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.c">
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.c">
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy_factory.c">
@@ -793,12 +806,20 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel_index.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\uri_parser.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\dns_resolver_ares.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver_posix.c">
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\native\dns_resolver.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 5021cb47d8..b11766ecfd 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -148,6 +148,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_utils.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -184,6 +187,15 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_posix.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_common.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_ifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix_noifaddrs.c">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_uv.c">
<Filter>src\core\lib\iomgr</Filter>
</ClCompile>
@@ -250,6 +262,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\json\json_writer.c">
<Filter>src\core\lib\json</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\security\util\b64.c">
+ <Filter>src\core\lib\security\util</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\slice\percent_encoding.c">
<Filter>src\core\lib\slice</Filter>
</ClCompile>
@@ -304,6 +319,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.c">
+ <Filter>src\core\lib\surface</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\event_string.c">
<Filter>src\core\lib\surface</Filter>
</ClCompile>
@@ -457,18 +475,12 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\connector.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\default_initial_connect_string.c">
- <Filter>src\core\ext\client_channel</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_connect_handshaker.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
- <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.c">
- <Filter>src\core\ext\client_channel</Filter>
- </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
@@ -496,6 +508,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.c">
+ <Filter>src\core\ext\client_channel</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
@@ -505,6 +520,15 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_channel\uri_parser.c">
<Filter>src\core\ext\client_channel</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\dns_resolver_ares.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver_posix.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.c">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\dns\native\dns_resolver.c">
<Filter>src\core\ext\resolver\dns\native</Filter>
</ClCompile>
@@ -830,6 +854,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\sockaddr_windows.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_factory_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\socket_mutator.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -854,6 +881,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_server_utils_posix.h">
+ <Filter>src\core\lib\iomgr</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\iomgr\tcp_uv.h">
<Filter>src\core\lib\iomgr</Filter>
</ClInclude>
@@ -944,6 +974,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\completion_queue_factory.h">
+ <Filter>src\core\lib\surface</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\event_string.h">
<Filter>src\core\lib\surface</Filter>
</ClInclude>
@@ -1079,9 +1112,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\http_proxy.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
- <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\initial_connect_string.h">
- <Filter>src\core\ext\client_channel</Filter>
- </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\lb_policy.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
@@ -1109,6 +1139,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\resolver_registry.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\retry_throttle.h">
+ <Filter>src\core\ext\client_channel</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\subchannel.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
@@ -1118,6 +1151,12 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_channel\uri_parser.h">
<Filter>src\core\ext\client_channel</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_ev_driver.h">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\core\ext\resolver\dns\c_ares\grpc_ares_wrapper.h">
+ <Filter>src\core\ext\resolver\dns\c_ares</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\load_reporting\load_reporting.h">
<Filter>src\core\ext\load_reporting</Filter>
</ClInclude>
@@ -1262,6 +1301,9 @@
<Filter Include="src\core\ext\resolver\dns">
<UniqueIdentifier>{2e0a9b4f-6394-7c0e-6e5a-0f8b3ee29b41}</UniqueIdentifier>
</Filter>
+ <Filter Include="src\core\ext\resolver\dns\c_ares">
+ <UniqueIdentifier>{932d8afd-e042-46d0-30c5-1c45386165d9}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\core\ext\resolver\dns\native">
<UniqueIdentifier>{3d5398c8-928b-9096-8eb7-f8c40ee68c4d}</UniqueIdentifier>
</Filter>
@@ -1313,6 +1355,12 @@
<Filter Include="src\core\lib\json">
<UniqueIdentifier>{681cdaeb-c47f-8853-d985-bf13c2873947}</UniqueIdentifier>
</Filter>
+ <Filter Include="src\core\lib\security">
+ <UniqueIdentifier>{02c849c5-66eb-e42f-c9f7-2cf7cc9db06a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\core\lib\security\util">
+ <UniqueIdentifier>{c22aef1f-8b7b-6b5c-9e22-321b11f6352d}</UniqueIdentifier>
+ </Filter>
<Filter Include="src\core\lib\slice">
<UniqueIdentifier>{74c81ab7-e329-a362-3890-4c41b90f0511}</UniqueIdentifier>
</Filter>
diff --git a/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj b/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj
deleted file mode 100644
index a438391f25..0000000000
--- a/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{4A48E5A5-2E69-ED6D-063C-C297180A54D0}</ProjectGuid>
- <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
- <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
- <PlatformToolset>v100</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
- <PlatformToolset>v110</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
- <PlatformToolset>v120</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
- <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
- <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
- <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)'=='Debug'">
- <TargetName>set_initial_connect_string_test</TargetName>
- <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
- <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
- <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
- <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)'=='Release'">
- <TargetName>set_initial_connect_string_test</TargetName>
- <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
- <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
- <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
- <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <TreatWarningAsError>true</TreatWarningAsError>
- <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
- <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
- <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
-
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <SDLCheck>true</SDLCheck>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- <TreatWarningAsError>true</TreatWarningAsError>
- <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
- <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
- <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
-
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <TreatWarningAsError>true</TreatWarningAsError>
- <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
- <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
- <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
-
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PrecompiledHeader>NotUsing</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- <TreatWarningAsError>true</TreatWarningAsError>
- <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
- <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
- <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
-
- <ItemGroup>
- <ClCompile Include="$(SolutionDir)\..\test\core\client_channel\set_initial_connect_string_test.c">
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\test_tcp_server\test_tcp_server.vcxproj">
- <Project>{E3110C46-A148-FF65-08FD-3324829BE7FE}</Project>
- </ProjectReference>
- <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
- <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
- </ProjectReference>
- <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
- <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
- </ProjectReference>
- <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
- <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
- </ProjectReference>
- <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
- <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <None Include="packages.config" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
- <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
- <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
- <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
- </ImportGroup>
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
- <PropertyGroup>
- <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
- </PropertyGroup>
- <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
- <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
- <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
- <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
- <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
- </Target>
-</Project>
-
diff --git a/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj.filters b/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj.filters
deleted file mode 100644
index 4422a3e792..0000000000
--- a/vsprojects/vcxproj/test/set_initial_connect_string_test/set_initial_connect_string_test.vcxproj.filters
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <ClCompile Include="$(SolutionDir)\..\test\core\client_channel\set_initial_connect_string_test.c">
- <Filter>test\core\client_channel</Filter>
- </ClCompile>
- </ItemGroup>
-
- <ItemGroup>
- <Filter Include="test">
- <UniqueIdentifier>{413358e4-3165-f09d-071c-ee4f2ca0b826}</UniqueIdentifier>
- </Filter>
- <Filter Include="test\core">
- <UniqueIdentifier>{a554b5ef-0c80-ac03-1848-bccd947a06a6}</UniqueIdentifier>
- </Filter>
- <Filter Include="test\core\client_channel">
- <UniqueIdentifier>{4726253c-a562-0ace-2798-996807381208}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
-</Project>
-