grpc 1.8.7 → 1.9.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- 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 +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -29,10 +29,6 @@
|
|
29
29
|
#include "src/core/tsi/ssl_transport_security.h"
|
30
30
|
#include "src/core/tsi/transport_security_interface.h"
|
31
31
|
|
32
|
-
#ifdef __cplusplus
|
33
|
-
extern "C" {
|
34
|
-
#endif
|
35
|
-
|
36
32
|
extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount;
|
37
33
|
|
38
34
|
/* --- status enum. --- */
|
@@ -54,9 +50,9 @@ typedef struct grpc_security_connector grpc_security_connector;
|
|
54
50
|
#define GRPC_ARG_SECURITY_CONNECTOR "grpc.security_connector"
|
55
51
|
|
56
52
|
typedef struct {
|
57
|
-
void (*destroy)(
|
58
|
-
void (*check_peer)(
|
59
|
-
|
53
|
+
void (*destroy)(grpc_security_connector* sc);
|
54
|
+
void (*check_peer)(grpc_security_connector* sc, tsi_peer peer,
|
55
|
+
grpc_auth_context** auth_context,
|
60
56
|
grpc_closure* on_peer_checked);
|
61
57
|
int (*cmp)(grpc_security_connector* sc, grpc_security_connector* other);
|
62
58
|
} grpc_security_connector_vtable;
|
@@ -71,29 +67,25 @@ struct grpc_security_connector {
|
|
71
67
|
#ifndef NDEBUG
|
72
68
|
#define GRPC_SECURITY_CONNECTOR_REF(p, r) \
|
73
69
|
grpc_security_connector_ref((p), __FILE__, __LINE__, (r))
|
74
|
-
#define GRPC_SECURITY_CONNECTOR_UNREF(
|
75
|
-
grpc_security_connector_unref((
|
70
|
+
#define GRPC_SECURITY_CONNECTOR_UNREF(p, r) \
|
71
|
+
grpc_security_connector_unref((p), __FILE__, __LINE__, (r))
|
76
72
|
grpc_security_connector* grpc_security_connector_ref(
|
77
73
|
grpc_security_connector* policy, const char* file, int line,
|
78
74
|
const char* reason);
|
79
|
-
void grpc_security_connector_unref(
|
80
|
-
grpc_security_connector* policy,
|
75
|
+
void grpc_security_connector_unref(grpc_security_connector* policy,
|
81
76
|
const char* file, int line,
|
82
77
|
const char* reason);
|
83
78
|
#else
|
84
79
|
#define GRPC_SECURITY_CONNECTOR_REF(p, r) grpc_security_connector_ref((p))
|
85
|
-
#define GRPC_SECURITY_CONNECTOR_UNREF(
|
86
|
-
grpc_security_connector_unref((exec_ctx), (p))
|
80
|
+
#define GRPC_SECURITY_CONNECTOR_UNREF(p, r) grpc_security_connector_unref((p))
|
87
81
|
grpc_security_connector* grpc_security_connector_ref(
|
88
82
|
grpc_security_connector* policy);
|
89
|
-
void grpc_security_connector_unref(
|
90
|
-
grpc_security_connector* policy);
|
83
|
+
void grpc_security_connector_unref(grpc_security_connector* policy);
|
91
84
|
#endif
|
92
85
|
|
93
86
|
/* Check the peer. Callee takes ownership of the peer object.
|
94
87
|
When done, sets *auth_context and invokes on_peer_checked. */
|
95
|
-
void grpc_security_connector_check_peer(
|
96
|
-
grpc_security_connector* sc,
|
88
|
+
void grpc_security_connector_check_peer(grpc_security_connector* sc,
|
97
89
|
tsi_peer peer,
|
98
90
|
grpc_auth_context** auth_context,
|
99
91
|
grpc_closure* on_peer_checked);
|
@@ -123,17 +115,14 @@ struct grpc_channel_security_connector {
|
|
123
115
|
grpc_security_connector base;
|
124
116
|
grpc_channel_credentials* channel_creds;
|
125
117
|
grpc_call_credentials* request_metadata_creds;
|
126
|
-
bool (*check_call_host)(
|
127
|
-
grpc_channel_security_connector* sc, const char* host,
|
118
|
+
bool (*check_call_host)(grpc_channel_security_connector* sc, const char* host,
|
128
119
|
grpc_auth_context* auth_context,
|
129
120
|
grpc_closure* on_call_host_checked,
|
130
121
|
grpc_error** error);
|
131
|
-
void (*cancel_check_call_host)(
|
132
|
-
grpc_channel_security_connector* sc,
|
122
|
+
void (*cancel_check_call_host)(grpc_channel_security_connector* sc,
|
133
123
|
grpc_closure* on_call_host_checked,
|
134
124
|
grpc_error* error);
|
135
|
-
void (*add_handshakers)(
|
136
|
-
grpc_channel_security_connector* sc,
|
125
|
+
void (*add_handshakers)(grpc_channel_security_connector* sc,
|
137
126
|
grpc_handshake_manager* handshake_mgr);
|
138
127
|
};
|
139
128
|
|
@@ -146,20 +135,20 @@ int grpc_channel_security_connector_cmp(grpc_channel_security_connector* sc1,
|
|
146
135
|
/// be set to indicate the result. Otherwise, \a on_call_host_checked
|
147
136
|
/// will be invoked when complete.
|
148
137
|
bool grpc_channel_security_connector_check_call_host(
|
149
|
-
|
150
|
-
|
151
|
-
|
138
|
+
grpc_channel_security_connector* sc, const char* host,
|
139
|
+
grpc_auth_context* auth_context, grpc_closure* on_call_host_checked,
|
140
|
+
grpc_error** error);
|
152
141
|
|
153
142
|
/// Cancels a pending asychronous call to
|
154
143
|
/// grpc_channel_security_connector_check_call_host() with
|
155
144
|
/// \a on_call_host_checked as its callback.
|
156
145
|
void grpc_channel_security_connector_cancel_check_call_host(
|
157
|
-
|
158
|
-
|
146
|
+
grpc_channel_security_connector* sc, grpc_closure* on_call_host_checked,
|
147
|
+
grpc_error* error);
|
159
148
|
|
160
149
|
/* Registers handshakers with \a handshake_mgr. */
|
161
150
|
void grpc_channel_security_connector_add_handshakers(
|
162
|
-
|
151
|
+
grpc_channel_security_connector* connector,
|
163
152
|
grpc_handshake_manager* handshake_mgr);
|
164
153
|
|
165
154
|
/* --- server_security_connector object. ---
|
@@ -172,8 +161,7 @@ typedef struct grpc_server_security_connector grpc_server_security_connector;
|
|
172
161
|
struct grpc_server_security_connector {
|
173
162
|
grpc_security_connector base;
|
174
163
|
grpc_server_credentials* server_creds;
|
175
|
-
void (*add_handshakers)(
|
176
|
-
grpc_server_security_connector* sc,
|
164
|
+
void (*add_handshakers)(grpc_server_security_connector* sc,
|
177
165
|
grpc_handshake_manager* handshake_mgr);
|
178
166
|
};
|
179
167
|
|
@@ -182,8 +170,7 @@ int grpc_server_security_connector_cmp(grpc_server_security_connector* sc1,
|
|
182
170
|
grpc_server_security_connector* sc2);
|
183
171
|
|
184
172
|
void grpc_server_security_connector_add_handshakers(
|
185
|
-
|
186
|
-
grpc_handshake_manager* handshake_mgr);
|
173
|
+
grpc_server_security_connector* sc, grpc_handshake_manager* handshake_mgr);
|
187
174
|
|
188
175
|
/* --- Creation security connectors. --- */
|
189
176
|
|
@@ -220,7 +207,7 @@ typedef struct {
|
|
220
207
|
specific error code otherwise.
|
221
208
|
*/
|
222
209
|
grpc_security_status grpc_ssl_channel_security_connector_create(
|
223
|
-
|
210
|
+
grpc_channel_credentials* channel_creds,
|
224
211
|
grpc_call_credentials* request_metadata_creds,
|
225
212
|
const grpc_ssl_config* config, const char* target_name,
|
226
213
|
const char* overridden_target_name, grpc_channel_security_connector** sc);
|
@@ -246,7 +233,7 @@ typedef struct {
|
|
246
233
|
specific error code otherwise.
|
247
234
|
*/
|
248
235
|
grpc_security_status grpc_ssl_server_security_connector_create(
|
249
|
-
|
236
|
+
grpc_server_credentials* server_credentials,
|
250
237
|
grpc_server_security_connector** sc);
|
251
238
|
|
252
239
|
/* Util. */
|
@@ -259,8 +246,4 @@ tsi_peer tsi_shallow_peer_from_ssl_auth_context(
|
|
259
246
|
const grpc_auth_context* auth_context);
|
260
247
|
void tsi_shallow_peer_destruct(tsi_peer* peer);
|
261
248
|
|
262
|
-
#ifdef __cplusplus
|
263
|
-
}
|
264
|
-
#endif
|
265
|
-
|
266
249
|
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_CONNECTOR_H */
|
@@ -65,8 +65,7 @@ typedef struct {
|
|
65
65
|
tsi_handshaker_result* handshaker_result;
|
66
66
|
} security_handshaker;
|
67
67
|
|
68
|
-
static size_t move_read_buffer_into_handshake_buffer(
|
69
|
-
security_handshaker* h) {
|
68
|
+
static size_t move_read_buffer_into_handshake_buffer(security_handshaker* h) {
|
70
69
|
size_t bytes_in_read_buffer = h->args->read_buffer->length;
|
71
70
|
if (h->handshake_buffer_size < bytes_in_read_buffer) {
|
72
71
|
h->handshake_buffer =
|
@@ -79,48 +78,45 @@ static size_t move_read_buffer_into_handshake_buffer(grpc_exec_ctx* exec_ctx,
|
|
79
78
|
memcpy(h->handshake_buffer + offset, GRPC_SLICE_START_PTR(next_slice),
|
80
79
|
GRPC_SLICE_LENGTH(next_slice));
|
81
80
|
offset += GRPC_SLICE_LENGTH(next_slice);
|
82
|
-
grpc_slice_unref_internal(
|
81
|
+
grpc_slice_unref_internal(next_slice);
|
83
82
|
}
|
84
83
|
return bytes_in_read_buffer;
|
85
84
|
}
|
86
85
|
|
87
|
-
static void security_handshaker_unref(
|
88
|
-
security_handshaker* h) {
|
86
|
+
static void security_handshaker_unref(security_handshaker* h) {
|
89
87
|
if (gpr_unref(&h->refs)) {
|
90
88
|
gpr_mu_destroy(&h->mu);
|
91
89
|
tsi_handshaker_destroy(h->handshaker);
|
92
90
|
tsi_handshaker_result_destroy(h->handshaker_result);
|
93
91
|
if (h->endpoint_to_destroy != nullptr) {
|
94
|
-
grpc_endpoint_destroy(
|
92
|
+
grpc_endpoint_destroy(h->endpoint_to_destroy);
|
95
93
|
}
|
96
94
|
if (h->read_buffer_to_destroy != nullptr) {
|
97
|
-
grpc_slice_buffer_destroy_internal(
|
95
|
+
grpc_slice_buffer_destroy_internal(h->read_buffer_to_destroy);
|
98
96
|
gpr_free(h->read_buffer_to_destroy);
|
99
97
|
}
|
100
98
|
gpr_free(h->handshake_buffer);
|
101
|
-
grpc_slice_buffer_destroy_internal(
|
99
|
+
grpc_slice_buffer_destroy_internal(&h->outgoing);
|
102
100
|
GRPC_AUTH_CONTEXT_UNREF(h->auth_context, "handshake");
|
103
|
-
GRPC_SECURITY_CONNECTOR_UNREF(
|
101
|
+
GRPC_SECURITY_CONNECTOR_UNREF(h->connector, "handshake");
|
104
102
|
gpr_free(h);
|
105
103
|
}
|
106
104
|
}
|
107
105
|
|
108
106
|
// Set args fields to NULL, saving the endpoint and read buffer for
|
109
107
|
// later destruction.
|
110
|
-
static void cleanup_args_for_failure_locked(
|
111
|
-
security_handshaker* h) {
|
108
|
+
static void cleanup_args_for_failure_locked(security_handshaker* h) {
|
112
109
|
h->endpoint_to_destroy = h->args->endpoint;
|
113
110
|
h->args->endpoint = nullptr;
|
114
111
|
h->read_buffer_to_destroy = h->args->read_buffer;
|
115
112
|
h->args->read_buffer = nullptr;
|
116
|
-
grpc_channel_args_destroy(
|
113
|
+
grpc_channel_args_destroy(h->args->args);
|
117
114
|
h->args->args = nullptr;
|
118
115
|
}
|
119
116
|
|
120
117
|
// If the handshake failed or we're shutting down, clean up and invoke the
|
121
118
|
// callback with the error.
|
122
|
-
static void security_handshake_failed_locked(
|
123
|
-
security_handshaker* h,
|
119
|
+
static void security_handshake_failed_locked(security_handshaker* h,
|
124
120
|
grpc_error* error) {
|
125
121
|
if (error == GRPC_ERROR_NONE) {
|
126
122
|
// If we were shut down after the handshake succeeded but before an
|
@@ -135,34 +131,33 @@ static void security_handshake_failed_locked(grpc_exec_ctx* exec_ctx,
|
|
135
131
|
// before destroying them, even if we know that there are no
|
136
132
|
// pending read/write callbacks. This should be fixed, at which
|
137
133
|
// point this can be removed.
|
138
|
-
grpc_endpoint_shutdown(
|
134
|
+
grpc_endpoint_shutdown(h->args->endpoint, GRPC_ERROR_REF(error));
|
139
135
|
// Not shutting down, so the write failed. Clean up before
|
140
136
|
// invoking the callback.
|
141
|
-
cleanup_args_for_failure_locked(
|
137
|
+
cleanup_args_for_failure_locked(h);
|
142
138
|
// Set shutdown to true so that subsequent calls to
|
143
139
|
// security_handshaker_shutdown() do nothing.
|
144
140
|
h->shutdown = true;
|
145
141
|
}
|
146
142
|
// Invoke callback.
|
147
|
-
GRPC_CLOSURE_SCHED(
|
143
|
+
GRPC_CLOSURE_SCHED(h->on_handshake_done, error);
|
148
144
|
}
|
149
145
|
|
150
|
-
static void on_peer_checked_inner(
|
151
|
-
security_handshaker* h, grpc_error* error) {
|
146
|
+
static void on_peer_checked_inner(security_handshaker* h, grpc_error* error) {
|
152
147
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
153
|
-
security_handshake_failed_locked(
|
148
|
+
security_handshake_failed_locked(h, GRPC_ERROR_REF(error));
|
154
149
|
return;
|
155
150
|
}
|
156
151
|
// Create zero-copy frame protector, if implemented.
|
157
152
|
tsi_zero_copy_grpc_protector* zero_copy_protector = nullptr;
|
158
153
|
tsi_result result = tsi_handshaker_result_create_zero_copy_grpc_protector(
|
159
|
-
|
154
|
+
h->handshaker_result, nullptr, &zero_copy_protector);
|
160
155
|
if (result != TSI_OK && result != TSI_UNIMPLEMENTED) {
|
161
156
|
error = grpc_set_tsi_error_result(
|
162
157
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
163
158
|
"Zero-copy frame protector creation failed"),
|
164
159
|
result);
|
165
|
-
security_handshake_failed_locked(
|
160
|
+
security_handshake_failed_locked(h, error);
|
166
161
|
return;
|
167
162
|
}
|
168
163
|
// Create frame protector if zero-copy frame protector is NULL.
|
@@ -174,7 +169,7 @@ static void on_peer_checked_inner(grpc_exec_ctx* exec_ctx,
|
|
174
169
|
error = grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
175
170
|
"Frame protector creation failed"),
|
176
171
|
result);
|
177
|
-
security_handshake_failed_locked(
|
172
|
+
security_handshake_failed_locked(h, error);
|
178
173
|
return;
|
179
174
|
}
|
180
175
|
}
|
@@ -189,7 +184,7 @@ static void on_peer_checked_inner(grpc_exec_ctx* exec_ctx,
|
|
189
184
|
grpc_slice_from_copied_buffer((char*)unused_bytes, unused_bytes_size);
|
190
185
|
h->args->endpoint = grpc_secure_endpoint_create(
|
191
186
|
protector, zero_copy_protector, h->args->endpoint, &slice, 1);
|
192
|
-
grpc_slice_unref_internal(
|
187
|
+
grpc_slice_unref_internal(slice);
|
193
188
|
} else {
|
194
189
|
h->args->endpoint = grpc_secure_endpoint_create(
|
195
190
|
protector, zero_copy_protector, h->args->endpoint, nullptr, 0);
|
@@ -201,25 +196,23 @@ static void on_peer_checked_inner(grpc_exec_ctx* exec_ctx,
|
|
201
196
|
grpc_channel_args* tmp_args = h->args->args;
|
202
197
|
h->args->args =
|
203
198
|
grpc_channel_args_copy_and_add(tmp_args, &auth_context_arg, 1);
|
204
|
-
grpc_channel_args_destroy(
|
199
|
+
grpc_channel_args_destroy(tmp_args);
|
205
200
|
// Invoke callback.
|
206
|
-
GRPC_CLOSURE_SCHED(
|
201
|
+
GRPC_CLOSURE_SCHED(h->on_handshake_done, GRPC_ERROR_NONE);
|
207
202
|
// Set shutdown to true so that subsequent calls to
|
208
203
|
// security_handshaker_shutdown() do nothing.
|
209
204
|
h->shutdown = true;
|
210
205
|
}
|
211
206
|
|
212
|
-
static void on_peer_checked(
|
213
|
-
grpc_error* error) {
|
207
|
+
static void on_peer_checked(void* arg, grpc_error* error) {
|
214
208
|
security_handshaker* h = (security_handshaker*)arg;
|
215
209
|
gpr_mu_lock(&h->mu);
|
216
|
-
on_peer_checked_inner(
|
210
|
+
on_peer_checked_inner(h, error);
|
217
211
|
gpr_mu_unlock(&h->mu);
|
218
|
-
security_handshaker_unref(
|
212
|
+
security_handshaker_unref(h);
|
219
213
|
}
|
220
214
|
|
221
|
-
static grpc_error* check_peer_locked(
|
222
|
-
security_handshaker* h) {
|
215
|
+
static grpc_error* check_peer_locked(security_handshaker* h) {
|
223
216
|
tsi_peer peer;
|
224
217
|
tsi_result result =
|
225
218
|
tsi_handshaker_result_extract_peer(h->handshaker_result, &peer);
|
@@ -227,20 +220,20 @@ static grpc_error* check_peer_locked(grpc_exec_ctx* exec_ctx,
|
|
227
220
|
return grpc_set_tsi_error_result(
|
228
221
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Peer extraction failed"), result);
|
229
222
|
}
|
230
|
-
grpc_security_connector_check_peer(
|
231
|
-
&h->
|
223
|
+
grpc_security_connector_check_peer(h->connector, peer, &h->auth_context,
|
224
|
+
&h->on_peer_checked);
|
232
225
|
return GRPC_ERROR_NONE;
|
233
226
|
}
|
234
227
|
|
235
228
|
static grpc_error* on_handshake_next_done_locked(
|
236
|
-
|
229
|
+
security_handshaker* h, tsi_result result,
|
237
230
|
const unsigned char* bytes_to_send, size_t bytes_to_send_size,
|
238
231
|
tsi_handshaker_result* handshaker_result) {
|
239
232
|
grpc_error* error = GRPC_ERROR_NONE;
|
240
233
|
// Read more if we need to.
|
241
234
|
if (result == TSI_INCOMPLETE_DATA) {
|
242
235
|
GPR_ASSERT(bytes_to_send_size == 0);
|
243
|
-
grpc_endpoint_read(
|
236
|
+
grpc_endpoint_read(h->args->endpoint, h->args->read_buffer,
|
244
237
|
&h->on_handshake_data_received_from_peer);
|
245
238
|
return error;
|
246
239
|
}
|
@@ -257,17 +250,17 @@ static grpc_error* on_handshake_next_done_locked(
|
|
257
250
|
// Send data to peer, if needed.
|
258
251
|
grpc_slice to_send = grpc_slice_from_copied_buffer(
|
259
252
|
(const char*)bytes_to_send, bytes_to_send_size);
|
260
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
253
|
+
grpc_slice_buffer_reset_and_unref_internal(&h->outgoing);
|
261
254
|
grpc_slice_buffer_add(&h->outgoing, to_send);
|
262
|
-
grpc_endpoint_write(
|
255
|
+
grpc_endpoint_write(h->args->endpoint, &h->outgoing,
|
263
256
|
&h->on_handshake_data_sent_to_peer);
|
264
257
|
} else if (handshaker_result == nullptr) {
|
265
258
|
// There is nothing to send, but need to read from peer.
|
266
|
-
grpc_endpoint_read(
|
259
|
+
grpc_endpoint_read(h->args->endpoint, h->args->read_buffer,
|
267
260
|
&h->on_handshake_data_received_from_peer);
|
268
261
|
} else {
|
269
262
|
// Handshake has finished, check peer and so on.
|
270
|
-
error = check_peer_locked(
|
263
|
+
error = check_peer_locked(h);
|
271
264
|
}
|
272
265
|
return error;
|
273
266
|
}
|
@@ -278,24 +271,22 @@ static void on_handshake_next_done_grpc_wrapper(
|
|
278
271
|
security_handshaker* h = (security_handshaker*)user_data;
|
279
272
|
// This callback will be invoked by TSI in a non-grpc thread, so it's
|
280
273
|
// safe to create our own exec_ctx here.
|
281
|
-
|
274
|
+
grpc_core::ExecCtx exec_ctx;
|
282
275
|
gpr_mu_lock(&h->mu);
|
283
|
-
grpc_error* error =
|
284
|
-
|
285
|
-
bytes_to_send_size, handshaker_result);
|
276
|
+
grpc_error* error = on_handshake_next_done_locked(
|
277
|
+
h, result, bytes_to_send, bytes_to_send_size, handshaker_result);
|
286
278
|
if (error != GRPC_ERROR_NONE) {
|
287
|
-
security_handshake_failed_locked(
|
279
|
+
security_handshake_failed_locked(h, error);
|
288
280
|
gpr_mu_unlock(&h->mu);
|
289
|
-
security_handshaker_unref(
|
281
|
+
security_handshaker_unref(h);
|
290
282
|
} else {
|
291
283
|
gpr_mu_unlock(&h->mu);
|
292
284
|
}
|
293
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
294
285
|
}
|
295
286
|
|
296
287
|
static grpc_error* do_handshaker_next_locked(
|
297
|
-
|
298
|
-
|
288
|
+
security_handshaker* h, const unsigned char* bytes_received,
|
289
|
+
size_t bytes_received_size) {
|
299
290
|
// Invoke TSI handshaker.
|
300
291
|
const unsigned char* bytes_to_send = nullptr;
|
301
292
|
size_t bytes_to_send_size = 0;
|
@@ -311,62 +302,57 @@ static grpc_error* do_handshaker_next_locked(
|
|
311
302
|
}
|
312
303
|
// Handshaker returned synchronously. Invoke callback directly in
|
313
304
|
// this thread with our existing exec_ctx.
|
314
|
-
return on_handshake_next_done_locked(
|
305
|
+
return on_handshake_next_done_locked(h, result, bytes_to_send,
|
315
306
|
bytes_to_send_size, handshaker_result);
|
316
307
|
}
|
317
308
|
|
318
|
-
static void on_handshake_data_received_from_peer(
|
319
|
-
void* arg, grpc_error* error) {
|
309
|
+
static void on_handshake_data_received_from_peer(void* arg, grpc_error* error) {
|
320
310
|
security_handshaker* h = (security_handshaker*)arg;
|
321
311
|
gpr_mu_lock(&h->mu);
|
322
312
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
323
313
|
security_handshake_failed_locked(
|
324
|
-
|
325
|
-
|
326
|
-
"Handshake read failed", &error, 1));
|
314
|
+
h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
315
|
+
"Handshake read failed", &error, 1));
|
327
316
|
gpr_mu_unlock(&h->mu);
|
328
|
-
security_handshaker_unref(
|
317
|
+
security_handshaker_unref(h);
|
329
318
|
return;
|
330
319
|
}
|
331
320
|
// Copy all slices received.
|
332
|
-
size_t bytes_received_size =
|
333
|
-
move_read_buffer_into_handshake_buffer(exec_ctx, h);
|
321
|
+
size_t bytes_received_size = move_read_buffer_into_handshake_buffer(h);
|
334
322
|
// Call TSI handshaker.
|
335
|
-
error =
|
336
|
-
|
323
|
+
error =
|
324
|
+
do_handshaker_next_locked(h, h->handshake_buffer, bytes_received_size);
|
337
325
|
|
338
326
|
if (error != GRPC_ERROR_NONE) {
|
339
|
-
security_handshake_failed_locked(
|
327
|
+
security_handshake_failed_locked(h, error);
|
340
328
|
gpr_mu_unlock(&h->mu);
|
341
|
-
security_handshaker_unref(
|
329
|
+
security_handshaker_unref(h);
|
342
330
|
} else {
|
343
331
|
gpr_mu_unlock(&h->mu);
|
344
332
|
}
|
345
333
|
}
|
346
334
|
|
347
|
-
static void on_handshake_data_sent_to_peer(
|
348
|
-
grpc_error* error) {
|
335
|
+
static void on_handshake_data_sent_to_peer(void* arg, grpc_error* error) {
|
349
336
|
security_handshaker* h = (security_handshaker*)arg;
|
350
337
|
gpr_mu_lock(&h->mu);
|
351
338
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
352
339
|
security_handshake_failed_locked(
|
353
|
-
|
354
|
-
|
355
|
-
"Handshake write failed", &error, 1));
|
340
|
+
h, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
341
|
+
"Handshake write failed", &error, 1));
|
356
342
|
gpr_mu_unlock(&h->mu);
|
357
|
-
security_handshaker_unref(
|
343
|
+
security_handshaker_unref(h);
|
358
344
|
return;
|
359
345
|
}
|
360
346
|
// We may be done.
|
361
347
|
if (h->handshaker_result == nullptr) {
|
362
|
-
grpc_endpoint_read(
|
348
|
+
grpc_endpoint_read(h->args->endpoint, h->args->read_buffer,
|
363
349
|
&h->on_handshake_data_received_from_peer);
|
364
350
|
} else {
|
365
|
-
error = check_peer_locked(
|
351
|
+
error = check_peer_locked(h);
|
366
352
|
if (error != GRPC_ERROR_NONE) {
|
367
|
-
security_handshake_failed_locked(
|
353
|
+
security_handshake_failed_locked(h, error);
|
368
354
|
gpr_mu_unlock(&h->mu);
|
369
|
-
security_handshaker_unref(
|
355
|
+
security_handshaker_unref(h);
|
370
356
|
return;
|
371
357
|
}
|
372
358
|
}
|
@@ -377,28 +363,25 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx* exec_ctx, void* arg,
|
|
377
363
|
// public handshaker API
|
378
364
|
//
|
379
365
|
|
380
|
-
static void security_handshaker_destroy(
|
381
|
-
grpc_handshaker* handshaker) {
|
366
|
+
static void security_handshaker_destroy(grpc_handshaker* handshaker) {
|
382
367
|
security_handshaker* h = (security_handshaker*)handshaker;
|
383
|
-
security_handshaker_unref(
|
368
|
+
security_handshaker_unref(h);
|
384
369
|
}
|
385
370
|
|
386
|
-
static void security_handshaker_shutdown(
|
387
|
-
grpc_handshaker* handshaker,
|
371
|
+
static void security_handshaker_shutdown(grpc_handshaker* handshaker,
|
388
372
|
grpc_error* why) {
|
389
373
|
security_handshaker* h = (security_handshaker*)handshaker;
|
390
374
|
gpr_mu_lock(&h->mu);
|
391
375
|
if (!h->shutdown) {
|
392
376
|
h->shutdown = true;
|
393
|
-
grpc_endpoint_shutdown(
|
394
|
-
cleanup_args_for_failure_locked(
|
377
|
+
grpc_endpoint_shutdown(h->args->endpoint, GRPC_ERROR_REF(why));
|
378
|
+
cleanup_args_for_failure_locked(h);
|
395
379
|
}
|
396
380
|
gpr_mu_unlock(&h->mu);
|
397
381
|
GRPC_ERROR_UNREF(why);
|
398
382
|
}
|
399
383
|
|
400
|
-
static void security_handshaker_do_handshake(
|
401
|
-
grpc_handshaker* handshaker,
|
384
|
+
static void security_handshaker_do_handshake(grpc_handshaker* handshaker,
|
402
385
|
grpc_tcp_server_acceptor* acceptor,
|
403
386
|
grpc_closure* on_handshake_done,
|
404
387
|
grpc_handshaker_args* args) {
|
@@ -407,14 +390,13 @@ static void security_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
|
407
390
|
h->args = args;
|
408
391
|
h->on_handshake_done = on_handshake_done;
|
409
392
|
gpr_ref(&h->refs);
|
410
|
-
size_t bytes_received_size =
|
411
|
-
|
412
|
-
|
413
|
-
exec_ctx, h, h->handshake_buffer, bytes_received_size);
|
393
|
+
size_t bytes_received_size = move_read_buffer_into_handshake_buffer(h);
|
394
|
+
grpc_error* error =
|
395
|
+
do_handshaker_next_locked(h, h->handshake_buffer, bytes_received_size);
|
414
396
|
if (error != GRPC_ERROR_NONE) {
|
415
|
-
security_handshake_failed_locked(
|
397
|
+
security_handshake_failed_locked(h, error);
|
416
398
|
gpr_mu_unlock(&h->mu);
|
417
|
-
security_handshaker_unref(
|
399
|
+
security_handshaker_unref(h);
|
418
400
|
return;
|
419
401
|
}
|
420
402
|
gpr_mu_unlock(&h->mu);
|
@@ -425,8 +407,7 @@ static const grpc_handshaker_vtable security_handshaker_vtable = {
|
|
425
407
|
security_handshaker_do_handshake};
|
426
408
|
|
427
409
|
static grpc_handshaker* security_handshaker_create(
|
428
|
-
|
429
|
-
grpc_security_connector* connector) {
|
410
|
+
tsi_handshaker* handshaker, grpc_security_connector* connector) {
|
430
411
|
security_handshaker* h =
|
431
412
|
(security_handshaker*)gpr_zalloc(sizeof(security_handshaker));
|
432
413
|
grpc_handshaker_init(&security_handshaker_vtable, &h->base);
|
@@ -452,23 +433,20 @@ static grpc_handshaker* security_handshaker_create(
|
|
452
433
|
// fail_handshaker
|
453
434
|
//
|
454
435
|
|
455
|
-
static void fail_handshaker_destroy(
|
456
|
-
grpc_handshaker* handshaker) {
|
436
|
+
static void fail_handshaker_destroy(grpc_handshaker* handshaker) {
|
457
437
|
gpr_free(handshaker);
|
458
438
|
}
|
459
439
|
|
460
|
-
static void fail_handshaker_shutdown(
|
461
|
-
grpc_handshaker* handshaker,
|
440
|
+
static void fail_handshaker_shutdown(grpc_handshaker* handshaker,
|
462
441
|
grpc_error* why) {
|
463
442
|
GRPC_ERROR_UNREF(why);
|
464
443
|
}
|
465
444
|
|
466
|
-
static void fail_handshaker_do_handshake(
|
467
|
-
grpc_handshaker* handshaker,
|
445
|
+
static void fail_handshaker_do_handshake(grpc_handshaker* handshaker,
|
468
446
|
grpc_tcp_server_acceptor* acceptor,
|
469
447
|
grpc_closure* on_handshake_done,
|
470
448
|
grpc_handshaker_args* args) {
|
471
|
-
GRPC_CLOSURE_SCHED(
|
449
|
+
GRPC_CLOSURE_SCHED(on_handshake_done,
|
472
450
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
473
451
|
"Failed to create security handshaker"));
|
474
452
|
}
|
@@ -488,27 +466,27 @@ static grpc_handshaker* fail_handshaker_create() {
|
|
488
466
|
//
|
489
467
|
|
490
468
|
static void client_handshaker_factory_add_handshakers(
|
491
|
-
|
492
|
-
|
469
|
+
grpc_handshaker_factory* handshaker_factory, const grpc_channel_args* args,
|
470
|
+
grpc_handshake_manager* handshake_mgr) {
|
493
471
|
grpc_channel_security_connector* security_connector =
|
494
472
|
(grpc_channel_security_connector*)grpc_security_connector_find_in_args(
|
495
473
|
args);
|
496
|
-
grpc_channel_security_connector_add_handshakers(
|
474
|
+
grpc_channel_security_connector_add_handshakers(security_connector,
|
497
475
|
handshake_mgr);
|
498
476
|
}
|
499
477
|
|
500
478
|
static void server_handshaker_factory_add_handshakers(
|
501
|
-
|
502
|
-
|
479
|
+
grpc_handshaker_factory* hf, const grpc_channel_args* args,
|
480
|
+
grpc_handshake_manager* handshake_mgr) {
|
503
481
|
grpc_server_security_connector* security_connector =
|
504
482
|
(grpc_server_security_connector*)grpc_security_connector_find_in_args(
|
505
483
|
args);
|
506
|
-
grpc_server_security_connector_add_handshakers(
|
484
|
+
grpc_server_security_connector_add_handshakers(security_connector,
|
507
485
|
handshake_mgr);
|
508
486
|
}
|
509
487
|
|
510
488
|
static void handshaker_factory_destroy(
|
511
|
-
|
489
|
+
grpc_handshaker_factory* handshaker_factory) {}
|
512
490
|
|
513
491
|
static const grpc_handshaker_factory_vtable client_handshaker_factory_vtable = {
|
514
492
|
client_handshaker_factory_add_handshakers, handshaker_factory_destroy};
|
@@ -527,14 +505,13 @@ static grpc_handshaker_factory server_handshaker_factory = {
|
|
527
505
|
//
|
528
506
|
|
529
507
|
grpc_handshaker* grpc_security_handshaker_create(
|
530
|
-
|
531
|
-
grpc_security_connector* connector) {
|
508
|
+
tsi_handshaker* handshaker, grpc_security_connector* connector) {
|
532
509
|
// If no TSI handshaker was created, return a handshaker that always fails.
|
533
510
|
// Otherwise, return a real security handshaker.
|
534
511
|
if (handshaker == nullptr) {
|
535
512
|
return fail_handshaker_create();
|
536
513
|
} else {
|
537
|
-
return security_handshaker_create(
|
514
|
+
return security_handshaker_create(handshaker, connector);
|
538
515
|
}
|
539
516
|
}
|
540
517
|
|