grpc-flamingo 1.11.0 → 1.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +1150 -176
- data/etc/roots.pem +40 -196
- data/include/grpc/grpc.h +49 -8
- data/include/grpc/grpc_security.h +123 -2
- data/include/grpc/grpc_security_constants.h +6 -0
- data/include/grpc/impl/codegen/fork.h +4 -4
- data/include/grpc/impl/codegen/grpc_types.h +26 -5
- data/include/grpc/impl/codegen/log.h +112 -0
- data/include/grpc/impl/codegen/port_platform.h +55 -4
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/log.h +2 -80
- data/include/grpc/support/string_util.h +2 -0
- data/include/grpc/support/sync.h +0 -16
- data/src/boringssl/err_data.c +602 -588
- data/src/core/ext/{census → filters/census}/grpc_context.cc +0 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +1234 -1070
- data/src/core/ext/filters/client_channel/client_channel.h +5 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +113 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +71 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +22 -5
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +30 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +120 -127
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +36 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +36 -102
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +37 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +25 -22
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +19 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +19 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +4 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +37 -63
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +306 -239
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +444 -392
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +538 -98
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -0
- data/src/core/ext/filters/client_channel/method_params.h +4 -0
- data/src/core/ext/filters/client_channel/resolver.h +10 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +320 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +62 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +49 -294
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +537 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +112 -87
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +17 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +6 -5
- data/src/core/ext/filters/{load_reporting/server_load_reporting_filter.h → client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc} +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +29 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +32 -15
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +58 -15
- data/src/core/ext/filters/client_channel/subchannel.h +11 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -15
- data/src/core/ext/filters/deadline/deadline_filter.h +5 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +10 -9
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -5
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +6 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +123 -131
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +9 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +97 -48
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +32 -27
- data/src/core/ext/transport/inproc/inproc_transport.cc +87 -49
- data/src/core/lib/channel/channel_args.cc +28 -0
- data/src/core/lib/channel/channel_args.h +4 -0
- data/src/core/lib/channel/channel_stack.cc +22 -29
- data/src/core/lib/channel/channel_stack.h +2 -2
- data/src/core/lib/channel/channel_stack_builder.cc +0 -3
- data/src/core/lib/channel/channel_stack_builder.h +0 -2
- data/src/core/lib/channel/channel_trace.cc +28 -63
- data/src/core/lib/channel/channel_trace.h +13 -17
- data/src/core/lib/channel/channelz.cc +153 -0
- data/src/core/lib/channel/channelz.h +133 -0
- data/src/core/lib/channel/channelz_registry.cc +145 -0
- data/src/core/lib/channel/channelz_registry.h +120 -0
- data/src/core/lib/channel/connected_channel.cc +8 -1
- data/src/core/lib/channel/handshaker.cc +71 -0
- data/src/core/lib/channel/handshaker.h +4 -0
- data/src/core/lib/debug/stats.h +7 -0
- data/src/core/lib/debug/stats_data.cc +5 -0
- data/src/core/lib/debug/stats_data.h +120 -0
- data/src/core/lib/debug/trace.cc +2 -1
- data/src/core/lib/debug/trace.h +12 -1
- data/src/core/lib/gpr/alloc.h +28 -0
- data/src/core/lib/gpr/arena.cc +38 -45
- data/src/core/lib/gpr/log.cc +8 -2
- data/src/core/lib/gpr/log_android.cc +4 -0
- data/src/core/lib/gpr/log_linux.cc +4 -0
- data/src/core/lib/gpr/log_posix.cc +4 -0
- data/src/core/lib/gpr/log_windows.cc +5 -0
- data/src/core/lib/gpr/string.cc +28 -0
- data/src/core/lib/gpr/string.h +10 -0
- data/src/core/lib/gprpp/abstract.h +5 -2
- data/src/core/lib/gprpp/fork.cc +268 -0
- data/src/core/lib/gprpp/fork.h +88 -0
- data/src/core/lib/gprpp/inlined_vector.h +87 -37
- data/src/core/lib/gprpp/memory.h +12 -0
- data/src/core/lib/gprpp/mutex_lock.h +42 -0
- data/src/core/lib/gprpp/orphanable.h +10 -12
- data/src/core/lib/gprpp/ref_counted.h +10 -12
- data/src/core/lib/gprpp/ref_counted_ptr.h +65 -8
- data/src/core/lib/gprpp/thd.h +0 -3
- data/src/core/lib/gprpp/thd_posix.cc +5 -54
- data/src/core/lib/gprpp/thd_windows.cc +0 -7
- data/src/core/lib/http/httpcli_security_connector.cc +1 -3
- data/src/core/lib/iomgr/call_combiner.cc +13 -13
- data/src/core/lib/iomgr/call_combiner.h +84 -1
- data/src/core/lib/iomgr/closure.h +6 -5
- data/src/core/lib/iomgr/combiner.cc +30 -13
- data/src/core/lib/iomgr/combiner.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +12 -0
- data/src/core/lib/iomgr/error.h +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +138 -51
- data/src/core/lib/iomgr/ev_epollex_linux.cc +276 -93
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +58 -50
- data/src/core/lib/iomgr/ev_poll_posix.cc +163 -42
- data/src/core/lib/iomgr/ev_posix.cc +88 -24
- data/src/core/lib/iomgr/ev_posix.h +48 -12
- data/src/core/lib/iomgr/exec_ctx.cc +15 -9
- data/src/core/lib/iomgr/exec_ctx.h +48 -20
- data/src/core/lib/iomgr/executor.cc +274 -142
- data/src/core/lib/iomgr/executor.h +82 -16
- data/src/core/lib/iomgr/fork_posix.cc +42 -19
- data/src/core/lib/iomgr/iocp_windows.cc +9 -4
- data/src/core/lib/iomgr/iomgr.cc +2 -0
- data/src/core/lib/iomgr/iomgr.h +5 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +5 -1
- data/src/core/lib/iomgr/polling_entity.cc +11 -2
- data/src/core/lib/iomgr/pollset_custom.cc +2 -2
- data/src/core/lib/iomgr/port.h +51 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +89 -12
- data/src/core/lib/iomgr/resource_quota.h +16 -0
- data/src/core/lib/iomgr/sockaddr_posix.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -1
- data/src/core/lib/iomgr/socket_utils.h +9 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -1
- data/src/core/lib/iomgr/socket_utils_linux.cc +0 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_utils_uv.cc +4 -0
- data/src/core/lib/iomgr/socket_utils_windows.cc +4 -0
- data/src/core/lib/iomgr/socket_windows.cc +33 -0
- data/src/core/lib/iomgr/socket_windows.h +6 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +11 -11
- data/src/core/lib/iomgr/tcp_posix.cc +49 -36
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +16 -36
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +17 -5
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -0
- data/src/core/lib/iomgr/tcp_uv.cc +3 -0
- data/src/core/lib/iomgr/tcp_windows.cc +18 -2
- data/src/core/lib/iomgr/tcp_windows.h +2 -0
- data/src/core/lib/iomgr/timer.h +4 -3
- data/src/core/lib/iomgr/timer_generic.cc +133 -51
- data/src/core/lib/iomgr/timer_manager.cc +12 -14
- data/src/core/lib/iomgr/timer_uv.cc +3 -0
- data/src/core/lib/iomgr/udp_server.cc +106 -52
- data/src/core/lib/iomgr/udp_server.h +8 -4
- data/src/core/lib/json/json.cc +12 -1
- data/src/core/lib/json/json.h +5 -0
- data/src/core/lib/profiling/basic_timers.cc +1 -0
- data/src/core/lib/security/context/security_context.cc +8 -8
- data/src/core/lib/security/context/security_context.h +6 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +0 -20
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +3 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +7 -7
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +1 -38
- data/src/core/lib/security/credentials/credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +89 -115
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +16 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
- data/src/core/lib/security/credentials/local/local_credentials.cc +77 -0
- data/src/core/lib/security/credentials/local/local_credentials.h +40 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +11 -7
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +17 -3
- data/src/core/lib/security/security_connector/alts_security_connector.cc +2 -1
- data/src/core/lib/security/security_connector/load_system_roots.h +29 -0
- data/src/core/lib/{gpr/fork.h → security/security_connector/load_system_roots_fallback.cc} +10 -13
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +165 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +44 -0
- data/src/core/lib/security/security_connector/local_security_connector.cc +245 -0
- data/src/core/lib/security/security_connector/local_security_connector.h +58 -0
- data/src/core/lib/security/security_connector/security_connector.cc +79 -32
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +7 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +4 -7
- data/src/core/lib/security/util/json_util.cc +4 -0
- data/src/core/lib/slice/slice.cc +6 -2
- data/src/core/lib/slice/slice_buffer.cc +27 -7
- data/src/core/lib/slice/slice_hash_table.h +4 -0
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -0
- data/src/core/lib/surface/call.cc +119 -58
- data/src/core/lib/surface/call.h +7 -0
- data/src/core/lib/surface/channel.cc +50 -18
- data/src/core/lib/surface/channel.h +4 -0
- data/src/core/lib/surface/completion_queue.cc +153 -18
- data/src/core/lib/surface/completion_queue.h +20 -2
- data/src/core/lib/surface/completion_queue_factory.cc +13 -4
- data/src/core/lib/surface/init.cc +7 -8
- data/src/core/lib/surface/init.h +0 -1
- data/src/core/lib/surface/server.cc +16 -0
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.cc +3 -3
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/byte_stream.cc +1 -1
- data/src/core/lib/transport/connectivity_state.cc +6 -7
- data/src/core/lib/transport/service_config.cc +2 -2
- data/src/core/lib/transport/service_config.h +3 -3
- data/src/core/lib/transport/transport.cc +22 -10
- data/src/core/lib/transport/transport.h +18 -18
- data/src/core/lib/transport/transport_op_string.cc +1 -8
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +2 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +19 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +10 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +38 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +1 -2
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +1 -2
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -1
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +47 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -11
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +7 -2
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/grpc_shadow_boringssl.h +3006 -0
- data/src/core/tsi/local_transport_security.cc +209 -0
- data/src/core/tsi/local_transport_security.h +51 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +245 -116
- data/src/core/tsi/ssl_types.h +2 -0
- data/src/core/tsi/transport_security.cc +14 -0
- data/src/core/tsi/transport_security.h +2 -0
- data/src/core/tsi/transport_security_interface.h +11 -1
- data/src/ruby/bin/math_client.rb +17 -9
- data/src/ruby/ext/grpc/extconf.rb +1 -26
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -16
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +65 -26
- data/src/ruby/lib/grpc/generic/active_call.rb +19 -23
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +7 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +4 -1
- data/src/ruby/spec/call_credentials_spec.rb +1 -1
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +1 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -12
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/compression_options_spec.rb +1 -1
- data/src/ruby/spec/error_sanity_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +16 -4
- data/src/ruby/spec/generic/rpc_desc_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/service_spec.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +1 -12
- data/src/ruby/spec/pb/duplicate/codegen_spec.rb +1 -0
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +1 -1
- data/src/ruby/spec/spec_helper.rb +1 -0
- data/src/ruby/spec/support/services.rb +1 -1
- data/src/ruby/spec/time_consts_spec.rb +1 -1
- data/third_party/address_sorting/address_sorting.c +17 -11
- data/third_party/address_sorting/address_sorting_windows.c +43 -3
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +3 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +33 -28
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +24 -22
- data/third_party/boringssl/crypto/asn1/a_utf8.c +13 -11
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +40 -19
- data/third_party/boringssl/crypto/bio/fd.c +1 -0
- data/third_party/boringssl/crypto/bio/file.c +2 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +6 -5
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +116 -16
- data/third_party/boringssl/crypto/bytestring/cbs.c +151 -20
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +203 -0
- data/third_party/boringssl/crypto/cipher_extra/e_rc2.c +2 -0
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +1 -2
- data/third_party/boringssl/crypto/cpu-aarch64-fuchsia.c +55 -0
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +2 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +16 -54
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +9 -10
- data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +11 -542
- data/third_party/boringssl/crypto/fipsmodule/bn/add.c +57 -112
- data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +128 -70
- data/third_party/boringssl/crypto/fipsmodule/bn/bytes.c +32 -71
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +64 -118
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +284 -122
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +31 -65
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +274 -218
- data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +2 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +187 -27
- data/third_party/boringssl/crypto/fipsmodule/bn/jacobi.c +1 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +124 -81
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +8 -30
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +321 -347
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +326 -66
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +77 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +199 -222
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +27 -47
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +155 -96
- data/third_party/boringssl/crypto/fipsmodule/bn/sqrt.c +1 -1
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +10 -10
- data/third_party/boringssl/crypto/fipsmodule/des/internal.h +2 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +78 -47
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +99 -163
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +3 -10
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +44 -23
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +59 -90
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +38 -65
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +5378 -5418
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -26
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +15 -11
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +45 -51
- data/third_party/boringssl/crypto/fipsmodule/ec/{util-64.c → util.c} +0 -5
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +144 -264
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +78 -62
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +256 -0
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +36 -32
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +9 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +16 -40
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +1 -6
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +57 -39
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +309 -142
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +581 -0
- data/third_party/boringssl/crypto/fipsmodule/tls/internal.h +39 -0
- data/third_party/boringssl/crypto/fipsmodule/tls/kdf.c +165 -0
- data/third_party/boringssl/crypto/internal.h +65 -2
- data/third_party/boringssl/crypto/mem.c +0 -2
- data/third_party/boringssl/crypto/obj/obj.c +6 -73
- data/third_party/boringssl/crypto/thread_pthread.c +35 -5
- data/third_party/boringssl/crypto/x509/a_strex.c +11 -11
- data/third_party/boringssl/crypto/x509/vpm_int.h +1 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +4 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +44 -22
- data/third_party/boringssl/crypto/x509/x_name.c +13 -0
- data/third_party/boringssl/include/openssl/aead.h +10 -0
- data/third_party/boringssl/include/openssl/asn1.h +2 -3
- data/third_party/boringssl/include/openssl/base.h +5 -14
- data/third_party/boringssl/include/openssl/bio.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +62 -18
- data/third_party/boringssl/include/openssl/bytestring.h +53 -28
- data/third_party/boringssl/include/openssl/crypto.h +4 -0
- data/third_party/boringssl/include/openssl/ec.h +10 -4
- data/third_party/boringssl/include/openssl/ec_key.h +7 -6
- data/third_party/boringssl/include/openssl/err.h +9 -9
- data/third_party/boringssl/include/openssl/evp.h +1 -1
- data/third_party/boringssl/include/openssl/rsa.h +35 -10
- data/third_party/boringssl/include/openssl/ssl.h +167 -19
- data/third_party/boringssl/include/openssl/ssl3.h +0 -1
- data/third_party/boringssl/include/openssl/stack.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +10 -2
- data/third_party/boringssl/include/openssl/x509.h +4 -0
- data/third_party/boringssl/include/openssl/x509v3.h +1 -0
- data/third_party/boringssl/ssl/d1_both.cc +16 -2
- data/third_party/boringssl/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl/ssl/handoff.cc +285 -0
- data/third_party/boringssl/ssl/handshake.cc +26 -12
- data/third_party/boringssl/ssl/handshake_client.cc +101 -95
- data/third_party/boringssl/ssl/handshake_server.cc +14 -2
- data/third_party/boringssl/ssl/internal.h +132 -79
- data/third_party/boringssl/ssl/s3_both.cc +2 -2
- data/third_party/boringssl/ssl/s3_lib.cc +3 -1
- data/third_party/boringssl/ssl/s3_pkt.cc +0 -18
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +1 -4
- data/third_party/boringssl/ssl/ssl_asn1.cc +47 -43
- data/third_party/boringssl/ssl/ssl_cipher.cc +12 -8
- data/third_party/boringssl/ssl/ssl_key_share.cc +3 -1
- data/third_party/boringssl/ssl/ssl_lib.cc +83 -14
- data/third_party/boringssl/ssl/ssl_privkey.cc +6 -0
- data/third_party/boringssl/ssl/ssl_stat.cc +6 -6
- data/third_party/boringssl/ssl/ssl_versions.cc +12 -85
- data/third_party/boringssl/ssl/ssl_x509.cc +59 -61
- data/third_party/boringssl/ssl/t1_enc.cc +73 -124
- data/third_party/boringssl/ssl/t1_lib.cc +367 -41
- data/third_party/boringssl/ssl/tls13_both.cc +8 -0
- data/third_party/boringssl/ssl/tls13_client.cc +98 -184
- data/third_party/boringssl/ssl/tls13_enc.cc +88 -158
- data/third_party/boringssl/ssl/tls13_server.cc +91 -137
- data/third_party/boringssl/ssl/tls_method.cc +0 -17
- data/third_party/boringssl/ssl/tls_record.cc +1 -10
- data/third_party/boringssl/third_party/fiat/curve25519.c +921 -2753
- data/third_party/boringssl/third_party/fiat/curve25519_tables.h +7880 -0
- data/third_party/boringssl/third_party/fiat/internal.h +32 -20
- data/third_party/boringssl/third_party/fiat/p256.c +1824 -0
- metadata +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +0 -253
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +0 -222
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +0 -71
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -61
- data/src/core/lib/channel/channel_trace_registry.cc +0 -80
- data/src/core/lib/channel/channel_trace_registry.h +0 -43
- data/src/core/lib/gpr/fork.cc +0 -78
- data/src/core/tsi/transport_security_adapter.cc +0 -235
- data/src/core/tsi/transport_security_adapter.h +0 -41
- data/src/ruby/bin/apis/google/protobuf/empty.rb +0 -29
- data/src/ruby/bin/apis/pubsub_demo.rb +0 -241
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +0 -159
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +0 -88
- data/src/ruby/pb/test/client.rb +0 -764
- data/src/ruby/pb/test/server.rb +0 -252
- data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +0 -54
- data/src/ruby/spec/pb/package_with_underscore/data.proto +0 -23
- data/src/ruby/spec/pb/package_with_underscore/service.proto +0 -23
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +0 -247
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +0 -1674
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/channel/channel_stack.h"
|
25
25
|
|
26
|
-
/* Processes metadata on the
|
26
|
+
/* Processes metadata on the server side for HTTP2 transports */
|
27
27
|
extern const grpc_channel_filter grpc_http_server_filter;
|
28
28
|
|
29
29
|
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H */
|
@@ -50,7 +50,7 @@ grpc_channel* grpc_insecure_channel_create_from_fd(
|
|
50
50
|
GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0);
|
51
51
|
|
52
52
|
grpc_endpoint* client = grpc_tcp_client_create_from_fd(
|
53
|
-
grpc_fd_create(fd, "client"), args, "fd-client");
|
53
|
+
grpc_fd_create(fd, "client", false), args, "fd-client");
|
54
54
|
|
55
55
|
grpc_transport* transport =
|
56
56
|
grpc_create_chttp2_transport(final_args, client, true);
|
@@ -179,8 +179,8 @@ static void on_accept(void* arg, grpc_endpoint* tcp,
|
|
179
179
|
grpc_handshake_manager* handshake_mgr = grpc_handshake_manager_create();
|
180
180
|
grpc_handshake_manager_pending_list_add(&state->pending_handshake_mgrs,
|
181
181
|
handshake_mgr);
|
182
|
-
gpr_mu_unlock(&state->mu);
|
183
182
|
grpc_tcp_server_ref(state->tcp_server);
|
183
|
+
gpr_mu_unlock(&state->mu);
|
184
184
|
server_connection_state* connection_state =
|
185
185
|
static_cast<server_connection_state*>(
|
186
186
|
gpr_zalloc(sizeof(*connection_state)));
|
@@ -43,8 +43,9 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
|
|
43
43
|
char* name;
|
44
44
|
gpr_asprintf(&name, "fd:%d", fd);
|
45
45
|
|
46
|
-
grpc_endpoint* server_endpoint =
|
47
|
-
grpc_fd_create(fd, name
|
46
|
+
grpc_endpoint* server_endpoint =
|
47
|
+
grpc_tcp_create(grpc_fd_create(fd, name, false),
|
48
|
+
grpc_server_get_channel_args(server), name);
|
48
49
|
|
49
50
|
gpr_free(name);
|
50
51
|
|
@@ -55,7 +55,7 @@ static bool input_is_valid(uint8_t* input_ptr, size_t length) {
|
|
55
55
|
size_t i;
|
56
56
|
|
57
57
|
for (i = 0; i < length; ++i) {
|
58
|
-
if ((decode_table[input_ptr[i]] & 0xC0) != 0) {
|
58
|
+
if (GPR_UNLIKELY((decode_table[input_ptr[i]] & 0xC0) != 0)) {
|
59
59
|
gpr_log(GPR_ERROR,
|
60
60
|
"Base64 decoding failed, invalid character '%c' in base64 "
|
61
61
|
"input.\n",
|
@@ -86,14 +86,14 @@ size_t grpc_chttp2_base64_infer_length_after_decode(const grpc_slice& slice) {
|
|
86
86
|
while (len > 0 && bytes[len - 1] == '=') {
|
87
87
|
len--;
|
88
88
|
}
|
89
|
-
if (GRPC_SLICE_LENGTH(slice) - len > 2) {
|
89
|
+
if (GPR_UNLIKELY(GRPC_SLICE_LENGTH(slice) - len > 2)) {
|
90
90
|
gpr_log(GPR_ERROR,
|
91
91
|
"Base64 decoding failed. Input has more than 2 paddings.");
|
92
92
|
return 0;
|
93
93
|
}
|
94
94
|
size_t tuples = len / 4;
|
95
95
|
size_t tail_case = len % 4;
|
96
|
-
if (tail_case == 1) {
|
96
|
+
if (GPR_UNLIKELY(tail_case == 1)) {
|
97
97
|
gpr_log(GPR_ERROR,
|
98
98
|
"Base64 decoding failed. Input has a length of %zu (without"
|
99
99
|
" padding), which is invalid.\n",
|
@@ -164,7 +164,7 @@ grpc_slice grpc_chttp2_base64_decode(grpc_slice input) {
|
|
164
164
|
struct grpc_base64_decode_context ctx;
|
165
165
|
grpc_slice output;
|
166
166
|
|
167
|
-
if (input_length % 4 != 0) {
|
167
|
+
if (GPR_UNLIKELY(input_length % 4 != 0)) {
|
168
168
|
gpr_log(GPR_ERROR,
|
169
169
|
"Base64 decoding failed, input of "
|
170
170
|
"grpc_chttp2_base64_decode has a length of %d, which is not a "
|
@@ -190,7 +190,7 @@ grpc_slice grpc_chttp2_base64_decode(grpc_slice input) {
|
|
190
190
|
ctx.output_end = GRPC_SLICE_END_PTR(output);
|
191
191
|
ctx.contains_tail = false;
|
192
192
|
|
193
|
-
if (!grpc_base64_decode_partial(&ctx)) {
|
193
|
+
if (GPR_UNLIKELY(!grpc_base64_decode_partial(&ctx))) {
|
194
194
|
char* s = grpc_slice_to_c_string(input);
|
195
195
|
gpr_log(GPR_ERROR, "Base64 decoding failed, input string:\n%s\n", s);
|
196
196
|
gpr_free(s);
|
@@ -209,7 +209,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_slice input,
|
|
209
209
|
struct grpc_base64_decode_context ctx;
|
210
210
|
|
211
211
|
// The length of a base64 string cannot be 4 * n + 1
|
212
|
-
if (input_length % 4 == 1) {
|
212
|
+
if (GPR_UNLIKELY(input_length % 4 == 1)) {
|
213
213
|
gpr_log(GPR_ERROR,
|
214
214
|
"Base64 decoding failed, input of "
|
215
215
|
"grpc_chttp2_base64_decode_with_length has a length of %d, which "
|
@@ -219,7 +219,8 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_slice input,
|
|
219
219
|
return grpc_empty_slice();
|
220
220
|
}
|
221
221
|
|
222
|
-
if (output_length >
|
222
|
+
if (GPR_UNLIKELY(output_length >
|
223
|
+
input_length / 4 * 3 + tail_xtra[input_length % 4])) {
|
223
224
|
gpr_log(
|
224
225
|
GPR_ERROR,
|
225
226
|
"Base64 decoding failed, output_length %d is longer "
|
@@ -236,7 +237,7 @@ grpc_slice grpc_chttp2_base64_decode_with_length(grpc_slice input,
|
|
236
237
|
ctx.output_end = GRPC_SLICE_END_PTR(output);
|
237
238
|
ctx.contains_tail = true;
|
238
239
|
|
239
|
-
if (!grpc_base64_decode_partial(&ctx)) {
|
240
|
+
if (GPR_UNLIKELY(!grpc_base64_decode_partial(&ctx))) {
|
240
241
|
char* s = grpc_slice_to_c_string(input);
|
241
242
|
gpr_log(GPR_ERROR, "Base64 decoding failed, input string:\n%s\n", s);
|
242
243
|
gpr_free(s);
|
@@ -718,7 +718,7 @@ static void destroy_stream_locked(void* sp, grpc_error* error) {
|
|
718
718
|
grpc_chttp2_list_remove_stalled_by_stream(t, s);
|
719
719
|
|
720
720
|
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
|
721
|
-
if (s->included[i]) {
|
721
|
+
if (GPR_UNLIKELY(s->included[i])) {
|
722
722
|
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
|
723
723
|
t->is_client ? "client" : "server", s->id, i);
|
724
724
|
abort();
|
@@ -807,11 +807,17 @@ static const char* write_state_name(grpc_chttp2_write_state st) {
|
|
807
807
|
|
808
808
|
static void set_write_state(grpc_chttp2_transport* t,
|
809
809
|
grpc_chttp2_write_state st, const char* reason) {
|
810
|
-
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
810
|
+
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "W:%p %s state %s -> %s [%s]", t,
|
811
811
|
t->is_client ? "CLIENT" : "SERVER",
|
812
812
|
write_state_name(t->write_state),
|
813
813
|
write_state_name(st), reason));
|
814
814
|
t->write_state = st;
|
815
|
+
/* If the state is being reset back to idle, it means a write was just
|
816
|
+
* finished. Make sure all the run_after_write closures are scheduled.
|
817
|
+
*
|
818
|
+
* This is also our chance to close the transport if the transport was marked
|
819
|
+
* to be closed after all writes finish (for example, if we received a go-away
|
820
|
+
* from peer while we had some pending writes) */
|
815
821
|
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
|
816
822
|
GRPC_CLOSURE_LIST_SCHED(&t->run_after_write);
|
817
823
|
if (t->close_transport_on_writes_finished != nullptr) {
|
@@ -899,6 +905,22 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
|
|
899
905
|
grpc_chttp2_initiate_write_reason_string(reason));
|
900
906
|
t->is_first_write_in_batch = true;
|
901
907
|
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
|
908
|
+
/* Note that the 'write_action_begin_locked' closure is being scheduled
|
909
|
+
* on the 'finally_scheduler' of t->combiner. This means that
|
910
|
+
* 'write_action_begin_locked' is called only *after* all the other
|
911
|
+
* closures (some of which are potentially initiating more writes on the
|
912
|
+
* transport) are executed on the t->combiner.
|
913
|
+
*
|
914
|
+
* The reason for scheduling on finally_scheduler is to make sure we batch
|
915
|
+
* as many writes as possible. 'write_action_begin_locked' is the function
|
916
|
+
* that gathers all the relevant bytes (which are at various places in the
|
917
|
+
* grpc_chttp2_transport structure) and append them to 'outbuf' field in
|
918
|
+
* grpc_chttp2_transport thereby batching what would have been potentially
|
919
|
+
* multiple write operations.
|
920
|
+
*
|
921
|
+
* Also, 'write_action_begin_locked' only gathers the bytes into outbuf.
|
922
|
+
* It does not call the endpoint to write the bytes. That is done by the
|
923
|
+
* 'write_action' (which is scheduled by 'write_action_begin_locked') */
|
902
924
|
GRPC_CLOSURE_SCHED(
|
903
925
|
GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
|
904
926
|
write_action_begin_locked, t,
|
@@ -1010,6 +1032,8 @@ static void write_action(void* gt, grpc_error* error) {
|
|
1010
1032
|
grpc_combiner_scheduler(t->combiner)));
|
1011
1033
|
}
|
1012
1034
|
|
1035
|
+
/* Callback from the grpc_endpoint after bytes have been written by calling
|
1036
|
+
* sendmsg */
|
1013
1037
|
static void write_action_end_locked(void* tp, grpc_error* error) {
|
1014
1038
|
GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
|
1015
1039
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
@@ -1072,7 +1096,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1072
1096
|
uint32_t goaway_error,
|
1073
1097
|
grpc_slice goaway_text) {
|
1074
1098
|
// GRPC_CHTTP2_IF_TRACING(
|
1075
|
-
// gpr_log(
|
1099
|
+
// gpr_log(GPR_INFO, "got goaway [%d]: %s", goaway_error, msg));
|
1076
1100
|
|
1077
1101
|
// Discard the error from a previous goaway frame (if any)
|
1078
1102
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
@@ -1088,8 +1112,9 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1088
1112
|
* data equal to "too_many_pings", it should log the occurrence at a log level
|
1089
1113
|
* that is enabled by default and double the configured KEEPALIVE_TIME used
|
1090
1114
|
* for new connections on that channel. */
|
1091
|
-
if (t->is_client &&
|
1092
|
-
|
1115
|
+
if (GPR_UNLIKELY(t->is_client &&
|
1116
|
+
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1117
|
+
grpc_slice_str_cmp(goaway_text, "too_many_pings") == 0)) {
|
1093
1118
|
gpr_log(GPR_ERROR,
|
1094
1119
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1095
1120
|
"data equal to \"too_many_pings\"");
|
@@ -1118,7 +1143,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1118
1143
|
grpc_chttp2_list_pop_waiting_for_concurrency(t, &s)) {
|
1119
1144
|
/* safe since we can't (legally) be parsing this stream yet */
|
1120
1145
|
GRPC_CHTTP2_IF_TRACING(gpr_log(
|
1121
|
-
|
1146
|
+
GPR_INFO, "HTTP:%s: Allocating new grpc_chttp2_stream %p to id %d",
|
1122
1147
|
t->is_client ? "CLI" : "SVR", s, t->next_stream_id));
|
1123
1148
|
|
1124
1149
|
GPR_ASSERT(s->id == 0);
|
@@ -1148,12 +1173,10 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
|
|
1148
1173
|
}
|
1149
1174
|
}
|
1150
1175
|
|
1151
|
-
/* Flag that this closure barrier wants stats to be updated before finishing */
|
1152
|
-
#define CLOSURE_BARRIER_STATS_BIT (1 << 0)
|
1153
1176
|
/* Flag that this closure barrier may be covering a write in a pollset, and so
|
1154
1177
|
we should not complete this closure until we can prove that the write got
|
1155
1178
|
scheduled */
|
1156
|
-
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 <<
|
1179
|
+
#define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
|
1157
1180
|
/* First bit of the reference count, stored in the high order bits (with the low
|
1158
1181
|
bits being used for flags defined above) */
|
1159
1182
|
#define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
|
@@ -1183,7 +1206,7 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1183
1206
|
if (grpc_http_trace.enabled()) {
|
1184
1207
|
const char* errstr = grpc_error_string(error);
|
1185
1208
|
gpr_log(
|
1186
|
-
|
1209
|
+
GPR_INFO,
|
1187
1210
|
"complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
|
1188
1211
|
"write_state=%s",
|
1189
1212
|
t, closure,
|
@@ -1205,10 +1228,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1205
1228
|
grpc_error_add_child(closure->error_data.error, error);
|
1206
1229
|
}
|
1207
1230
|
if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
|
1208
|
-
if (closure->next_data.scratch & CLOSURE_BARRIER_STATS_BIT) {
|
1209
|
-
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
1210
|
-
s->collecting_stats = nullptr;
|
1211
|
-
}
|
1212
1231
|
if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
|
1213
1232
|
!(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
|
1214
1233
|
GRPC_CLOSURE_RUN(closure, closure->error_data.error);
|
@@ -1336,7 +1355,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1336
1355
|
|
1337
1356
|
if (grpc_http_trace.enabled()) {
|
1338
1357
|
char* str = grpc_transport_stream_op_batch_string(op);
|
1339
|
-
gpr_log(
|
1358
|
+
gpr_log(GPR_INFO, "perform_stream_op_locked: %s; on_complete = %p", str,
|
1340
1359
|
op->on_complete);
|
1341
1360
|
gpr_free(str);
|
1342
1361
|
if (op->send_initial_metadata) {
|
@@ -1350,9 +1369,14 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1350
1369
|
}
|
1351
1370
|
|
1352
1371
|
grpc_closure* on_complete = op->on_complete;
|
1372
|
+
// TODO(roth): This is a hack needed because we use data inside of the
|
1373
|
+
// closure itself to do the barrier calculation (i.e., to ensure that
|
1374
|
+
// we don't schedule the closure until all ops in the batch have been
|
1375
|
+
// completed). This can go away once we move to a new C++ closure API
|
1376
|
+
// that provides the ability to create a barrier closure.
|
1353
1377
|
if (on_complete == nullptr) {
|
1354
|
-
on_complete =
|
1355
|
-
|
1378
|
+
on_complete = GRPC_CLOSURE_INIT(&op->handler_private.closure, do_nothing,
|
1379
|
+
nullptr, grpc_schedule_on_exec_ctx);
|
1356
1380
|
}
|
1357
1381
|
|
1358
1382
|
/* use final_data as a barrier until enqueue time; the inital counter is
|
@@ -1360,12 +1384,6 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1360
1384
|
on_complete->next_data.scratch = CLOSURE_BARRIER_FIRST_REF_BIT;
|
1361
1385
|
on_complete->error_data.error = GRPC_ERROR_NONE;
|
1362
1386
|
|
1363
|
-
if (op->collect_stats) {
|
1364
|
-
GPR_ASSERT(s->collecting_stats == nullptr);
|
1365
|
-
s->collecting_stats = op_payload->collect_stats.collect_stats;
|
1366
|
-
on_complete->next_data.scratch |= CLOSURE_BARRIER_STATS_BIT;
|
1367
|
-
}
|
1368
|
-
|
1369
1387
|
if (op->cancel_stream) {
|
1370
1388
|
GRPC_STATS_INC_HTTP2_OP_CANCEL();
|
1371
1389
|
grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error);
|
@@ -1450,10 +1468,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1450
1468
|
}
|
1451
1469
|
}
|
1452
1470
|
if (op_payload->send_initial_metadata.peer_string != nullptr) {
|
1453
|
-
|
1454
|
-
|
1455
|
-
(gpr_atm)gpr_strdup(t->peer_string));
|
1456
|
-
gpr_free(old_peer_string);
|
1471
|
+
gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
|
1472
|
+
(gpr_atm)t->peer_string);
|
1457
1473
|
}
|
1458
1474
|
}
|
1459
1475
|
|
@@ -1568,10 +1584,8 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1568
1584
|
s->trailing_metadata_available =
|
1569
1585
|
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1570
1586
|
if (op_payload->recv_initial_metadata.peer_string != nullptr) {
|
1571
|
-
|
1572
|
-
|
1573
|
-
(gpr_atm)gpr_strdup(t->peer_string));
|
1574
|
-
gpr_free(old_peer_string);
|
1587
|
+
gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
|
1588
|
+
(gpr_atm)t->peer_string);
|
1575
1589
|
}
|
1576
1590
|
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1577
1591
|
}
|
@@ -1603,8 +1617,11 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1603
1617
|
|
1604
1618
|
if (op->recv_trailing_metadata) {
|
1605
1619
|
GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA();
|
1620
|
+
GPR_ASSERT(s->collecting_stats == nullptr);
|
1621
|
+
s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats;
|
1606
1622
|
GPR_ASSERT(s->recv_trailing_metadata_finished == nullptr);
|
1607
|
-
s->recv_trailing_metadata_finished =
|
1623
|
+
s->recv_trailing_metadata_finished =
|
1624
|
+
op_payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1608
1625
|
s->recv_trailing_metadata =
|
1609
1626
|
op_payload->recv_trailing_metadata.recv_trailing_metadata;
|
1610
1627
|
s->final_metadata_requested = true;
|
@@ -1638,7 +1655,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1638
1655
|
|
1639
1656
|
if (grpc_http_trace.enabled()) {
|
1640
1657
|
char* str = grpc_transport_stream_op_batch_string(op);
|
1641
|
-
gpr_log(
|
1658
|
+
gpr_log(GPR_INFO, "perform_stream_op[s=%p]: %s", s, str);
|
1642
1659
|
gpr_free(str);
|
1643
1660
|
}
|
1644
1661
|
|
@@ -1676,6 +1693,33 @@ static void send_ping_locked(grpc_chttp2_transport* t,
|
|
1676
1693
|
GRPC_ERROR_NONE);
|
1677
1694
|
}
|
1678
1695
|
|
1696
|
+
/*
|
1697
|
+
* Specialized form of send_ping_locked for keepalive ping. If there is already
|
1698
|
+
* a ping in progress, the keepalive ping would piggyback onto that ping,
|
1699
|
+
* instead of waiting for that ping to complete and then starting a new ping.
|
1700
|
+
*/
|
1701
|
+
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
|
1702
|
+
if (t->closed_with_error != GRPC_ERROR_NONE) {
|
1703
|
+
GRPC_CLOSURE_RUN(&t->start_keepalive_ping_locked,
|
1704
|
+
GRPC_ERROR_REF(t->closed_with_error));
|
1705
|
+
GRPC_CLOSURE_RUN(&t->finish_keepalive_ping_locked,
|
1706
|
+
GRPC_ERROR_REF(t->closed_with_error));
|
1707
|
+
return;
|
1708
|
+
}
|
1709
|
+
grpc_chttp2_ping_queue* pq = &t->ping_queue;
|
1710
|
+
if (!grpc_closure_list_empty(pq->lists[GRPC_CHTTP2_PCL_INFLIGHT])) {
|
1711
|
+
/* There is a ping in flight. Add yourself to the inflight closure list. */
|
1712
|
+
GRPC_CLOSURE_RUN(&t->start_keepalive_ping_locked, GRPC_ERROR_NONE);
|
1713
|
+
grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
|
1714
|
+
&t->finish_keepalive_ping_locked, GRPC_ERROR_NONE);
|
1715
|
+
return;
|
1716
|
+
}
|
1717
|
+
grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE],
|
1718
|
+
&t->start_keepalive_ping_locked, GRPC_ERROR_NONE);
|
1719
|
+
grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT],
|
1720
|
+
&t->finish_keepalive_ping_locked, GRPC_ERROR_NONE);
|
1721
|
+
}
|
1722
|
+
|
1679
1723
|
static void retry_initiate_ping_locked(void* tp, grpc_error* error) {
|
1680
1724
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
1681
1725
|
t->ping_state.is_delayed_ping_timer_set = false;
|
@@ -1773,8 +1817,11 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1773
1817
|
|
1774
1818
|
static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
1775
1819
|
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
|
1776
|
-
|
1777
|
-
|
1820
|
+
if (grpc_http_trace.enabled()) {
|
1821
|
+
char* msg = grpc_transport_op_string(op);
|
1822
|
+
gpr_log(GPR_INFO, "perform_transport_op[t=%p]: %s", t, msg);
|
1823
|
+
gpr_free(msg);
|
1824
|
+
}
|
1778
1825
|
op->handler_private.extra_arg = gt;
|
1779
1826
|
GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
|
1780
1827
|
GRPC_CLOSURE_SCHED(GRPC_CLOSURE_INIT(&op->handler_private.closure,
|
@@ -1933,11 +1980,12 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1933
1980
|
}
|
1934
1981
|
if (s->read_closed && s->frame_storage.length == 0 && !pending_data &&
|
1935
1982
|
s->recv_trailing_metadata_finished != nullptr) {
|
1983
|
+
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
1984
|
+
s->collecting_stats = nullptr;
|
1936
1985
|
grpc_chttp2_incoming_metadata_buffer_publish(&s->metadata_buffer[1],
|
1937
1986
|
s->recv_trailing_metadata);
|
1938
|
-
|
1939
|
-
|
1940
|
-
"recv_trailing_metadata_finished");
|
1987
|
+
null_then_run_closure(&s->recv_trailing_metadata_finished,
|
1988
|
+
GRPC_ERROR_NONE);
|
1941
1989
|
}
|
1942
1990
|
}
|
1943
1991
|
}
|
@@ -2502,7 +2550,7 @@ static void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
|
|
2502
2550
|
static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
2503
2551
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2504
2552
|
if (grpc_http_trace.enabled()) {
|
2505
|
-
gpr_log(
|
2553
|
+
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string,
|
2506
2554
|
grpc_error_string(error));
|
2507
2555
|
}
|
2508
2556
|
/* Reset the keepalive ping timer */
|
@@ -2515,7 +2563,7 @@ static void start_bdp_ping_locked(void* tp, grpc_error* error) {
|
|
2515
2563
|
static void finish_bdp_ping_locked(void* tp, grpc_error* error) {
|
2516
2564
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2517
2565
|
if (grpc_http_trace.enabled()) {
|
2518
|
-
gpr_log(
|
2566
|
+
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string,
|
2519
2567
|
grpc_error_string(error));
|
2520
2568
|
}
|
2521
2569
|
if (error != GRPC_ERROR_NONE) {
|
@@ -2619,8 +2667,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2619
2667
|
grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
|
2620
2668
|
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
|
2621
2669
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive ping end");
|
2622
|
-
|
2623
|
-
&t->finish_keepalive_ping_locked);
|
2670
|
+
send_keepalive_ping_locked(t);
|
2624
2671
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING);
|
2625
2672
|
} else {
|
2626
2673
|
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
|
@@ -2640,6 +2687,9 @@ static void init_keepalive_ping_locked(void* arg, grpc_error* error) {
|
|
2640
2687
|
|
2641
2688
|
static void start_keepalive_ping_locked(void* arg, grpc_error* error) {
|
2642
2689
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
|
2690
|
+
if (error != GRPC_ERROR_NONE) {
|
2691
|
+
return;
|
2692
|
+
}
|
2643
2693
|
GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
|
2644
2694
|
grpc_timer_init(&t->keepalive_watchdog_timer,
|
2645
2695
|
grpc_core::ExecCtx::Get()->Now() + t->keepalive_timeout,
|
@@ -2675,7 +2725,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2675
2725
|
} else {
|
2676
2726
|
/* The watchdog timer should have been cancelled by
|
2677
2727
|
* finish_keepalive_ping_locked. */
|
2678
|
-
if (error != GRPC_ERROR_CANCELLED) {
|
2728
|
+
if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
|
2679
2729
|
gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
|
2680
2730
|
t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
|
2681
2731
|
}
|
@@ -2690,8 +2740,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
|
|
2690
2740
|
static void connectivity_state_set(grpc_chttp2_transport* t,
|
2691
2741
|
grpc_connectivity_state state,
|
2692
2742
|
grpc_error* error, const char* reason) {
|
2693
|
-
GRPC_CHTTP2_IF_TRACING(
|
2694
|
-
gpr_log(GPR_DEBUG, "set connectivity_state=%d", state));
|
2743
|
+
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "set connectivity_state=%d", state));
|
2695
2744
|
grpc_connectivity_state_set(&t->channel_callback.state_tracker, state, error,
|
2696
2745
|
reason);
|
2697
2746
|
}
|
@@ -2958,7 +3007,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
2958
3007
|
/* Channel with no active streams: send a goaway to try and make it
|
2959
3008
|
* disconnect cleanly */
|
2960
3009
|
if (grpc_resource_quota_trace.enabled()) {
|
2961
|
-
gpr_log(
|
3010
|
+
gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
|
2962
3011
|
t->peer_string);
|
2963
3012
|
}
|
2964
3013
|
send_goaway(t,
|
@@ -2966,7 +3015,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error* error) {
|
|
2966
3015
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
|
2967
3016
|
GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
|
2968
3017
|
} else if (error == GRPC_ERROR_NONE && grpc_resource_quota_trace.enabled()) {
|
2969
|
-
gpr_log(
|
3018
|
+
gpr_log(GPR_INFO,
|
2970
3019
|
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
|
2971
3020
|
" streams",
|
2972
3021
|
t->peer_string, grpc_chttp2_stream_map_size(&t->stream_map));
|
@@ -2987,7 +3036,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error* error) {
|
|
2987
3036
|
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
|
2988
3037
|
grpc_chttp2_stream_map_rand(&t->stream_map));
|
2989
3038
|
if (grpc_resource_quota_trace.enabled()) {
|
2990
|
-
gpr_log(
|
3039
|
+
gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d", t->peer_string,
|
2991
3040
|
s->id);
|
2992
3041
|
}
|
2993
3042
|
grpc_chttp2_cancel_stream(
|