grpc 1.21.0 → 1.32.0
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 +2516 -19950
- data/etc/roots.pem +44 -100
- data/include/grpc/grpc.h +3 -1
- data/include/grpc/grpc_security.h +238 -55
- data/include/grpc/grpc_security_constants.h +32 -1
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/gpr_types.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +61 -13
- data/include/grpc/impl/codegen/port_platform.h +74 -30
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/include/grpc/module.modulemap +25 -37
- data/include/grpc/slice.h +2 -2
- data/include/grpc/support/alloc.h +0 -16
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +84 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +36 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +10 -8
- data/src/core/ext/filters/client_channel/backup_poller.h +5 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +18 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +1516 -742
- data/src/core/ext/filters/client_channel/client_channel.h +25 -9
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +50 -139
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +15 -39
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -9
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -13
- 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/connector.h +42 -39
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +34 -12
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +75 -115
- data/src/core/ext/filters/client_channel/health/health_check_client.h +8 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +75 -46
- data/src/core/ext/filters/client_channel/http_proxy.cc +126 -120
- data/src/core/ext/filters/client_channel/http_proxy.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +35 -35
- data/src/core/ext/filters/client_channel/lb_policy.h +225 -152
- 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 +299 -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/client_load_reporting_filter.cc +41 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +635 -734
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +7 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +9 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +33 -49
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +7 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +157 -271
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +42 -58
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +113 -166
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +890 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +61 -101
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +116 -260
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +423 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +946 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +537 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +1141 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +53 -77
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +3 -3
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +8 -8
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/proxy_mapper.h +14 -34
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +46 -79
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +23 -17
- data/src/core/ext/filters/client_channel/resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver.h +19 -37
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +156 -130
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +74 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +15 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +33 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +16 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +476 -129
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +231 -193
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +6 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +73 -48
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +165 -116
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +45 -29
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +536 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +11 -11
- data/src/core/ext/filters/client_channel/resolver_registry.cc +39 -24
- data/src/core/ext/filters/client_channel/resolver_registry.h +17 -12
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +251 -313
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +28 -26
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +100 -325
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +48 -53
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +2 -6
- data/src/core/ext/filters/client_channel/server_address.cc +40 -14
- data/src/core/ext/filters/client_channel/server_address.h +45 -15
- data/src/core/ext/filters/client_channel/service_config.cc +143 -253
- data/src/core/ext/filters/client_channel/service_config.h +47 -131
- 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 +436 -288
- data/src/core/ext/filters/client_channel/subchannel.h +181 -53
- data/src/core/ext/filters/client_channel/subchannel_interface.h +94 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +440 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +30 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +66 -70
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -21
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +335 -301
- 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/http/server/http_server_filter.cc +66 -39
- data/src/core/ext/filters/max_age/max_age_filter.cc +72 -60
- data/src/core/ext/filters/message_size/message_size_filter.cc +116 -144
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -6
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +19 -17
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +193 -171
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +48 -1
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +29 -25
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +44 -64
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +384 -305
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +10 -16
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +640 -560
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/context_list.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +26 -31
- data/src/core/ext/transport/chttp2/transport/flow_control.h +28 -38
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +45 -54
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +21 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +9 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +13 -12
- 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 +531 -348
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +26 -15
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +213 -143
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +11 -4
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +41 -196
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +62 -18
- 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/incoming_metadata.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +64 -47
- data/src/core/ext/transport/chttp2/transport/parsing.cc +148 -162
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +28 -18
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +38 -30
- data/src/core/ext/transport/inproc/inproc_transport.cc +164 -114
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +29 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +17 -0
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +29 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +18 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +29 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +66 -0
- data/src/core/ext/upb-generated/google/api/http.upb.h +191 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +486 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1722 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +22 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +49 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +79 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +194 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +27 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +57 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +106 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +237 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +33 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +74 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +49 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +113 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +212 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +672 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +42 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +110 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +36 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +83 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +141 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +396 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +103 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +29 -0
- 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/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +117 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +448 -0
- data/src/core/ext/upb-generated/validate/validate.upb.h +2074 -0
- data/src/core/ext/xds/xds_api.cc +2388 -0
- data/src/core/ext/xds/xds_api.h +360 -0
- data/src/core/ext/xds/xds_bootstrap.cc +373 -0
- data/src/core/ext/xds/xds_bootstrap.h +93 -0
- data/src/core/ext/xds/xds_channel.h +46 -0
- data/src/core/ext/xds/xds_channel_args.h +26 -0
- data/src/core/ext/xds/xds_channel_secure.cc +103 -0
- data/src/core/ext/xds/xds_client.cc +2114 -0
- data/src/core/ext/xds/xds_client.h +276 -0
- data/src/core/ext/xds/xds_client_stats.cc +115 -0
- data/src/core/ext/xds/xds_client_stats.h +211 -0
- data/src/core/lib/avl/avl.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +52 -14
- data/src/core/lib/channel/channel_args.h +41 -3
- data/src/core/lib/channel/channel_stack.cc +1 -1
- data/src/core/lib/channel/channel_stack.h +38 -18
- data/src/core/lib/channel/channel_trace.cc +32 -45
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +377 -318
- data/src/core/lib/channel/channelz.h +128 -90
- data/src/core/lib/channel/channelz_registry.cc +123 -178
- data/src/core/lib/channel/channelz_registry.h +14 -32
- data/src/core/lib/channel/connected_channel.cc +28 -25
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/handshaker.cc +18 -14
- data/src/core/lib/channel/handshaker.h +7 -6
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/channel/handshaker_registry.cc +9 -21
- data/src/core/lib/channel/handshaker_registry.h +3 -3
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/compression.cc +16 -11
- data/src/core/lib/compression/compression_args.cc +13 -6
- data/src/core/lib/compression/compression_args.h +3 -2
- data/src/core/lib/compression/compression_internal.cc +15 -11
- data/src/core/lib/compression/compression_internal.h +9 -1
- data/src/core/lib/compression/message_compress.cc +8 -3
- data/src/core/lib/compression/stream_compression.cc +3 -2
- data/src/core/lib/compression/stream_compression.h +2 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
- data/src/core/lib/compression/stream_compression_identity.cc +5 -7
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gpr/alloc.cc +4 -29
- data/src/core/lib/gpr/cpu_linux.cc +1 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +10 -21
- data/src/core/lib/gpr/env_posix.cc +0 -5
- data/src/core/lib/gpr/log_linux.cc +8 -10
- data/src/core/lib/gpr/log_posix.cc +7 -9
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +25 -36
- data/src/core/lib/gpr/string.h +11 -19
- data/src/core/lib/gpr/sync_abseil.cc +116 -0
- data/src/core/lib/gpr/sync_posix.cc +10 -142
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +123 -36
- data/src/core/lib/gpr/time_precise.h +37 -0
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/atomic.h +10 -6
- data/src/core/lib/gprpp/debug_location.h +3 -2
- data/src/core/lib/gprpp/fork.cc +19 -26
- data/src/core/lib/gprpp/fork.h +18 -3
- data/src/core/lib/gprpp/global_config.h +9 -0
- data/src/core/lib/gprpp/global_config_custom.h +1 -1
- data/src/core/lib/gprpp/global_config_env.cc +15 -13
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/host_port.cc +112 -0
- data/src/core/lib/gprpp/host_port.h +56 -0
- data/src/core/lib/gprpp/map.h +16 -382
- data/src/core/lib/gprpp/memory.h +12 -75
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +9 -14
- data/src/core/lib/gprpp/ref_counted.h +97 -44
- data/src/core/lib/gprpp/ref_counted_ptr.h +8 -1
- data/src/core/lib/gprpp/sync.h +9 -0
- data/src/core/lib/gprpp/thd.h +13 -6
- data/src/core/lib/gprpp/thd_posix.cc +29 -3
- data/src/core/lib/gprpp/thd_windows.cc +12 -4
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +18 -16
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +27 -21
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.cc +45 -40
- data/src/core/lib/iomgr/buffer_list.h +27 -27
- data/src/core/lib/iomgr/call_combiner.cc +12 -12
- data/src/core/lib/iomgr/call_combiner.h +10 -8
- data/src/core/lib/iomgr/cfstream_handle.cc +11 -3
- data/src/core/lib/iomgr/cfstream_handle.h +11 -3
- data/src/core/lib/iomgr/closure.h +43 -141
- data/src/core/lib/iomgr/combiner.cc +46 -90
- data/src/core/lib/iomgr/combiner.h +30 -8
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +41 -19
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +11 -11
- data/src/core/lib/iomgr/error.cc +26 -19
- data/src/core/lib/iomgr/error.h +15 -8
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- 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 +48 -47
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -94
- data/src/core/lib/iomgr/ev_poll_posix.cc +42 -26
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +3 -2
- data/src/core/lib/iomgr/ev_windows.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +78 -21
- data/src/core/lib/iomgr/exec_ctx.h +27 -7
- data/src/core/lib/iomgr/executor.cc +25 -41
- data/src/core/lib/iomgr/executor.h +7 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +183 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +175 -0
- data/src/core/lib/iomgr/executor/threadpool.cc +137 -0
- data/src/core/lib/iomgr/executor/threadpool.h +149 -0
- data/src/core/lib/iomgr/fork_posix.cc +8 -2
- data/src/core/lib/iomgr/iocp_windows.cc +2 -2
- data/src/core/lib/iomgr/iomgr.cc +4 -4
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +87 -9
- data/src/core/lib/iomgr/iomgr_uv.cc +3 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +13 -12
- data/src/core/lib/iomgr/parse_address.cc +238 -0
- data/src/core/lib/iomgr/parse_address.h +53 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/iomgr/pollset_uv.h +32 -0
- data/src/core/lib/iomgr/pollset_windows.cc +16 -2
- data/src/core/lib/iomgr/port.h +10 -22
- 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 +49 -68
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +20 -24
- data/src/core/lib/iomgr/resolve_address_windows.cc +22 -35
- data/src/core/lib/iomgr/resource_quota.cc +120 -110
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/sockaddr_utils.cc +33 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +12 -16
- 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 +140 -82
- data/src/core/lib/iomgr/socket_utils_posix.h +19 -0
- data/src/core/lib/iomgr/socket_windows.cc +6 -7
- data/src/core/lib/iomgr/socket_windows.h +1 -1
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +18 -21
- data/src/core/lib/iomgr/tcp_client_custom.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_posix.cc +47 -59
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +12 -13
- data/src/core/lib/iomgr/tcp_custom.cc +58 -36
- data/src/core/lib/iomgr/tcp_custom.h +4 -1
- data/src/core/lib/iomgr/tcp_posix.cc +697 -124
- data/src/core/lib/iomgr/tcp_server.cc +8 -4
- data/src/core/lib/iomgr/tcp_server.h +28 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +46 -41
- data/src/core/lib/iomgr/tcp_server_posix.cc +102 -46
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +6 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +17 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +33 -29
- data/src/core/lib/iomgr/tcp_uv.cc +8 -8
- data/src/core/lib/iomgr/tcp_windows.cc +49 -30
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer.h +2 -1
- data/src/core/lib/iomgr/timer_custom.cc +7 -5
- data/src/core/lib/iomgr/timer_generic.cc +26 -24
- data/src/core/lib/iomgr/timer_generic.h +39 -0
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +8 -30
- data/src/core/lib/iomgr/timer_manager.h +2 -0
- data/src/core/lib/iomgr/udp_server.cc +53 -53
- data/src/core/lib/iomgr/udp_server.h +11 -14
- 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/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +209 -68
- data/src/core/lib/json/json_reader.cc +508 -317
- data/src/core/lib/json/json_writer.cc +202 -110
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +10 -7
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +45 -57
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +26 -6
- data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -4
- data/src/core/lib/security/credentials/credentials.h +31 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +9 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -1
- 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 +74 -56
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +32 -58
- data/src/core/lib/security/credentials/jwt/json_token.h +5 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +19 -26
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +153 -170
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +332 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +27 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +31 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +43 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +70 -17
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +118 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +67 -32
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +64 -47
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +9 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +42 -16
- data/src/core/lib/security/security_connector/security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/security_connector.h +22 -20
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -62
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +150 -53
- data/src/core/lib/security/security_connector/ssl_utils.h +41 -17
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +32 -0
- data/src/core/lib/security/security_connector/ssl_utils_config.h +30 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +606 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
- data/src/core/lib/security/transport/auth_filters.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +74 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +16 -9
- data/src/core/lib/security/transport/security_handshaker.cc +103 -43
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +18 -17
- data/src/core/lib/security/util/json_util.cc +35 -15
- data/src/core/lib/security/util/json_util.h +5 -3
- data/src/core/lib/slice/b64.cc +3 -4
- data/src/core/lib/slice/b64.h +3 -4
- data/src/core/lib/slice/slice.cc +188 -73
- data/src/core/lib/slice/slice_buffer.cc +55 -26
- data/src/core/lib/slice/slice_intern.cc +164 -64
- data/src/core/lib/slice/slice_internal.h +110 -8
- data/src/core/lib/slice/slice_string_helpers.cc +10 -1
- data/src/core/lib/slice/slice_string_helpers.h +3 -1
- data/src/core/lib/slice/slice_utils.h +200 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +166 -117
- data/src/core/lib/surface/call.h +8 -8
- data/src/core/lib/surface/call_log_batch.cc +51 -60
- data/src/core/lib/surface/channel.cc +188 -137
- data/src/core/lib/surface/channel.h +91 -11
- data/src/core/lib/surface/channel_ping.cc +3 -4
- data/src/core/lib/surface/completion_queue.cc +144 -111
- data/src/core/lib/surface/completion_queue.h +6 -3
- data/src/core/lib/surface/completion_queue_factory.cc +1 -1
- 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 +6 -2
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +43 -30
- data/src/core/lib/surface/server.cc +1275 -1316
- data/src/core/lib/surface/server.h +373 -52
- data/src/core/lib/surface/validate_metadata.cc +18 -8
- data/src/core/lib/surface/validate_metadata.h +13 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/byte_stream.cc +5 -7
- data/src/core/lib/transport/byte_stream.h +13 -12
- data/src/core/lib/transport/connectivity_state.cc +118 -98
- data/src/core/lib/transport/connectivity_state.h +114 -50
- data/src/core/lib/transport/error_utils.cc +23 -1
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/metadata.cc +252 -57
- data/src/core/lib/transport/metadata.h +168 -80
- data/src/core/lib/transport/metadata_batch.cc +78 -16
- data/src/core/lib/transport/metadata_batch.h +40 -3
- data/src/core/lib/transport/static_metadata.cc +1169 -495
- data/src/core/lib/transport/static_metadata.h +279 -282
- data/src/core/lib/transport/status_conversion.cc +7 -15
- data/src/core/lib/transport/status_metadata.cc +8 -1
- data/src/core/lib/transport/status_metadata.h +18 -0
- data/src/core/lib/transport/timeout_encoding.cc +7 -0
- data/src/core/lib/transport/timeout_encoding.h +3 -2
- data/src/core/lib/transport/transport.cc +14 -13
- data/src/core/lib/transport/transport.h +48 -8
- data/src/core/lib/transport/transport_op_string.cc +67 -105
- data/src/core/lib/uri/uri_parser.cc +30 -35
- data/src/core/lib/uri/uri_parser.h +5 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +36 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +414 -120
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +293 -61
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +15 -5
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +10 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +76 -48
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +34 -26
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +22 -21
- data/src/core/tsi/fake_transport_security.h +2 -0
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +11 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -13
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -3
- data/src/core/tsi/ssl_transport_security.cc +345 -103
- data/src/core/tsi/ssl_transport_security.h +42 -11
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +13 -0
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +8 -3
- data/src/core/tsi/transport_security_interface.h +20 -3
- data/src/ruby/bin/math_pb.rb +5 -5
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +6 -0
- data/src/ruby/ext/grpc/extconf.rb +11 -2
- data/src/ruby/ext/grpc/rb_call.c +13 -4
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +61 -13
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +22 -0
- data/src/ruby/ext/grpc/rb_grpc.c +1 -42
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -6
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +28 -13
- data/src/ruby/lib/grpc.rb +2 -0
- data/src/ruby/lib/grpc/core/status_codes.rb +135 -0
- data/src/ruby/lib/grpc/errors.rb +107 -49
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +11 -12
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/google_rpc_status_utils.rb +9 -4
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/structs.rb +15 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +3 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +39 -13
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +43 -11
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/errors_spec.rb +1 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto +22 -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 +41 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +79 -29
- 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/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
- data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
- data/third_party/abseil-cpp/absl/base/casts.h +184 -0
- data/third_party/abseil-cpp/absl/base/config.h +671 -0
- data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
- data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
- data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
- data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
- data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
- data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
- data/third_party/abseil-cpp/absl/base/macros.h +220 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
- data/third_party/abseil-cpp/absl/base/options.h +211 -0
- data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
- data/third_party/abseil-cpp/absl/base/port.h +26 -0
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
- data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
- data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
- data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
- data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
- data/third_party/abseil-cpp/absl/strings/match.h +90 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
- data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
- data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
- data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
- data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
- data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
- data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
- data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- 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/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
- data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +776 -0
- data/third_party/abseil-cpp/absl/types/span.h +713 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
- data/third_party/boringssl-with-bazel/err_data.c +1451 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +123 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +195 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +88 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +420 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +305 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +286 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +313 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +151 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +446 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +105 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +97 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +91 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +664 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +466 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +700 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +206 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +118 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +470 -0
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +265 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +96 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +184 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +447 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +283 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +418 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +688 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +492 -0
- data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +810 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +201 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +574 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -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 +124 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +267 -0
- data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +99 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
- data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +58 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +443 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +547 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +484 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +269 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +273 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +255 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +221 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +194 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +213 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +236 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +122 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +445 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +200 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +236 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +886 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +378 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +704 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +186 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +341 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +104 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +364 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +620 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +128 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +89 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +268 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +776 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1180 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +633 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +153 -0
- 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 +175 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +255 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +256 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +301 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +167 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +202 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +200 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +96 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +202 -0
- 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 +163 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +695 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +716 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +371 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +343 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +348 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +373 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +261 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +138 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +316 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +530 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1336 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +45 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +30 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +53 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +431 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +59 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -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 → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +653 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +161 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +842 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +125 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +244 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +544 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +90 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +483 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +103 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +834 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +351 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +226 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +329 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +204 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2506 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +235 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +563 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +214 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +89 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +356 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +141 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +286 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +189 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +842 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +207 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +463 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +503 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +246 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +371 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +288 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +882 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +155 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +459 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +173 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +911 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +190 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +933 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +96 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +638 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +180 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +212 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +201 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +118 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +109 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1119 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +186 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +100 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +108 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +109 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +236 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +435 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +215 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +269 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +102 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +108 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +37 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +199 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5247 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +333 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +542 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +191 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +631 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +90 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1292 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +831 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +232 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +353 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +710 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1814 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3579 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +432 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1016 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +585 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +397 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3053 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1313 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +277 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +1358 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +386 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3895 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1027 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1104 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +705 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +621 -0
- data/third_party/upb/upb/decode.h +21 -0
- data/third_party/upb/upb/encode.c +420 -0
- data/third_party/upb/upb/encode.h +21 -0
- data/third_party/upb/upb/msg.c +177 -0
- data/third_party/upb/upb/msg.h +473 -0
- data/third_party/upb/upb/port.c +26 -0
- data/third_party/upb/upb/port_def.inc +179 -0
- data/third_party/upb/upb/port_undef.inc +28 -0
- data/third_party/upb/upb/table.c +880 -0
- data/third_party/upb/upb/table.int.h +466 -0
- data/third_party/upb/upb/upb.c +287 -0
- data/third_party/upb/upb/upb.h +308 -0
- data/third_party/upb/upb/upb.hpp +88 -0
- metadata +1054 -526
- data/src/boringssl/err_data.c +0 -1362
- data/src/core/ext/filters/client_channel/connector.cc +0 -41
- data/src/core/ext/filters/client_channel/health/health.pb.c +0 -23
- data/src/core/ext/filters/client_channel/health/health.pb.h +0 -73
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +0 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +0 -54
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +0 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +0 -54
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +0 -89
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +0 -164
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -2249
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel.h +0 -36
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_client_stats.cc +0 -85
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_client_stats.h +0 -72
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +0 -307
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -89
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -234
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +0 -48
- data/src/core/lib/gpr/host_port.cc +0 -98
- data/src/core/lib/gpr/host_port.h +0 -43
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -37
- data/src/core/lib/gprpp/inlined_vector.h +0 -200
- data/src/core/lib/gprpp/optional.h +0 -48
- data/src/core/lib/gprpp/pair.h +0 -38
- data/src/core/lib/json/json.cc +0 -94
- data/src/core/lib/json/json_common.h +0 -34
- data/src/core/lib/json/json_reader.h +0 -146
- data/src/core/lib/json/json_string.cc +0 -367
- data/src/core/lib/json/json_writer.h +0 -84
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +0 -129
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +0 -62
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +0 -426
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +0 -122
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -205
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -109
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +0 -520
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +0 -323
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +0 -145
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +0 -149
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -47
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +0 -63
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -122
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +0 -254
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -49
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +0 -78
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3006
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +0 -271
- data/third_party/boringssl/crypto/asn1/a_bool.c +0 -110
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +0 -297
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -111
- data/third_party/boringssl/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +0 -150
- data/third_party/boringssl/crypto/asn1/a_int.c +0 -479
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +0 -411
- data/third_party/boringssl/crypto/asn1/a_object.c +0 -275
- data/third_party/boringssl/crypto/asn1/a_strnid.c +0 -312
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -151
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +0 -442
- data/third_party/boringssl/crypto/asn1/asn_pack.c +0 -105
- data/third_party/boringssl/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl/crypto/asn1/f_int.c +0 -97
- data/third_party/boringssl/crypto/asn1/f_string.c +0 -91
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -662
- data/third_party/boringssl/crypto/base64/base64.c +0 -466
- data/third_party/boringssl/crypto/bio/bio.c +0 -636
- data/third_party/boringssl/crypto/bio/connect.c +0 -542
- data/third_party/boringssl/crypto/bio/fd.c +0 -276
- data/third_party/boringssl/crypto/bio/file.c +0 -315
- data/third_party/boringssl/crypto/bio/pair.c +0 -489
- data/third_party/boringssl/crypto/bio/socket.c +0 -202
- data/third_party/boringssl/crypto/bio/socket_helper.c +0 -114
- data/third_party/boringssl/crypto/bn_extra/convert.c +0 -466
- data/third_party/boringssl/crypto/buf/buf.c +0 -231
- data/third_party/boringssl/crypto/bytestring/ber.c +0 -261
- data/third_party/boringssl/crypto/bytestring/cbb.c +0 -668
- data/third_party/boringssl/crypto/bytestring/cbs.c +0 -618
- data/third_party/boringssl/crypto/bytestring/internal.h +0 -75
- data/third_party/boringssl/crypto/chacha/chacha.c +0 -167
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +0 -114
- data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +0 -203
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +0 -281
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -867
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +0 -326
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +0 -680
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/cmac/cmac.c +0 -241
- data/third_party/boringssl/crypto/conf/conf.c +0 -803
- data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -363
- data/third_party/boringssl/crypto/cpu-intel.c +0 -288
- data/third_party/boringssl/crypto/crypto.c +0 -198
- data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
- data/third_party/boringssl/crypto/dh/check.c +0 -217
- data/third_party/boringssl/crypto/dh/dh.c +0 -519
- data/third_party/boringssl/crypto/dsa/dsa.c +0 -946
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +0 -562
- data/third_party/boringssl/crypto/ecdh/ecdh.c +0 -162
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +0 -275
- data/third_party/boringssl/crypto/engine/engine.c +0 -98
- data/third_party/boringssl/crypto/err/err.c +0 -847
- data/third_party/boringssl/crypto/err/internal.h +0 -58
- data/third_party/boringssl/crypto/evp/evp.c +0 -362
- data/third_party/boringssl/crypto/evp/evp_asn1.c +0 -337
- data/third_party/boringssl/crypto/evp/evp_ctx.c +0 -446
- data/third_party/boringssl/crypto/evp/internal.h +0 -252
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +0 -268
- data/third_party/boringssl/crypto/evp/p_ec.c +0 -239
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +0 -256
- data/third_party/boringssl/crypto/evp/p_ed25519.c +0 -71
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +0 -190
- data/third_party/boringssl/crypto/evp/p_rsa.c +0 -634
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +0 -189
- data/third_party/boringssl/crypto/evp/scrypt.c +0 -209
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -1100
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -100
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -148
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +0 -428
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +0 -200
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +0 -303
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +0 -895
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1356
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -683
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -573
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -526
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +0 -185
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -876
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1154
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +0 -351
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +0 -231
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +0 -33
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +0 -364
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +0 -615
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1437
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +0 -233
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +0 -129
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +0 -88
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +0 -256
- data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +0 -268
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -974
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -453
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -270
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -337
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -373
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1104
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9503
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -447
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +0 -117
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -1046
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +0 -104
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -354
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -458
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +0 -27
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +0 -254
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +0 -298
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +0 -211
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +0 -234
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +0 -220
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -1063
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -388
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +0 -202
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -92
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -358
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -302
- data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +0 -692
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -875
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1218
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +0 -581
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +0 -375
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +0 -337
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -608
- data/third_party/boringssl/crypto/internal.h +0 -739
- data/third_party/boringssl/crypto/lhash/lhash.c +0 -336
- data/third_party/boringssl/crypto/mem.c +0 -235
- data/third_party/boringssl/crypto/obj/obj.c +0 -554
- data/third_party/boringssl/crypto/obj/obj_dat.h +0 -6244
- data/third_party/boringssl/crypto/pem/pem_all.c +0 -262
- data/third_party/boringssl/crypto/pem/pem_info.c +0 -379
- data/third_party/boringssl/crypto/pem/pem_lib.c +0 -776
- data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
- data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
- data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -227
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +0 -166
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -233
- data/third_party/boringssl/crypto/pkcs8/internal.h +0 -120
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +0 -307
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +0 -513
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +0 -789
- data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
- data/third_party/boringssl/crypto/pool/internal.h +0 -45
- data/third_party/boringssl/crypto/pool/pool.c +0 -200
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -48
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +0 -43
- data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
- data/third_party/boringssl/crypto/refcount_lock.c +0 -53
- data/third_party/boringssl/crypto/stack/stack.c +0 -380
- data/third_party/boringssl/crypto/thread_none.c +0 -59
- data/third_party/boringssl/crypto/thread_pthread.c +0 -206
- data/third_party/boringssl/crypto/thread_win.c +0 -237
- data/third_party/boringssl/crypto/x509/a_strex.c +0 -633
- data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
- data/third_party/boringssl/crypto/x509/algorithm.c +0 -153
- data/third_party/boringssl/crypto/x509/asn1_gen.c +0 -841
- data/third_party/boringssl/crypto/x509/by_dir.c +0 -451
- data/third_party/boringssl/crypto/x509/by_file.c +0 -274
- data/third_party/boringssl/crypto/x509/t_crl.c +0 -128
- data/third_party/boringssl/crypto/x509/t_req.c +0 -246
- data/third_party/boringssl/crypto/x509/t_x509.c +0 -547
- data/third_party/boringssl/crypto/x509/x509.c +0 -157
- data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
- data/third_party/boringssl/crypto/x509/x509_def.c +0 -103
- data/third_party/boringssl/crypto/x509/x509_lu.c +0 -725
- data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
- data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
- data/third_party/boringssl/crypto/x509/x509_req.c +0 -322
- data/third_party/boringssl/crypto/x509/x509_set.c +0 -164
- data/third_party/boringssl/crypto/x509/x509_trs.c +0 -326
- data/third_party/boringssl/crypto/x509/x509_txt.c +0 -205
- data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2476
- data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -670
- data/third_party/boringssl/crypto/x509/x509cset.c +0 -170
- data/third_party/boringssl/crypto/x509/x509name.c +0 -389
- data/third_party/boringssl/crypto/x509/x_all.c +0 -501
- data/third_party/boringssl/crypto/x509/x_crl.c +0 -541
- data/third_party/boringssl/crypto/x509/x_pubkey.c +0 -368
- data/third_party/boringssl/crypto/x509/x_sig.c +0 -69
- data/third_party/boringssl/crypto/x509/x_x509.c +0 -328
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +0 -143
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +0 -284
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +0 -188
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +0 -840
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +0 -204
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -623
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +0 -462
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +0 -502
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +0 -251
- data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +0 -370
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -287
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -866
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +0 -152
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1352
- data/third_party/boringssl/include/openssl/aead.h +0 -433
- data/third_party/boringssl/include/openssl/aes.h +0 -170
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -121
- data/third_party/boringssl/include/openssl/asn1.h +0 -981
- data/third_party/boringssl/include/openssl/base.h +0 -457
- data/third_party/boringssl/include/openssl/base64.h +0 -187
- data/third_party/boringssl/include/openssl/bio.h +0 -902
- data/third_party/boringssl/include/openssl/blowfish.h +0 -93
- data/third_party/boringssl/include/openssl/bn.h +0 -1019
- data/third_party/boringssl/include/openssl/buf.h +0 -137
- data/third_party/boringssl/include/openssl/bytestring.h +0 -505
- data/third_party/boringssl/include/openssl/cast.h +0 -96
- data/third_party/boringssl/include/openssl/cipher.h +0 -608
- data/third_party/boringssl/include/openssl/cmac.h +0 -87
- data/third_party/boringssl/include/openssl/conf.h +0 -183
- data/third_party/boringssl/include/openssl/cpu.h +0 -196
- data/third_party/boringssl/include/openssl/crypto.h +0 -122
- data/third_party/boringssl/include/openssl/curve25519.h +0 -201
- data/third_party/boringssl/include/openssl/dh.h +0 -298
- data/third_party/boringssl/include/openssl/digest.h +0 -316
- data/third_party/boringssl/include/openssl/dsa.h +0 -435
- data/third_party/boringssl/include/openssl/ec.h +0 -413
- data/third_party/boringssl/include/openssl/ec_key.h +0 -342
- data/third_party/boringssl/include/openssl/ecdh.h +0 -101
- data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
- data/third_party/boringssl/include/openssl/engine.h +0 -109
- data/third_party/boringssl/include/openssl/err.h +0 -458
- data/third_party/boringssl/include/openssl/evp.h +0 -873
- data/third_party/boringssl/include/openssl/hmac.h +0 -186
- data/third_party/boringssl/include/openssl/lhash.h +0 -174
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/include/openssl/md4.h +0 -106
- data/third_party/boringssl/include/openssl/md5.h +0 -107
- data/third_party/boringssl/include/openssl/mem.h +0 -156
- data/third_party/boringssl/include/openssl/nid.h +0 -4242
- data/third_party/boringssl/include/openssl/obj.h +0 -233
- data/third_party/boringssl/include/openssl/pem.h +0 -397
- data/third_party/boringssl/include/openssl/pkcs7.h +0 -82
- data/third_party/boringssl/include/openssl/pkcs8.h +0 -230
- data/third_party/boringssl/include/openssl/poly1305.h +0 -51
- data/third_party/boringssl/include/openssl/pool.h +0 -91
- data/third_party/boringssl/include/openssl/rand.h +0 -125
- data/third_party/boringssl/include/openssl/ripemd.h +0 -107
- data/third_party/boringssl/include/openssl/rsa.h +0 -756
- data/third_party/boringssl/include/openssl/sha.h +0 -256
- data/third_party/boringssl/include/openssl/span.h +0 -191
- data/third_party/boringssl/include/openssl/ssl.h +0 -4740
- data/third_party/boringssl/include/openssl/ssl3.h +0 -332
- data/third_party/boringssl/include/openssl/stack.h +0 -485
- data/third_party/boringssl/include/openssl/thread.h +0 -191
- data/third_party/boringssl/include/openssl/tls1.h +0 -618
- data/third_party/boringssl/include/openssl/type_check.h +0 -91
- data/third_party/boringssl/include/openssl/x509.h +0 -1180
- data/third_party/boringssl/include/openssl/x509_vfy.h +0 -614
- data/third_party/boringssl/include/openssl/x509v3.h +0 -827
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
- data/third_party/boringssl/ssl/d1_both.cc +0 -851
- data/third_party/boringssl/ssl/d1_lib.cc +0 -267
- data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
- data/third_party/boringssl/ssl/d1_srtp.cc +0 -232
- data/third_party/boringssl/ssl/dtls_method.cc +0 -193
- data/third_party/boringssl/ssl/dtls_record.cc +0 -353
- data/third_party/boringssl/ssl/handoff.cc +0 -285
- data/third_party/boringssl/ssl/handshake.cc +0 -630
- data/third_party/boringssl/ssl/handshake_client.cc +0 -1842
- data/third_party/boringssl/ssl/handshake_server.cc +0 -1674
- data/third_party/boringssl/ssl/internal.h +0 -3064
- data/third_party/boringssl/ssl/s3_both.cc +0 -585
- data/third_party/boringssl/ssl/s3_lib.cc +0 -226
- data/third_party/boringssl/ssl/s3_pkt.cc +0 -425
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +0 -412
- data/third_party/boringssl/ssl/ssl_asn1.cc +0 -844
- data/third_party/boringssl/ssl/ssl_buffer.cc +0 -286
- data/third_party/boringssl/ssl/ssl_cert.cc +0 -913
- data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1781
- data/third_party/boringssl/ssl/ssl_file.cc +0 -583
- data/third_party/boringssl/ssl/ssl_key_share.cc +0 -252
- data/third_party/boringssl/ssl/ssl_lib.cc +0 -2719
- data/third_party/boringssl/ssl/ssl_privkey.cc +0 -494
- data/third_party/boringssl/ssl/ssl_session.cc +0 -1221
- data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
- data/third_party/boringssl/ssl/ssl_transcript.cc +0 -398
- data/third_party/boringssl/ssl/ssl_versions.cc +0 -399
- data/third_party/boringssl/ssl/ssl_x509.cc +0 -1297
- data/third_party/boringssl/ssl/t1_enc.cc +0 -452
- data/third_party/boringssl/ssl/t1_lib.cc +0 -3783
- data/third_party/boringssl/ssl/tls13_both.cc +0 -559
- data/third_party/boringssl/ssl/tls13_client.cc +0 -891
- data/third_party/boringssl/ssl/tls13_enc.cc +0 -493
- data/third_party/boringssl/ssl/tls13_server.cc +0 -1022
- data/third_party/boringssl/ssl/tls_method.cc +0 -274
- data/third_party/boringssl/ssl/tls_record.cc +0 -703
- data/third_party/boringssl/third_party/fiat/curve25519.c +0 -3230
- data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
- data/third_party/boringssl/third_party/fiat/internal.h +0 -154
- data/third_party/boringssl/third_party/fiat/p256.c +0 -1824
- data/third_party/nanopb/pb.h +0 -579
- data/third_party/nanopb/pb_common.c +0 -97
- data/third_party/nanopb/pb_common.h +0 -42
- data/third_party/nanopb/pb_decode.c +0 -1347
- data/third_party/nanopb/pb_decode.h +0 -149
- data/third_party/nanopb/pb_encode.c +0 -696
- data/third_party/nanopb/pb_encode.h +0 -154
@@ -35,33 +35,33 @@
|
|
35
35
|
grpc_endpoint* grpc_tcp_client_create_from_fd(
|
36
36
|
grpc_fd* fd, const grpc_channel_args* channel_args, const char* addr_str);
|
37
37
|
|
38
|
-
/* Return a configured, unbound, unconnected TCP client
|
38
|
+
/* Return a configured, unbound, unconnected TCP client fd.
|
39
39
|
|
40
40
|
channel_args: may contain custom settings for the fd
|
41
41
|
addr: the destination address
|
42
42
|
mapped_addr: out parameter. addr mapped to an address appropriate to the
|
43
43
|
type of socket FD created. For example, if addr is IPv4 and dual stack
|
44
44
|
sockets are available, mapped_addr will be an IPv4-mapped IPv6 address
|
45
|
-
|
45
|
+
fd: out parameter. The new FD
|
46
46
|
Returns: error, if any. Out parameters are not set on error
|
47
47
|
*/
|
48
48
|
grpc_error* grpc_tcp_client_prepare_fd(const grpc_channel_args* channel_args,
|
49
49
|
const grpc_resolved_address* addr,
|
50
50
|
grpc_resolved_address* mapped_addr,
|
51
|
-
|
51
|
+
int* fd);
|
52
52
|
|
53
|
-
/* Connect a configured TCP client
|
53
|
+
/* Connect a configured TCP client fd.
|
54
54
|
|
55
55
|
interested_parties: a set of pollsets that would be interested in this
|
56
56
|
connection being established (in order to continue their work
|
57
57
|
closure: called when complete. On success, *ep will be set.
|
58
|
-
|
58
|
+
fd: an FD returned from grpc_tcp_client_prepare_fd().
|
59
59
|
channel_args: may contain custom settings for the endpoint
|
60
60
|
deadline: connection deadline
|
61
61
|
ep: out parameter. Set before closure is called if successful
|
62
62
|
*/
|
63
63
|
void grpc_tcp_client_create_from_prepared_fd(
|
64
|
-
grpc_pollset_set* interested_parties, grpc_closure* closure,
|
64
|
+
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
|
65
65
|
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
66
66
|
grpc_millis deadline, grpc_endpoint** ep);
|
67
67
|
|
@@ -39,19 +39,20 @@
|
|
39
39
|
#include "src/core/lib/iomgr/tcp_client.h"
|
40
40
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
41
41
|
#include "src/core/lib/iomgr/timer.h"
|
42
|
+
#include "src/core/lib/slice/slice_internal.h"
|
42
43
|
|
43
|
-
|
44
|
+
struct async_connect {
|
44
45
|
grpc_closure* on_done;
|
45
46
|
gpr_mu mu;
|
46
47
|
grpc_winsocket* socket;
|
47
48
|
grpc_timer alarm;
|
48
49
|
grpc_closure on_alarm;
|
49
|
-
|
50
|
+
std::string addr_name;
|
50
51
|
int refs;
|
51
52
|
grpc_closure on_connect;
|
52
53
|
grpc_endpoint** endpoint;
|
53
54
|
grpc_channel_args* channel_args;
|
54
|
-
}
|
55
|
+
};
|
55
56
|
|
56
57
|
static void async_connect_unlock_and_cleanup(async_connect* ac,
|
57
58
|
grpc_winsocket* socket) {
|
@@ -60,8 +61,7 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
|
|
60
61
|
if (done) {
|
61
62
|
grpc_channel_args_destroy(ac->channel_args);
|
62
63
|
gpr_mu_destroy(&ac->mu);
|
63
|
-
|
64
|
-
gpr_free(ac);
|
64
|
+
delete ac;
|
65
65
|
}
|
66
66
|
if (socket != NULL) grpc_winsocket_destroy(socket);
|
67
67
|
}
|
@@ -106,7 +106,7 @@ static void on_connect(void* acp, grpc_error* error) {
|
|
106
106
|
error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
|
107
107
|
closesocket(socket->socket);
|
108
108
|
} else {
|
109
|
-
*ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name);
|
109
|
+
*ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name.c_str());
|
110
110
|
socket = NULL;
|
111
111
|
}
|
112
112
|
} else {
|
@@ -117,7 +117,7 @@ static void on_connect(void* acp, grpc_error* error) {
|
|
117
117
|
async_connect_unlock_and_cleanup(ac, socket);
|
118
118
|
/* If the connection was aborted, the callback was already called when
|
119
119
|
the deadline was met. */
|
120
|
-
|
120
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, error);
|
121
121
|
}
|
122
122
|
|
123
123
|
/* Tries to issue one async connection, then schedules both an IOCP
|
@@ -132,13 +132,13 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
132
132
|
int status;
|
133
133
|
grpc_resolved_address addr6_v4mapped;
|
134
134
|
grpc_resolved_address local_address;
|
135
|
-
async_connect* ac;
|
136
135
|
grpc_winsocket* socket = NULL;
|
137
136
|
LPFN_CONNECTEX ConnectEx;
|
138
137
|
GUID guid = WSAID_CONNECTEX;
|
139
138
|
DWORD ioctl_num_bytes;
|
140
139
|
grpc_winsocket_callback_info* info;
|
141
140
|
grpc_error* error = GRPC_ERROR_NONE;
|
141
|
+
async_connect* ac = NULL;
|
142
142
|
|
143
143
|
*endpoint = NULL;
|
144
144
|
|
@@ -195,7 +195,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
195
195
|
}
|
196
196
|
}
|
197
197
|
|
198
|
-
ac =
|
198
|
+
ac = new async_connect();
|
199
199
|
ac->on_done = on_done;
|
200
200
|
ac->socket = socket;
|
201
201
|
gpr_mu_init(&ac->mu);
|
@@ -212,20 +212,19 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
212
212
|
|
213
213
|
failure:
|
214
214
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
215
|
-
|
215
|
+
std::string target_uri = grpc_sockaddr_to_uri(addr);
|
216
216
|
grpc_error* final_error =
|
217
217
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
218
218
|
"Failed to connect", &error, 1),
|
219
219
|
GRPC_ERROR_STR_TARGET_ADDRESS,
|
220
|
-
|
221
|
-
target_uri == nullptr ? "NULL" : target_uri));
|
220
|
+
grpc_slice_from_cpp_string(std::move(target_uri)));
|
222
221
|
GRPC_ERROR_UNREF(error);
|
223
222
|
if (socket != NULL) {
|
224
223
|
grpc_winsocket_destroy(socket);
|
225
224
|
} else if (sock != INVALID_SOCKET) {
|
226
225
|
closesocket(sock);
|
227
226
|
}
|
228
|
-
|
227
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, final_error);
|
229
228
|
}
|
230
229
|
|
231
230
|
grpc_tcp_client_vtable grpc_windows_tcp_client_vtable = {tcp_connect};
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#include "src/core/lib/iomgr/error.h"
|
33
33
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
34
34
|
#include "src/core/lib/iomgr/resource_quota.h"
|
35
|
+
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
35
36
|
#include "src/core/lib/iomgr/tcp_client.h"
|
36
37
|
#include "src/core/lib/iomgr/tcp_custom.h"
|
37
38
|
#include "src/core/lib/iomgr/tcp_server.h"
|
@@ -52,30 +53,29 @@ void grpc_custom_endpoint_init(grpc_socket_vtable* impl) {
|
|
52
53
|
grpc_set_tcp_server_impl(&custom_tcp_server_vtable);
|
53
54
|
}
|
54
55
|
|
55
|
-
|
56
|
+
struct custom_tcp_endpoint {
|
56
57
|
grpc_endpoint base;
|
57
58
|
gpr_refcount refcount;
|
58
59
|
grpc_custom_socket* socket;
|
59
60
|
|
60
|
-
grpc_closure* read_cb;
|
61
|
-
grpc_closure* write_cb;
|
61
|
+
grpc_closure* read_cb = nullptr;
|
62
|
+
grpc_closure* write_cb = nullptr;
|
62
63
|
|
63
|
-
grpc_slice_buffer* read_slices;
|
64
|
-
grpc_slice_buffer* write_slices;
|
64
|
+
grpc_slice_buffer* read_slices = nullptr;
|
65
|
+
grpc_slice_buffer* write_slices = nullptr;
|
65
66
|
|
66
67
|
grpc_resource_user* resource_user;
|
67
68
|
grpc_resource_user_slice_allocator slice_allocator;
|
68
69
|
|
69
70
|
bool shutting_down;
|
70
71
|
|
71
|
-
|
72
|
-
|
73
|
-
|
72
|
+
std::string peer_string;
|
73
|
+
std::string local_address;
|
74
|
+
};
|
74
75
|
static void tcp_free(grpc_custom_socket* s) {
|
75
76
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)s->endpoint;
|
76
77
|
grpc_resource_user_unref(tcp->resource_user);
|
77
|
-
|
78
|
-
gpr_free(tcp);
|
78
|
+
delete tcp;
|
79
79
|
s->refs--;
|
80
80
|
if (s->refs == 0) {
|
81
81
|
grpc_custom_socket_vtable->destroy(s);
|
@@ -133,18 +133,20 @@ static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) {
|
|
133
133
|
for (i = 0; i < tcp->read_slices->count; i++) {
|
134
134
|
char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
|
135
135
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
136
|
-
gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string,
|
136
|
+
gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string.c_str(),
|
137
|
+
dump);
|
137
138
|
gpr_free(dump);
|
138
139
|
}
|
139
140
|
}
|
140
141
|
TCP_UNREF(tcp, "read");
|
141
142
|
tcp->read_slices = nullptr;
|
142
143
|
tcp->read_cb = nullptr;
|
143
|
-
|
144
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error);
|
144
145
|
}
|
145
146
|
|
146
147
|
static void custom_read_callback(grpc_custom_socket* socket, size_t nread,
|
147
148
|
grpc_error* error) {
|
149
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
148
150
|
grpc_core::ExecCtx exec_ctx;
|
149
151
|
grpc_slice_buffer garbage;
|
150
152
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)socket->endpoint;
|
@@ -192,7 +194,7 @@ static void tcp_read_allocation_done(void* tcpp, grpc_error* error) {
|
|
192
194
|
}
|
193
195
|
|
194
196
|
static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
195
|
-
grpc_closure* cb, bool urgent) {
|
197
|
+
grpc_closure* cb, bool /*urgent*/) {
|
196
198
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
|
197
199
|
GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
|
198
200
|
GPR_ASSERT(tcp->read_cb == nullptr);
|
@@ -200,13 +202,16 @@ static void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
|
200
202
|
tcp->read_slices = read_slices;
|
201
203
|
grpc_slice_buffer_reset_and_unref_internal(read_slices);
|
202
204
|
TCP_REF(tcp, "read");
|
203
|
-
grpc_resource_user_alloc_slices(&tcp->slice_allocator,
|
204
|
-
|
205
|
-
|
205
|
+
if (grpc_resource_user_alloc_slices(&tcp->slice_allocator,
|
206
|
+
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
|
207
|
+
tcp->read_slices)) {
|
208
|
+
tcp_read_allocation_done(tcp, GRPC_ERROR_NONE);
|
209
|
+
}
|
206
210
|
}
|
207
211
|
|
208
212
|
static void custom_write_callback(grpc_custom_socket* socket,
|
209
213
|
grpc_error* error) {
|
214
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
210
215
|
grpc_core::ExecCtx exec_ctx;
|
211
216
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)socket->endpoint;
|
212
217
|
grpc_closure* cb = tcp->write_cb;
|
@@ -216,11 +221,11 @@ static void custom_write_callback(grpc_custom_socket* socket,
|
|
216
221
|
gpr_log(GPR_INFO, "write complete on %p: error=%s", tcp->socket, str);
|
217
222
|
}
|
218
223
|
TCP_UNREF(tcp, "write");
|
219
|
-
|
224
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error);
|
220
225
|
}
|
221
226
|
|
222
227
|
static void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* write_slices,
|
223
|
-
grpc_closure* cb, void* arg) {
|
228
|
+
grpc_closure* cb, void* /*arg*/) {
|
224
229
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
|
225
230
|
GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
|
226
231
|
|
@@ -230,15 +235,16 @@ static void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* write_slices,
|
|
230
235
|
for (j = 0; j < write_slices->count; j++) {
|
231
236
|
char* data = grpc_dump_slice(write_slices->slices[j],
|
232
237
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
233
|
-
gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket,
|
234
|
-
data);
|
238
|
+
gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket,
|
239
|
+
tcp->peer_string.c_str(), data);
|
235
240
|
gpr_free(data);
|
236
241
|
}
|
237
242
|
}
|
238
243
|
|
239
244
|
if (tcp->shutting_down) {
|
240
|
-
|
241
|
-
|
245
|
+
grpc_core::ExecCtx::Run(
|
246
|
+
DEBUG_LOCATION, cb,
|
247
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP socket is shutting down"));
|
242
248
|
return;
|
243
249
|
}
|
244
250
|
|
@@ -248,7 +254,7 @@ static void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* write_slices,
|
|
248
254
|
if (tcp->write_slices->count == 0) {
|
249
255
|
// No slices means we don't have to do anything,
|
250
256
|
// and libuv doesn't like empty writes
|
251
|
-
|
257
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_NONE);
|
252
258
|
return;
|
253
259
|
}
|
254
260
|
tcp->write_cb = cb;
|
@@ -285,10 +291,10 @@ static void endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
|
285
291
|
gpr_log(GPR_INFO, "TCP %p shutdown why=%s", tcp->socket, str);
|
286
292
|
}
|
287
293
|
tcp->shutting_down = true;
|
288
|
-
//
|
289
|
-
//
|
290
|
-
// tcp->
|
291
|
-
// tcp->write_cb = nullptr;
|
294
|
+
// grpc_core::ExecCtx::Run(DEBUG_LOCATION,tcp->read_cb,
|
295
|
+
// GRPC_ERROR_REF(why));
|
296
|
+
// grpc_core::ExecCtx::Run(DEBUG_LOCATION,tcp->write_cb,
|
297
|
+
// GRPC_ERROR_REF(why)); tcp->read_cb = nullptr; tcp->write_cb = nullptr;
|
292
298
|
grpc_resource_user_shutdown(tcp->resource_user);
|
293
299
|
grpc_custom_socket_vtable->shutdown(tcp->socket);
|
294
300
|
}
|
@@ -301,6 +307,7 @@ static void custom_close_callback(grpc_custom_socket* socket) {
|
|
301
307
|
grpc_custom_socket_vtable->destroy(socket);
|
302
308
|
gpr_free(socket);
|
303
309
|
} else if (socket->endpoint) {
|
310
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
304
311
|
grpc_core::ExecCtx exec_ctx;
|
305
312
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)socket->endpoint;
|
306
313
|
TCP_UNREF(tcp, "destroy");
|
@@ -312,9 +319,14 @@ static void endpoint_destroy(grpc_endpoint* ep) {
|
|
312
319
|
grpc_custom_socket_vtable->close(tcp->socket, custom_close_callback);
|
313
320
|
}
|
314
321
|
|
315
|
-
static
|
322
|
+
static absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
|
316
323
|
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
|
317
|
-
return
|
324
|
+
return tcp->peer_string;
|
325
|
+
}
|
326
|
+
|
327
|
+
static absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
|
328
|
+
custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
|
329
|
+
return tcp->local_address;
|
318
330
|
}
|
319
331
|
|
320
332
|
static grpc_resource_user* endpoint_get_resource_user(grpc_endpoint* ep) {
|
@@ -322,9 +334,9 @@ static grpc_resource_user* endpoint_get_resource_user(grpc_endpoint* ep) {
|
|
322
334
|
return tcp->resource_user;
|
323
335
|
}
|
324
336
|
|
325
|
-
static int endpoint_get_fd(grpc_endpoint* ep) { return -1; }
|
337
|
+
static int endpoint_get_fd(grpc_endpoint* /*ep*/) { return -1; }
|
326
338
|
|
327
|
-
static bool endpoint_can_track_err(grpc_endpoint* ep) { return false; }
|
339
|
+
static bool endpoint_can_track_err(grpc_endpoint* /*ep*/) { return false; }
|
328
340
|
|
329
341
|
static grpc_endpoint_vtable vtable = {endpoint_read,
|
330
342
|
endpoint_write,
|
@@ -335,26 +347,36 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
|
|
335
347
|
endpoint_destroy,
|
336
348
|
endpoint_get_resource_user,
|
337
349
|
endpoint_get_peer,
|
350
|
+
endpoint_get_local_address,
|
338
351
|
endpoint_get_fd,
|
339
352
|
endpoint_can_track_err};
|
340
353
|
|
341
354
|
grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
|
342
355
|
grpc_resource_quota* resource_quota,
|
343
|
-
char* peer_string) {
|
344
|
-
custom_tcp_endpoint* tcp =
|
345
|
-
|
356
|
+
const char* peer_string) {
|
357
|
+
custom_tcp_endpoint* tcp = new custom_tcp_endpoint;
|
358
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
346
359
|
grpc_core::ExecCtx exec_ctx;
|
347
360
|
|
348
361
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
349
362
|
gpr_log(GPR_INFO, "Creating TCP endpoint %p", socket);
|
350
363
|
}
|
351
|
-
memset(tcp, 0, sizeof(custom_tcp_endpoint));
|
352
364
|
socket->refs++;
|
353
365
|
socket->endpoint = (grpc_endpoint*)tcp;
|
354
366
|
tcp->socket = socket;
|
355
367
|
tcp->base.vtable = &vtable;
|
356
368
|
gpr_ref_init(&tcp->refcount, 1);
|
357
|
-
tcp->peer_string =
|
369
|
+
tcp->peer_string = peer_string;
|
370
|
+
grpc_resolved_address resolved_local_addr;
|
371
|
+
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
372
|
+
if (grpc_custom_socket_vtable->getsockname(
|
373
|
+
socket, reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
374
|
+
reinterpret_cast<int*>(&resolved_local_addr.len)) !=
|
375
|
+
GRPC_ERROR_NONE) {
|
376
|
+
tcp->local_address = "";
|
377
|
+
} else {
|
378
|
+
tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
|
379
|
+
}
|
358
380
|
tcp->shutting_down = false;
|
359
381
|
tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
|
360
382
|
grpc_resource_user_slice_allocator_init(
|
@@ -24,6 +24,9 @@
|
|
24
24
|
#include "src/core/lib/iomgr/endpoint.h"
|
25
25
|
#include "src/core/lib/iomgr/sockaddr.h"
|
26
26
|
|
27
|
+
// Same number as the micro of SO_REUSEPORT in kernel
|
28
|
+
#define GRPC_CUSTOM_SOCKET_OPT_SO_REUSEPORT (0x00000200u)
|
29
|
+
|
27
30
|
typedef struct grpc_tcp_listener grpc_tcp_listener;
|
28
31
|
typedef struct grpc_custom_tcp_connect grpc_custom_tcp_connect;
|
29
32
|
|
@@ -76,6 +79,6 @@ void grpc_custom_close_server_callback(grpc_tcp_listener* listener);
|
|
76
79
|
|
77
80
|
grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
|
78
81
|
grpc_resource_quota* resource_quota,
|
79
|
-
char* peer_string);
|
82
|
+
const char* peer_string);
|
80
83
|
|
81
84
|
#endif /* GRPC_CORE_LIB_IOMGR_TCP_CUSTOM_H */
|
@@ -36,6 +36,7 @@
|
|
36
36
|
#include <sys/types.h>
|
37
37
|
#include <unistd.h>
|
38
38
|
#include <algorithm>
|
39
|
+
#include <unordered_map>
|
39
40
|
|
40
41
|
#include <grpc/slice.h>
|
41
42
|
#include <grpc/support/alloc.h>
|
@@ -49,9 +50,12 @@
|
|
49
50
|
#include "src/core/lib/debug/trace.h"
|
50
51
|
#include "src/core/lib/gpr/string.h"
|
51
52
|
#include "src/core/lib/gpr/useful.h"
|
53
|
+
#include "src/core/lib/gprpp/sync.h"
|
52
54
|
#include "src/core/lib/iomgr/buffer_list.h"
|
53
55
|
#include "src/core/lib/iomgr/ev_posix.h"
|
54
56
|
#include "src/core/lib/iomgr/executor.h"
|
57
|
+
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
58
|
+
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
55
59
|
#include "src/core/lib/profiling/timers.h"
|
56
60
|
#include "src/core/lib/slice/slice_internal.h"
|
57
61
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
@@ -71,6 +75,15 @@
|
|
71
75
|
#define SENDMSG_FLAGS 0
|
72
76
|
#endif
|
73
77
|
|
78
|
+
// TCP zero copy sendmsg flag.
|
79
|
+
// NB: We define this here as a fallback in case we're using an older set of
|
80
|
+
// library headers that has not defined MSG_ZEROCOPY. Since this constant is
|
81
|
+
// part of the kernel, we are guaranteed it will never change/disagree so
|
82
|
+
// defining it here is safe.
|
83
|
+
#ifndef MSG_ZEROCOPY
|
84
|
+
#define MSG_ZEROCOPY 0x4000000
|
85
|
+
#endif
|
86
|
+
|
74
87
|
#ifdef GRPC_MSG_IOVLEN_TYPE
|
75
88
|
typedef GRPC_MSG_IOVLEN_TYPE msg_iovlen_type;
|
76
89
|
#else
|
@@ -79,8 +92,268 @@ typedef size_t msg_iovlen_type;
|
|
79
92
|
|
80
93
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
81
94
|
|
95
|
+
namespace grpc_core {
|
96
|
+
|
97
|
+
class TcpZerocopySendRecord {
|
98
|
+
public:
|
99
|
+
TcpZerocopySendRecord() { grpc_slice_buffer_init(&buf_); }
|
100
|
+
|
101
|
+
~TcpZerocopySendRecord() {
|
102
|
+
AssertEmpty();
|
103
|
+
grpc_slice_buffer_destroy_internal(&buf_);
|
104
|
+
}
|
105
|
+
|
106
|
+
// Given the slices that we wish to send, and the current offset into the
|
107
|
+
// slice buffer (indicating which have already been sent), populate an iovec
|
108
|
+
// array that will be used for a zerocopy enabled sendmsg().
|
109
|
+
msg_iovlen_type PopulateIovs(size_t* unwind_slice_idx,
|
110
|
+
size_t* unwind_byte_idx, size_t* sending_length,
|
111
|
+
iovec* iov);
|
112
|
+
|
113
|
+
// A sendmsg() may not be able to send the bytes that we requested at this
|
114
|
+
// time, returning EAGAIN (possibly due to backpressure). In this case,
|
115
|
+
// unwind the offset into the slice buffer so we retry sending these bytes.
|
116
|
+
void UnwindIfThrottled(size_t unwind_slice_idx, size_t unwind_byte_idx) {
|
117
|
+
out_offset_.byte_idx = unwind_byte_idx;
|
118
|
+
out_offset_.slice_idx = unwind_slice_idx;
|
119
|
+
}
|
120
|
+
|
121
|
+
// Update the offset into the slice buffer based on how much we wanted to sent
|
122
|
+
// vs. what sendmsg() actually sent (which may be lower, possibly due to
|
123
|
+
// backpressure).
|
124
|
+
void UpdateOffsetForBytesSent(size_t sending_length, size_t actually_sent);
|
125
|
+
|
126
|
+
// Indicates whether all underlying data has been sent or not.
|
127
|
+
bool AllSlicesSent() { return out_offset_.slice_idx == buf_.count; }
|
128
|
+
|
129
|
+
// Reset this structure for a new tcp_write() with zerocopy.
|
130
|
+
void PrepareForSends(grpc_slice_buffer* slices_to_send) {
|
131
|
+
AssertEmpty();
|
132
|
+
out_offset_.slice_idx = 0;
|
133
|
+
out_offset_.byte_idx = 0;
|
134
|
+
grpc_slice_buffer_swap(slices_to_send, &buf_);
|
135
|
+
Ref();
|
136
|
+
}
|
137
|
+
|
138
|
+
// References: 1 reference per sendmsg(), and 1 for the tcp_write().
|
139
|
+
void Ref() { ref_.FetchAdd(1, MemoryOrder::RELAXED); }
|
140
|
+
|
141
|
+
// Unref: called when we get an error queue notification for a sendmsg(), if a
|
142
|
+
// sendmsg() failed or when tcp_write() is done.
|
143
|
+
bool Unref() {
|
144
|
+
const intptr_t prior = ref_.FetchSub(1, MemoryOrder::ACQ_REL);
|
145
|
+
GPR_DEBUG_ASSERT(prior > 0);
|
146
|
+
if (prior == 1) {
|
147
|
+
AllSendsComplete();
|
148
|
+
return true;
|
149
|
+
}
|
150
|
+
return false;
|
151
|
+
}
|
152
|
+
|
153
|
+
private:
|
154
|
+
struct OutgoingOffset {
|
155
|
+
size_t slice_idx = 0;
|
156
|
+
size_t byte_idx = 0;
|
157
|
+
};
|
158
|
+
|
159
|
+
void AssertEmpty() {
|
160
|
+
GPR_DEBUG_ASSERT(buf_.count == 0);
|
161
|
+
GPR_DEBUG_ASSERT(buf_.length == 0);
|
162
|
+
GPR_DEBUG_ASSERT(ref_.Load(MemoryOrder::RELAXED) == 0);
|
163
|
+
}
|
164
|
+
|
165
|
+
// When all sendmsg() calls associated with this tcp_write() have been
|
166
|
+
// completed (ie. we have received the notifications for each sequence number
|
167
|
+
// for each sendmsg()) and all reference counts have been dropped, drop our
|
168
|
+
// reference to the underlying data since we no longer need it.
|
169
|
+
void AllSendsComplete() {
|
170
|
+
GPR_DEBUG_ASSERT(ref_.Load(MemoryOrder::RELAXED) == 0);
|
171
|
+
grpc_slice_buffer_reset_and_unref_internal(&buf_);
|
172
|
+
}
|
173
|
+
|
174
|
+
grpc_slice_buffer buf_;
|
175
|
+
Atomic<intptr_t> ref_;
|
176
|
+
OutgoingOffset out_offset_;
|
177
|
+
};
|
178
|
+
|
179
|
+
class TcpZerocopySendCtx {
|
180
|
+
public:
|
181
|
+
static constexpr int kDefaultMaxSends = 4;
|
182
|
+
static constexpr size_t kDefaultSendBytesThreshold = 16 * 1024; // 16KB
|
183
|
+
|
184
|
+
TcpZerocopySendCtx(int max_sends = kDefaultMaxSends,
|
185
|
+
size_t send_bytes_threshold = kDefaultSendBytesThreshold)
|
186
|
+
: max_sends_(max_sends),
|
187
|
+
free_send_records_size_(max_sends),
|
188
|
+
threshold_bytes_(send_bytes_threshold) {
|
189
|
+
send_records_ = static_cast<TcpZerocopySendRecord*>(
|
190
|
+
gpr_malloc(max_sends * sizeof(*send_records_)));
|
191
|
+
free_send_records_ = static_cast<TcpZerocopySendRecord**>(
|
192
|
+
gpr_malloc(max_sends * sizeof(*free_send_records_)));
|
193
|
+
if (send_records_ == nullptr || free_send_records_ == nullptr) {
|
194
|
+
gpr_free(send_records_);
|
195
|
+
gpr_free(free_send_records_);
|
196
|
+
gpr_log(GPR_INFO, "Disabling TCP TX zerocopy due to memory pressure.\n");
|
197
|
+
memory_limited_ = true;
|
198
|
+
} else {
|
199
|
+
for (int idx = 0; idx < max_sends_; ++idx) {
|
200
|
+
new (send_records_ + idx) TcpZerocopySendRecord();
|
201
|
+
free_send_records_[idx] = send_records_ + idx;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
~TcpZerocopySendCtx() {
|
207
|
+
if (send_records_ != nullptr) {
|
208
|
+
for (int idx = 0; idx < max_sends_; ++idx) {
|
209
|
+
send_records_[idx].~TcpZerocopySendRecord();
|
210
|
+
}
|
211
|
+
}
|
212
|
+
gpr_free(send_records_);
|
213
|
+
gpr_free(free_send_records_);
|
214
|
+
}
|
215
|
+
|
216
|
+
// True if we were unable to allocate the various bookkeeping structures at
|
217
|
+
// transport initialization time. If memory limited, we do not zerocopy.
|
218
|
+
bool memory_limited() const { return memory_limited_; }
|
219
|
+
|
220
|
+
// TCP send zerocopy maintains an implicit sequence number for every
|
221
|
+
// successful sendmsg() with zerocopy enabled; the kernel later gives us an
|
222
|
+
// error queue notification with this sequence number indicating that the
|
223
|
+
// underlying data buffers that we sent can now be released. Once that
|
224
|
+
// notification is received, we can release the buffers associated with this
|
225
|
+
// zerocopy send record. Here, we associate the sequence number with the data
|
226
|
+
// buffers that were sent with the corresponding call to sendmsg().
|
227
|
+
void NoteSend(TcpZerocopySendRecord* record) {
|
228
|
+
record->Ref();
|
229
|
+
AssociateSeqWithSendRecord(last_send_, record);
|
230
|
+
++last_send_;
|
231
|
+
}
|
232
|
+
|
233
|
+
// If sendmsg() actually failed, though, we need to revert the sequence number
|
234
|
+
// that we speculatively bumped before calling sendmsg(). Note that we bump
|
235
|
+
// this sequence number and perform relevant bookkeeping (see: NoteSend())
|
236
|
+
// *before* calling sendmsg() since, if we called it *after* sendmsg(), then
|
237
|
+
// there is a possible race with the release notification which could occur on
|
238
|
+
// another thread before we do the necessary bookkeeping. Hence, calling
|
239
|
+
// NoteSend() *before* sendmsg() and implementing an undo function is needed.
|
240
|
+
void UndoSend() {
|
241
|
+
--last_send_;
|
242
|
+
if (ReleaseSendRecord(last_send_)->Unref()) {
|
243
|
+
// We should still be holding the ref taken by tcp_write().
|
244
|
+
GPR_DEBUG_ASSERT(0);
|
245
|
+
}
|
246
|
+
}
|
247
|
+
|
248
|
+
// Simply associate this send record (and the underlying sent data buffers)
|
249
|
+
// with the implicit sequence number for this zerocopy sendmsg().
|
250
|
+
void AssociateSeqWithSendRecord(uint32_t seq, TcpZerocopySendRecord* record) {
|
251
|
+
MutexLock guard(&lock_);
|
252
|
+
ctx_lookup_.emplace(seq, record);
|
253
|
+
}
|
254
|
+
|
255
|
+
// Get a send record for a send that we wish to do with zerocopy.
|
256
|
+
TcpZerocopySendRecord* GetSendRecord() {
|
257
|
+
MutexLock guard(&lock_);
|
258
|
+
return TryGetSendRecordLocked();
|
259
|
+
}
|
260
|
+
|
261
|
+
// A given send record corresponds to a single tcp_write() with zerocopy
|
262
|
+
// enabled. This can result in several sendmsg() calls to flush all of the
|
263
|
+
// data to wire. Each sendmsg() takes a reference on the
|
264
|
+
// TcpZerocopySendRecord, and corresponds to a single sequence number.
|
265
|
+
// ReleaseSendRecord releases a reference on TcpZerocopySendRecord for a
|
266
|
+
// single sequence number. This is called either when we receive the relevant
|
267
|
+
// error queue notification (saying that we can discard the underlying
|
268
|
+
// buffers for this sendmsg()) is received from the kernel - or, in case
|
269
|
+
// sendmsg() was unsuccessful to begin with.
|
270
|
+
TcpZerocopySendRecord* ReleaseSendRecord(uint32_t seq) {
|
271
|
+
MutexLock guard(&lock_);
|
272
|
+
return ReleaseSendRecordLocked(seq);
|
273
|
+
}
|
274
|
+
|
275
|
+
// After all the references to a TcpZerocopySendRecord are released, we can
|
276
|
+
// add it back to the pool (of size max_sends_). Note that we can only have
|
277
|
+
// max_sends_ tcp_write() instances with zerocopy enabled in flight at the
|
278
|
+
// same time.
|
279
|
+
void PutSendRecord(TcpZerocopySendRecord* record) {
|
280
|
+
GPR_DEBUG_ASSERT(record >= send_records_ &&
|
281
|
+
record < send_records_ + max_sends_);
|
282
|
+
MutexLock guard(&lock_);
|
283
|
+
PutSendRecordLocked(record);
|
284
|
+
}
|
285
|
+
|
286
|
+
// Indicate that we are disposing of this zerocopy context. This indicator
|
287
|
+
// will prevent new zerocopy writes from being issued.
|
288
|
+
void Shutdown() { shutdown_.Store(true, MemoryOrder::RELEASE); }
|
289
|
+
|
290
|
+
// Indicates that there are no inflight tcp_write() instances with zerocopy
|
291
|
+
// enabled.
|
292
|
+
bool AllSendRecordsEmpty() {
|
293
|
+
MutexLock guard(&lock_);
|
294
|
+
return free_send_records_size_ == max_sends_;
|
295
|
+
}
|
296
|
+
|
297
|
+
bool enabled() const { return enabled_; }
|
298
|
+
|
299
|
+
void set_enabled(bool enabled) {
|
300
|
+
GPR_DEBUG_ASSERT(!enabled || !memory_limited());
|
301
|
+
enabled_ = enabled;
|
302
|
+
}
|
303
|
+
|
304
|
+
// Only use zerocopy if we are sending at least this many bytes. The
|
305
|
+
// additional overhead of reading the error queue for notifications means that
|
306
|
+
// zerocopy is not useful for small transfers.
|
307
|
+
size_t threshold_bytes() const { return threshold_bytes_; }
|
308
|
+
|
309
|
+
private:
|
310
|
+
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
|
311
|
+
auto iter = ctx_lookup_.find(seq);
|
312
|
+
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
|
313
|
+
TcpZerocopySendRecord* record = iter->second;
|
314
|
+
ctx_lookup_.erase(iter);
|
315
|
+
return record;
|
316
|
+
}
|
317
|
+
|
318
|
+
TcpZerocopySendRecord* TryGetSendRecordLocked() {
|
319
|
+
if (shutdown_.Load(MemoryOrder::ACQUIRE)) {
|
320
|
+
return nullptr;
|
321
|
+
}
|
322
|
+
if (free_send_records_size_ == 0) {
|
323
|
+
return nullptr;
|
324
|
+
}
|
325
|
+
free_send_records_size_--;
|
326
|
+
return free_send_records_[free_send_records_size_];
|
327
|
+
}
|
328
|
+
|
329
|
+
void PutSendRecordLocked(TcpZerocopySendRecord* record) {
|
330
|
+
GPR_DEBUG_ASSERT(free_send_records_size_ < max_sends_);
|
331
|
+
free_send_records_[free_send_records_size_] = record;
|
332
|
+
free_send_records_size_++;
|
333
|
+
}
|
334
|
+
|
335
|
+
TcpZerocopySendRecord* send_records_;
|
336
|
+
TcpZerocopySendRecord** free_send_records_;
|
337
|
+
int max_sends_;
|
338
|
+
int free_send_records_size_;
|
339
|
+
Mutex lock_;
|
340
|
+
uint32_t last_send_ = 0;
|
341
|
+
Atomic<bool> shutdown_;
|
342
|
+
bool enabled_ = false;
|
343
|
+
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
|
344
|
+
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
|
345
|
+
bool memory_limited_ = false;
|
346
|
+
};
|
347
|
+
|
348
|
+
} // namespace grpc_core
|
349
|
+
|
350
|
+
using grpc_core::TcpZerocopySendCtx;
|
351
|
+
using grpc_core::TcpZerocopySendRecord;
|
352
|
+
|
82
353
|
namespace {
|
83
354
|
struct grpc_tcp {
|
355
|
+
grpc_tcp(int max_sends, size_t send_bytes_threshold)
|
356
|
+
: tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
|
84
357
|
grpc_endpoint base;
|
85
358
|
grpc_fd* em_fd;
|
86
359
|
int fd;
|
@@ -89,7 +362,7 @@ struct grpc_tcp {
|
|
89
362
|
bool is_first_read;
|
90
363
|
double target_length;
|
91
364
|
double bytes_read_this_round;
|
92
|
-
|
365
|
+
grpc_core::RefCount refcount;
|
93
366
|
gpr_atm shutdown_count;
|
94
367
|
|
95
368
|
int min_read_chunk_size;
|
@@ -115,7 +388,8 @@ struct grpc_tcp {
|
|
115
388
|
grpc_closure write_done_closure;
|
116
389
|
grpc_closure error_closure;
|
117
390
|
|
118
|
-
|
391
|
+
std::string peer_string;
|
392
|
+
std::string local_address;
|
119
393
|
|
120
394
|
grpc_resource_user* resource_user;
|
121
395
|
grpc_resource_user_slice_allocator slice_allocator;
|
@@ -142,6 +416,8 @@ struct grpc_tcp {
|
|
142
416
|
bool ts_capable; /* Cache whether we can set timestamping options */
|
143
417
|
gpr_atm stop_error_notification; /* Set to 1 if we do not want to be notified
|
144
418
|
on errors anymore */
|
419
|
+
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
|
420
|
+
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
|
145
421
|
};
|
146
422
|
|
147
423
|
struct backup_poller {
|
@@ -151,6 +427,8 @@ struct backup_poller {
|
|
151
427
|
|
152
428
|
} // namespace
|
153
429
|
|
430
|
+
static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp);
|
431
|
+
|
154
432
|
#define BACKUP_POLLER_POLLSET(b) ((grpc_pollset*)((b) + 1))
|
155
433
|
|
156
434
|
static gpr_atm g_uncovered_notifications_pending;
|
@@ -161,7 +439,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error);
|
|
161
439
|
static void tcp_drop_uncovered_then_handle_write(void* arg /* grpc_tcp */,
|
162
440
|
grpc_error* error);
|
163
441
|
|
164
|
-
static void done_poller(void* bp, grpc_error* error_ignored) {
|
442
|
+
static void done_poller(void* bp, grpc_error* /*error_ignored*/) {
|
165
443
|
backup_poller* p = static_cast<backup_poller*>(bp);
|
166
444
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
167
445
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p destroy", p);
|
@@ -170,7 +448,7 @@ static void done_poller(void* bp, grpc_error* error_ignored) {
|
|
170
448
|
gpr_free(p);
|
171
449
|
}
|
172
450
|
|
173
|
-
static void run_poller(void* bp, grpc_error* error_ignored) {
|
451
|
+
static void run_poller(void* bp, grpc_error* /*error_ignored*/) {
|
174
452
|
backup_poller* p = static_cast<backup_poller*>(bp);
|
175
453
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
176
454
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p run", p);
|
@@ -202,11 +480,13 @@ static void run_poller(void* bp, grpc_error* error_ignored) {
|
|
202
480
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
203
481
|
gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
|
204
482
|
}
|
205
|
-
|
483
|
+
grpc_core::Executor::Run(&p->run_poller, GRPC_ERROR_NONE,
|
484
|
+
grpc_core::ExecutorType::DEFAULT,
|
485
|
+
grpc_core::ExecutorJobType::LONG);
|
206
486
|
}
|
207
487
|
}
|
208
488
|
|
209
|
-
static void drop_uncovered(grpc_tcp* tcp) {
|
489
|
+
static void drop_uncovered(grpc_tcp* /*tcp*/) {
|
210
490
|
backup_poller* p = (backup_poller*)gpr_atm_acq_load(&g_backup_poller);
|
211
491
|
gpr_atm old_count =
|
212
492
|
gpr_atm_full_fetch_add(&g_uncovered_notifications_pending, -1);
|
@@ -241,10 +521,10 @@ static void cover_self(grpc_tcp* tcp) {
|
|
241
521
|
}
|
242
522
|
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
|
243
523
|
gpr_atm_rel_store(&g_backup_poller, (gpr_atm)p);
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
524
|
+
grpc_core::Executor::Run(
|
525
|
+
GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
|
526
|
+
GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
|
527
|
+
grpc_core::ExecutorJobType::LONG);
|
248
528
|
} else {
|
249
529
|
while ((p = (backup_poller*)gpr_atm_acq_load(&g_backup_poller)) ==
|
250
530
|
nullptr) {
|
@@ -329,7 +609,7 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) {
|
|
329
609
|
* choose to retry. */
|
330
610
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
|
331
611
|
GRPC_ERROR_STR_TARGET_ADDRESS,
|
332
|
-
grpc_slice_from_copied_string(tcp->peer_string));
|
612
|
+
grpc_slice_from_copied_string(tcp->peer_string.c_str()));
|
333
613
|
}
|
334
614
|
|
335
615
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error);
|
@@ -337,6 +617,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error);
|
|
337
617
|
|
338
618
|
static void tcp_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
339
619
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
620
|
+
ZerocopyDisableAndWaitForRemaining(tcp);
|
340
621
|
grpc_fd_shutdown(tcp->em_fd, why);
|
341
622
|
grpc_resource_user_shutdown(tcp->resource_user);
|
342
623
|
}
|
@@ -346,7 +627,6 @@ static void tcp_free(grpc_tcp* tcp) {
|
|
346
627
|
"tcp_unref_orphan");
|
347
628
|
grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
|
348
629
|
grpc_resource_user_unref(tcp->resource_user);
|
349
|
-
gpr_free(tcp->peer_string);
|
350
630
|
/* The lock is not really necessary here, since all refs have been released */
|
351
631
|
gpr_mu_lock(&tcp->tb_mu);
|
352
632
|
grpc_core::TracedBuffer::Shutdown(
|
@@ -355,51 +635,40 @@ static void tcp_free(grpc_tcp* tcp) {
|
|
355
635
|
gpr_mu_unlock(&tcp->tb_mu);
|
356
636
|
tcp->outgoing_buffer_arg = nullptr;
|
357
637
|
gpr_mu_destroy(&tcp->tb_mu);
|
358
|
-
|
638
|
+
delete tcp;
|
359
639
|
}
|
360
640
|
|
361
641
|
#ifndef NDEBUG
|
362
|
-
#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason),
|
363
|
-
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason),
|
364
|
-
static void tcp_unref(grpc_tcp* tcp, const char* reason,
|
365
|
-
|
366
|
-
if (
|
367
|
-
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
368
|
-
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
369
|
-
"TCP unref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
370
|
-
val - 1);
|
371
|
-
}
|
372
|
-
if (gpr_unref(&tcp->refcount)) {
|
642
|
+
#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), DEBUG_LOCATION)
|
643
|
+
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), DEBUG_LOCATION)
|
644
|
+
static void tcp_unref(grpc_tcp* tcp, const char* reason,
|
645
|
+
const grpc_core::DebugLocation& debug_location) {
|
646
|
+
if (GPR_UNLIKELY(tcp->refcount.Unref(debug_location, reason))) {
|
373
647
|
tcp_free(tcp);
|
374
648
|
}
|
375
649
|
}
|
376
650
|
|
377
|
-
static void tcp_ref(grpc_tcp* tcp, const char* reason,
|
378
|
-
|
379
|
-
|
380
|
-
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
381
|
-
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
382
|
-
"TCP ref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
383
|
-
val + 1);
|
384
|
-
}
|
385
|
-
gpr_ref(&tcp->refcount);
|
651
|
+
static void tcp_ref(grpc_tcp* tcp, const char* reason,
|
652
|
+
const grpc_core::DebugLocation& debug_location) {
|
653
|
+
tcp->refcount.Ref(debug_location, reason);
|
386
654
|
}
|
387
655
|
#else
|
388
656
|
#define TCP_UNREF(tcp, reason) tcp_unref((tcp))
|
389
657
|
#define TCP_REF(tcp, reason) tcp_ref((tcp))
|
390
658
|
static void tcp_unref(grpc_tcp* tcp) {
|
391
|
-
if (
|
659
|
+
if (GPR_UNLIKELY(tcp->refcount.Unref())) {
|
392
660
|
tcp_free(tcp);
|
393
661
|
}
|
394
662
|
}
|
395
663
|
|
396
|
-
static void tcp_ref(grpc_tcp* tcp) {
|
664
|
+
static void tcp_ref(grpc_tcp* tcp) { tcp->refcount.Ref(); }
|
397
665
|
#endif
|
398
666
|
|
399
667
|
static void tcp_destroy(grpc_endpoint* ep) {
|
400
668
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
401
669
|
grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
|
402
670
|
if (grpc_event_engine_can_track_errors()) {
|
671
|
+
ZerocopyDisableAndWaitForRemaining(tcp);
|
403
672
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
404
673
|
grpc_fd_set_error(tcp->em_fd);
|
405
674
|
}
|
@@ -413,7 +682,8 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) {
|
|
413
682
|
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
414
683
|
size_t i;
|
415
684
|
const char* str = grpc_error_string(error);
|
416
|
-
gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
|
685
|
+
gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
|
686
|
+
tcp->peer_string.c_str(), str);
|
417
687
|
|
418
688
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
419
689
|
for (i = 0; i < tcp->incoming_buffer->count; i++) {
|
@@ -427,7 +697,7 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) {
|
|
427
697
|
|
428
698
|
tcp->read_cb = nullptr;
|
429
699
|
tcp->incoming_buffer = nullptr;
|
430
|
-
|
700
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
431
701
|
}
|
432
702
|
|
433
703
|
#define MAX_READ_IOVEC 4
|
@@ -435,12 +705,17 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
435
705
|
GPR_TIMER_SCOPE("tcp_do_read", 0);
|
436
706
|
struct msghdr msg;
|
437
707
|
struct iovec iov[MAX_READ_IOVEC];
|
438
|
-
char cmsgbuf[24 /*CMSG_SPACE(sizeof(int))*/];
|
439
708
|
ssize_t read_bytes;
|
440
709
|
size_t total_read_bytes = 0;
|
441
|
-
|
442
710
|
size_t iov_len =
|
443
711
|
std::min<size_t>(MAX_READ_IOVEC, tcp->incoming_buffer->count);
|
712
|
+
#ifdef GRPC_LINUX_ERRQUEUE
|
713
|
+
constexpr size_t cmsg_alloc_space =
|
714
|
+
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) + CMSG_SPACE(sizeof(int));
|
715
|
+
#else
|
716
|
+
constexpr size_t cmsg_alloc_space = 24 /* CMSG_SPACE(sizeof(int)) */;
|
717
|
+
#endif /* GRPC_LINUX_ERRQUEUE */
|
718
|
+
char cmsgbuf[cmsg_alloc_space];
|
444
719
|
for (size_t i = 0; i < iov_len; i++) {
|
445
720
|
iov[i].iov_base = GRPC_SLICE_START_PTR(tcp->incoming_buffer->slices[i]);
|
446
721
|
iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]);
|
@@ -524,6 +799,7 @@ static void tcp_do_read(grpc_tcp* tcp) {
|
|
524
799
|
if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ &&
|
525
800
|
cmsg->cmsg_len == CMSG_LEN(sizeof(int))) {
|
526
801
|
tcp->inq = *reinterpret_cast<int*>(CMSG_DATA(cmsg));
|
802
|
+
break;
|
527
803
|
}
|
528
804
|
}
|
529
805
|
}
|
@@ -577,7 +853,7 @@ static void tcp_read_allocation_done(void* tcpp, grpc_error* error) {
|
|
577
853
|
gpr_log(GPR_INFO, "TCP:%p read_allocation_done: %s", tcp,
|
578
854
|
grpc_error_string(error));
|
579
855
|
}
|
580
|
-
if (error != GRPC_ERROR_NONE) {
|
856
|
+
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
581
857
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
582
858
|
grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
|
583
859
|
call_read_cb(tcp, GRPC_ERROR_REF(error));
|
@@ -595,14 +871,17 @@ static void tcp_continue_read(grpc_tcp* tcp) {
|
|
595
871
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
596
872
|
gpr_log(GPR_INFO, "TCP:%p alloc_slices", tcp);
|
597
873
|
}
|
598
|
-
grpc_resource_user_alloc_slices(&tcp->slice_allocator,
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
874
|
+
if (GPR_UNLIKELY(!grpc_resource_user_alloc_slices(&tcp->slice_allocator,
|
875
|
+
target_read_size, 1,
|
876
|
+
tcp->incoming_buffer))) {
|
877
|
+
// Wait for allocation.
|
878
|
+
return;
|
603
879
|
}
|
604
|
-
tcp_do_read(tcp);
|
605
880
|
}
|
881
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
882
|
+
gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
|
883
|
+
}
|
884
|
+
tcp_do_read(tcp);
|
606
885
|
}
|
607
886
|
|
608
887
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error) {
|
@@ -611,7 +890,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error) {
|
|
611
890
|
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp, grpc_error_string(error));
|
612
891
|
}
|
613
892
|
|
614
|
-
if (error != GRPC_ERROR_NONE) {
|
893
|
+
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
615
894
|
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
|
616
895
|
grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
|
617
896
|
call_read_cb(tcp, GRPC_ERROR_REF(error));
|
@@ -646,19 +925,20 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
646
925
|
* right thing (i.e calls tcp_do_read() which either reads the available
|
647
926
|
* bytes or calls notify_on_read() to be notified when new bytes become
|
648
927
|
* available */
|
649
|
-
|
928
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, &tcp->read_done_closure,
|
929
|
+
GRPC_ERROR_NONE);
|
650
930
|
}
|
651
931
|
}
|
652
932
|
|
653
933
|
/* A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
|
654
934
|
* of bytes sent. */
|
655
|
-
ssize_t tcp_send(int fd, const struct msghdr* msg) {
|
935
|
+
ssize_t tcp_send(int fd, const struct msghdr* msg, int additional_flags = 0) {
|
656
936
|
GPR_TIMER_SCOPE("sendmsg", 1);
|
657
937
|
ssize_t sent_length;
|
658
938
|
do {
|
659
939
|
/* TODO(klempner): Cork if this is a partial write */
|
660
940
|
GRPC_STATS_INC_SYSCALL_WRITE();
|
661
|
-
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS);
|
941
|
+
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
|
662
942
|
} while (sent_length < 0 && errno == EINTR);
|
663
943
|
return sent_length;
|
664
944
|
}
|
@@ -671,21 +951,56 @@ ssize_t tcp_send(int fd, const struct msghdr* msg) {
|
|
671
951
|
*/
|
672
952
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
673
953
|
size_t sending_length,
|
674
|
-
ssize_t* sent_length
|
954
|
+
ssize_t* sent_length,
|
955
|
+
int additional_flags = 0);
|
675
956
|
|
676
957
|
/** The callback function to be invoked when we get an error on the socket. */
|
677
958
|
static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error* error);
|
678
959
|
|
960
|
+
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
961
|
+
grpc_tcp* tcp, grpc_slice_buffer* buf);
|
962
|
+
|
679
963
|
#ifdef GRPC_LINUX_ERRQUEUE
|
964
|
+
static bool process_errors(grpc_tcp* tcp);
|
965
|
+
|
966
|
+
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
967
|
+
grpc_tcp* tcp, grpc_slice_buffer* buf) {
|
968
|
+
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
969
|
+
const bool use_zerocopy =
|
970
|
+
tcp->tcp_zerocopy_send_ctx.enabled() &&
|
971
|
+
tcp->tcp_zerocopy_send_ctx.threshold_bytes() < buf->length;
|
972
|
+
if (use_zerocopy) {
|
973
|
+
zerocopy_send_record = tcp->tcp_zerocopy_send_ctx.GetSendRecord();
|
974
|
+
if (zerocopy_send_record == nullptr) {
|
975
|
+
process_errors(tcp);
|
976
|
+
zerocopy_send_record = tcp->tcp_zerocopy_send_ctx.GetSendRecord();
|
977
|
+
}
|
978
|
+
if (zerocopy_send_record != nullptr) {
|
979
|
+
zerocopy_send_record->PrepareForSends(buf);
|
980
|
+
GPR_DEBUG_ASSERT(buf->count == 0);
|
981
|
+
GPR_DEBUG_ASSERT(buf->length == 0);
|
982
|
+
tcp->outgoing_byte_idx = 0;
|
983
|
+
tcp->outgoing_buffer = nullptr;
|
984
|
+
}
|
985
|
+
}
|
986
|
+
return zerocopy_send_record;
|
987
|
+
}
|
988
|
+
|
989
|
+
static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
|
990
|
+
tcp->tcp_zerocopy_send_ctx.Shutdown();
|
991
|
+
while (!tcp->tcp_zerocopy_send_ctx.AllSendRecordsEmpty()) {
|
992
|
+
process_errors(tcp);
|
993
|
+
}
|
994
|
+
}
|
680
995
|
|
681
996
|
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
682
997
|
size_t sending_length,
|
683
|
-
ssize_t* sent_length
|
998
|
+
ssize_t* sent_length,
|
999
|
+
int additional_flags) {
|
684
1000
|
if (!tcp->socket_ts_enabled) {
|
685
1001
|
uint32_t opt = grpc_core::kTimestampingSocketOptions;
|
686
1002
|
if (setsockopt(tcp->fd, SOL_SOCKET, SO_TIMESTAMPING,
|
687
1003
|
static_cast<void*>(&opt), sizeof(opt)) != 0) {
|
688
|
-
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
|
689
1004
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
690
1005
|
gpr_log(GPR_ERROR, "Failed to set timestamping options on the socket.");
|
691
1006
|
}
|
@@ -709,7 +1024,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
709
1024
|
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
|
710
1025
|
|
711
1026
|
/* If there was an error on sendmsg the logic in tcp_flush will handle it. */
|
712
|
-
ssize_t length = tcp_send(tcp->fd, msg);
|
1027
|
+
ssize_t length = tcp_send(tcp->fd, msg, additional_flags);
|
713
1028
|
*sent_length = length;
|
714
1029
|
/* Only save timestamps if all the bytes were taken by sendmsg. */
|
715
1030
|
if (sending_length == static_cast<size_t>(length)) {
|
@@ -723,6 +1038,43 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
|
|
723
1038
|
return true;
|
724
1039
|
}
|
725
1040
|
|
1041
|
+
static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp,
|
1042
|
+
TcpZerocopySendRecord* record,
|
1043
|
+
uint32_t seq, const char* tag);
|
1044
|
+
// Reads \a cmsg to process zerocopy control messages.
|
1045
|
+
static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
|
1046
|
+
GPR_DEBUG_ASSERT(cmsg);
|
1047
|
+
auto serr = reinterpret_cast<struct sock_extended_err*>(CMSG_DATA(cmsg));
|
1048
|
+
GPR_DEBUG_ASSERT(serr->ee_errno == 0);
|
1049
|
+
GPR_DEBUG_ASSERT(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY);
|
1050
|
+
const uint32_t lo = serr->ee_info;
|
1051
|
+
const uint32_t hi = serr->ee_data;
|
1052
|
+
for (uint32_t seq = lo; seq <= hi; ++seq) {
|
1053
|
+
// TODO(arjunroy): It's likely that lo and hi refer to zerocopy sequence
|
1054
|
+
// numbers that are generated by a single call to grpc_endpoint_write; ie.
|
1055
|
+
// we can batch the unref operation. So, check if record is the same for
|
1056
|
+
// both; if so, batch the unref/put.
|
1057
|
+
TcpZerocopySendRecord* record =
|
1058
|
+
tcp->tcp_zerocopy_send_ctx.ReleaseSendRecord(seq);
|
1059
|
+
GPR_DEBUG_ASSERT(record);
|
1060
|
+
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
|
1061
|
+
}
|
1062
|
+
}
|
1063
|
+
|
1064
|
+
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
|
1065
|
+
static bool CmsgIsIpLevel(const cmsghdr& cmsg) {
|
1066
|
+
return (cmsg.cmsg_level == SOL_IPV6 && cmsg.cmsg_type == IPV6_RECVERR) ||
|
1067
|
+
(cmsg.cmsg_level == SOL_IP && cmsg.cmsg_type == IP_RECVERR);
|
1068
|
+
}
|
1069
|
+
|
1070
|
+
static bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
|
1071
|
+
if (!CmsgIsIpLevel(cmsg)) {
|
1072
|
+
return false;
|
1073
|
+
}
|
1074
|
+
auto serr = reinterpret_cast<const sock_extended_err*> CMSG_DATA(&cmsg);
|
1075
|
+
return serr->ee_errno == 0 && serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY;
|
1076
|
+
}
|
1077
|
+
|
726
1078
|
/** Reads \a cmsg to derive timestamps from the control messages. If a valid
|
727
1079
|
* timestamp is found, the traced buffer list is updated with this timestamp.
|
728
1080
|
* The caller of this function should be looping on the control messages found
|
@@ -784,73 +1136,76 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
784
1136
|
/** For linux platforms, reads the socket's error queue and processes error
|
785
1137
|
* messages from the queue.
|
786
1138
|
*/
|
787
|
-
static
|
1139
|
+
static bool process_errors(grpc_tcp* tcp) {
|
1140
|
+
bool processed_err = false;
|
1141
|
+
struct iovec iov;
|
1142
|
+
iov.iov_base = nullptr;
|
1143
|
+
iov.iov_len = 0;
|
1144
|
+
struct msghdr msg;
|
1145
|
+
msg.msg_name = nullptr;
|
1146
|
+
msg.msg_namelen = 0;
|
1147
|
+
msg.msg_iov = &iov;
|
1148
|
+
msg.msg_iovlen = 0;
|
1149
|
+
msg.msg_flags = 0;
|
1150
|
+
/* Allocate enough space so we don't need to keep increasing this as size
|
1151
|
+
* of OPT_STATS increase */
|
1152
|
+
constexpr size_t cmsg_alloc_space =
|
1153
|
+
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) +
|
1154
|
+
CMSG_SPACE(sizeof(sock_extended_err) + sizeof(sockaddr_in)) +
|
1155
|
+
CMSG_SPACE(32 * NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t)));
|
1156
|
+
/* Allocate aligned space for cmsgs received along with timestamps */
|
1157
|
+
union {
|
1158
|
+
char rbuf[cmsg_alloc_space];
|
1159
|
+
struct cmsghdr align;
|
1160
|
+
} aligned_buf;
|
1161
|
+
msg.msg_control = aligned_buf.rbuf;
|
1162
|
+
msg.msg_controllen = sizeof(aligned_buf.rbuf);
|
1163
|
+
int r, saved_errno;
|
788
1164
|
while (true) {
|
789
|
-
struct iovec iov;
|
790
|
-
iov.iov_base = nullptr;
|
791
|
-
iov.iov_len = 0;
|
792
|
-
struct msghdr msg;
|
793
|
-
msg.msg_name = nullptr;
|
794
|
-
msg.msg_namelen = 0;
|
795
|
-
msg.msg_iov = &iov;
|
796
|
-
msg.msg_iovlen = 0;
|
797
|
-
msg.msg_flags = 0;
|
798
|
-
|
799
|
-
/* Allocate enough space so we don't need to keep increasing this as size
|
800
|
-
* of OPT_STATS increase */
|
801
|
-
constexpr size_t cmsg_alloc_space =
|
802
|
-
CMSG_SPACE(sizeof(grpc_core::scm_timestamping)) +
|
803
|
-
CMSG_SPACE(sizeof(sock_extended_err) + sizeof(sockaddr_in)) +
|
804
|
-
CMSG_SPACE(32 * NLA_ALIGN(NLA_HDRLEN + sizeof(uint64_t)));
|
805
|
-
/* Allocate aligned space for cmsgs received along with timestamps */
|
806
|
-
union {
|
807
|
-
char rbuf[cmsg_alloc_space];
|
808
|
-
struct cmsghdr align;
|
809
|
-
} aligned_buf;
|
810
|
-
memset(&aligned_buf, 0, sizeof(aligned_buf));
|
811
|
-
|
812
|
-
msg.msg_control = aligned_buf.rbuf;
|
813
|
-
msg.msg_controllen = sizeof(aligned_buf.rbuf);
|
814
|
-
|
815
|
-
int r, saved_errno;
|
816
1165
|
do {
|
817
1166
|
r = recvmsg(tcp->fd, &msg, MSG_ERRQUEUE);
|
818
1167
|
saved_errno = errno;
|
819
1168
|
} while (r < 0 && saved_errno == EINTR);
|
820
1169
|
|
821
1170
|
if (r == -1 && saved_errno == EAGAIN) {
|
822
|
-
return; /* No more errors to process */
|
1171
|
+
return processed_err; /* No more errors to process */
|
823
1172
|
}
|
824
1173
|
if (r == -1) {
|
825
|
-
return;
|
1174
|
+
return processed_err;
|
826
1175
|
}
|
827
|
-
if ((msg.msg_flags & MSG_CTRUNC) != 0) {
|
1176
|
+
if (GPR_UNLIKELY((msg.msg_flags & MSG_CTRUNC) != 0)) {
|
828
1177
|
gpr_log(GPR_ERROR, "Error message was truncated.");
|
829
1178
|
}
|
830
1179
|
|
831
1180
|
if (msg.msg_controllen == 0) {
|
832
1181
|
/* There was no control message found. It was probably spurious. */
|
833
|
-
return;
|
1182
|
+
return processed_err;
|
834
1183
|
}
|
835
1184
|
bool seen = false;
|
836
1185
|
for (auto cmsg = CMSG_FIRSTHDR(&msg); cmsg && cmsg->cmsg_len;
|
837
1186
|
cmsg = CMSG_NXTHDR(&msg, cmsg)) {
|
838
|
-
if (cmsg
|
839
|
-
|
840
|
-
|
841
|
-
|
1187
|
+
if (CmsgIsZeroCopy(*cmsg)) {
|
1188
|
+
process_zerocopy(tcp, cmsg);
|
1189
|
+
seen = true;
|
1190
|
+
processed_err = true;
|
1191
|
+
} else if (cmsg->cmsg_level == SOL_SOCKET &&
|
1192
|
+
cmsg->cmsg_type == SCM_TIMESTAMPING) {
|
1193
|
+
cmsg = process_timestamp(tcp, &msg, cmsg);
|
1194
|
+
seen = true;
|
1195
|
+
processed_err = true;
|
1196
|
+
} else {
|
1197
|
+
/* Got a control message that is not a timestamp or zerocopy. Don't know
|
1198
|
+
* how to handle this. */
|
842
1199
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
843
1200
|
gpr_log(GPR_INFO,
|
844
1201
|
"unknown control message cmsg_level:%d cmsg_type:%d",
|
845
1202
|
cmsg->cmsg_level, cmsg->cmsg_type);
|
846
1203
|
}
|
847
|
-
return;
|
1204
|
+
return processed_err;
|
848
1205
|
}
|
849
|
-
cmsg = process_timestamp(tcp, &msg, cmsg);
|
850
|
-
seen = true;
|
851
1206
|
}
|
852
1207
|
if (!seen) {
|
853
|
-
return;
|
1208
|
+
return processed_err;
|
854
1209
|
}
|
855
1210
|
}
|
856
1211
|
}
|
@@ -871,24 +1226,35 @@ static void tcp_handle_error(void* arg /* grpc_tcp */, grpc_error* error) {
|
|
871
1226
|
|
872
1227
|
/* We are still interested in collecting timestamps, so let's try reading
|
873
1228
|
* them. */
|
874
|
-
process_errors(tcp);
|
1229
|
+
bool processed = process_errors(tcp);
|
875
1230
|
/* This might not a timestamps error. Set the read and write closures to be
|
876
1231
|
* ready. */
|
877
|
-
|
878
|
-
|
1232
|
+
if (!processed) {
|
1233
|
+
grpc_fd_set_readable(tcp->em_fd);
|
1234
|
+
grpc_fd_set_writable(tcp->em_fd);
|
1235
|
+
}
|
879
1236
|
grpc_fd_notify_on_error(tcp->em_fd, &tcp->error_closure);
|
880
1237
|
}
|
881
1238
|
|
882
1239
|
#else /* GRPC_LINUX_ERRQUEUE */
|
883
|
-
static
|
884
|
-
|
885
|
-
|
1240
|
+
static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
|
1241
|
+
grpc_tcp* tcp, grpc_slice_buffer* buf) {
|
1242
|
+
return nullptr;
|
1243
|
+
}
|
1244
|
+
|
1245
|
+
static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {}
|
1246
|
+
|
1247
|
+
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
|
1248
|
+
size_t /*sending_length*/,
|
1249
|
+
ssize_t* /*sent_length*/,
|
1250
|
+
int /*additional_flags*/) {
|
886
1251
|
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
|
887
1252
|
GPR_ASSERT(0);
|
888
1253
|
return false;
|
889
1254
|
}
|
890
1255
|
|
891
|
-
static void tcp_handle_error(void* arg /* grpc_tcp */,
|
1256
|
+
static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
|
1257
|
+
grpc_error* /*error*/) {
|
892
1258
|
gpr_log(GPR_ERROR, "Error handling is not supported for this platform");
|
893
1259
|
GPR_ASSERT(0);
|
894
1260
|
}
|
@@ -907,12 +1273,139 @@ void tcp_shutdown_buffer_list(grpc_tcp* tcp) {
|
|
907
1273
|
}
|
908
1274
|
}
|
909
1275
|
|
910
|
-
/* returns true if done, false if pending; if returning true, *error is set */
|
911
1276
|
#if defined(IOV_MAX) && IOV_MAX < 1000
|
912
1277
|
#define MAX_WRITE_IOVEC IOV_MAX
|
913
1278
|
#else
|
914
1279
|
#define MAX_WRITE_IOVEC 1000
|
915
1280
|
#endif
|
1281
|
+
msg_iovlen_type TcpZerocopySendRecord::PopulateIovs(size_t* unwind_slice_idx,
|
1282
|
+
size_t* unwind_byte_idx,
|
1283
|
+
size_t* sending_length,
|
1284
|
+
iovec* iov) {
|
1285
|
+
msg_iovlen_type iov_size;
|
1286
|
+
*unwind_slice_idx = out_offset_.slice_idx;
|
1287
|
+
*unwind_byte_idx = out_offset_.byte_idx;
|
1288
|
+
for (iov_size = 0;
|
1289
|
+
out_offset_.slice_idx != buf_.count && iov_size != MAX_WRITE_IOVEC;
|
1290
|
+
iov_size++) {
|
1291
|
+
iov[iov_size].iov_base =
|
1292
|
+
GRPC_SLICE_START_PTR(buf_.slices[out_offset_.slice_idx]) +
|
1293
|
+
out_offset_.byte_idx;
|
1294
|
+
iov[iov_size].iov_len =
|
1295
|
+
GRPC_SLICE_LENGTH(buf_.slices[out_offset_.slice_idx]) -
|
1296
|
+
out_offset_.byte_idx;
|
1297
|
+
*sending_length += iov[iov_size].iov_len;
|
1298
|
+
++(out_offset_.slice_idx);
|
1299
|
+
out_offset_.byte_idx = 0;
|
1300
|
+
}
|
1301
|
+
GPR_DEBUG_ASSERT(iov_size > 0);
|
1302
|
+
return iov_size;
|
1303
|
+
}
|
1304
|
+
|
1305
|
+
void TcpZerocopySendRecord::UpdateOffsetForBytesSent(size_t sending_length,
|
1306
|
+
size_t actually_sent) {
|
1307
|
+
size_t trailing = sending_length - actually_sent;
|
1308
|
+
while (trailing > 0) {
|
1309
|
+
size_t slice_length;
|
1310
|
+
out_offset_.slice_idx--;
|
1311
|
+
slice_length = GRPC_SLICE_LENGTH(buf_.slices[out_offset_.slice_idx]);
|
1312
|
+
if (slice_length > trailing) {
|
1313
|
+
out_offset_.byte_idx = slice_length - trailing;
|
1314
|
+
break;
|
1315
|
+
} else {
|
1316
|
+
trailing -= slice_length;
|
1317
|
+
}
|
1318
|
+
}
|
1319
|
+
}
|
1320
|
+
|
1321
|
+
// returns true if done, false if pending; if returning true, *error is set
|
1322
|
+
static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
1323
|
+
grpc_error** error) {
|
1324
|
+
struct msghdr msg;
|
1325
|
+
struct iovec iov[MAX_WRITE_IOVEC];
|
1326
|
+
msg_iovlen_type iov_size;
|
1327
|
+
ssize_t sent_length = 0;
|
1328
|
+
size_t sending_length;
|
1329
|
+
size_t unwind_slice_idx;
|
1330
|
+
size_t unwind_byte_idx;
|
1331
|
+
while (true) {
|
1332
|
+
sending_length = 0;
|
1333
|
+
iov_size = record->PopulateIovs(&unwind_slice_idx, &unwind_byte_idx,
|
1334
|
+
&sending_length, iov);
|
1335
|
+
msg.msg_name = nullptr;
|
1336
|
+
msg.msg_namelen = 0;
|
1337
|
+
msg.msg_iov = iov;
|
1338
|
+
msg.msg_iovlen = iov_size;
|
1339
|
+
msg.msg_flags = 0;
|
1340
|
+
bool tried_sending_message = false;
|
1341
|
+
// Before calling sendmsg (with or without timestamps): we
|
1342
|
+
// take a single ref on the zerocopy send record.
|
1343
|
+
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
|
1344
|
+
if (tcp->outgoing_buffer_arg != nullptr) {
|
1345
|
+
if (!tcp->ts_capable ||
|
1346
|
+
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
|
1347
|
+
MSG_ZEROCOPY)) {
|
1348
|
+
/* We could not set socket options to collect Fathom timestamps.
|
1349
|
+
* Fallback on writing without timestamps. */
|
1350
|
+
tcp->ts_capable = false;
|
1351
|
+
tcp_shutdown_buffer_list(tcp);
|
1352
|
+
} else {
|
1353
|
+
tried_sending_message = true;
|
1354
|
+
}
|
1355
|
+
}
|
1356
|
+
if (!tried_sending_message) {
|
1357
|
+
msg.msg_control = nullptr;
|
1358
|
+
msg.msg_controllen = 0;
|
1359
|
+
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
|
1360
|
+
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
|
1361
|
+
sent_length = tcp_send(tcp->fd, &msg, MSG_ZEROCOPY);
|
1362
|
+
}
|
1363
|
+
if (sent_length < 0) {
|
1364
|
+
// If this particular send failed, drop ref taken earlier in this method.
|
1365
|
+
tcp->tcp_zerocopy_send_ctx.UndoSend();
|
1366
|
+
if (errno == EAGAIN) {
|
1367
|
+
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
|
1368
|
+
return false;
|
1369
|
+
} else if (errno == EPIPE) {
|
1370
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
|
1371
|
+
tcp_shutdown_buffer_list(tcp);
|
1372
|
+
return true;
|
1373
|
+
} else {
|
1374
|
+
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
|
1375
|
+
tcp_shutdown_buffer_list(tcp);
|
1376
|
+
return true;
|
1377
|
+
}
|
1378
|
+
}
|
1379
|
+
tcp->bytes_counter += sent_length;
|
1380
|
+
record->UpdateOffsetForBytesSent(sending_length,
|
1381
|
+
static_cast<size_t>(sent_length));
|
1382
|
+
if (record->AllSlicesSent()) {
|
1383
|
+
*error = GRPC_ERROR_NONE;
|
1384
|
+
return true;
|
1385
|
+
}
|
1386
|
+
}
|
1387
|
+
}
|
1388
|
+
|
1389
|
+
static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp,
|
1390
|
+
TcpZerocopySendRecord* record,
|
1391
|
+
uint32_t seq,
|
1392
|
+
const char* /* tag */) {
|
1393
|
+
if (record->Unref()) {
|
1394
|
+
tcp->tcp_zerocopy_send_ctx.PutSendRecord(record);
|
1395
|
+
}
|
1396
|
+
}
|
1397
|
+
|
1398
|
+
static bool tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
|
1399
|
+
grpc_error** error) {
|
1400
|
+
bool done = do_tcp_flush_zerocopy(tcp, record, error);
|
1401
|
+
if (done) {
|
1402
|
+
// Either we encountered an error, or we successfully sent all the bytes.
|
1403
|
+
// In either case, we're done with this record.
|
1404
|
+
UnrefMaybePutZerocopySendRecord(tcp, record, 0, "flush_done");
|
1405
|
+
}
|
1406
|
+
return done;
|
1407
|
+
}
|
1408
|
+
|
916
1409
|
static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) {
|
917
1410
|
struct msghdr msg;
|
918
1411
|
struct iovec iov[MAX_WRITE_IOVEC];
|
@@ -927,7 +1420,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) {
|
|
927
1420
|
// buffer as we write
|
928
1421
|
size_t outgoing_slice_idx = 0;
|
929
1422
|
|
930
|
-
|
1423
|
+
while (true) {
|
931
1424
|
sending_length = 0;
|
932
1425
|
unwind_slice_idx = outgoing_slice_idx;
|
933
1426
|
unwind_byte_idx = tcp->outgoing_byte_idx;
|
@@ -980,8 +1473,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error** error) {
|
|
980
1473
|
// unref all and forget about all slices that have been written to this
|
981
1474
|
// point
|
982
1475
|
for (size_t idx = 0; idx < unwind_slice_idx; ++idx) {
|
983
|
-
|
984
|
-
grpc_slice_buffer_take_first(tcp->outgoing_buffer));
|
1476
|
+
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
|
985
1477
|
}
|
986
1478
|
return false;
|
987
1479
|
} else if (errno == EPIPE) {
|
@@ -1028,24 +1520,37 @@ static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error* error) {
|
|
1028
1520
|
if (error != GRPC_ERROR_NONE) {
|
1029
1521
|
cb = tcp->write_cb;
|
1030
1522
|
tcp->write_cb = nullptr;
|
1031
|
-
|
1523
|
+
if (tcp->current_zerocopy_send != nullptr) {
|
1524
|
+
UnrefMaybePutZerocopySendRecord(tcp, tcp->current_zerocopy_send, 0,
|
1525
|
+
"handle_write_err");
|
1526
|
+
tcp->current_zerocopy_send = nullptr;
|
1527
|
+
}
|
1528
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, GRPC_ERROR_REF(error));
|
1032
1529
|
TCP_UNREF(tcp, "write");
|
1033
1530
|
return;
|
1034
1531
|
}
|
1035
1532
|
|
1036
|
-
|
1533
|
+
bool flush_result =
|
1534
|
+
tcp->current_zerocopy_send != nullptr
|
1535
|
+
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
|
1536
|
+
: tcp_flush(tcp, &error);
|
1537
|
+
if (!flush_result) {
|
1037
1538
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1038
1539
|
gpr_log(GPR_INFO, "write: delayed");
|
1039
1540
|
}
|
1040
1541
|
notify_on_write(tcp);
|
1542
|
+
// tcp_flush does not populate error if it has returned false.
|
1543
|
+
GPR_DEBUG_ASSERT(error == GRPC_ERROR_NONE);
|
1041
1544
|
} else {
|
1042
1545
|
cb = tcp->write_cb;
|
1043
1546
|
tcp->write_cb = nullptr;
|
1547
|
+
tcp->current_zerocopy_send = nullptr;
|
1044
1548
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1045
1549
|
const char* str = grpc_error_string(error);
|
1046
1550
|
gpr_log(GPR_INFO, "write: %s", str);
|
1047
1551
|
}
|
1048
|
-
|
1552
|
+
// No need to take a ref on error since tcp_flush provides a ref.
|
1553
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1049
1554
|
TCP_UNREF(tcp, "write");
|
1050
1555
|
}
|
1051
1556
|
}
|
@@ -1055,12 +1560,13 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1055
1560
|
GPR_TIMER_SCOPE("tcp_write", 0);
|
1056
1561
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1057
1562
|
grpc_error* error = GRPC_ERROR_NONE;
|
1563
|
+
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
|
1058
1564
|
|
1059
1565
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1060
1566
|
size_t i;
|
1061
1567
|
|
1062
1568
|
for (i = 0; i < buf->count; i++) {
|
1063
|
-
gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string);
|
1569
|
+
gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string.c_str());
|
1064
1570
|
if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
|
1065
1571
|
char* data =
|
1066
1572
|
grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
@@ -1071,26 +1577,38 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1071
1577
|
}
|
1072
1578
|
|
1073
1579
|
GPR_ASSERT(tcp->write_cb == nullptr);
|
1580
|
+
GPR_DEBUG_ASSERT(tcp->current_zerocopy_send == nullptr);
|
1074
1581
|
|
1075
|
-
tcp->outgoing_buffer_arg = arg;
|
1076
1582
|
if (buf->length == 0) {
|
1077
|
-
|
1078
|
-
cb,
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1583
|
+
grpc_core::Closure::Run(
|
1584
|
+
DEBUG_LOCATION, cb,
|
1585
|
+
grpc_fd_is_shutdown(tcp->em_fd)
|
1586
|
+
? tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"),
|
1587
|
+
tcp)
|
1588
|
+
: GRPC_ERROR_NONE);
|
1082
1589
|
tcp_shutdown_buffer_list(tcp);
|
1083
1590
|
return;
|
1084
1591
|
}
|
1085
|
-
|
1086
|
-
|
1592
|
+
|
1593
|
+
zerocopy_send_record = tcp_get_send_zerocopy_record(tcp, buf);
|
1594
|
+
if (zerocopy_send_record == nullptr) {
|
1595
|
+
// Either not enough bytes, or couldn't allocate a zerocopy context.
|
1596
|
+
tcp->outgoing_buffer = buf;
|
1597
|
+
tcp->outgoing_byte_idx = 0;
|
1598
|
+
}
|
1599
|
+
tcp->outgoing_buffer_arg = arg;
|
1087
1600
|
if (arg) {
|
1088
1601
|
GPR_ASSERT(grpc_event_engine_can_track_errors());
|
1089
1602
|
}
|
1090
1603
|
|
1091
|
-
|
1604
|
+
bool flush_result =
|
1605
|
+
zerocopy_send_record != nullptr
|
1606
|
+
? tcp_flush_zerocopy(tcp, zerocopy_send_record, &error)
|
1607
|
+
: tcp_flush(tcp, &error);
|
1608
|
+
if (!flush_result) {
|
1092
1609
|
TCP_REF(tcp, "write");
|
1093
1610
|
tcp->write_cb = cb;
|
1611
|
+
tcp->current_zerocopy_send = zerocopy_send_record;
|
1094
1612
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
1095
1613
|
gpr_log(GPR_INFO, "write: delayed");
|
1096
1614
|
}
|
@@ -1100,7 +1618,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
|
|
1100
1618
|
const char* str = grpc_error_string(error);
|
1101
1619
|
gpr_log(GPR_INFO, "write: %s", str);
|
1102
1620
|
}
|
1103
|
-
|
1621
|
+
grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
|
1104
1622
|
}
|
1105
1623
|
}
|
1106
1624
|
|
@@ -1118,12 +1636,18 @@ static void tcp_add_to_pollset_set(grpc_endpoint* ep,
|
|
1118
1636
|
static void tcp_delete_from_pollset_set(grpc_endpoint* ep,
|
1119
1637
|
grpc_pollset_set* pollset_set) {
|
1120
1638
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1639
|
+
ZerocopyDisableAndWaitForRemaining(tcp);
|
1121
1640
|
grpc_pollset_set_del_fd(pollset_set, tcp->em_fd);
|
1122
1641
|
}
|
1123
1642
|
|
1124
|
-
static
|
1643
|
+
static absl::string_view tcp_get_peer(grpc_endpoint* ep) {
|
1644
|
+
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1645
|
+
return tcp->peer_string;
|
1646
|
+
}
|
1647
|
+
|
1648
|
+
static absl::string_view tcp_get_local_address(grpc_endpoint* ep) {
|
1125
1649
|
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
|
1126
|
-
return
|
1650
|
+
return tcp->local_address;
|
1127
1651
|
}
|
1128
1652
|
|
1129
1653
|
static int tcp_get_fd(grpc_endpoint* ep) {
|
@@ -1161,6 +1685,7 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
|
|
1161
1685
|
tcp_destroy,
|
1162
1686
|
tcp_get_resource_user,
|
1163
1687
|
tcp_get_peer,
|
1688
|
+
tcp_get_local_address,
|
1164
1689
|
tcp_get_fd,
|
1165
1690
|
tcp_can_track_err};
|
1166
1691
|
|
@@ -1169,9 +1694,15 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
|
|
1169
1694
|
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
1170
1695
|
const grpc_channel_args* channel_args,
|
1171
1696
|
const char* peer_string) {
|
1697
|
+
static constexpr bool kZerocpTxEnabledDefault = false;
|
1172
1698
|
int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
|
1173
1699
|
int tcp_max_read_chunk_size = 4 * 1024 * 1024;
|
1174
1700
|
int tcp_min_read_chunk_size = 256;
|
1701
|
+
bool tcp_tx_zerocopy_enabled = kZerocpTxEnabledDefault;
|
1702
|
+
int tcp_tx_zerocopy_send_bytes_thresh =
|
1703
|
+
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold;
|
1704
|
+
int tcp_tx_zerocopy_max_simult_sends =
|
1705
|
+
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends;
|
1175
1706
|
grpc_resource_quota* resource_quota = grpc_resource_quota_create(nullptr);
|
1176
1707
|
if (channel_args != nullptr) {
|
1177
1708
|
for (size_t i = 0; i < channel_args->num_args; i++) {
|
@@ -1196,6 +1727,23 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1196
1727
|
resource_quota =
|
1197
1728
|
grpc_resource_quota_ref_internal(static_cast<grpc_resource_quota*>(
|
1198
1729
|
channel_args->args[i].value.pointer.p));
|
1730
|
+
} else if (0 == strcmp(channel_args->args[i].key,
|
1731
|
+
GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) {
|
1732
|
+
tcp_tx_zerocopy_enabled = grpc_channel_arg_get_bool(
|
1733
|
+
&channel_args->args[i], kZerocpTxEnabledDefault);
|
1734
|
+
} else if (0 == strcmp(channel_args->args[i].key,
|
1735
|
+
GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD)) {
|
1736
|
+
grpc_integer_options options = {
|
1737
|
+
grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold, 0,
|
1738
|
+
INT_MAX};
|
1739
|
+
tcp_tx_zerocopy_send_bytes_thresh =
|
1740
|
+
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1741
|
+
} else if (0 == strcmp(channel_args->args[i].key,
|
1742
|
+
GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS)) {
|
1743
|
+
grpc_integer_options options = {
|
1744
|
+
grpc_core::TcpZerocopySendCtx::kDefaultMaxSends, 0, INT_MAX};
|
1745
|
+
tcp_tx_zerocopy_max_simult_sends =
|
1746
|
+
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
1199
1747
|
}
|
1200
1748
|
}
|
1201
1749
|
}
|
@@ -1206,12 +1754,24 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1206
1754
|
tcp_read_chunk_size = GPR_CLAMP(tcp_read_chunk_size, tcp_min_read_chunk_size,
|
1207
1755
|
tcp_max_read_chunk_size);
|
1208
1756
|
|
1209
|
-
grpc_tcp* tcp =
|
1757
|
+
grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
|
1758
|
+
tcp_tx_zerocopy_send_bytes_thresh);
|
1210
1759
|
tcp->base.vtable = &vtable;
|
1211
|
-
tcp->peer_string =
|
1760
|
+
tcp->peer_string = peer_string;
|
1212
1761
|
tcp->fd = grpc_fd_wrapped_fd(em_fd);
|
1762
|
+
grpc_resolved_address resolved_local_addr;
|
1763
|
+
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
|
1764
|
+
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
|
1765
|
+
if (getsockname(tcp->fd,
|
1766
|
+
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
|
1767
|
+
&resolved_local_addr.len) < 0) {
|
1768
|
+
tcp->local_address = "";
|
1769
|
+
} else {
|
1770
|
+
tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
|
1771
|
+
}
|
1213
1772
|
tcp->read_cb = nullptr;
|
1214
1773
|
tcp->write_cb = nullptr;
|
1774
|
+
tcp->current_zerocopy_send = nullptr;
|
1215
1775
|
tcp->release_fd_cb = nullptr;
|
1216
1776
|
tcp->release_fd = nullptr;
|
1217
1777
|
tcp->incoming_buffer = nullptr;
|
@@ -1225,8 +1785,20 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1225
1785
|
tcp->socket_ts_enabled = false;
|
1226
1786
|
tcp->ts_capable = true;
|
1227
1787
|
tcp->outgoing_buffer_arg = nullptr;
|
1788
|
+
if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
|
1789
|
+
#ifdef GRPC_LINUX_ERRQUEUE
|
1790
|
+
const int enable = 1;
|
1791
|
+
auto err =
|
1792
|
+
setsockopt(tcp->fd, SOL_SOCKET, SO_ZEROCOPY, &enable, sizeof(enable));
|
1793
|
+
if (err == 0) {
|
1794
|
+
tcp->tcp_zerocopy_send_ctx.set_enabled(true);
|
1795
|
+
} else {
|
1796
|
+
gpr_log(GPR_ERROR, "Failed to set zerocopy options on the socket.");
|
1797
|
+
}
|
1798
|
+
#endif
|
1799
|
+
}
|
1228
1800
|
/* paired with unref in grpc_tcp_destroy */
|
1229
|
-
|
1801
|
+
new (&tcp->refcount) grpc_core::RefCount(1, &grpc_tcp_trace);
|
1230
1802
|
gpr_atm_no_barrier_store(&tcp->shutdown_count, 0);
|
1231
1803
|
tcp->em_fd = em_fd;
|
1232
1804
|
grpc_slice_buffer_init(&tcp->last_read_buffer);
|
@@ -1291,6 +1863,7 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
|
|
1291
1863
|
grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
|
1292
1864
|
if (grpc_event_engine_can_track_errors()) {
|
1293
1865
|
/* Stop errors notification. */
|
1866
|
+
ZerocopyDisableAndWaitForRemaining(tcp);
|
1294
1867
|
gpr_atm_no_barrier_store(&tcp->stop_error_notification, true);
|
1295
1868
|
grpc_fd_set_error(tcp->em_fd);
|
1296
1869
|
}
|