grpc 1.30.2 → 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 +560 -619
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -265
- 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 +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +376 -68
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- 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/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- 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_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -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.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- 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 +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- 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.h +7 -7
- 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.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- 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.h +4 -5
- 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.h +137 -117
- 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.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -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.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -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.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- 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.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- 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 +1 -1
- 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.h +9 -10
- 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.h +36 -31
- 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 +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- 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.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -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.h +234 -199
- 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.h +13 -13
- 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.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- 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.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- 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.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 +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- 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.h +5 -6
- 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.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- 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/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- 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 +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- 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_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- 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 +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- 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.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- 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_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +102 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- 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/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- 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/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- 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 +41 -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 +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- 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 +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- 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 +40 -37
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -24,11 +24,13 @@
|
|
24
24
|
#include <inttypes.h>
|
25
25
|
#include <string.h>
|
26
26
|
|
27
|
+
#include <string>
|
28
|
+
|
29
|
+
#include "absl/strings/str_cat.h"
|
27
30
|
#include "absl/strings/str_format.h"
|
28
31
|
|
29
32
|
#include <grpc/support/alloc.h>
|
30
33
|
#include <grpc/support/log.h>
|
31
|
-
#include <grpc/support/string_util.h>
|
32
34
|
|
33
35
|
#include "src/core/lib/gpr/string.h"
|
34
36
|
#include "src/core/lib/gprpp/host_port.h"
|
@@ -212,8 +214,8 @@ void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port) {
|
|
212
214
|
grpc_sockaddr_set_port(out, port);
|
213
215
|
}
|
214
216
|
|
215
|
-
|
216
|
-
if (resolved_addr->len == 0) return
|
217
|
+
std::string grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
|
218
|
+
if (resolved_addr->len == 0) return "";
|
217
219
|
grpc_resolved_address addr_normalized;
|
218
220
|
if (grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
|
219
221
|
resolved_addr = &addr_normalized;
|
@@ -224,9 +226,9 @@ char* grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
|
|
224
226
|
}
|
225
227
|
std::string path =
|
226
228
|
grpc_sockaddr_to_string(resolved_addr, false /* normalize */);
|
227
|
-
|
229
|
+
std::string uri_str;
|
228
230
|
if (scheme != nullptr) {
|
229
|
-
|
231
|
+
uri_str = absl::StrCat(scheme, ":", path);
|
230
232
|
}
|
231
233
|
return uri_str;
|
232
234
|
}
|
@@ -69,7 +69,7 @@ std::string grpc_sockaddr_to_string(const grpc_resolved_address* addr,
|
|
69
69
|
void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port);
|
70
70
|
|
71
71
|
/* Returns the URI string corresponding to \a addr */
|
72
|
-
|
72
|
+
std::string grpc_sockaddr_to_uri(const grpc_resolved_address* addr);
|
73
73
|
|
74
74
|
/* Returns the URI scheme corresponding to \a addr */
|
75
75
|
const char* grpc_sockaddr_get_uri_scheme(const grpc_resolved_address* addr);
|
@@ -260,6 +260,27 @@ static int g_default_server_tcp_user_timeout_ms =
|
|
260
260
|
static bool g_default_client_tcp_user_timeout_enabled = false;
|
261
261
|
static bool g_default_server_tcp_user_timeout_enabled = true;
|
262
262
|
|
263
|
+
#if GPR_LINUX == 1
|
264
|
+
// For Linux, it will be detected to support TCP_USER_TIMEOUT
|
265
|
+
#ifndef TCP_USER_TIMEOUT
|
266
|
+
#define TCP_USER_TIMEOUT 18
|
267
|
+
#endif
|
268
|
+
#define SOCKET_SUPPORTS_TCP_USER_TIMEOUT_DEFAULT 0
|
269
|
+
#else
|
270
|
+
// For non-Linux, TCP_USER_TIMEOUT will be used if TCP_USER_TIMEOUT is defined.
|
271
|
+
#ifdef TCP_USER_TIMEOUT
|
272
|
+
#define SOCKET_SUPPORTS_TCP_USER_TIMEOUT_DEFAULT 0
|
273
|
+
#else
|
274
|
+
#define TCP_USER_TIMEOUT 0
|
275
|
+
#define SOCKET_SUPPORTS_TCP_USER_TIMEOUT_DEFAULT -1
|
276
|
+
#endif // TCP_USER_TIMEOUT
|
277
|
+
#endif // GPR_LINUX == 1
|
278
|
+
|
279
|
+
// Whether the socket supports TCP_USER_TIMEOUT option.
|
280
|
+
// (0: don't know, 1: support, -1: not support)
|
281
|
+
static std::atomic<int> g_socket_supports_tcp_user_timeout(
|
282
|
+
SOCKET_SUPPORTS_TCP_USER_TIMEOUT_DEFAULT);
|
283
|
+
|
263
284
|
void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client) {
|
264
285
|
if (is_client) {
|
265
286
|
g_default_client_tcp_user_timeout_enabled = enable;
|
@@ -281,68 +302,87 @@ grpc_error* grpc_set_socket_tcp_user_timeout(
|
|
281
302
|
(void)fd;
|
282
303
|
(void)channel_args;
|
283
304
|
(void)is_client;
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
305
|
+
extern grpc_core::TraceFlag grpc_tcp_trace;
|
306
|
+
if (g_socket_supports_tcp_user_timeout.load() >= 0) {
|
307
|
+
bool enable;
|
308
|
+
int timeout;
|
309
|
+
if (is_client) {
|
310
|
+
enable = g_default_client_tcp_user_timeout_enabled;
|
311
|
+
timeout = g_default_client_tcp_user_timeout_ms;
|
312
|
+
} else {
|
313
|
+
enable = g_default_server_tcp_user_timeout_enabled;
|
314
|
+
timeout = g_default_server_tcp_user_timeout_ms;
|
315
|
+
}
|
316
|
+
if (channel_args) {
|
317
|
+
for (unsigned int i = 0; i < channel_args->num_args; i++) {
|
318
|
+
if (0 ==
|
319
|
+
strcmp(channel_args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
|
320
|
+
const int value = grpc_channel_arg_get_integer(
|
321
|
+
&channel_args->args[i], grpc_integer_options{0, 1, INT_MAX});
|
322
|
+
/* Continue using default if value is 0 */
|
323
|
+
if (value == 0) {
|
324
|
+
continue;
|
325
|
+
}
|
326
|
+
/* Disable if value is INT_MAX */
|
327
|
+
enable = value != INT_MAX;
|
328
|
+
} else if (0 == strcmp(channel_args->args[i].key,
|
329
|
+
GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
|
330
|
+
const int value = grpc_channel_arg_get_integer(
|
331
|
+
&channel_args->args[i], grpc_integer_options{0, 1, INT_MAX});
|
332
|
+
/* Continue using default if value is 0 */
|
333
|
+
if (value == 0) {
|
334
|
+
continue;
|
335
|
+
}
|
336
|
+
timeout = value;
|
302
337
|
}
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
338
|
+
}
|
339
|
+
}
|
340
|
+
if (enable) {
|
341
|
+
int newval;
|
342
|
+
socklen_t len = sizeof(newval);
|
343
|
+
// If this is the first time to use TCP_USER_TIMEOUT, try to check
|
344
|
+
// if it is available.
|
345
|
+
if (g_socket_supports_tcp_user_timeout.load() == 0) {
|
346
|
+
if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
|
347
|
+
gpr_log(GPR_INFO,
|
348
|
+
"TCP_USER_TIMEOUT is not available. TCP_USER_TIMEOUT won't "
|
349
|
+
"be used thereafter");
|
350
|
+
g_socket_supports_tcp_user_timeout.store(-1);
|
351
|
+
} else {
|
352
|
+
gpr_log(GPR_INFO,
|
353
|
+
"TCP_USER_TIMEOUT is available. TCP_USER_TIMEOUT will be "
|
354
|
+
"used thereafter");
|
355
|
+
g_socket_supports_tcp_user_timeout.store(1);
|
356
|
+
}
|
357
|
+
}
|
358
|
+
if (g_socket_supports_tcp_user_timeout.load() > 0) {
|
359
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
360
|
+
gpr_log(GPR_INFO, "Enabling TCP_USER_TIMEOUT with a timeout of %d ms",
|
361
|
+
timeout);
|
362
|
+
}
|
363
|
+
if (0 != setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
|
364
|
+
sizeof(timeout))) {
|
365
|
+
gpr_log(GPR_ERROR, "setsockopt(TCP_USER_TIMEOUT) %s",
|
366
|
+
strerror(errno));
|
367
|
+
return GRPC_ERROR_NONE;
|
368
|
+
}
|
369
|
+
if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
|
370
|
+
gpr_log(GPR_ERROR, "getsockopt(TCP_USER_TIMEOUT) %s",
|
371
|
+
strerror(errno));
|
372
|
+
return GRPC_ERROR_NONE;
|
373
|
+
}
|
374
|
+
if (newval != timeout) {
|
375
|
+
/* Do not fail on failing to set TCP_USER_TIMEOUT for now. */
|
376
|
+
gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT");
|
377
|
+
return GRPC_ERROR_NONE;
|
312
378
|
}
|
313
|
-
timeout = value;
|
314
379
|
}
|
315
380
|
}
|
316
|
-
}
|
317
|
-
if (enable) {
|
318
|
-
extern grpc_core::TraceFlag grpc_tcp_trace;
|
381
|
+
} else {
|
319
382
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
320
|
-
gpr_log(GPR_INFO, "
|
321
|
-
timeout);
|
322
|
-
}
|
323
|
-
int newval;
|
324
|
-
socklen_t len = sizeof(newval);
|
325
|
-
if (0 != setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
|
326
|
-
sizeof(timeout))) {
|
327
|
-
gpr_log(GPR_ERROR, "setsockopt(TCP_USER_TIMEOUT) %s", strerror(errno));
|
328
|
-
return GRPC_ERROR_NONE;
|
383
|
+
gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform");
|
329
384
|
}
|
330
|
-
if (0 != getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
|
331
|
-
gpr_log(GPR_ERROR, "getsockopt(TCP_USER_TIMEOUT) %s", strerror(errno));
|
332
|
-
return GRPC_ERROR_NONE;
|
333
|
-
}
|
334
|
-
if (newval != timeout) {
|
335
|
-
/* Do not fail on failing to set TCP_USER_TIMEOUT for now. */
|
336
|
-
gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT");
|
337
|
-
return GRPC_ERROR_NONE;
|
338
|
-
}
|
339
|
-
}
|
340
|
-
#else
|
341
|
-
extern grpc_core::TraceFlag grpc_tcp_trace;
|
342
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
343
|
-
gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform");
|
344
385
|
}
|
345
|
-
#endif /* GRPC_HAVE_TCP_USER_TIMEOUT */
|
346
386
|
return GRPC_ERROR_NONE;
|
347
387
|
}
|
348
388
|
|
@@ -27,10 +27,11 @@
|
|
27
27
|
// must be included after winsock2.h
|
28
28
|
#include <mswsock.h>
|
29
29
|
|
30
|
+
#include "absl/strings/str_format.h"
|
31
|
+
|
30
32
|
#include <grpc/support/alloc.h>
|
31
33
|
#include <grpc/support/log.h>
|
32
34
|
#include <grpc/support/log_windows.h>
|
33
|
-
#include <grpc/support/string_util.h>
|
34
35
|
|
35
36
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
36
37
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
@@ -42,14 +43,12 @@
|
|
42
43
|
static DWORD s_wsa_socket_flags;
|
43
44
|
|
44
45
|
grpc_winsocket* grpc_winsocket_create(SOCKET socket, const char* name) {
|
45
|
-
char* final_name;
|
46
46
|
grpc_winsocket* r = (grpc_winsocket*)gpr_malloc(sizeof(grpc_winsocket));
|
47
47
|
memset(r, 0, sizeof(grpc_winsocket));
|
48
48
|
r->socket = socket;
|
49
49
|
gpr_mu_init(&r->state_mu);
|
50
|
-
|
51
|
-
|
52
|
-
gpr_free(final_name);
|
50
|
+
grpc_iomgr_register_object(
|
51
|
+
&r->iomgr_object, absl::StrFormat("%s:socket=0x%p", name, r).c_str());
|
53
52
|
grpc_iocp_add_socket(r);
|
54
53
|
return r;
|
55
54
|
}
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
48
48
|
|
49
|
-
|
49
|
+
struct CFStreamConnect {
|
50
50
|
gpr_mu mu;
|
51
51
|
gpr_refcount refcount;
|
52
52
|
|
@@ -65,9 +65,9 @@ typedef struct CFStreamConnect {
|
|
65
65
|
grpc_closure* closure;
|
66
66
|
grpc_endpoint** endpoint;
|
67
67
|
int refs;
|
68
|
-
|
68
|
+
std::string addr_name;
|
69
69
|
grpc_resource_quota* resource_quota;
|
70
|
-
}
|
70
|
+
};
|
71
71
|
|
72
72
|
static void CFStreamConnectCleanup(CFStreamConnect* connect) {
|
73
73
|
grpc_resource_quota_unref_internal(connect->resource_quota);
|
@@ -75,8 +75,7 @@ static void CFStreamConnectCleanup(CFStreamConnect* connect) {
|
|
75
75
|
CFRelease(connect->read_stream);
|
76
76
|
CFRelease(connect->write_stream);
|
77
77
|
gpr_mu_destroy(&connect->mu);
|
78
|
-
|
79
|
-
gpr_free(connect);
|
78
|
+
delete connect;
|
80
79
|
}
|
81
80
|
|
82
81
|
static void OnAlarm(void* arg, grpc_error* error) {
|
@@ -130,8 +129,9 @@ static void OnOpen(void* arg, grpc_error* error) {
|
|
130
129
|
}
|
131
130
|
if (error == GRPC_ERROR_NONE) {
|
132
131
|
*endpoint = grpc_cfstream_endpoint_create(
|
133
|
-
connect->read_stream, connect->write_stream,
|
134
|
-
connect->
|
132
|
+
connect->read_stream, connect->write_stream,
|
133
|
+
connect->addr_name.c_str(), connect->resource_quota,
|
134
|
+
connect->stream_handle);
|
135
135
|
}
|
136
136
|
} else {
|
137
137
|
GRPC_ERROR_REF(error);
|
@@ -157,9 +157,7 @@ static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
|
|
157
157
|
const grpc_channel_args* channel_args,
|
158
158
|
const grpc_resolved_address* resolved_addr,
|
159
159
|
grpc_millis deadline) {
|
160
|
-
CFStreamConnect* connect;
|
161
|
-
|
162
|
-
connect = (CFStreamConnect*)gpr_zalloc(sizeof(CFStreamConnect));
|
160
|
+
CFStreamConnect* connect = new CFStreamConnect();
|
163
161
|
connect->closure = closure;
|
164
162
|
connect->endpoint = ep;
|
165
163
|
connect->addr_name = grpc_sockaddr_to_uri(resolved_addr);
|
@@ -170,7 +168,7 @@ static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
|
|
170
168
|
|
171
169
|
if (grpc_tcp_trace.enabled()) {
|
172
170
|
gpr_log(GPR_DEBUG, "CLIENT_CONNECT: %p, %s: asynchronously connecting",
|
173
|
-
connect, connect->addr_name);
|
171
|
+
connect, connect->addr_name.c_str());
|
174
172
|
}
|
175
173
|
|
176
174
|
grpc_resource_quota* resource_quota = grpc_resource_quota_create(NULL);
|
@@ -42,15 +42,14 @@ struct grpc_custom_tcp_connect {
|
|
42
42
|
grpc_closure* closure;
|
43
43
|
grpc_endpoint** endpoint;
|
44
44
|
int refs;
|
45
|
-
|
45
|
+
std::string addr_name;
|
46
46
|
grpc_resource_quota* resource_quota;
|
47
47
|
};
|
48
48
|
|
49
49
|
static void custom_tcp_connect_cleanup(grpc_custom_tcp_connect* connect) {
|
50
50
|
grpc_custom_socket* socket = connect->socket;
|
51
51
|
grpc_resource_quota_unref_internal(connect->resource_quota);
|
52
|
-
|
53
|
-
gpr_free(connect);
|
52
|
+
delete connect;
|
54
53
|
socket->refs--;
|
55
54
|
if (socket->refs == 0) {
|
56
55
|
grpc_custom_socket_vtable->destroy(socket);
|
@@ -67,7 +66,7 @@ static void on_alarm(void* acp, grpc_error* error) {
|
|
67
66
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
68
67
|
const char* str = grpc_error_string(error);
|
69
68
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
70
|
-
connect->addr_name, str);
|
69
|
+
connect->addr_name.c_str(), str);
|
71
70
|
}
|
72
71
|
if (error == GRPC_ERROR_NONE) {
|
73
72
|
/* error == NONE implies that the timer ran out, and wasn't cancelled. If
|
@@ -89,7 +88,7 @@ static void custom_connect_callback_internal(grpc_custom_socket* socket,
|
|
89
88
|
grpc_timer_cancel(&connect->alarm);
|
90
89
|
if (error == GRPC_ERROR_NONE) {
|
91
90
|
*connect->endpoint = custom_tcp_endpoint_create(
|
92
|
-
socket, connect->resource_quota, connect->addr_name);
|
91
|
+
socket, connect->resource_quota, connect->addr_name.c_str());
|
93
92
|
}
|
94
93
|
done = (--connect->refs == 0);
|
95
94
|
if (done) {
|
@@ -120,7 +119,6 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
120
119
|
GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
|
121
120
|
(void)channel_args;
|
122
121
|
(void)interested_parties;
|
123
|
-
grpc_custom_tcp_connect* connect;
|
124
122
|
grpc_resource_quota* resource_quota = grpc_resource_quota_create(nullptr);
|
125
123
|
if (channel_args != nullptr) {
|
126
124
|
for (size_t i = 0; i < channel_args->num_args; i++) {
|
@@ -135,8 +133,7 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
135
133
|
(grpc_custom_socket*)gpr_malloc(sizeof(grpc_custom_socket));
|
136
134
|
socket->refs = 2;
|
137
135
|
grpc_custom_socket_vtable->init(socket, GRPC_AF_UNSPEC);
|
138
|
-
connect =
|
139
|
-
(grpc_custom_tcp_connect*)gpr_malloc(sizeof(grpc_custom_tcp_connect));
|
136
|
+
grpc_custom_tcp_connect* connect = new grpc_custom_tcp_connect();
|
140
137
|
connect->closure = closure;
|
141
138
|
connect->endpoint = ep;
|
142
139
|
connect->addr_name = grpc_sockaddr_to_uri(resolved_addr);
|
@@ -149,7 +146,7 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
149
146
|
|
150
147
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
151
148
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %p %s: asynchronously connecting",
|
152
|
-
socket, connect->addr_name);
|
149
|
+
socket, connect->addr_name.c_str());
|
153
150
|
}
|
154
151
|
|
155
152
|
GRPC_CLOSURE_INIT(&connect->on_alarm, on_alarm, socket,
|
@@ -29,9 +29,10 @@
|
|
29
29
|
#include <string.h>
|
30
30
|
#include <unistd.h>
|
31
31
|
|
32
|
+
#include "absl/strings/str_cat.h"
|
33
|
+
|
32
34
|
#include <grpc/support/alloc.h>
|
33
35
|
#include <grpc/support/log.h>
|
34
|
-
#include <grpc/support/string_util.h>
|
35
36
|
#include <grpc/support/time.h>
|
36
37
|
|
37
38
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -57,11 +58,12 @@ struct async_connect {
|
|
57
58
|
int refs;
|
58
59
|
grpc_closure write_closure;
|
59
60
|
grpc_pollset_set* interested_parties;
|
60
|
-
|
61
|
+
std::string addr_str;
|
61
62
|
grpc_endpoint** ep;
|
62
63
|
grpc_closure* closure;
|
63
64
|
grpc_channel_args* channel_args;
|
64
65
|
};
|
66
|
+
|
65
67
|
static grpc_error* prepare_socket(const grpc_resolved_address* addr, int fd,
|
66
68
|
const grpc_channel_args* channel_args) {
|
67
69
|
grpc_error* err = GRPC_ERROR_NONE;
|
@@ -102,8 +104,8 @@ static void tc_on_alarm(void* acp, grpc_error* error) {
|
|
102
104
|
async_connect* ac = static_cast<async_connect*>(acp);
|
103
105
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
104
106
|
const char* str = grpc_error_string(error);
|
105
|
-
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
106
|
-
str);
|
107
|
+
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
|
108
|
+
ac->addr_str.c_str(), str);
|
107
109
|
}
|
108
110
|
gpr_mu_lock(&ac->mu);
|
109
111
|
if (ac->fd != nullptr) {
|
@@ -114,9 +116,8 @@ static void tc_on_alarm(void* acp, grpc_error* error) {
|
|
114
116
|
gpr_mu_unlock(&ac->mu);
|
115
117
|
if (done) {
|
116
118
|
gpr_mu_destroy(&ac->mu);
|
117
|
-
gpr_free(ac->addr_str);
|
118
119
|
grpc_channel_args_destroy(ac->channel_args);
|
119
|
-
|
120
|
+
delete ac;
|
120
121
|
}
|
121
122
|
}
|
122
123
|
|
@@ -139,8 +140,8 @@ static void on_writable(void* acp, grpc_error* error) {
|
|
139
140
|
|
140
141
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
141
142
|
const char* str = grpc_error_string(error);
|
142
|
-
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
|
143
|
-
str);
|
143
|
+
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
|
144
|
+
ac->addr_str.c_str(), str);
|
144
145
|
}
|
145
146
|
|
146
147
|
gpr_mu_lock(&ac->mu);
|
@@ -172,7 +173,8 @@ static void on_writable(void* acp, grpc_error* error) {
|
|
172
173
|
switch (so_error) {
|
173
174
|
case 0:
|
174
175
|
grpc_pollset_set_del_fd(ac->interested_parties, fd);
|
175
|
-
*ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args,
|
176
|
+
*ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args,
|
177
|
+
ac->addr_str.c_str());
|
176
178
|
fd = nullptr;
|
177
179
|
break;
|
178
180
|
case ENOBUFS:
|
@@ -214,19 +216,17 @@ finish:
|
|
214
216
|
done = (--ac->refs == 0);
|
215
217
|
// Create a copy of the data from "ac" to be accessed after the unlock, as
|
216
218
|
// "ac" and its contents may be deallocated by the time they are read.
|
217
|
-
const grpc_slice addr_str_slice =
|
219
|
+
const grpc_slice addr_str_slice = grpc_slice_from_cpp_string(ac->addr_str);
|
218
220
|
gpr_mu_unlock(&ac->mu);
|
219
221
|
if (error != GRPC_ERROR_NONE) {
|
220
|
-
char* error_descr;
|
221
222
|
grpc_slice str;
|
222
223
|
bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
|
223
224
|
GPR_ASSERT(ret);
|
224
|
-
|
225
|
-
|
226
|
-
error =
|
227
|
-
|
228
|
-
|
229
|
-
gpr_free(desc);
|
225
|
+
std::string description = absl::StrCat("Failed to connect to remote host: ",
|
226
|
+
grpc_core::StringViewFromSlice(str));
|
227
|
+
error =
|
228
|
+
grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION,
|
229
|
+
grpc_slice_from_cpp_string(std::move(description)));
|
230
230
|
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
231
231
|
addr_str_slice /* takes ownership */);
|
232
232
|
} else {
|
@@ -236,9 +236,8 @@ finish:
|
|
236
236
|
// This is safe even outside the lock, because "done", the sentinel, is
|
237
237
|
// populated *inside* the lock.
|
238
238
|
gpr_mu_destroy(&ac->mu);
|
239
|
-
gpr_free(ac->addr_str);
|
240
239
|
grpc_channel_args_destroy(ac->channel_args);
|
241
|
-
|
240
|
+
delete ac;
|
242
241
|
}
|
243
242
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
244
243
|
}
|
@@ -279,33 +278,25 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
279
278
|
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
280
279
|
grpc_millis deadline, grpc_endpoint** ep) {
|
281
280
|
int err;
|
282
|
-
async_connect* ac;
|
283
281
|
do {
|
284
282
|
err = connect(fd, reinterpret_cast<const grpc_sockaddr*>(addr->addr),
|
285
283
|
addr->len);
|
286
284
|
} while (err < 0 && errno == EINTR);
|
287
285
|
|
288
|
-
|
289
|
-
|
290
|
-
addr_str = grpc_sockaddr_to_uri(addr);
|
291
|
-
gpr_asprintf(&name, "tcp-client:%s", addr_str);
|
292
|
-
grpc_fd* fdobj = grpc_fd_create(fd, name, true);
|
293
|
-
gpr_free(name);
|
294
|
-
gpr_free(addr_str);
|
286
|
+
std::string name = absl::StrCat("tcp-client:", grpc_sockaddr_to_uri(addr));
|
287
|
+
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
295
288
|
|
296
289
|
if (err >= 0) {
|
297
|
-
|
298
|
-
|
299
|
-
gpr_free(addr_str);
|
290
|
+
*ep = grpc_tcp_client_create_from_fd(fdobj, channel_args,
|
291
|
+
grpc_sockaddr_to_uri(addr).c_str());
|
300
292
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
301
293
|
return;
|
302
294
|
}
|
303
295
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
304
296
|
grpc_error* error = GRPC_OS_ERROR(errno, "connect");
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
gpr_free(addr_str);
|
297
|
+
error = grpc_error_set_str(
|
298
|
+
error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
299
|
+
grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr)));
|
309
300
|
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
|
310
301
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
311
302
|
return;
|
@@ -313,7 +304,7 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
313
304
|
|
314
305
|
grpc_pollset_set_add_fd(interested_parties, fdobj);
|
315
306
|
|
316
|
-
ac =
|
307
|
+
async_connect* ac = new async_connect();
|
317
308
|
ac->closure = closure;
|
318
309
|
ac->ep = ep;
|
319
310
|
ac->fd = fdobj;
|
@@ -327,7 +318,7 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
327
318
|
|
328
319
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
329
320
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: asynchronously connecting fd %p",
|
330
|
-
ac->addr_str, fdobj);
|
321
|
+
ac->addr_str.c_str(), fdobj);
|
331
322
|
}
|
332
323
|
|
333
324
|
gpr_mu_lock(&ac->mu);
|