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
@@ -22,10 +22,6 @@
|
|
22
22
|
#include "src/core/lib/json/json.h"
|
23
23
|
#include "src/core/lib/security/credentials/credentials.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
// auth_refresh_token parsing.
|
30
26
|
typedef struct {
|
31
27
|
const char* type;
|
@@ -56,8 +52,7 @@ void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token);
|
|
56
52
|
// This object is a base for credentials that need to acquire an oauth2 token
|
57
53
|
// from an http service.
|
58
54
|
|
59
|
-
typedef void (*grpc_fetch_oauth2_func)(
|
60
|
-
grpc_credentials_metadata_request* req,
|
55
|
+
typedef void (*grpc_fetch_oauth2_func)(grpc_credentials_metadata_request* req,
|
61
56
|
grpc_httpcli_context* http_context,
|
62
57
|
grpc_polling_entity* pollent,
|
63
58
|
grpc_iomgr_cb_func cb,
|
@@ -103,11 +98,7 @@ grpc_refresh_token_credentials_create_from_auth_refresh_token(
|
|
103
98
|
// Exposed for testing only.
|
104
99
|
grpc_credentials_status
|
105
100
|
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
#ifdef __cplusplus
|
110
|
-
}
|
111
|
-
#endif
|
101
|
+
const struct grpc_http_response* response, grpc_mdelem* token_md,
|
102
|
+
grpc_millis* token_lifetime);
|
112
103
|
|
113
104
|
#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_OAUTH2_OAUTH2_CREDENTIALS_H */
|
@@ -33,8 +33,7 @@
|
|
33
33
|
|
34
34
|
grpc_core::TraceFlag grpc_plugin_credentials_trace(false, "plugin_credentials");
|
35
35
|
|
36
|
-
static void plugin_destruct(
|
37
|
-
grpc_call_credentials* creds) {
|
36
|
+
static void plugin_destruct(grpc_call_credentials* creds) {
|
38
37
|
grpc_plugin_credentials* c = (grpc_plugin_credentials*)creds;
|
39
38
|
gpr_mu_destroy(&c->mu);
|
40
39
|
if (c->plugin.state != nullptr && c->plugin.destroy != nullptr) {
|
@@ -61,18 +60,17 @@ static void pending_request_remove_locked(
|
|
61
60
|
// When this returns, r->cancelled indicates whether the request was
|
62
61
|
// cancelled before completion.
|
63
62
|
static void pending_request_complete(
|
64
|
-
|
63
|
+
grpc_plugin_credentials_pending_request* r) {
|
65
64
|
gpr_mu_lock(&r->creds->mu);
|
66
65
|
if (!r->cancelled) pending_request_remove_locked(r->creds, r);
|
67
66
|
gpr_mu_unlock(&r->creds->mu);
|
68
67
|
// Ref to credentials not needed anymore.
|
69
|
-
grpc_call_credentials_unref(
|
68
|
+
grpc_call_credentials_unref(&r->creds->base);
|
70
69
|
}
|
71
70
|
|
72
71
|
static grpc_error* process_plugin_result(
|
73
|
-
|
74
|
-
|
75
|
-
const char* error_details) {
|
72
|
+
grpc_plugin_credentials_pending_request* r, const grpc_metadata* md,
|
73
|
+
size_t num_md, grpc_status_code status, const char* error_details) {
|
76
74
|
grpc_error* error = GRPC_ERROR_NONE;
|
77
75
|
if (status != GRPC_STATUS_OK) {
|
78
76
|
char* msg;
|
@@ -100,11 +98,11 @@ static grpc_error* process_plugin_result(
|
|
100
98
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Illegal metadata");
|
101
99
|
} else {
|
102
100
|
for (size_t i = 0; i < num_md; ++i) {
|
103
|
-
grpc_mdelem mdelem =
|
104
|
-
|
105
|
-
|
101
|
+
grpc_mdelem mdelem =
|
102
|
+
grpc_mdelem_from_slices(grpc_slice_ref_internal(md[i].key),
|
103
|
+
grpc_slice_ref_internal(md[i].value));
|
106
104
|
grpc_credentials_mdelem_array_add(r->md_array, mdelem);
|
107
|
-
GRPC_MDELEM_UNREF(
|
105
|
+
GRPC_MDELEM_UNREF(mdelem);
|
108
106
|
}
|
109
107
|
}
|
110
108
|
}
|
@@ -117,9 +115,8 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
117
115
|
grpc_status_code status,
|
118
116
|
const char* error_details) {
|
119
117
|
/* called from application code */
|
120
|
-
|
121
|
-
|
122
|
-
nullptr, nullptr);
|
118
|
+
grpc_core::ExecCtx exec_ctx(GRPC_EXEC_CTX_FLAG_IS_FINISHED |
|
119
|
+
GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP);
|
123
120
|
grpc_plugin_credentials_pending_request* r =
|
124
121
|
(grpc_plugin_credentials_pending_request*)request;
|
125
122
|
if (grpc_plugin_credentials_trace.enabled()) {
|
@@ -129,12 +126,12 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
129
126
|
r->creds, r);
|
130
127
|
}
|
131
128
|
// Remove request from pending list if not previously cancelled.
|
132
|
-
pending_request_complete(
|
129
|
+
pending_request_complete(r);
|
133
130
|
// If it has not been cancelled, process it.
|
134
131
|
if (!r->cancelled) {
|
135
132
|
grpc_error* error =
|
136
|
-
process_plugin_result(
|
137
|
-
GRPC_CLOSURE_SCHED(
|
133
|
+
process_plugin_result(r, md, num_md, status, error_details);
|
134
|
+
GRPC_CLOSURE_SCHED(r->on_request_metadata, error);
|
138
135
|
} else if (grpc_plugin_credentials_trace.enabled()) {
|
139
136
|
gpr_log(GPR_INFO,
|
140
137
|
"plugin_credentials[%p]: request %p: plugin was previously "
|
@@ -142,11 +139,9 @@ static void plugin_md_request_metadata_ready(void* request,
|
|
142
139
|
r->creds, r);
|
143
140
|
}
|
144
141
|
gpr_free(r);
|
145
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
146
142
|
}
|
147
143
|
|
148
|
-
static bool plugin_get_request_metadata(
|
149
|
-
grpc_call_credentials* creds,
|
144
|
+
static bool plugin_get_request_metadata(grpc_call_credentials* creds,
|
150
145
|
grpc_polling_entity* pollent,
|
151
146
|
grpc_auth_metadata_context context,
|
152
147
|
grpc_credentials_mdelem_array* md_array,
|
@@ -194,7 +189,7 @@ static bool plugin_get_request_metadata(grpc_exec_ctx* exec_ctx,
|
|
194
189
|
}
|
195
190
|
// Returned synchronously.
|
196
191
|
// Remove request from pending list if not previously cancelled.
|
197
|
-
pending_request_complete(
|
192
|
+
pending_request_complete(pending_request);
|
198
193
|
// If the request was cancelled, the error will have been returned
|
199
194
|
// asynchronously by plugin_cancel_get_request_metadata(), so return
|
200
195
|
// false. Otherwise, process the result.
|
@@ -213,13 +208,13 @@ static bool plugin_get_request_metadata(grpc_exec_ctx* exec_ctx,
|
|
213
208
|
"synchronously",
|
214
209
|
c, pending_request);
|
215
210
|
}
|
216
|
-
*error = process_plugin_result(
|
217
|
-
|
211
|
+
*error = process_plugin_result(pending_request, creds_md, num_creds_md,
|
212
|
+
status, error_details);
|
218
213
|
}
|
219
214
|
// Clean up.
|
220
215
|
for (size_t i = 0; i < num_creds_md; ++i) {
|
221
|
-
grpc_slice_unref_internal(
|
222
|
-
grpc_slice_unref_internal(
|
216
|
+
grpc_slice_unref_internal(creds_md[i].key);
|
217
|
+
grpc_slice_unref_internal(creds_md[i].value);
|
223
218
|
}
|
224
219
|
gpr_free((void*)error_details);
|
225
220
|
gpr_free(pending_request);
|
@@ -228,8 +223,8 @@ static bool plugin_get_request_metadata(grpc_exec_ctx* exec_ctx,
|
|
228
223
|
}
|
229
224
|
|
230
225
|
static void plugin_cancel_get_request_metadata(
|
231
|
-
|
232
|
-
|
226
|
+
grpc_call_credentials* creds, grpc_credentials_mdelem_array* md_array,
|
227
|
+
grpc_error* error) {
|
233
228
|
grpc_plugin_credentials* c = (grpc_plugin_credentials*)creds;
|
234
229
|
gpr_mu_lock(&c->mu);
|
235
230
|
for (grpc_plugin_credentials_pending_request* pending_request =
|
@@ -241,7 +236,7 @@ static void plugin_cancel_get_request_metadata(
|
|
241
236
|
pending_request);
|
242
237
|
}
|
243
238
|
pending_request->cancelled = true;
|
244
|
-
GRPC_CLOSURE_SCHED(
|
239
|
+
GRPC_CLOSURE_SCHED(pending_request->on_request_metadata,
|
245
240
|
GRPC_ERROR_REF(error));
|
246
241
|
pending_request_remove_locked(c, pending_request);
|
247
242
|
break;
|
@@ -41,18 +41,16 @@ void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp,
|
|
41
41
|
gpr_free(kp);
|
42
42
|
}
|
43
43
|
|
44
|
-
static void ssl_destruct(
|
45
|
-
grpc_channel_credentials* creds) {
|
44
|
+
static void ssl_destruct(grpc_channel_credentials* creds) {
|
46
45
|
grpc_ssl_credentials* c = (grpc_ssl_credentials*)creds;
|
47
46
|
gpr_free(c->config.pem_root_certs);
|
48
47
|
grpc_tsi_ssl_pem_key_cert_pairs_destroy(c->config.pem_key_cert_pair, 1);
|
49
48
|
}
|
50
49
|
|
51
50
|
static grpc_security_status ssl_create_security_connector(
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
grpc_channel_args** new_args) {
|
51
|
+
grpc_channel_credentials* creds, grpc_call_credentials* call_creds,
|
52
|
+
const char* target, const grpc_channel_args* args,
|
53
|
+
grpc_channel_security_connector** sc, grpc_channel_args** new_args) {
|
56
54
|
grpc_ssl_credentials* c = (grpc_ssl_credentials*)creds;
|
57
55
|
grpc_security_status status = GRPC_SECURITY_OK;
|
58
56
|
const char* overridden_target_name = nullptr;
|
@@ -65,8 +63,7 @@ static grpc_security_status ssl_create_security_connector(
|
|
65
63
|
}
|
66
64
|
}
|
67
65
|
status = grpc_ssl_channel_security_connector_create(
|
68
|
-
|
69
|
-
sc);
|
66
|
+
creds, call_creds, &c->config, target, overridden_target_name, sc);
|
70
67
|
if (status != GRPC_SECURITY_OK) {
|
71
68
|
return status;
|
72
69
|
}
|
@@ -125,8 +122,7 @@ struct grpc_ssl_server_credentials_options {
|
|
125
122
|
grpc_ssl_server_certificate_config_fetcher* certificate_config_fetcher;
|
126
123
|
};
|
127
124
|
|
128
|
-
static void ssl_server_destruct(
|
129
|
-
grpc_server_credentials* creds) {
|
125
|
+
static void ssl_server_destruct(grpc_server_credentials* creds) {
|
130
126
|
grpc_ssl_server_credentials* c = (grpc_ssl_server_credentials*)creds;
|
131
127
|
grpc_tsi_ssl_pem_key_cert_pairs_destroy(c->config.pem_key_cert_pairs,
|
132
128
|
c->config.num_key_cert_pairs);
|
@@ -134,9 +130,8 @@ static void ssl_server_destruct(grpc_exec_ctx* exec_ctx,
|
|
134
130
|
}
|
135
131
|
|
136
132
|
static grpc_security_status ssl_server_create_security_connector(
|
137
|
-
|
138
|
-
|
139
|
-
return grpc_ssl_server_security_connector_create(exec_ctx, creds, sc);
|
133
|
+
grpc_server_credentials* creds, grpc_server_security_connector** sc) {
|
134
|
+
return grpc_ssl_server_security_connector_create(creds, sc);
|
140
135
|
}
|
141
136
|
|
142
137
|
static grpc_server_credentials_vtable ssl_server_vtable = {
|
@@ -20,10 +20,6 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/security/credentials/credentials.h"
|
22
22
|
|
23
|
-
#ifdef __cplusplus
|
24
|
-
extern "C" {
|
25
|
-
#endif
|
26
|
-
|
27
23
|
typedef struct {
|
28
24
|
grpc_channel_credentials base;
|
29
25
|
grpc_ssl_config config;
|
@@ -53,8 +49,4 @@ tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
|
|
53
49
|
void grpc_tsi_ssl_pem_key_cert_pairs_destroy(tsi_ssl_pem_key_cert_pair* kp,
|
54
50
|
size_t num_key_cert_pairs);
|
55
51
|
|
56
|
-
#ifdef __cplusplus
|
57
|
-
}
|
58
|
-
#endif
|
59
|
-
|
60
52
|
#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_SSL_SSL_CREDENTIALS_H */
|
@@ -22,10 +22,6 @@
|
|
22
22
|
#include <grpc/grpc_security.h>
|
23
23
|
#include "src/core/lib/channel/channel_stack.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
extern const grpc_channel_filter grpc_client_auth_filter;
|
30
26
|
extern const grpc_channel_filter grpc_server_auth_filter;
|
31
27
|
|
@@ -36,8 +32,4 @@ void grpc_auth_metadata_context_build(
|
|
36
32
|
|
37
33
|
void grpc_auth_metadata_context_reset(grpc_auth_metadata_context* context);
|
38
34
|
|
39
|
-
#ifdef __cplusplus
|
40
|
-
}
|
41
|
-
#endif
|
42
|
-
|
43
35
|
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_AUTH_FILTERS_H */
|
@@ -25,20 +25,21 @@
|
|
25
25
|
#include <grpc/support/string_util.h>
|
26
26
|
|
27
27
|
#include "src/core/lib/channel/channel_stack.h"
|
28
|
+
#include "src/core/lib/gpr/string.h"
|
28
29
|
#include "src/core/lib/profiling/timers.h"
|
29
30
|
#include "src/core/lib/security/context/security_context.h"
|
30
31
|
#include "src/core/lib/security/credentials/credentials.h"
|
31
32
|
#include "src/core/lib/security/transport/security_connector.h"
|
32
33
|
#include "src/core/lib/slice/slice_internal.h"
|
33
34
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
34
|
-
#include "src/core/lib/support/string.h"
|
35
35
|
#include "src/core/lib/surface/call.h"
|
36
36
|
#include "src/core/lib/transport/static_metadata.h"
|
37
37
|
|
38
38
|
#define MAX_CREDENTIALS_METADATA_COUNT 4
|
39
39
|
|
40
|
+
namespace {
|
40
41
|
/* We can have a per-call credentials. */
|
41
|
-
|
42
|
+
struct call_data {
|
42
43
|
grpc_call_stack* owning_call;
|
43
44
|
grpc_call_combiner* call_combiner;
|
44
45
|
grpc_call_credentials* creds;
|
@@ -57,13 +58,14 @@ typedef struct {
|
|
57
58
|
grpc_closure async_result_closure;
|
58
59
|
grpc_closure check_call_host_cancel_closure;
|
59
60
|
grpc_closure get_request_metadata_cancel_closure;
|
60
|
-
}
|
61
|
+
};
|
61
62
|
|
62
63
|
/* We can have a per-channel credentials. */
|
63
|
-
|
64
|
+
struct channel_data {
|
64
65
|
grpc_channel_security_connector* security_connector;
|
65
66
|
grpc_auth_context* auth_context;
|
66
|
-
}
|
67
|
+
};
|
68
|
+
} // namespace
|
67
69
|
|
68
70
|
void grpc_auth_metadata_context_reset(
|
69
71
|
grpc_auth_metadata_context* auth_md_context) {
|
@@ -90,8 +92,7 @@ static void add_error(grpc_error** combined, grpc_error* error) {
|
|
90
92
|
*combined = grpc_error_add_child(*combined, error);
|
91
93
|
}
|
92
94
|
|
93
|
-
static void on_credentials_metadata(
|
94
|
-
grpc_error* input_error) {
|
95
|
+
static void on_credentials_metadata(void* arg, grpc_error* input_error) {
|
95
96
|
grpc_transport_stream_op_batch* batch = (grpc_transport_stream_op_batch*)arg;
|
96
97
|
grpc_call_element* elem =
|
97
98
|
(grpc_call_element*)batch->handler_private.extra_arg;
|
@@ -105,16 +106,16 @@ static void on_credentials_metadata(grpc_exec_ctx* exec_ctx, void* arg,
|
|
105
106
|
batch->payload->send_initial_metadata.send_initial_metadata;
|
106
107
|
for (size_t i = 0; i < calld->md_array.size; ++i) {
|
107
108
|
add_error(&error, grpc_metadata_batch_add_tail(
|
108
|
-
|
109
|
+
mdb, &calld->md_links[i],
|
109
110
|
GRPC_MDELEM_REF(calld->md_array.md[i])));
|
110
111
|
}
|
111
112
|
}
|
112
113
|
if (error == GRPC_ERROR_NONE) {
|
113
|
-
grpc_call_next_op(
|
114
|
+
grpc_call_next_op(elem, batch);
|
114
115
|
} else {
|
115
116
|
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
|
116
|
-
|
117
|
-
grpc_transport_stream_op_batch_finish_with_failure(
|
117
|
+
GRPC_STATUS_UNAVAILABLE);
|
118
|
+
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
118
119
|
calld->call_combiner);
|
119
120
|
}
|
120
121
|
}
|
@@ -156,20 +157,17 @@ void grpc_auth_metadata_context_build(
|
|
156
157
|
gpr_free(host_and_port);
|
157
158
|
}
|
158
159
|
|
159
|
-
static void cancel_get_request_metadata(
|
160
|
-
grpc_error* error) {
|
160
|
+
static void cancel_get_request_metadata(void* arg, grpc_error* error) {
|
161
161
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
162
162
|
call_data* calld = (call_data*)elem->call_data;
|
163
163
|
if (error != GRPC_ERROR_NONE) {
|
164
164
|
grpc_call_credentials_cancel_get_request_metadata(
|
165
|
-
|
165
|
+
calld->creds, &calld->md_array, GRPC_ERROR_REF(error));
|
166
166
|
}
|
167
|
-
GRPC_CALL_STACK_UNREF(
|
168
|
-
"cancel_get_request_metadata");
|
167
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_get_request_metadata");
|
169
168
|
}
|
170
169
|
|
171
|
-
static void send_security_metadata(
|
172
|
-
grpc_call_element* elem,
|
170
|
+
static void send_security_metadata(grpc_call_element* elem,
|
173
171
|
grpc_transport_stream_op_batch* batch) {
|
174
172
|
call_data* calld = (call_data*)elem->call_data;
|
175
173
|
channel_data* chand = (channel_data*)elem->channel_data;
|
@@ -183,7 +181,7 @@ static void send_security_metadata(grpc_exec_ctx* exec_ctx,
|
|
183
181
|
|
184
182
|
if (channel_call_creds == nullptr && !call_creds_has_md) {
|
185
183
|
/* Skip sending metadata altogether. */
|
186
|
-
grpc_call_next_op(
|
184
|
+
grpc_call_next_op(elem, batch);
|
187
185
|
return;
|
188
186
|
}
|
189
187
|
|
@@ -192,7 +190,7 @@ static void send_security_metadata(grpc_exec_ctx* exec_ctx,
|
|
192
190
|
ctx->creds, nullptr);
|
193
191
|
if (calld->creds == nullptr) {
|
194
192
|
grpc_transport_stream_op_batch_finish_with_failure(
|
195
|
-
|
193
|
+
batch,
|
196
194
|
grpc_error_set_int(
|
197
195
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
198
196
|
"Incompatible credentials set on channel and call."),
|
@@ -215,30 +213,29 @@ static void send_security_metadata(grpc_exec_ctx* exec_ctx,
|
|
215
213
|
batch, grpc_schedule_on_exec_ctx);
|
216
214
|
grpc_error* error = GRPC_ERROR_NONE;
|
217
215
|
if (grpc_call_credentials_get_request_metadata(
|
218
|
-
|
216
|
+
calld->creds, calld->pollent, calld->auth_md_context,
|
219
217
|
&calld->md_array, &calld->async_result_closure, &error)) {
|
220
218
|
// Synchronous return; invoke on_credentials_metadata() directly.
|
221
|
-
on_credentials_metadata(
|
219
|
+
on_credentials_metadata(batch, error);
|
222
220
|
GRPC_ERROR_UNREF(error);
|
223
221
|
} else {
|
224
222
|
// Async return; register cancellation closure with call combiner.
|
225
223
|
GRPC_CALL_STACK_REF(calld->owning_call, "cancel_get_request_metadata");
|
226
224
|
grpc_call_combiner_set_notify_on_cancel(
|
227
|
-
|
225
|
+
calld->call_combiner,
|
228
226
|
GRPC_CLOSURE_INIT(&calld->get_request_metadata_cancel_closure,
|
229
227
|
cancel_get_request_metadata, elem,
|
230
228
|
grpc_schedule_on_exec_ctx));
|
231
229
|
}
|
232
230
|
}
|
233
231
|
|
234
|
-
static void on_host_checked(
|
235
|
-
grpc_error* error) {
|
232
|
+
static void on_host_checked(void* arg, grpc_error* error) {
|
236
233
|
grpc_transport_stream_op_batch* batch = (grpc_transport_stream_op_batch*)arg;
|
237
234
|
grpc_call_element* elem =
|
238
235
|
(grpc_call_element*)batch->handler_private.extra_arg;
|
239
236
|
call_data* calld = (call_data*)elem->call_data;
|
240
237
|
if (error == GRPC_ERROR_NONE) {
|
241
|
-
send_security_metadata(
|
238
|
+
send_security_metadata(elem, batch);
|
242
239
|
} else {
|
243
240
|
char* error_msg;
|
244
241
|
char* host = grpc_slice_to_c_string(calld->host);
|
@@ -246,7 +243,7 @@ static void on_host_checked(grpc_exec_ctx* exec_ctx, void* arg,
|
|
246
243
|
host);
|
247
244
|
gpr_free(host);
|
248
245
|
grpc_transport_stream_op_batch_finish_with_failure(
|
249
|
-
|
246
|
+
batch,
|
250
247
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg),
|
251
248
|
GRPC_ERROR_INT_GRPC_STATUS,
|
252
249
|
GRPC_STATUS_UNAUTHENTICATED),
|
@@ -255,22 +252,20 @@ static void on_host_checked(grpc_exec_ctx* exec_ctx, void* arg,
|
|
255
252
|
}
|
256
253
|
}
|
257
254
|
|
258
|
-
static void cancel_check_call_host(
|
259
|
-
grpc_error* error) {
|
255
|
+
static void cancel_check_call_host(void* arg, grpc_error* error) {
|
260
256
|
grpc_call_element* elem = (grpc_call_element*)arg;
|
261
257
|
call_data* calld = (call_data*)elem->call_data;
|
262
258
|
channel_data* chand = (channel_data*)elem->channel_data;
|
263
259
|
if (error != GRPC_ERROR_NONE) {
|
264
260
|
grpc_channel_security_connector_cancel_check_call_host(
|
265
|
-
|
261
|
+
chand->security_connector, &calld->async_result_closure,
|
266
262
|
GRPC_ERROR_REF(error));
|
267
263
|
}
|
268
|
-
GRPC_CALL_STACK_UNREF(
|
264
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_check_call_host");
|
269
265
|
}
|
270
266
|
|
271
267
|
static void auth_start_transport_stream_op_batch(
|
272
|
-
|
273
|
-
grpc_transport_stream_op_batch* batch) {
|
268
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
274
269
|
GPR_TIMER_BEGIN("auth_start_transport_stream_op_batch", 0);
|
275
270
|
|
276
271
|
/* grab pointers to our data from the call element */
|
@@ -303,13 +298,13 @@ static void auth_start_transport_stream_op_batch(
|
|
303
298
|
*/
|
304
299
|
if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_AUTHORITY)) {
|
305
300
|
if (calld->have_host) {
|
306
|
-
grpc_slice_unref_internal(
|
301
|
+
grpc_slice_unref_internal(calld->host);
|
307
302
|
}
|
308
303
|
calld->host = grpc_slice_ref_internal(GRPC_MDVALUE(md));
|
309
304
|
calld->have_host = true;
|
310
305
|
} else if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_PATH)) {
|
311
306
|
if (calld->have_method) {
|
312
|
-
grpc_slice_unref_internal(
|
307
|
+
grpc_slice_unref_internal(calld->method);
|
313
308
|
}
|
314
309
|
calld->method = grpc_slice_ref_internal(GRPC_MDVALUE(md));
|
315
310
|
calld->have_method = true;
|
@@ -322,16 +317,16 @@ static void auth_start_transport_stream_op_batch(
|
|
322
317
|
char* call_host = grpc_slice_to_c_string(calld->host);
|
323
318
|
grpc_error* error = GRPC_ERROR_NONE;
|
324
319
|
if (grpc_channel_security_connector_check_call_host(
|
325
|
-
|
326
|
-
|
320
|
+
chand->security_connector, call_host, chand->auth_context,
|
321
|
+
&calld->async_result_closure, &error)) {
|
327
322
|
// Synchronous return; invoke on_host_checked() directly.
|
328
|
-
on_host_checked(
|
323
|
+
on_host_checked(batch, error);
|
329
324
|
GRPC_ERROR_UNREF(error);
|
330
325
|
} else {
|
331
326
|
// Async return; register cancellation closure with call combiner.
|
332
327
|
GRPC_CALL_STACK_REF(calld->owning_call, "cancel_check_call_host");
|
333
328
|
grpc_call_combiner_set_notify_on_cancel(
|
334
|
-
|
329
|
+
calld->call_combiner,
|
335
330
|
GRPC_CLOSURE_INIT(&calld->check_call_host_cancel_closure,
|
336
331
|
cancel_check_call_host, elem,
|
337
332
|
grpc_schedule_on_exec_ctx));
|
@@ -343,13 +338,12 @@ static void auth_start_transport_stream_op_batch(
|
|
343
338
|
}
|
344
339
|
|
345
340
|
/* pass control down the stack */
|
346
|
-
grpc_call_next_op(
|
341
|
+
grpc_call_next_op(elem, batch);
|
347
342
|
GPR_TIMER_END("auth_start_transport_stream_op_batch", 0);
|
348
343
|
}
|
349
344
|
|
350
345
|
/* Constructor for call_data */
|
351
|
-
static grpc_error* init_call_elem(
|
352
|
-
grpc_call_element* elem,
|
346
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
353
347
|
const grpc_call_element_args* args) {
|
354
348
|
call_data* calld = (call_data*)elem->call_data;
|
355
349
|
calld->owning_call = args->call_stack;
|
@@ -357,32 +351,30 @@ static grpc_error* init_call_elem(grpc_exec_ctx* exec_ctx,
|
|
357
351
|
return GRPC_ERROR_NONE;
|
358
352
|
}
|
359
353
|
|
360
|
-
static void set_pollset_or_pollset_set(
|
361
|
-
grpc_call_element* elem,
|
354
|
+
static void set_pollset_or_pollset_set(grpc_call_element* elem,
|
362
355
|
grpc_polling_entity* pollent) {
|
363
356
|
call_data* calld = (call_data*)elem->call_data;
|
364
357
|
calld->pollent = pollent;
|
365
358
|
}
|
366
359
|
|
367
360
|
/* Destructor for call_data */
|
368
|
-
static void destroy_call_elem(
|
361
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
369
362
|
const grpc_call_final_info* final_info,
|
370
363
|
grpc_closure* ignored) {
|
371
364
|
call_data* calld = (call_data*)elem->call_data;
|
372
|
-
grpc_credentials_mdelem_array_destroy(
|
373
|
-
grpc_call_credentials_unref(
|
365
|
+
grpc_credentials_mdelem_array_destroy(&calld->md_array);
|
366
|
+
grpc_call_credentials_unref(calld->creds);
|
374
367
|
if (calld->have_host) {
|
375
|
-
grpc_slice_unref_internal(
|
368
|
+
grpc_slice_unref_internal(calld->host);
|
376
369
|
}
|
377
370
|
if (calld->have_method) {
|
378
|
-
grpc_slice_unref_internal(
|
371
|
+
grpc_slice_unref_internal(calld->method);
|
379
372
|
}
|
380
373
|
grpc_auth_metadata_context_reset(&calld->auth_md_context);
|
381
374
|
}
|
382
375
|
|
383
376
|
/* Constructor for channel_data */
|
384
|
-
static grpc_error* init_channel_elem(
|
385
|
-
grpc_channel_element* elem,
|
377
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
386
378
|
grpc_channel_element_args* args) {
|
387
379
|
grpc_security_connector* sc =
|
388
380
|
grpc_security_connector_find_in_args(args->channel_args);
|
@@ -415,13 +407,12 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
415
407
|
}
|
416
408
|
|
417
409
|
/* Destructor for channel data */
|
418
|
-
static void destroy_channel_elem(
|
419
|
-
grpc_channel_element* elem) {
|
410
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {
|
420
411
|
/* grab pointers to our data from the channel element */
|
421
412
|
channel_data* chand = (channel_data*)elem->channel_data;
|
422
413
|
grpc_channel_security_connector* sc = chand->security_connector;
|
423
414
|
if (sc != nullptr) {
|
424
|
-
GRPC_SECURITY_CONNECTOR_UNREF(
|
415
|
+
GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "client_auth_filter");
|
425
416
|
}
|
426
417
|
GRPC_AUTH_CONTEXT_UNREF(chand->auth_context, "client_auth_filter");
|
427
418
|
}
|