grpc 1.28.0.pre2 → 1.31.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +8313 -11862
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/grpc_types.h +23 -23
- data/include/grpc/impl/codegen/port_platform.h +6 -34
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
- data/src/core/ext/filters/client_channel/client_channel.cc +618 -482
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +9 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +44 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +311 -497
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -17
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +117 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +1142 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +78 -61
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +46 -45
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +64 -12
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +73 -217
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +45 -27
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +55 -25
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1200 -246
- data/src/core/ext/filters/client_channel/xds/xds_api.h +130 -44
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +90 -29
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +9 -4
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +839 -431
- data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +40 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +27 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +54 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -876
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +429 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +23 -10
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +157 -122
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +173 -73
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +53 -38
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +95 -63
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +68 -46
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +305 -210
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +22 -16
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +48 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +12 -11
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +10 -21
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +10 -33
- data/src/core/lib/gpr/string.h +4 -18
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +15 -13
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -29
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +2 -21
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +38 -37
- data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
- data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +102 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +3 -4
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +11 -23
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +15 -15
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +32 -36
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +25 -26
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +13 -62
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -17
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +73 -54
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +48 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -17
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +2 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
- data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +15 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +42 -44
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +304 -47
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +971 -837
- data/src/core/lib/surface/server.h +66 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +9 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +154 -50
- data/src/core/tsi/ssl_transport_security.h +22 -10
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +8 -3
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +335 -297
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +249 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +57 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +33 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +191 -79
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +23 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +34 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +44 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +129 -48
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +122 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1908
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -23,6 +23,8 @@
|
|
23
23
|
#include <ares.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include "absl/strings/str_cat.h"
|
27
|
+
|
26
28
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
27
29
|
|
28
30
|
#include <grpc/support/alloc.h>
|
@@ -31,7 +33,6 @@
|
|
31
33
|
#include <grpc/support/time.h>
|
32
34
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
33
35
|
#include "src/core/lib/gpr/string.h"
|
34
|
-
#include "src/core/lib/iomgr/combiner.h"
|
35
36
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
36
37
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
37
38
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -66,8 +67,8 @@ struct grpc_ares_ev_driver {
|
|
66
67
|
/** refcount of the event driver */
|
67
68
|
gpr_refcount refs;
|
68
69
|
|
69
|
-
/**
|
70
|
-
grpc_core::
|
70
|
+
/** work_serializer to synchronize c-ares and I/O callbacks on */
|
71
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer;
|
71
72
|
/** a list of grpc_fd that this event driver is currently using. */
|
72
73
|
fd_node* fds;
|
73
74
|
/** is this event driver currently working? */
|
@@ -107,7 +108,6 @@ static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver) {
|
|
107
108
|
GRPC_CARES_TRACE_LOG("request:%p destroy ev_driver %p", ev_driver->request,
|
108
109
|
ev_driver);
|
109
110
|
GPR_ASSERT(ev_driver->fds == nullptr);
|
110
|
-
GRPC_COMBINER_UNREF(ev_driver->combiner, "free ares event driver");
|
111
111
|
ares_destroy(ev_driver->channel);
|
112
112
|
grpc_ares_complete_request_locked(ev_driver->request);
|
113
113
|
delete ev_driver;
|
@@ -133,21 +133,22 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
|
|
133
133
|
}
|
134
134
|
|
135
135
|
static void on_timeout(void* arg, grpc_error* error);
|
136
|
-
static void on_timeout_locked(
|
136
|
+
static void on_timeout_locked(grpc_ares_ev_driver* arg, grpc_error* error);
|
137
137
|
|
138
138
|
static void on_ares_backup_poll_alarm(void* arg, grpc_error* error);
|
139
|
-
static void on_ares_backup_poll_alarm_locked(
|
139
|
+
static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* arg,
|
140
|
+
grpc_error* error);
|
140
141
|
|
141
142
|
static void noop_inject_channel_config(ares_channel /*channel*/) {}
|
142
143
|
|
143
144
|
void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
|
144
145
|
noop_inject_channel_config;
|
145
146
|
|
146
|
-
grpc_error* grpc_ares_ev_driver_create_locked(
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
147
|
+
grpc_error* grpc_ares_ev_driver_create_locked(
|
148
|
+
grpc_ares_ev_driver** ev_driver, grpc_pollset_set* pollset_set,
|
149
|
+
int query_timeout_ms,
|
150
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer,
|
151
|
+
grpc_ares_request* request) {
|
151
152
|
*ev_driver = new grpc_ares_ev_driver();
|
152
153
|
ares_options opts;
|
153
154
|
memset(&opts, 0, sizeof(opts));
|
@@ -156,15 +157,14 @@ grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
|
156
157
|
grpc_ares_test_only_inject_config((*ev_driver)->channel);
|
157
158
|
GRPC_CARES_TRACE_LOG("request:%p grpc_ares_ev_driver_create_locked", request);
|
158
159
|
if (status != ARES_SUCCESS) {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
gpr_free(err_msg);
|
160
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
161
|
+
absl::StrCat("Failed to init ares channel. C-ares error: ",
|
162
|
+
ares_strerror(status))
|
163
|
+
.c_str());
|
164
164
|
gpr_free(*ev_driver);
|
165
165
|
return err;
|
166
166
|
}
|
167
|
-
(*ev_driver)->
|
167
|
+
(*ev_driver)->work_serializer = std::move(work_serializer);
|
168
168
|
gpr_ref_init(&(*ev_driver)->refs, 1);
|
169
169
|
(*ev_driver)->pollset_set = pollset_set;
|
170
170
|
(*ev_driver)->fds = nullptr;
|
@@ -172,7 +172,7 @@ grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
|
172
172
|
(*ev_driver)->shutting_down = false;
|
173
173
|
(*ev_driver)->request = request;
|
174
174
|
(*ev_driver)->polled_fd_factory =
|
175
|
-
grpc_core::NewGrpcPolledFdFactory((*ev_driver)->
|
175
|
+
grpc_core::NewGrpcPolledFdFactory((*ev_driver)->work_serializer);
|
176
176
|
(*ev_driver)
|
177
177
|
->polled_fd_factory->ConfigureAresChannelLocked((*ev_driver)->channel);
|
178
178
|
(*ev_driver)->query_timeout_ms = query_timeout_ms;
|
@@ -234,13 +234,12 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
|
|
234
234
|
|
235
235
|
static void on_timeout(void* arg, grpc_error* error) {
|
236
236
|
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
237
|
-
|
238
|
-
|
239
|
-
|
237
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
238
|
+
driver->work_serializer->Run(
|
239
|
+
[driver, error]() { on_timeout_locked(driver, error); }, DEBUG_LOCATION);
|
240
240
|
}
|
241
241
|
|
242
|
-
static void on_timeout_locked(
|
243
|
-
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
242
|
+
static void on_timeout_locked(grpc_ares_ev_driver* driver, grpc_error* error) {
|
244
243
|
GRPC_CARES_TRACE_LOG(
|
245
244
|
"request:%p ev_driver=%p on_timeout_locked. driver->shutting_down=%d. "
|
246
245
|
"err=%s",
|
@@ -249,14 +248,15 @@ static void on_timeout_locked(void* arg, grpc_error* error) {
|
|
249
248
|
grpc_ares_ev_driver_shutdown_locked(driver);
|
250
249
|
}
|
251
250
|
grpc_ares_ev_driver_unref(driver);
|
251
|
+
GRPC_ERROR_UNREF(error);
|
252
252
|
}
|
253
253
|
|
254
254
|
static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
|
255
255
|
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
256
|
+
GRPC_ERROR_REF(error);
|
257
|
+
driver->work_serializer->Run(
|
258
|
+
[driver, error]() { on_ares_backup_poll_alarm_locked(driver, error); },
|
259
|
+
DEBUG_LOCATION);
|
260
260
|
}
|
261
261
|
|
262
262
|
/* In case of non-responsive DNS servers, dropped packets, etc., c-ares has
|
@@ -267,8 +267,8 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
|
|
267
267
|
* b) when some time has passed without fd events having happened
|
268
268
|
* For the latter, we use this backup poller. Also see
|
269
269
|
* https://github.com/grpc/grpc/pull/17688 description for more details. */
|
270
|
-
static void on_ares_backup_poll_alarm_locked(
|
271
|
-
|
270
|
+
static void on_ares_backup_poll_alarm_locked(grpc_ares_ev_driver* driver,
|
271
|
+
grpc_error* error) {
|
272
272
|
GRPC_CARES_TRACE_LOG(
|
273
273
|
"request:%p ev_driver=%p on_ares_backup_poll_alarm_locked. "
|
274
274
|
"driver->shutting_down=%d. "
|
@@ -301,10 +301,10 @@ static void on_ares_backup_poll_alarm_locked(void* arg, grpc_error* error) {
|
|
301
301
|
grpc_ares_notify_on_event_locked(driver);
|
302
302
|
}
|
303
303
|
grpc_ares_ev_driver_unref(driver);
|
304
|
+
GRPC_ERROR_UNREF(error);
|
304
305
|
}
|
305
306
|
|
306
|
-
static void on_readable_locked(
|
307
|
-
fd_node* fdn = static_cast<fd_node*>(arg);
|
307
|
+
static void on_readable_locked(fd_node* fdn, grpc_error* error) {
|
308
308
|
GPR_ASSERT(fdn->readable_registered);
|
309
309
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
310
310
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
@@ -326,17 +326,17 @@ static void on_readable_locked(void* arg, grpc_error* error) {
|
|
326
326
|
}
|
327
327
|
grpc_ares_notify_on_event_locked(ev_driver);
|
328
328
|
grpc_ares_ev_driver_unref(ev_driver);
|
329
|
+
GRPC_ERROR_UNREF(error);
|
329
330
|
}
|
330
331
|
|
331
332
|
static void on_readable(void* arg, grpc_error* error) {
|
332
333
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
333
|
-
|
334
|
-
|
335
|
-
|
334
|
+
GRPC_ERROR_REF(error); /* ref owned by lambda */
|
335
|
+
fdn->ev_driver->work_serializer->Run(
|
336
|
+
[fdn, error]() { on_readable_locked(fdn, error); }, DEBUG_LOCATION);
|
336
337
|
}
|
337
338
|
|
338
|
-
static void on_writable_locked(
|
339
|
-
fd_node* fdn = static_cast<fd_node*>(arg);
|
339
|
+
static void on_writable_locked(fd_node* fdn, grpc_error* error) {
|
340
340
|
GPR_ASSERT(fdn->writable_registered);
|
341
341
|
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
342
342
|
const ares_socket_t as = fdn->grpc_polled_fd->GetWrappedAresSocketLocked();
|
@@ -356,13 +356,14 @@ static void on_writable_locked(void* arg, grpc_error* error) {
|
|
356
356
|
}
|
357
357
|
grpc_ares_notify_on_event_locked(ev_driver);
|
358
358
|
grpc_ares_ev_driver_unref(ev_driver);
|
359
|
+
GRPC_ERROR_UNREF(error);
|
359
360
|
}
|
360
361
|
|
361
362
|
static void on_writable(void* arg, grpc_error* error) {
|
362
363
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
363
|
-
|
364
|
-
|
365
|
-
|
364
|
+
GRPC_ERROR_REF(error); /* ref owned by lambda */
|
365
|
+
fdn->ev_driver->work_serializer->Run(
|
366
|
+
[fdn, error]() { on_writable_locked(fdn, error); }, DEBUG_LOCATION);
|
366
367
|
}
|
367
368
|
|
368
369
|
ares_channel* grpc_ares_ev_driver_get_channel_locked(
|
@@ -387,7 +388,7 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
387
388
|
fdn = static_cast<fd_node*>(gpr_malloc(sizeof(fd_node)));
|
388
389
|
fdn->grpc_polled_fd =
|
389
390
|
ev_driver->polled_fd_factory->NewGrpcPolledFdLocked(
|
390
|
-
socks[i], ev_driver->pollset_set, ev_driver->
|
391
|
+
socks[i], ev_driver->pollset_set, ev_driver->work_serializer);
|
391
392
|
GRPC_CARES_TRACE_LOG("request:%p new fd: %s", ev_driver->request,
|
392
393
|
fdn->grpc_polled_fd->GetName());
|
393
394
|
fdn->ev_driver = ev_driver;
|
@@ -40,11 +40,11 @@ ares_channel* grpc_ares_ev_driver_get_channel_locked(
|
|
40
40
|
|
41
41
|
/* Creates a new grpc_ares_ev_driver. Returns GRPC_ERROR_NONE if \a ev_driver is
|
42
42
|
created successfully. */
|
43
|
-
grpc_error* grpc_ares_ev_driver_create_locked(
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
grpc_error* grpc_ares_ev_driver_create_locked(
|
44
|
+
grpc_ares_ev_driver** ev_driver, grpc_pollset_set* pollset_set,
|
45
|
+
int query_timeout_ms,
|
46
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer,
|
47
|
+
grpc_ares_request* request);
|
48
48
|
|
49
49
|
/* Called back when all DNS lookups have completed. */
|
50
50
|
void grpc_ares_ev_driver_on_queries_complete_locked(
|
@@ -90,12 +90,13 @@ class GrpcPolledFdFactory {
|
|
90
90
|
/* Creates a new wrapped fd for the current platform */
|
91
91
|
virtual GrpcPolledFd* NewGrpcPolledFdLocked(
|
92
92
|
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
93
|
-
|
93
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer) = 0;
|
94
94
|
/* Optionally configures the ares channel after creation */
|
95
95
|
virtual void ConfigureAresChannelLocked(ares_channel channel) = 0;
|
96
96
|
};
|
97
97
|
|
98
|
-
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
98
|
+
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
99
|
+
std::shared_ptr<grpc_core::WorkSerializer> work_serializer);
|
99
100
|
|
100
101
|
} // namespace grpc_core
|
101
102
|
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#include "src/core/lib/iomgr/port.h"
|
21
21
|
#if GRPC_ARES == 1 && defined(GRPC_UV)
|
22
22
|
|
23
|
+
#include "absl/strings/str_format.h"
|
24
|
+
|
23
25
|
#include <ares.h>
|
24
26
|
#include <uv.h>
|
25
27
|
|
@@ -31,7 +33,7 @@
|
|
31
33
|
#include <grpc/support/time.h>
|
32
34
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
33
35
|
#include "src/core/lib/gpr/string.h"
|
34
|
-
#include "src/core/lib/iomgr/
|
36
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
35
37
|
|
36
38
|
namespace grpc_core {
|
37
39
|
|
@@ -41,18 +43,14 @@ void ares_uv_poll_close_cb(uv_handle_t* handle) { delete handle; }
|
|
41
43
|
|
42
44
|
class GrpcPolledFdLibuv : public GrpcPolledFd {
|
43
45
|
public:
|
44
|
-
GrpcPolledFdLibuv(ares_socket_t as,
|
45
|
-
|
46
|
-
|
46
|
+
GrpcPolledFdLibuv(ares_socket_t as,
|
47
|
+
std::shared_ptr<WorkSerializer> work_serializer)
|
48
|
+
: name_(absl::StrFormat("c-ares socket: %" PRIdPTR, (intptr_t)as)),
|
49
|
+
as_(as),
|
50
|
+
work_serializer_(std::move(work_serializer)) {
|
47
51
|
handle_ = new uv_poll_t();
|
48
52
|
uv_poll_init_socket(uv_default_loop(), handle_, as);
|
49
53
|
handle_->data = this;
|
50
|
-
GRPC_COMBINER_REF(combiner_, "libuv ares event driver");
|
51
|
-
}
|
52
|
-
|
53
|
-
~GrpcPolledFdLibuv() {
|
54
|
-
gpr_free(name_);
|
55
|
-
GRPC_COMBINER_UNREF(combiner_, "libuv ares event driver");
|
56
54
|
}
|
57
55
|
|
58
56
|
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
@@ -101,15 +99,16 @@ class GrpcPolledFdLibuv : public GrpcPolledFd {
|
|
101
99
|
|
102
100
|
ares_socket_t GetWrappedAresSocketLocked() override { return as_; }
|
103
101
|
|
104
|
-
const char* GetName() override { return name_; }
|
102
|
+
const char* GetName() override { return name_.c_str(); }
|
105
103
|
|
106
|
-
|
104
|
+
// TODO(apolcyn): Data members should be private.
|
105
|
+
std::string name_;
|
107
106
|
ares_socket_t as_;
|
108
107
|
uv_poll_t* handle_;
|
109
108
|
grpc_closure* read_closure_ = nullptr;
|
110
109
|
grpc_closure* write_closure_ = nullptr;
|
111
110
|
int poll_events_ = 0;
|
112
|
-
|
111
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
113
112
|
};
|
114
113
|
|
115
114
|
struct AresUvPollCbArg {
|
@@ -121,14 +120,14 @@ struct AresUvPollCbArg {
|
|
121
120
|
int events;
|
122
121
|
};
|
123
122
|
|
124
|
-
static void ares_uv_poll_cb_locked(
|
125
|
-
std::unique_ptr<AresUvPollCbArg> arg_struct(
|
126
|
-
reinterpret_cast<AresUvPollCbArg*>(arg));
|
123
|
+
static void ares_uv_poll_cb_locked(AresUvPollCbArg* arg) {
|
124
|
+
std::unique_ptr<AresUvPollCbArg> arg_struct(arg);
|
127
125
|
uv_poll_t* handle = arg_struct->handle;
|
128
126
|
int status = arg_struct->status;
|
129
127
|
int events = arg_struct->events;
|
130
128
|
GrpcPolledFdLibuv* polled_fd =
|
131
129
|
reinterpret_cast<GrpcPolledFdLibuv*>(handle->data);
|
130
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
132
131
|
if (status < 0) {
|
133
132
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("cares polling error");
|
134
133
|
error =
|
@@ -155,24 +154,23 @@ void ares_uv_poll_cb(uv_poll_t* handle, int status, int events) {
|
|
155
154
|
GrpcPolledFdLibuv* polled_fd =
|
156
155
|
reinterpret_cast<GrpcPolledFdLibuv*>(handle->data);
|
157
156
|
AresUvPollCbArg* arg = new AresUvPollCbArg(handle, status, events);
|
158
|
-
polled_fd->
|
159
|
-
|
160
|
-
GRPC_ERROR_NONE);
|
157
|
+
polled_fd->work_serializer_->Run([arg]() { ares_uv_poll_cb_locked(arg); },
|
158
|
+
DEBUG_LOCATION);
|
161
159
|
}
|
162
160
|
|
163
161
|
class GrpcPolledFdFactoryLibuv : public GrpcPolledFdFactory {
|
164
162
|
public:
|
165
|
-
GrpcPolledFd* NewGrpcPolledFdLocked(
|
166
|
-
|
167
|
-
|
168
|
-
return new GrpcPolledFdLibuv(as,
|
163
|
+
GrpcPolledFd* NewGrpcPolledFdLocked(
|
164
|
+
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
165
|
+
std::shared_ptr<WorkSerializer> work_serializer) override {
|
166
|
+
return new GrpcPolledFdLibuv(as, std::move(work_serializer));
|
169
167
|
}
|
170
168
|
|
171
169
|
void ConfigureAresChannelLocked(ares_channel channel) override {}
|
172
170
|
};
|
173
171
|
|
174
172
|
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
175
|
-
|
173
|
+
std::shared_ptr<WorkSerializer> work_serializer) {
|
176
174
|
return absl::make_unique<GrpcPolledFdFactoryLibuv>();
|
177
175
|
}
|
178
176
|
|
@@ -24,6 +24,8 @@
|
|
24
24
|
#include <string.h>
|
25
25
|
#include <sys/ioctl.h>
|
26
26
|
|
27
|
+
#include "absl/strings/str_cat.h"
|
28
|
+
|
27
29
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
28
30
|
|
29
31
|
#include <grpc/support/alloc.h>
|
@@ -41,15 +43,13 @@ namespace grpc_core {
|
|
41
43
|
class GrpcPolledFdPosix : public GrpcPolledFd {
|
42
44
|
public:
|
43
45
|
GrpcPolledFdPosix(ares_socket_t as, grpc_pollset_set* driver_pollset_set)
|
44
|
-
: as_(as) {
|
45
|
-
|
46
|
-
fd_ = grpc_fd_create((int)as, name_, false);
|
46
|
+
: name_(absl::StrCat("c-ares fd: ", (int)as)), as_(as) {
|
47
|
+
fd_ = grpc_fd_create((int)as, name_.c_str(), false);
|
47
48
|
driver_pollset_set_ = driver_pollset_set;
|
48
49
|
grpc_pollset_set_add_fd(driver_pollset_set_, fd_);
|
49
50
|
}
|
50
51
|
|
51
52
|
~GrpcPolledFdPosix() {
|
52
|
-
gpr_free(name_);
|
53
53
|
grpc_pollset_set_del_fd(driver_pollset_set_, fd_);
|
54
54
|
/* c-ares library will close the fd inside grpc_fd. This fd may be picked up
|
55
55
|
immediately by another thread, and should not be closed by the following
|
@@ -78,9 +78,10 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
|
|
78
78
|
|
79
79
|
ares_socket_t GetWrappedAresSocketLocked() override { return as_; }
|
80
80
|
|
81
|
-
const char* GetName() override { return name_; }
|
81
|
+
const char* GetName() override { return name_.c_str(); }
|
82
82
|
|
83
|
-
|
83
|
+
private:
|
84
|
+
std::string name_;
|
84
85
|
ares_socket_t as_;
|
85
86
|
grpc_fd* fd_;
|
86
87
|
grpc_pollset_set* driver_pollset_set_;
|
@@ -88,9 +89,9 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
|
|
88
89
|
|
89
90
|
class GrpcPolledFdFactoryPosix : public GrpcPolledFdFactory {
|
90
91
|
public:
|
91
|
-
GrpcPolledFd* NewGrpcPolledFdLocked(
|
92
|
-
|
93
|
-
|
92
|
+
GrpcPolledFd* NewGrpcPolledFdLocked(
|
93
|
+
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
94
|
+
std::shared_ptr<WorkSerializer> /*work_serializer*/) override {
|
94
95
|
return new GrpcPolledFdPosix(as, driver_pollset_set);
|
95
96
|
}
|
96
97
|
|
@@ -98,7 +99,8 @@ class GrpcPolledFdFactoryPosix : public GrpcPolledFdFactory {
|
|
98
99
|
};
|
99
100
|
|
100
101
|
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
101
|
-
|
102
|
+
std::shared_ptr<WorkSerializer> work_serializer) {
|
103
|
+
(void)work_serializer;
|
102
104
|
return absl::make_unique<GrpcPolledFdFactoryPosix>();
|
103
105
|
}
|
104
106
|
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#include "src/core/lib/iomgr/port.h"
|
21
21
|
#if GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
|
22
22
|
|
23
|
+
#include "absl/strings/str_format.h"
|
24
|
+
|
23
25
|
#include <ares.h>
|
24
26
|
|
25
27
|
#include <grpc/support/alloc.h>
|
@@ -30,12 +32,12 @@
|
|
30
32
|
#include <string.h>
|
31
33
|
#include "src/core/lib/gpr/string.h"
|
32
34
|
#include "src/core/lib/gprpp/memory.h"
|
33
|
-
#include "src/core/lib/iomgr/combiner.h"
|
34
35
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
35
36
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
36
37
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
37
38
|
#include "src/core/lib/iomgr/socket_windows.h"
|
38
39
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
40
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
39
41
|
#include "src/core/lib/slice/slice_internal.h"
|
40
42
|
|
41
43
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
@@ -97,34 +99,36 @@ class GrpcPolledFdWindows {
|
|
97
99
|
WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY,
|
98
100
|
};
|
99
101
|
|
100
|
-
GrpcPolledFdWindows(ares_socket_t as,
|
101
|
-
|
102
|
-
|
102
|
+
GrpcPolledFdWindows(ares_socket_t as,
|
103
|
+
std::shared_ptr<WorkSerializer> work_serializer,
|
104
|
+
int address_family, int socket_type)
|
105
|
+
: work_serializer_(std::move(work_serializer)),
|
106
|
+
read_buf_(grpc_empty_slice()),
|
103
107
|
write_buf_(grpc_empty_slice()),
|
104
108
|
tcp_write_state_(WRITE_IDLE),
|
109
|
+
name_(absl::StrFormat("c-ares socket: %" PRIdPTR, as)),
|
105
110
|
gotten_into_driver_list_(false),
|
106
111
|
address_family_(address_family),
|
107
112
|
socket_type_(socket_type) {
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
this,
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
113
|
+
// Closure Initialization
|
114
|
+
GRPC_CLOSURE_INIT(&outer_read_closure_,
|
115
|
+
&GrpcPolledFdWindows::OnIocpReadable, this,
|
116
|
+
grpc_schedule_on_exec_ctx);
|
117
|
+
GRPC_CLOSURE_INIT(&outer_write_closure_,
|
118
|
+
&GrpcPolledFdWindows::OnIocpWriteable, this,
|
119
|
+
grpc_schedule_on_exec_ctx);
|
120
|
+
GRPC_CLOSURE_INIT(&on_tcp_connect_locked_,
|
121
|
+
&GrpcPolledFdWindows::OnTcpConnect, this,
|
122
|
+
grpc_schedule_on_exec_ctx);
|
123
|
+
winsocket_ = grpc_winsocket_create(as, name_.c_str());
|
118
124
|
}
|
119
125
|
|
120
126
|
~GrpcPolledFdWindows() {
|
121
|
-
GRPC_COMBINER_UNREF(combiner_, name_);
|
122
127
|
grpc_slice_unref_internal(read_buf_);
|
123
128
|
grpc_slice_unref_internal(write_buf_);
|
124
129
|
GPR_ASSERT(read_closure_ == nullptr);
|
125
130
|
GPR_ASSERT(write_closure_ == nullptr);
|
126
131
|
grpc_winsocket_destroy(winsocket_);
|
127
|
-
gpr_free(name_);
|
128
132
|
}
|
129
133
|
|
130
134
|
void ScheduleAndNullReadClosure(grpc_error* error) {
|
@@ -145,23 +149,15 @@ class GrpcPolledFdWindows {
|
|
145
149
|
GPR_ASSERT(!read_buf_has_data_);
|
146
150
|
read_buf_ = GRPC_SLICE_MALLOC(4192);
|
147
151
|
if (connect_done_) {
|
148
|
-
|
149
|
-
|
152
|
+
work_serializer_->Run([this]() { ContinueRegisterForOnReadableLocked(); },
|
153
|
+
DEBUG_LOCATION);
|
150
154
|
} else {
|
151
|
-
GPR_ASSERT(pending_continue_register_for_on_readable_locked_ ==
|
152
|
-
pending_continue_register_for_on_readable_locked_ =
|
153
|
-
&continue_register_for_on_readable_locked_;
|
155
|
+
GPR_ASSERT(pending_continue_register_for_on_readable_locked_ == false);
|
156
|
+
pending_continue_register_for_on_readable_locked_ = true;
|
154
157
|
}
|
155
158
|
}
|
156
159
|
|
157
|
-
|
158
|
-
grpc_error* unused_error) {
|
159
|
-
GrpcPolledFdWindows* grpc_polled_fd =
|
160
|
-
static_cast<GrpcPolledFdWindows*>(arg);
|
161
|
-
grpc_polled_fd->InnerContinueRegisterForOnReadableLocked(GRPC_ERROR_NONE);
|
162
|
-
}
|
163
|
-
|
164
|
-
void InnerContinueRegisterForOnReadableLocked(grpc_error* unused_error) {
|
160
|
+
void ContinueRegisterForOnReadableLocked() {
|
165
161
|
GRPC_CARES_TRACE_LOG(
|
166
162
|
"fd:|%s| InnerContinueRegisterForOnReadableLocked "
|
167
163
|
"wsa_connect_error_:%d",
|
@@ -194,10 +190,7 @@ class GrpcPolledFdWindows {
|
|
194
190
|
return;
|
195
191
|
}
|
196
192
|
}
|
197
|
-
grpc_socket_notify_on_read(
|
198
|
-
winsocket_, GRPC_CLOSURE_INIT(&outer_read_closure_,
|
199
|
-
&GrpcPolledFdWindows::OnIocpReadable,
|
200
|
-
this, grpc_schedule_on_exec_ctx));
|
193
|
+
grpc_socket_notify_on_read(winsocket_, &outer_read_closure_);
|
201
194
|
}
|
202
195
|
|
203
196
|
void RegisterForOnWriteableLocked(grpc_closure* write_closure) {
|
@@ -213,23 +206,15 @@ class GrpcPolledFdWindows {
|
|
213
206
|
GPR_ASSERT(write_closure_ == nullptr);
|
214
207
|
write_closure_ = write_closure;
|
215
208
|
if (connect_done_) {
|
216
|
-
|
217
|
-
|
209
|
+
work_serializer_->Run(
|
210
|
+
[this]() { ContinueRegisterForOnWriteableLocked(); }, DEBUG_LOCATION);
|
218
211
|
} else {
|
219
|
-
GPR_ASSERT(pending_continue_register_for_on_writeable_locked_ ==
|
220
|
-
pending_continue_register_for_on_writeable_locked_ =
|
221
|
-
&continue_register_for_on_writeable_locked_;
|
212
|
+
GPR_ASSERT(pending_continue_register_for_on_writeable_locked_ == false);
|
213
|
+
pending_continue_register_for_on_writeable_locked_ = true;
|
222
214
|
}
|
223
215
|
}
|
224
216
|
|
225
|
-
|
226
|
-
grpc_error* unused_error) {
|
227
|
-
GrpcPolledFdWindows* grpc_polled_fd =
|
228
|
-
static_cast<GrpcPolledFdWindows*>(arg);
|
229
|
-
grpc_polled_fd->InnerContinueRegisterForOnWriteableLocked(GRPC_ERROR_NONE);
|
230
|
-
}
|
231
|
-
|
232
|
-
void InnerContinueRegisterForOnWriteableLocked(grpc_error* unused_error) {
|
217
|
+
void ContinueRegisterForOnWriteableLocked() {
|
233
218
|
GRPC_CARES_TRACE_LOG(
|
234
219
|
"fd:|%s| InnerContinueRegisterForOnWriteableLocked "
|
235
220
|
"wsa_connect_error_:%d",
|
@@ -256,11 +241,7 @@ class GrpcPolledFdWindows {
|
|
256
241
|
ScheduleAndNullWriteClosure(
|
257
242
|
GRPC_WSA_ERROR(wsa_error_code, "WSASend (overlapped)"));
|
258
243
|
} else {
|
259
|
-
grpc_socket_notify_on_write(
|
260
|
-
winsocket_,
|
261
|
-
GRPC_CLOSURE_INIT(&outer_write_closure_,
|
262
|
-
&GrpcPolledFdWindows::OnIocpWriteable, this,
|
263
|
-
grpc_schedule_on_exec_ctx));
|
244
|
+
grpc_socket_notify_on_write(winsocket_, &outer_write_closure_);
|
264
245
|
}
|
265
246
|
break;
|
266
247
|
case WRITE_PENDING:
|
@@ -280,7 +261,7 @@ class GrpcPolledFdWindows {
|
|
280
261
|
return grpc_winsocket_wrapped_socket(winsocket_);
|
281
262
|
}
|
282
263
|
|
283
|
-
const char* GetName() { return name_; }
|
264
|
+
const char* GetName() { return name_.c_str(); }
|
284
265
|
|
285
266
|
ares_ssize_t RecvFrom(WSAErrorContext* wsa_error_ctx, void* data,
|
286
267
|
ares_socket_t data_len, int flags,
|
@@ -440,24 +421,19 @@ class GrpcPolledFdWindows {
|
|
440
421
|
static void OnTcpConnect(void* arg, grpc_error* error) {
|
441
422
|
GrpcPolledFdWindows* grpc_polled_fd =
|
442
423
|
static_cast<GrpcPolledFdWindows*>(arg);
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
static void OnTcpConnectLocked(void* arg, grpc_error* error) {
|
451
|
-
GrpcPolledFdWindows* grpc_polled_fd =
|
452
|
-
static_cast<GrpcPolledFdWindows*>(arg);
|
453
|
-
grpc_polled_fd->InnerOnTcpConnectLocked(error);
|
424
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
425
|
+
grpc_polled_fd->work_serializer_->Run(
|
426
|
+
[grpc_polled_fd, error]() {
|
427
|
+
grpc_polled_fd->OnTcpConnectLocked(error);
|
428
|
+
},
|
429
|
+
DEBUG_LOCATION);
|
454
430
|
}
|
455
431
|
|
456
|
-
void
|
432
|
+
void OnTcpConnectLocked(grpc_error* error) {
|
457
433
|
GRPC_CARES_TRACE_LOG(
|
458
434
|
"fd:%s InnerOnTcpConnectLocked error:|%s| "
|
459
|
-
"pending_register_for_readable:%"
|
460
|
-
" pending_register_for_writeable:%"
|
435
|
+
"pending_register_for_readable:%d"
|
436
|
+
" pending_register_for_writeable:%d",
|
461
437
|
GetName(), grpc_error_string(error),
|
462
438
|
pending_continue_register_for_on_readable_locked_,
|
463
439
|
pending_continue_register_for_on_writeable_locked_);
|
@@ -486,14 +462,15 @@ class GrpcPolledFdWindows {
|
|
486
462
|
// this fd to abort.
|
487
463
|
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
488
464
|
}
|
489
|
-
if (pending_continue_register_for_on_readable_locked_
|
490
|
-
|
491
|
-
|
465
|
+
if (pending_continue_register_for_on_readable_locked_) {
|
466
|
+
work_serializer_->Run([this]() { ContinueRegisterForOnReadableLocked(); },
|
467
|
+
DEBUG_LOCATION);
|
492
468
|
}
|
493
|
-
if (pending_continue_register_for_on_writeable_locked_
|
494
|
-
|
495
|
-
|
469
|
+
if (pending_continue_register_for_on_writeable_locked_) {
|
470
|
+
work_serializer_->Run(
|
471
|
+
[this]() { ContinueRegisterForOnWriteableLocked(); }, DEBUG_LOCATION);
|
496
472
|
}
|
473
|
+
GRPC_ERROR_UNREF(error);
|
497
474
|
}
|
498
475
|
|
499
476
|
int Connect(WSAErrorContext* wsa_error_ctx, const struct sockaddr* target,
|
@@ -593,25 +570,16 @@ class GrpcPolledFdWindows {
|
|
593
570
|
return -1;
|
594
571
|
}
|
595
572
|
}
|
596
|
-
GRPC_CLOSURE_INIT(&on_tcp_connect_locked_,
|
597
|
-
&GrpcPolledFdWindows::OnTcpConnect, this,
|
598
|
-
grpc_schedule_on_exec_ctx);
|
599
573
|
grpc_socket_notify_on_write(winsocket_, &on_tcp_connect_locked_);
|
600
574
|
return out;
|
601
575
|
}
|
602
576
|
|
603
577
|
static void OnIocpReadable(void* arg, grpc_error* error) {
|
604
578
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
GRPC_ERROR_REF(error));
|
610
|
-
}
|
611
|
-
|
612
|
-
static void OnIocpReadableLocked(void* arg, grpc_error* error) {
|
613
|
-
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
614
|
-
polled_fd->OnIocpReadableInner(error);
|
579
|
+
GRPC_ERROR_REF(error); // ref owned by lambda
|
580
|
+
polled_fd->work_serializer_->Run(
|
581
|
+
[polled_fd, error]() { polled_fd->OnIocpReadableLocked(error); },
|
582
|
+
DEBUG_LOCATION);
|
615
583
|
}
|
616
584
|
|
617
585
|
// TODO(apolcyn): improve this error handling to be less conversative.
|
@@ -619,7 +587,7 @@ class GrpcPolledFdWindows {
|
|
619
587
|
// c-ares reads from this socket later, but it shouldn't necessarily cancel
|
620
588
|
// the entire resolution attempt. Doing so will allow the "inject broken
|
621
589
|
// nameserver list" test to pass on Windows.
|
622
|
-
void
|
590
|
+
void OnIocpReadableLocked(grpc_error* error) {
|
623
591
|
if (error == GRPC_ERROR_NONE) {
|
624
592
|
if (winsocket_->read_info.wsa_error != 0) {
|
625
593
|
/* WSAEMSGSIZE would be due to receiving more data
|
@@ -627,7 +595,6 @@ class GrpcPolledFdWindows {
|
|
627
595
|
* the connection is TCP and read the leftovers
|
628
596
|
* in subsequent c-ares reads. */
|
629
597
|
if (winsocket_->read_info.wsa_error != WSAEMSGSIZE) {
|
630
|
-
GRPC_ERROR_UNREF(error);
|
631
598
|
error = GRPC_WSA_ERROR(winsocket_->read_info.wsa_error,
|
632
599
|
"OnIocpReadableInner");
|
633
600
|
GRPC_CARES_TRACE_LOG(
|
@@ -654,24 +621,17 @@ class GrpcPolledFdWindows {
|
|
654
621
|
|
655
622
|
static void OnIocpWriteable(void* arg, grpc_error* error) {
|
656
623
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
GRPC_ERROR_REF(error));
|
662
|
-
}
|
663
|
-
|
664
|
-
static void OnIocpWriteableLocked(void* arg, grpc_error* error) {
|
665
|
-
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
666
|
-
polled_fd->OnIocpWriteableInner(error);
|
624
|
+
GRPC_ERROR_REF(error); // error owned by lambda
|
625
|
+
polled_fd->work_serializer_->Run(
|
626
|
+
[polled_fd, error]() { polled_fd->OnIocpWriteableLocked(error); },
|
627
|
+
DEBUG_LOCATION);
|
667
628
|
}
|
668
629
|
|
669
|
-
void
|
630
|
+
void OnIocpWriteableLocked(grpc_error* error) {
|
670
631
|
GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName());
|
671
632
|
GPR_ASSERT(socket_type_ == SOCK_STREAM);
|
672
633
|
if (error == GRPC_ERROR_NONE) {
|
673
634
|
if (winsocket_->write_info.wsa_error != 0) {
|
674
|
-
GRPC_ERROR_UNREF(error);
|
675
635
|
error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error,
|
676
636
|
"OnIocpWriteableInner");
|
677
637
|
GRPC_CARES_TRACE_LOG(
|
@@ -698,7 +658,8 @@ class GrpcPolledFdWindows {
|
|
698
658
|
bool gotten_into_driver_list() const { return gotten_into_driver_list_; }
|
699
659
|
void set_gotten_into_driver_list() { gotten_into_driver_list_ = true; }
|
700
660
|
|
701
|
-
|
661
|
+
private:
|
662
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
702
663
|
char recv_from_source_addr_[200];
|
703
664
|
ares_socklen_t recv_from_source_addr_len_;
|
704
665
|
grpc_slice read_buf_;
|
@@ -711,7 +672,7 @@ class GrpcPolledFdWindows {
|
|
711
672
|
grpc_winsocket* winsocket_;
|
712
673
|
// tcp_write_state_ is only used on TCP GrpcPolledFds
|
713
674
|
WriteState tcp_write_state_;
|
714
|
-
|
675
|
+
std::string name_;
|
715
676
|
bool gotten_into_driver_list_;
|
716
677
|
int address_family_;
|
717
678
|
int socket_type_;
|
@@ -721,10 +682,8 @@ class GrpcPolledFdWindows {
|
|
721
682
|
// We don't run register_for_{readable,writeable} logic until
|
722
683
|
// a socket is connected. In the interim, we queue readable/writeable
|
723
684
|
// registrations with the following state.
|
724
|
-
|
725
|
-
|
726
|
-
grpc_closure* pending_continue_register_for_on_readable_locked_ = nullptr;
|
727
|
-
grpc_closure* pending_continue_register_for_on_writeable_locked_ = nullptr;
|
685
|
+
bool pending_continue_register_for_on_readable_locked_ = false;
|
686
|
+
bool pending_continue_register_for_on_writeable_locked_ = false;
|
728
687
|
};
|
729
688
|
|
730
689
|
struct SockToPolledFdEntry {
|
@@ -742,14 +701,10 @@ struct SockToPolledFdEntry {
|
|
742
701
|
* with a GrpcPolledFdWindows factory and event driver */
|
743
702
|
class SockToPolledFdMap {
|
744
703
|
public:
|
745
|
-
SockToPolledFdMap(
|
746
|
-
|
747
|
-
}
|
704
|
+
explicit SockToPolledFdMap(std::shared_ptr<WorkSerializer> work_serializer)
|
705
|
+
: work_serializer_(std::move(work_serializer)) {}
|
748
706
|
|
749
|
-
~SockToPolledFdMap() {
|
750
|
-
GPR_ASSERT(head_ == nullptr);
|
751
|
-
GRPC_COMBINER_UNREF(combiner_, "sock to polled fd map");
|
752
|
-
}
|
707
|
+
~SockToPolledFdMap() { GPR_ASSERT(head_ == nullptr); }
|
753
708
|
|
754
709
|
void AddNewSocket(SOCKET s, GrpcPolledFdWindows* polled_fd) {
|
755
710
|
SockToPolledFdEntry* new_node = new SockToPolledFdEntry(s, polled_fd);
|
@@ -805,7 +760,7 @@ class SockToPolledFdMap {
|
|
805
760
|
}
|
806
761
|
grpc_tcp_set_non_block(s);
|
807
762
|
GrpcPolledFdWindows* polled_fd =
|
808
|
-
new GrpcPolledFdWindows(s, map->
|
763
|
+
new GrpcPolledFdWindows(s, map->work_serializer_, af, type);
|
809
764
|
GRPC_CARES_TRACE_LOG(
|
810
765
|
"fd:|%s| created with params af:%d type:%d protocol:%d",
|
811
766
|
polled_fd->GetName(), af, type, protocol);
|
@@ -861,7 +816,7 @@ class SockToPolledFdMap {
|
|
861
816
|
|
862
817
|
private:
|
863
818
|
SockToPolledFdEntry* head_ = nullptr;
|
864
|
-
|
819
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
865
820
|
};
|
866
821
|
|
867
822
|
const struct ares_socket_functions custom_ares_sock_funcs = {
|
@@ -877,7 +832,7 @@ const struct ares_socket_functions custom_ares_sock_funcs = {
|
|
877
832
|
so that c-ares can close it via usual socket teardown. */
|
878
833
|
class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
|
879
834
|
public:
|
880
|
-
GrpcPolledFdWindowsWrapper(GrpcPolledFdWindows* wrapped)
|
835
|
+
explicit GrpcPolledFdWindowsWrapper(GrpcPolledFdWindows* wrapped)
|
881
836
|
: wrapped_(wrapped) {}
|
882
837
|
|
883
838
|
~GrpcPolledFdWindowsWrapper() {}
|
@@ -910,12 +865,13 @@ class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
|
|
910
865
|
|
911
866
|
class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
912
867
|
public:
|
913
|
-
GrpcPolledFdFactoryWindows(
|
914
|
-
|
868
|
+
explicit GrpcPolledFdFactoryWindows(
|
869
|
+
std::shared_ptr<WorkSerializer> work_serializer)
|
870
|
+
: sock_to_polled_fd_map_(std::move(work_serializer)) {}
|
915
871
|
|
916
|
-
GrpcPolledFd* NewGrpcPolledFdLocked(
|
917
|
-
|
918
|
-
|
872
|
+
GrpcPolledFd* NewGrpcPolledFdLocked(
|
873
|
+
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
874
|
+
std::shared_ptr<WorkSerializer> work_serializer) override {
|
919
875
|
GrpcPolledFdWindows* polled_fd = sock_to_polled_fd_map_.LookupPolledFd(as);
|
920
876
|
// Set a flag so that the virtual socket "close" method knows it
|
921
877
|
// doesn't need to call ShutdownLocked, since now the driver will.
|
@@ -933,8 +889,9 @@ class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
|
933
889
|
};
|
934
890
|
|
935
891
|
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
936
|
-
|
937
|
-
return absl::make_unique<GrpcPolledFdFactoryWindows>(
|
892
|
+
std::shared_ptr<WorkSerializer> work_serializer) {
|
893
|
+
return absl::make_unique<GrpcPolledFdFactoryWindows>(
|
894
|
+
std::move(work_serializer));
|
938
895
|
}
|
939
896
|
|
940
897
|
} // namespace grpc_core
|