grpc 1.7.3 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2106 -2116
- data/include/grpc/census.h +1 -432
- data/include/grpc/compression.h +9 -9
- data/include/grpc/grpc.h +115 -98
- data/include/grpc/grpc_cronet.h +3 -3
- data/include/grpc/grpc_posix.h +4 -4
- data/include/grpc/grpc_security.h +160 -88
- data/include/grpc/grpc_security_constants.h +7 -0
- data/include/grpc/impl/codegen/atm.h +9 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
- data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
- data/include/grpc/impl/codegen/atm_windows.h +23 -22
- data/include/grpc/impl/codegen/byte_buffer.h +14 -14
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +32 -28
- data/include/grpc/impl/codegen/port_platform.h +48 -0
- data/include/grpc/impl/codegen/slice.h +10 -10
- data/include/grpc/impl/codegen/sync_generic.h +9 -3
- data/include/grpc/slice.h +16 -17
- data/include/grpc/slice_buffer.h +22 -22
- data/include/grpc/support/alloc.h +11 -11
- data/include/grpc/support/avl.h +28 -20
- data/include/grpc/support/cmdline.h +13 -13
- data/include/grpc/support/histogram.h +17 -17
- data/include/grpc/support/host_port.h +2 -2
- data/include/grpc/support/log.h +9 -9
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/string_util.h +2 -2
- data/include/grpc/support/subprocess.h +5 -5
- data/include/grpc/support/sync.h +43 -27
- data/include/grpc/support/thd.h +6 -6
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_pthread.h +1 -1
- data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
- data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
- data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
- data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
- data/src/core/ext/filters/client_channel/client_channel.h +16 -8
- data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
- data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
- data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
- data/src/core/ext/filters/client_channel/connector.h +29 -21
- data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
- data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
- data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
- data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
- data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
- data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
- data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
- data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
- data/src/core/ext/filters/client_channel/parse_address.h +14 -6
- data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
- data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
- data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
- data/src/core/ext/filters/client_channel/resolver.h +33 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
- data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
- data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
- data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
- data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
- data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
- data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
- data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
- data/src/core/ext/filters/client_channel/subchannel.h +68 -60
- data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
- data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
- data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
- data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
- data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
- data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
- data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
- data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
- data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
- data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
- data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
- data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
- data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
- data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
- data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
- data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
- data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
- data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
- data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
- data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
- data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
- data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
- data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
- data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
- data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
- data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
- data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
- data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
- data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
- data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
- data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
- data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
- data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
- data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
- data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
- data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
- data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
- data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
- data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
- data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
- data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
- data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
- data/src/core/lib/backoff/backoff.cc +80 -0
- data/src/core/lib/backoff/backoff.h +83 -0
- data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
- data/src/core/lib/channel/channel_args.h +45 -37
- data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
- data/src/core/lib/channel/channel_stack.h +76 -75
- data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
- data/src/core/lib/channel/channel_stack_builder.h +45 -45
- data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
- data/src/core/lib/channel/connected_channel.h +12 -4
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
- data/src/core/lib/channel/handshaker.h +9 -1
- data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
- data/src/core/lib/channel/handshaker_factory.h +18 -10
- data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
- data/src/core/lib/channel/handshaker_registry.h +8 -0
- data/src/core/lib/compression/algorithm_metadata.h +8 -0
- data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
- data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
- data/src/core/lib/compression/message_compress.h +8 -0
- data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
- data/src/core/lib/compression/stream_compression.h +27 -19
- data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
- data/src/core/lib/compression/stream_compression_gzip.h +8 -0
- data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
- data/src/core/lib/compression/stream_compression_identity.h +8 -0
- data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
- data/src/core/lib/debug/stats.h +17 -9
- data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
- data/src/core/lib/debug/stats_data.h +58 -19
- data/src/core/lib/debug/trace.cc +142 -0
- data/src/core/lib/debug/trace.h +74 -14
- data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
- data/src/core/lib/http/format_request.h +12 -4
- data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
- data/src/core/lib/http/httpcli.h +41 -33
- data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
- data/src/core/lib/http/{parser.c → parser.cc} +42 -42
- data/src/core/lib/http/parser.h +28 -20
- data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
- data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
- data/src/core/lib/iomgr/call_combiner.h +9 -1
- data/src/core/lib/iomgr/closure.h +220 -62
- data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
- data/src/core/lib/iomgr/combiner.h +16 -8
- data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
- data/src/core/lib/iomgr/endpoint.h +47 -32
- data/src/core/lib/iomgr/endpoint_pair.h +12 -4
- data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
- data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
- data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
- data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
- data/src/core/lib/iomgr/error.h +32 -27
- data/src/core/lib/iomgr/error_internal.h +11 -2
- data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
- data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
- data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
- data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
- data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
- data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
- data/src/core/lib/iomgr/ev_posix.cc +288 -0
- data/src/core/lib/iomgr/ev_posix.h +75 -67
- data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +177 -0
- data/src/core/lib/iomgr/exec_ctx.h +35 -13
- data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
- data/src/core/lib/iomgr/executor.h +12 -4
- data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
- data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
- data/src/core/lib/iomgr/gethostname.h +9 -1
- data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
- data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
- data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
- data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
- data/src/core/lib/iomgr/iocp_windows.h +17 -3
- data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
- data/src/core/lib/iomgr/iomgr.h +11 -3
- data/src/core/lib/iomgr/iomgr_internal.h +13 -5
- data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
- data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
- data/src/core/lib/iomgr/iomgr_uv.h +8 -0
- data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
- data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
- data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
- data/src/core/lib/iomgr/lockfree_event.h +30 -11
- data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
- data/src/core/lib/iomgr/network_status_tracker.h +2 -2
- data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
- data/src/core/lib/iomgr/polling_entity.h +21 -13
- data/src/core/lib/iomgr/pollset.h +17 -11
- data/src/core/lib/iomgr/pollset_set.h +23 -15
- data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
- data/src/core/lib/iomgr/pollset_uv.h +8 -0
- data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
- data/src/core/lib/iomgr/pollset_windows.h +17 -4
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.h +18 -10
- data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
- data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
- data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
- data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
- data/src/core/lib/iomgr/resource_quota.h +45 -37
- data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
- data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
- data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
- data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
- data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
- data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
- data/src/core/lib/iomgr/socket_mutator.h +11 -11
- data/src/core/lib/iomgr/socket_utils.h +9 -1
- data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
- data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
- data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
- data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
- data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
- data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
- data/src/core/lib/iomgr/socket_windows.h +26 -13
- data/src/core/lib/iomgr/tcp_client.h +14 -6
- data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
- data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
- data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
- data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
- data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
- data/src/core/lib/iomgr/tcp_posix.h +15 -7
- data/src/core/lib/iomgr/tcp_server.h +31 -23
- data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
- data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
- data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
- data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
- data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
- data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
- data/src/core/lib/iomgr/tcp_uv.cc +420 -0
- data/src/core/lib/iomgr/tcp_uv.h +18 -4
- data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
- data/src/core/lib/iomgr/tcp_windows.h +17 -4
- data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
- data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
- data/src/core/lib/iomgr/timer.h +16 -9
- data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
- data/src/core/lib/iomgr/timer_generic.h +4 -4
- data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
- data/src/core/lib/iomgr/timer_heap.h +16 -8
- data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
- data/src/core/lib/iomgr/timer_manager.h +8 -0
- data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
- data/src/core/lib/iomgr/timer_uv.h +2 -2
- data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
- data/src/core/lib/iomgr/udp_server.h +25 -17
- data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
- data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
- data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
- data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
- data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
- data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
- data/src/core/lib/json/{json.c → json.cc} +0 -0
- data/src/core/lib/json/json.h +8 -0
- data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
- data/src/core/lib/json/json_reader.h +26 -18
- data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
- data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
- data/src/core/lib/json/json_writer.h +23 -15
- data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
- data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
- data/src/core/lib/profiling/timers.h +6 -6
- data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
- data/src/core/lib/security/context/security_context.h +27 -29
- data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
- data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
- data/src/core/lib/security/credentials/credentials.h +83 -75
- data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
- data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
- data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
- data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
- data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
- data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
- data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
- data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
- data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
- data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
- data/src/core/lib/security/transport/auth_filters.h +16 -0
- data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
- data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
- data/src/core/lib/security/transport/lb_targets_info.h +11 -3
- data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
- data/src/core/lib/security/transport/secure_endpoint.h +13 -5
- data/src/core/lib/security/transport/security_connector.cc +1121 -0
- data/src/core/lib/security/transport/security_connector.h +97 -79
- data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
- data/src/core/lib/security/transport/security_handshaker.h +11 -3
- data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
- data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
- data/src/core/lib/security/transport/tsi_error.h +9 -1
- data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
- data/src/core/lib/security/util/json_util.h +12 -4
- data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
- data/src/core/lib/slice/b64.h +12 -4
- data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
- data/src/core/lib/slice/percent_encoding.h +11 -3
- data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
- data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
- data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
- data/src/core/lib/slice/slice_hash_table.h +19 -11
- data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
- data/src/core/lib/slice/slice_internal.h +17 -6
- data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/support/abstract.h +29 -0
- data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
- data/src/core/lib/support/{arena.c → arena.cc} +12 -12
- data/src/core/lib/support/arena.h +11 -3
- data/src/core/lib/support/{atm.c → atm.cc} +1 -1
- data/src/core/lib/support/{avl.c → avl.cc} +71 -70
- data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
- data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
- data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
- data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
- data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
- data/src/core/lib/support/env.h +3 -3
- data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
- data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
- data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
- data/src/core/lib/support/{fork.c → fork.cc} +2 -2
- data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
- data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
- data/src/core/lib/support/{log.c → log.cc} +8 -8
- data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
- data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
- data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
- data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
- data/src/core/lib/support/manual_constructor.h +211 -0
- data/src/core/lib/support/memory.h +41 -0
- data/src/core/lib/support/mpscq.cc +114 -0
- data/src/core/lib/support/mpscq.h +45 -7
- data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
- data/src/core/lib/support/murmur_hash.h +9 -1
- data/src/core/lib/support/spinlock.h +8 -1
- data/src/core/lib/support/{string.c → string.cc} +56 -55
- data/src/core/lib/support/string.h +21 -21
- data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
- data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
- data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
- data/src/core/lib/support/string_windows.h +8 -0
- data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
- data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
- data/src/core/lib/support/{sync.c → sync.cc} +22 -22
- data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
- data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
- data/src/core/lib/support/{thd.c → thd.cc} +0 -0
- data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
- data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
- data/src/core/lib/support/{time.c → time.cc} +0 -0
- data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
- data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
- data/src/core/lib/support/time_precise.h +9 -1
- data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
- data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
- data/src/core/lib/support/tmpfile.h +1 -1
- data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
- data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
- data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
- data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
- data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
- data/src/core/lib/surface/alarm_internal.h +10 -2
- data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
- data/src/core/lib/surface/api_trace.h +2 -2
- data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
- data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
- data/src/core/lib/surface/{call.c → call.cc} +379 -372
- data/src/core/lib/surface/call.h +37 -38
- data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
- data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
- data/src/core/lib/surface/call_test_only.h +5 -5
- data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
- data/src/core/lib/surface/channel.h +29 -21
- data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
- data/src/core/lib/surface/channel_init.h +6 -6
- data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
- data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
- data/src/core/lib/surface/channel_stack_type.h +9 -1
- data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
- data/src/core/lib/surface/completion_queue.h +29 -29
- data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
- data/src/core/lib/surface/completion_queue_factory.h +8 -0
- data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
- data/src/core/lib/surface/event_string.h +9 -1
- data/src/core/lib/surface/{init.c → init.cc} +16 -39
- data/src/core/lib/surface/init.h +8 -0
- data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
- data/src/core/lib/surface/lame_client.cc +38 -40
- data/src/core/lib/surface/lame_client.h +8 -0
- data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
- data/src/core/lib/surface/{server.c → server.cc} +340 -404
- data/src/core/lib/surface/server.h +22 -14
- data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
- data/src/core/lib/surface/validate_metadata.h +10 -2
- data/src/core/lib/surface/{version.c → version.cc} +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +84 -0
- data/src/core/lib/transport/bdp_estimator.h +67 -42
- data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
- data/src/core/lib/transport/byte_stream.h +41 -33
- data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
- data/src/core/lib/transport/connectivity_state.h +29 -21
- data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
- data/src/core/lib/transport/error_utils.h +18 -6
- data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
- data/src/core/lib/transport/metadata.h +22 -20
- data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
- data/src/core/lib/transport/metadata_batch.h +46 -45
- data/src/core/lib/transport/pid_controller.cc +48 -0
- data/src/core/lib/transport/pid_controller.h +84 -32
- data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
- data/src/core/lib/transport/service_config.h +11 -2
- data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
- data/src/core/lib/transport/static_metadata.h +30 -23
- data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
- data/src/core/lib/transport/status_conversion.h +12 -2
- data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
- data/src/core/lib/transport/timeout_encoding.h +11 -2
- data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
- data/src/core/lib/transport/transport.h +78 -80
- data/src/core/lib/transport/transport_impl.h +27 -19
- data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
- data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
- data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
- data/src/core/tsi/fake_transport_security.h +5 -5
- data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
- data/src/core/tsi/gts_transport_security.h +11 -3
- data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
- data/src/core/tsi/ssl_transport_security.h +25 -25
- data/src/core/tsi/ssl_types.h +8 -0
- data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
- data/src/core/tsi/transport_security.h +55 -55
- data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
- data/src/core/tsi/transport_security_adapter.h +2 -2
- data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
- data/src/core/tsi/transport_security_grpc.h +19 -19
- data/src/core/tsi/transport_security_interface.h +41 -41
- data/src/ruby/ext/grpc/extconf.rb +4 -2
- data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
- data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
- data/src/ruby/ext/grpc/rb_call.c +41 -42
- data/src/ruby/ext/grpc/rb_call.h +6 -6
- data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
- data/src/ruby/ext/grpc/rb_channel.c +87 -87
- data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
- data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
- data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
- data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
- data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +8 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
- data/src/ruby/ext/grpc/rb_server.c +23 -23
- data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +14 -0
- data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
- data/third_party/cares/config_freebsd/ares_config.h +502 -0
- data/third_party/cares/config_openbsd/ares_config.h +502 -0
- metadata +302 -328
- data/src/core/ext/census/aggregation.h +0 -51
- data/src/core/ext/census/base_resources.c +0 -56
- data/src/core/ext/census/base_resources.h +0 -24
- data/src/core/ext/census/census_interface.h +0 -61
- data/src/core/ext/census/census_rpc_stats.h +0 -86
- data/src/core/ext/census/context.c +0 -496
- data/src/core/ext/census/gen/census.pb.c +0 -161
- data/src/core/ext/census/gen/census.pb.h +0 -280
- data/src/core/ext/census/gen/trace_context.pb.c +0 -39
- data/src/core/ext/census/gen/trace_context.pb.h +0 -78
- data/src/core/ext/census/grpc_filter.c +0 -196
- data/src/core/ext/census/grpc_plugin.c +0 -70
- data/src/core/ext/census/initialize.c +0 -51
- data/src/core/ext/census/intrusive_hash_map.c +0 -305
- data/src/core/ext/census/intrusive_hash_map.h +0 -152
- data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
- data/src/core/ext/census/mlog.c +0 -586
- data/src/core/ext/census/mlog.h +0 -80
- data/src/core/ext/census/operation.c +0 -48
- data/src/core/ext/census/placeholders.c +0 -49
- data/src/core/ext/census/resource.c +0 -303
- data/src/core/ext/census/resource.h +0 -48
- data/src/core/ext/census/rpc_metric_id.h +0 -36
- data/src/core/ext/census/trace_context.c +0 -71
- data/src/core/ext/census/trace_context.h +0 -56
- data/src/core/ext/census/trace_label.h +0 -46
- data/src/core/ext/census/trace_propagation.h +0 -48
- data/src/core/ext/census/trace_status.h +0 -30
- data/src/core/ext/census/trace_string.h +0 -35
- data/src/core/ext/census/tracing.c +0 -55
- data/src/core/ext/census/tracing.h +0 -109
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
- data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
- data/src/core/lib/debug/trace.c +0 -146
- data/src/core/lib/iomgr/closure.c +0 -219
- data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
- data/src/core/lib/iomgr/ev_posix.c +0 -266
- data/src/core/lib/iomgr/exec_ctx.c +0 -113
- data/src/core/lib/iomgr/tcp_uv.c +0 -381
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
- data/src/core/lib/security/transport/security_connector.c +0 -914
- data/src/core/lib/support/backoff.c +0 -72
- data/src/core/lib/support/backoff.h +0 -56
- data/src/core/lib/support/mpscq.c +0 -79
- data/src/core/lib/support/stack_lockfree.c +0 -137
- data/src/core/lib/support/stack_lockfree.h +0 -38
- data/src/core/lib/transport/bdp_estimator.c +0 -110
- data/src/core/lib/transport/pid_controller.c +0 -63
@@ -29,10 +29,12 @@
|
|
29
29
|
#include "src/core/tsi/ssl_transport_security.h"
|
30
30
|
#include "src/core/tsi/transport_security_interface.h"
|
31
31
|
|
32
|
-
#
|
33
|
-
extern
|
32
|
+
#ifdef __cplusplus
|
33
|
+
extern "C" {
|
34
34
|
#endif
|
35
35
|
|
36
|
+
extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount;
|
37
|
+
|
36
38
|
/* --- status enum. --- */
|
37
39
|
|
38
40
|
typedef enum { GRPC_SECURITY_OK = 0, GRPC_SECURITY_ERROR } grpc_security_status;
|
@@ -52,21 +54,17 @@ typedef struct grpc_security_connector grpc_security_connector;
|
|
52
54
|
#define GRPC_ARG_SECURITY_CONNECTOR "grpc.security_connector"
|
53
55
|
|
54
56
|
typedef struct {
|
55
|
-
void (*destroy)(grpc_exec_ctx
|
56
|
-
void (*check_peer)(grpc_exec_ctx
|
57
|
-
tsi_peer peer, grpc_auth_context
|
58
|
-
grpc_closure
|
57
|
+
void (*destroy)(grpc_exec_ctx* exec_ctx, grpc_security_connector* sc);
|
58
|
+
void (*check_peer)(grpc_exec_ctx* exec_ctx, grpc_security_connector* sc,
|
59
|
+
tsi_peer peer, grpc_auth_context** auth_context,
|
60
|
+
grpc_closure* on_peer_checked);
|
61
|
+
int (*cmp)(grpc_security_connector* sc, grpc_security_connector* other);
|
59
62
|
} grpc_security_connector_vtable;
|
60
63
|
|
61
|
-
typedef struct grpc_security_connector_handshake_list {
|
62
|
-
void *handshake;
|
63
|
-
struct grpc_security_connector_handshake_list *next;
|
64
|
-
} grpc_security_connector_handshake_list;
|
65
|
-
|
66
64
|
struct grpc_security_connector {
|
67
|
-
const grpc_security_connector_vtable
|
65
|
+
const grpc_security_connector_vtable* vtable;
|
68
66
|
gpr_refcount refcount;
|
69
|
-
const char
|
67
|
+
const char* url_scheme;
|
70
68
|
};
|
71
69
|
|
72
70
|
/* Refcounting. */
|
@@ -75,122 +73,137 @@ struct grpc_security_connector {
|
|
75
73
|
grpc_security_connector_ref((p), __FILE__, __LINE__, (r))
|
76
74
|
#define GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, r) \
|
77
75
|
grpc_security_connector_unref((exec_ctx), (p), __FILE__, __LINE__, (r))
|
78
|
-
grpc_security_connector
|
79
|
-
grpc_security_connector
|
80
|
-
const char
|
81
|
-
void grpc_security_connector_unref(grpc_exec_ctx
|
82
|
-
grpc_security_connector
|
83
|
-
const char
|
84
|
-
const char
|
76
|
+
grpc_security_connector* grpc_security_connector_ref(
|
77
|
+
grpc_security_connector* policy, const char* file, int line,
|
78
|
+
const char* reason);
|
79
|
+
void grpc_security_connector_unref(grpc_exec_ctx* exec_ctx,
|
80
|
+
grpc_security_connector* policy,
|
81
|
+
const char* file, int line,
|
82
|
+
const char* reason);
|
85
83
|
#else
|
86
84
|
#define GRPC_SECURITY_CONNECTOR_REF(p, r) grpc_security_connector_ref((p))
|
87
85
|
#define GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, r) \
|
88
86
|
grpc_security_connector_unref((exec_ctx), (p))
|
89
|
-
grpc_security_connector
|
90
|
-
grpc_security_connector
|
91
|
-
void grpc_security_connector_unref(grpc_exec_ctx
|
92
|
-
grpc_security_connector
|
87
|
+
grpc_security_connector* grpc_security_connector_ref(
|
88
|
+
grpc_security_connector* policy);
|
89
|
+
void grpc_security_connector_unref(grpc_exec_ctx* exec_ctx,
|
90
|
+
grpc_security_connector* policy);
|
93
91
|
#endif
|
94
92
|
|
95
93
|
/* Check the peer. Callee takes ownership of the peer object.
|
96
94
|
When done, sets *auth_context and invokes on_peer_checked. */
|
97
|
-
void grpc_security_connector_check_peer(grpc_exec_ctx
|
98
|
-
grpc_security_connector
|
95
|
+
void grpc_security_connector_check_peer(grpc_exec_ctx* exec_ctx,
|
96
|
+
grpc_security_connector* sc,
|
99
97
|
tsi_peer peer,
|
100
|
-
grpc_auth_context
|
101
|
-
grpc_closure
|
98
|
+
grpc_auth_context** auth_context,
|
99
|
+
grpc_closure* on_peer_checked);
|
100
|
+
|
101
|
+
/* Compares two security connectors. */
|
102
|
+
int grpc_security_connector_cmp(grpc_security_connector* sc,
|
103
|
+
grpc_security_connector* other);
|
102
104
|
|
103
105
|
/* Util to encapsulate the connector in a channel arg. */
|
104
|
-
grpc_arg grpc_security_connector_to_arg(grpc_security_connector
|
106
|
+
grpc_arg grpc_security_connector_to_arg(grpc_security_connector* sc);
|
105
107
|
|
106
108
|
/* Util to get the connector from a channel arg. */
|
107
|
-
grpc_security_connector
|
109
|
+
grpc_security_connector* grpc_security_connector_from_arg(const grpc_arg* arg);
|
108
110
|
|
109
111
|
/* Util to find the connector from channel args. */
|
110
|
-
grpc_security_connector
|
111
|
-
const grpc_channel_args
|
112
|
+
grpc_security_connector* grpc_security_connector_find_in_args(
|
113
|
+
const grpc_channel_args* args);
|
112
114
|
|
113
115
|
/* --- channel_security_connector object. ---
|
114
116
|
|
115
|
-
A channel security connector object represents
|
117
|
+
A channel security connector object represents a way to configure the
|
116
118
|
underlying transport security mechanism on the client side. */
|
117
119
|
|
118
120
|
typedef struct grpc_channel_security_connector grpc_channel_security_connector;
|
119
121
|
|
120
122
|
struct grpc_channel_security_connector {
|
121
123
|
grpc_security_connector base;
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
124
|
+
grpc_channel_credentials* channel_creds;
|
125
|
+
grpc_call_credentials* request_metadata_creds;
|
126
|
+
bool (*check_call_host)(grpc_exec_ctx* exec_ctx,
|
127
|
+
grpc_channel_security_connector* sc, const char* host,
|
128
|
+
grpc_auth_context* auth_context,
|
129
|
+
grpc_closure* on_call_host_checked,
|
130
|
+
grpc_error** error);
|
131
|
+
void (*cancel_check_call_host)(grpc_exec_ctx* exec_ctx,
|
132
|
+
grpc_channel_security_connector* sc,
|
133
|
+
grpc_closure* on_call_host_checked,
|
134
|
+
grpc_error* error);
|
135
|
+
void (*add_handshakers)(grpc_exec_ctx* exec_ctx,
|
136
|
+
grpc_channel_security_connector* sc,
|
137
|
+
grpc_handshake_manager* handshake_mgr);
|
135
138
|
};
|
136
139
|
|
140
|
+
/// A helper function for use in grpc_security_connector_cmp() implementations.
|
141
|
+
int grpc_channel_security_connector_cmp(grpc_channel_security_connector* sc1,
|
142
|
+
grpc_channel_security_connector* sc2);
|
143
|
+
|
137
144
|
/// Checks that the host that will be set for a call is acceptable.
|
138
145
|
/// Returns true if completed synchronously, in which case \a error will
|
139
146
|
/// be set to indicate the result. Otherwise, \a on_call_host_checked
|
140
147
|
/// will be invoked when complete.
|
141
148
|
bool grpc_channel_security_connector_check_call_host(
|
142
|
-
grpc_exec_ctx
|
143
|
-
const char
|
144
|
-
grpc_closure
|
149
|
+
grpc_exec_ctx* exec_ctx, grpc_channel_security_connector* sc,
|
150
|
+
const char* host, grpc_auth_context* auth_context,
|
151
|
+
grpc_closure* on_call_host_checked, grpc_error** error);
|
145
152
|
|
146
153
|
/// Cancels a pending asychronous call to
|
147
154
|
/// grpc_channel_security_connector_check_call_host() with
|
148
155
|
/// \a on_call_host_checked as its callback.
|
149
156
|
void grpc_channel_security_connector_cancel_check_call_host(
|
150
|
-
grpc_exec_ctx
|
151
|
-
grpc_closure
|
157
|
+
grpc_exec_ctx* exec_ctx, grpc_channel_security_connector* sc,
|
158
|
+
grpc_closure* on_call_host_checked, grpc_error* error);
|
152
159
|
|
153
160
|
/* Registers handshakers with \a handshake_mgr. */
|
154
161
|
void grpc_channel_security_connector_add_handshakers(
|
155
|
-
grpc_exec_ctx
|
156
|
-
grpc_handshake_manager
|
162
|
+
grpc_exec_ctx* exec_ctx, grpc_channel_security_connector* connector,
|
163
|
+
grpc_handshake_manager* handshake_mgr);
|
157
164
|
|
158
165
|
/* --- server_security_connector object. ---
|
159
166
|
|
160
|
-
A server security connector object represents
|
167
|
+
A server security connector object represents a way to configure the
|
161
168
|
underlying transport security mechanism on the server side. */
|
162
169
|
|
163
170
|
typedef struct grpc_server_security_connector grpc_server_security_connector;
|
164
171
|
|
165
172
|
struct grpc_server_security_connector {
|
166
173
|
grpc_security_connector base;
|
167
|
-
|
168
|
-
|
169
|
-
|
174
|
+
grpc_server_credentials* server_creds;
|
175
|
+
void (*add_handshakers)(grpc_exec_ctx* exec_ctx,
|
176
|
+
grpc_server_security_connector* sc,
|
177
|
+
grpc_handshake_manager* handshake_mgr);
|
170
178
|
};
|
171
179
|
|
180
|
+
/// A helper function for use in grpc_security_connector_cmp() implementations.
|
181
|
+
int grpc_server_security_connector_cmp(grpc_server_security_connector* sc1,
|
182
|
+
grpc_server_security_connector* sc2);
|
183
|
+
|
172
184
|
void grpc_server_security_connector_add_handshakers(
|
173
|
-
grpc_exec_ctx
|
174
|
-
grpc_handshake_manager
|
185
|
+
grpc_exec_ctx* exec_ctx, grpc_server_security_connector* sc,
|
186
|
+
grpc_handshake_manager* handshake_mgr);
|
175
187
|
|
176
188
|
/* --- Creation security connectors. --- */
|
177
189
|
|
178
190
|
/* For TESTING ONLY!
|
179
191
|
Creates a fake connector that emulates real channel security. */
|
180
|
-
grpc_channel_security_connector
|
181
|
-
|
182
|
-
const
|
192
|
+
grpc_channel_security_connector* grpc_fake_channel_security_connector_create(
|
193
|
+
grpc_channel_credentials* channel_creds,
|
194
|
+
grpc_call_credentials* request_metadata_creds, const char* target,
|
195
|
+
const grpc_channel_args* args);
|
183
196
|
|
184
197
|
/* For TESTING ONLY!
|
185
198
|
Creates a fake connector that emulates real server security. */
|
186
|
-
grpc_server_security_connector
|
187
|
-
|
199
|
+
grpc_server_security_connector* grpc_fake_server_security_connector_create(
|
200
|
+
grpc_server_credentials* server_creds);
|
188
201
|
|
189
202
|
/* Config for ssl clients. */
|
190
203
|
|
191
204
|
typedef struct {
|
192
|
-
tsi_ssl_pem_key_cert_pair pem_key_cert_pair;
|
193
|
-
char
|
205
|
+
tsi_ssl_pem_key_cert_pair* pem_key_cert_pair;
|
206
|
+
char* pem_root_certs;
|
194
207
|
} grpc_ssl_config;
|
195
208
|
|
196
209
|
/* Creates an SSL channel_security_connector.
|
@@ -207,21 +220,22 @@ typedef struct {
|
|
207
220
|
specific error code otherwise.
|
208
221
|
*/
|
209
222
|
grpc_security_status grpc_ssl_channel_security_connector_create(
|
210
|
-
grpc_exec_ctx
|
211
|
-
|
212
|
-
const
|
223
|
+
grpc_exec_ctx* exec_ctx, grpc_channel_credentials* channel_creds,
|
224
|
+
grpc_call_credentials* request_metadata_creds,
|
225
|
+
const grpc_ssl_config* config, const char* target_name,
|
226
|
+
const char* overridden_target_name, grpc_channel_security_connector** sc);
|
213
227
|
|
214
228
|
/* Gets the default ssl roots. Returns NULL if not found. */
|
215
|
-
const char
|
229
|
+
const char* grpc_get_default_ssl_roots(void);
|
216
230
|
|
217
231
|
/* Exposed for TESTING ONLY!. */
|
218
232
|
grpc_slice grpc_get_default_ssl_roots_for_testing(void);
|
219
233
|
|
220
234
|
/* Config for ssl servers. */
|
221
235
|
typedef struct {
|
222
|
-
tsi_ssl_pem_key_cert_pair
|
236
|
+
tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs;
|
223
237
|
size_t num_key_cert_pairs;
|
224
|
-
char
|
238
|
+
char* pem_root_certs;
|
225
239
|
grpc_ssl_client_certificate_request_type client_certificate_request;
|
226
240
|
} grpc_ssl_server_config;
|
227
241
|
|
@@ -232,17 +246,21 @@ typedef struct {
|
|
232
246
|
specific error code otherwise.
|
233
247
|
*/
|
234
248
|
grpc_security_status grpc_ssl_server_security_connector_create(
|
235
|
-
grpc_exec_ctx
|
236
|
-
grpc_server_security_connector
|
249
|
+
grpc_exec_ctx* exec_ctx, grpc_server_credentials* server_credentials,
|
250
|
+
grpc_server_security_connector** sc);
|
237
251
|
|
238
252
|
/* Util. */
|
239
|
-
const tsi_peer_property
|
240
|
-
const char
|
253
|
+
const tsi_peer_property* tsi_peer_get_property_by_name(const tsi_peer* peer,
|
254
|
+
const char* name);
|
241
255
|
|
242
256
|
/* Exposed for testing only. */
|
243
|
-
grpc_auth_context
|
257
|
+
grpc_auth_context* tsi_ssl_peer_to_auth_context(const tsi_peer* peer);
|
244
258
|
tsi_peer tsi_shallow_peer_from_ssl_auth_context(
|
245
|
-
const grpc_auth_context
|
246
|
-
void tsi_shallow_peer_destruct(tsi_peer
|
259
|
+
const grpc_auth_context* auth_context);
|
260
|
+
void tsi_shallow_peer_destruct(tsi_peer* peer);
|
261
|
+
|
262
|
+
#ifdef __cplusplus
|
263
|
+
}
|
264
|
+
#endif
|
247
265
|
|
248
266
|
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_CONNECTOR_H */
|
@@ -40,41 +40,60 @@ typedef struct {
|
|
40
40
|
grpc_handshaker base;
|
41
41
|
|
42
42
|
// State set at creation time.
|
43
|
-
tsi_handshaker
|
44
|
-
grpc_security_connector
|
43
|
+
tsi_handshaker* handshaker;
|
44
|
+
grpc_security_connector* connector;
|
45
45
|
|
46
46
|
gpr_mu mu;
|
47
47
|
gpr_refcount refs;
|
48
48
|
|
49
49
|
bool shutdown;
|
50
50
|
// Endpoint and read buffer to destroy after a shutdown.
|
51
|
-
grpc_endpoint
|
52
|
-
grpc_slice_buffer
|
51
|
+
grpc_endpoint* endpoint_to_destroy;
|
52
|
+
grpc_slice_buffer* read_buffer_to_destroy;
|
53
53
|
|
54
54
|
// State saved while performing the handshake.
|
55
|
-
grpc_handshaker_args
|
56
|
-
grpc_closure
|
55
|
+
grpc_handshaker_args* args;
|
56
|
+
grpc_closure* on_handshake_done;
|
57
57
|
|
58
|
-
unsigned char
|
58
|
+
unsigned char* handshake_buffer;
|
59
59
|
size_t handshake_buffer_size;
|
60
60
|
grpc_slice_buffer outgoing;
|
61
61
|
grpc_closure on_handshake_data_sent_to_peer;
|
62
62
|
grpc_closure on_handshake_data_received_from_peer;
|
63
63
|
grpc_closure on_peer_checked;
|
64
|
-
grpc_auth_context
|
65
|
-
tsi_handshaker_result
|
64
|
+
grpc_auth_context* auth_context;
|
65
|
+
tsi_handshaker_result* handshaker_result;
|
66
66
|
} security_handshaker;
|
67
67
|
|
68
|
-
static
|
69
|
-
|
68
|
+
static size_t move_read_buffer_into_handshake_buffer(grpc_exec_ctx* exec_ctx,
|
69
|
+
security_handshaker* h) {
|
70
|
+
size_t bytes_in_read_buffer = h->args->read_buffer->length;
|
71
|
+
if (h->handshake_buffer_size < bytes_in_read_buffer) {
|
72
|
+
h->handshake_buffer =
|
73
|
+
(uint8_t*)gpr_realloc(h->handshake_buffer, bytes_in_read_buffer);
|
74
|
+
h->handshake_buffer_size = bytes_in_read_buffer;
|
75
|
+
}
|
76
|
+
size_t offset = 0;
|
77
|
+
while (h->args->read_buffer->count > 0) {
|
78
|
+
grpc_slice next_slice = grpc_slice_buffer_take_first(h->args->read_buffer);
|
79
|
+
memcpy(h->handshake_buffer + offset, GRPC_SLICE_START_PTR(next_slice),
|
80
|
+
GRPC_SLICE_LENGTH(next_slice));
|
81
|
+
offset += GRPC_SLICE_LENGTH(next_slice);
|
82
|
+
grpc_slice_unref_internal(exec_ctx, next_slice);
|
83
|
+
}
|
84
|
+
return bytes_in_read_buffer;
|
85
|
+
}
|
86
|
+
|
87
|
+
static void security_handshaker_unref(grpc_exec_ctx* exec_ctx,
|
88
|
+
security_handshaker* h) {
|
70
89
|
if (gpr_unref(&h->refs)) {
|
71
90
|
gpr_mu_destroy(&h->mu);
|
72
91
|
tsi_handshaker_destroy(h->handshaker);
|
73
92
|
tsi_handshaker_result_destroy(h->handshaker_result);
|
74
|
-
if (h->endpoint_to_destroy !=
|
93
|
+
if (h->endpoint_to_destroy != nullptr) {
|
75
94
|
grpc_endpoint_destroy(exec_ctx, h->endpoint_to_destroy);
|
76
95
|
}
|
77
|
-
if (h->read_buffer_to_destroy !=
|
96
|
+
if (h->read_buffer_to_destroy != nullptr) {
|
78
97
|
grpc_slice_buffer_destroy_internal(exec_ctx, h->read_buffer_to_destroy);
|
79
98
|
gpr_free(h->read_buffer_to_destroy);
|
80
99
|
}
|
@@ -88,27 +107,27 @@ static void security_handshaker_unref(grpc_exec_ctx *exec_ctx,
|
|
88
107
|
|
89
108
|
// Set args fields to NULL, saving the endpoint and read buffer for
|
90
109
|
// later destruction.
|
91
|
-
static void cleanup_args_for_failure_locked(grpc_exec_ctx
|
92
|
-
security_handshaker
|
110
|
+
static void cleanup_args_for_failure_locked(grpc_exec_ctx* exec_ctx,
|
111
|
+
security_handshaker* h) {
|
93
112
|
h->endpoint_to_destroy = h->args->endpoint;
|
94
|
-
h->args->endpoint =
|
113
|
+
h->args->endpoint = nullptr;
|
95
114
|
h->read_buffer_to_destroy = h->args->read_buffer;
|
96
|
-
h->args->read_buffer =
|
115
|
+
h->args->read_buffer = nullptr;
|
97
116
|
grpc_channel_args_destroy(exec_ctx, h->args->args);
|
98
|
-
h->args->args =
|
117
|
+
h->args->args = nullptr;
|
99
118
|
}
|
100
119
|
|
101
120
|
// If the handshake failed or we're shutting down, clean up and invoke the
|
102
121
|
// callback with the error.
|
103
|
-
static void security_handshake_failed_locked(grpc_exec_ctx
|
104
|
-
security_handshaker
|
105
|
-
grpc_error
|
122
|
+
static void security_handshake_failed_locked(grpc_exec_ctx* exec_ctx,
|
123
|
+
security_handshaker* h,
|
124
|
+
grpc_error* error) {
|
106
125
|
if (error == GRPC_ERROR_NONE) {
|
107
126
|
// If we were shut down after the handshake succeeded but before an
|
108
127
|
// endpoint callback was invoked, we need to generate our own error.
|
109
128
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
|
110
129
|
}
|
111
|
-
const char
|
130
|
+
const char* msg = grpc_error_string(error);
|
112
131
|
gpr_log(GPR_DEBUG, "Security handshake failed: %s", msg);
|
113
132
|
|
114
133
|
if (!h->shutdown) {
|
@@ -128,16 +147,16 @@ static void security_handshake_failed_locked(grpc_exec_ctx *exec_ctx,
|
|
128
147
|
GRPC_CLOSURE_SCHED(exec_ctx, h->on_handshake_done, error);
|
129
148
|
}
|
130
149
|
|
131
|
-
static void on_peer_checked_inner(grpc_exec_ctx
|
132
|
-
security_handshaker
|
150
|
+
static void on_peer_checked_inner(grpc_exec_ctx* exec_ctx,
|
151
|
+
security_handshaker* h, grpc_error* error) {
|
133
152
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
134
153
|
security_handshake_failed_locked(exec_ctx, h, GRPC_ERROR_REF(error));
|
135
154
|
return;
|
136
155
|
}
|
137
156
|
// Create zero-copy frame protector, if implemented.
|
138
|
-
tsi_zero_copy_grpc_protector
|
157
|
+
tsi_zero_copy_grpc_protector* zero_copy_protector = nullptr;
|
139
158
|
tsi_result result = tsi_handshaker_result_create_zero_copy_grpc_protector(
|
140
|
-
exec_ctx, h->handshaker_result,
|
159
|
+
exec_ctx, h->handshaker_result, nullptr, &zero_copy_protector);
|
141
160
|
if (result != TSI_OK && result != TSI_UNIMPLEMENTED) {
|
142
161
|
error = grpc_set_tsi_error_result(
|
143
162
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -147,10 +166,10 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx,
|
|
147
166
|
return;
|
148
167
|
}
|
149
168
|
// Create frame protector if zero-copy frame protector is NULL.
|
150
|
-
tsi_frame_protector
|
151
|
-
if (zero_copy_protector ==
|
169
|
+
tsi_frame_protector* protector = nullptr;
|
170
|
+
if (zero_copy_protector == nullptr) {
|
152
171
|
result = tsi_handshaker_result_create_frame_protector(h->handshaker_result,
|
153
|
-
|
172
|
+
nullptr, &protector);
|
154
173
|
if (result != TSI_OK) {
|
155
174
|
error = grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
156
175
|
"Frame protector creation failed"),
|
@@ -160,28 +179,26 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx,
|
|
160
179
|
}
|
161
180
|
}
|
162
181
|
// Get unused bytes.
|
163
|
-
const unsigned char
|
182
|
+
const unsigned char* unused_bytes = nullptr;
|
164
183
|
size_t unused_bytes_size = 0;
|
165
184
|
result = tsi_handshaker_result_get_unused_bytes(
|
166
185
|
h->handshaker_result, &unused_bytes, &unused_bytes_size);
|
167
186
|
// Create secure endpoint.
|
168
187
|
if (unused_bytes_size > 0) {
|
169
188
|
grpc_slice slice =
|
170
|
-
grpc_slice_from_copied_buffer((char
|
189
|
+
grpc_slice_from_copied_buffer((char*)unused_bytes, unused_bytes_size);
|
171
190
|
h->args->endpoint = grpc_secure_endpoint_create(
|
172
191
|
protector, zero_copy_protector, h->args->endpoint, &slice, 1);
|
173
192
|
grpc_slice_unref_internal(exec_ctx, slice);
|
174
193
|
} else {
|
175
194
|
h->args->endpoint = grpc_secure_endpoint_create(
|
176
|
-
protector, zero_copy_protector, h->args->endpoint,
|
195
|
+
protector, zero_copy_protector, h->args->endpoint, nullptr, 0);
|
177
196
|
}
|
178
197
|
tsi_handshaker_result_destroy(h->handshaker_result);
|
179
|
-
h->handshaker_result =
|
180
|
-
// Clear out the read buffer before it gets passed to the transport.
|
181
|
-
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, h->args->read_buffer);
|
198
|
+
h->handshaker_result = nullptr;
|
182
199
|
// Add auth context to channel args.
|
183
200
|
grpc_arg auth_context_arg = grpc_auth_context_to_arg(h->auth_context);
|
184
|
-
grpc_channel_args
|
201
|
+
grpc_channel_args* tmp_args = h->args->args;
|
185
202
|
h->args->args =
|
186
203
|
grpc_channel_args_copy_and_add(tmp_args, &auth_context_arg, 1);
|
187
204
|
grpc_channel_args_destroy(exec_ctx, tmp_args);
|
@@ -192,17 +209,17 @@ static void on_peer_checked_inner(grpc_exec_ctx *exec_ctx,
|
|
192
209
|
h->shutdown = true;
|
193
210
|
}
|
194
211
|
|
195
|
-
static void on_peer_checked(grpc_exec_ctx
|
196
|
-
grpc_error
|
197
|
-
security_handshaker
|
212
|
+
static void on_peer_checked(grpc_exec_ctx* exec_ctx, void* arg,
|
213
|
+
grpc_error* error) {
|
214
|
+
security_handshaker* h = (security_handshaker*)arg;
|
198
215
|
gpr_mu_lock(&h->mu);
|
199
216
|
on_peer_checked_inner(exec_ctx, h, error);
|
200
217
|
gpr_mu_unlock(&h->mu);
|
201
218
|
security_handshaker_unref(exec_ctx, h);
|
202
219
|
}
|
203
220
|
|
204
|
-
static grpc_error
|
205
|
-
security_handshaker
|
221
|
+
static grpc_error* check_peer_locked(grpc_exec_ctx* exec_ctx,
|
222
|
+
security_handshaker* h) {
|
206
223
|
tsi_peer peer;
|
207
224
|
tsi_result result =
|
208
225
|
tsi_handshaker_result_extract_peer(h->handshaker_result, &peer);
|
@@ -215,11 +232,11 @@ static grpc_error *check_peer_locked(grpc_exec_ctx *exec_ctx,
|
|
215
232
|
return GRPC_ERROR_NONE;
|
216
233
|
}
|
217
234
|
|
218
|
-
static grpc_error
|
219
|
-
grpc_exec_ctx
|
220
|
-
const unsigned char
|
221
|
-
tsi_handshaker_result
|
222
|
-
grpc_error
|
235
|
+
static grpc_error* on_handshake_next_done_locked(
|
236
|
+
grpc_exec_ctx* exec_ctx, security_handshaker* h, tsi_result result,
|
237
|
+
const unsigned char* bytes_to_send, size_t bytes_to_send_size,
|
238
|
+
tsi_handshaker_result* handshaker_result) {
|
239
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
223
240
|
// Read more if we need to.
|
224
241
|
if (result == TSI_INCOMPLETE_DATA) {
|
225
242
|
GPR_ASSERT(bytes_to_send_size == 0);
|
@@ -232,19 +249,19 @@ static grpc_error *on_handshake_next_done_locked(
|
|
232
249
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake failed"), result);
|
233
250
|
}
|
234
251
|
// Update handshaker result.
|
235
|
-
if (handshaker_result !=
|
236
|
-
GPR_ASSERT(h->handshaker_result ==
|
252
|
+
if (handshaker_result != nullptr) {
|
253
|
+
GPR_ASSERT(h->handshaker_result == nullptr);
|
237
254
|
h->handshaker_result = handshaker_result;
|
238
255
|
}
|
239
256
|
if (bytes_to_send_size > 0) {
|
240
257
|
// Send data to peer, if needed.
|
241
258
|
grpc_slice to_send = grpc_slice_from_copied_buffer(
|
242
|
-
(const char
|
259
|
+
(const char*)bytes_to_send, bytes_to_send_size);
|
243
260
|
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &h->outgoing);
|
244
261
|
grpc_slice_buffer_add(&h->outgoing, to_send);
|
245
262
|
grpc_endpoint_write(exec_ctx, h->args->endpoint, &h->outgoing,
|
246
263
|
&h->on_handshake_data_sent_to_peer);
|
247
|
-
} else if (handshaker_result ==
|
264
|
+
} else if (handshaker_result == nullptr) {
|
248
265
|
// There is nothing to send, but need to read from peer.
|
249
266
|
grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer,
|
250
267
|
&h->on_handshake_data_received_from_peer);
|
@@ -256,14 +273,14 @@ static grpc_error *on_handshake_next_done_locked(
|
|
256
273
|
}
|
257
274
|
|
258
275
|
static void on_handshake_next_done_grpc_wrapper(
|
259
|
-
tsi_result result, void
|
260
|
-
size_t bytes_to_send_size, tsi_handshaker_result
|
261
|
-
security_handshaker
|
276
|
+
tsi_result result, void* user_data, const unsigned char* bytes_to_send,
|
277
|
+
size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result) {
|
278
|
+
security_handshaker* h = (security_handshaker*)user_data;
|
262
279
|
// This callback will be invoked by TSI in a non-grpc thread, so it's
|
263
280
|
// safe to create our own exec_ctx here.
|
264
281
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
265
282
|
gpr_mu_lock(&h->mu);
|
266
|
-
grpc_error
|
283
|
+
grpc_error* error =
|
267
284
|
on_handshake_next_done_locked(&exec_ctx, h, result, bytes_to_send,
|
268
285
|
bytes_to_send_size, handshaker_result);
|
269
286
|
if (error != GRPC_ERROR_NONE) {
|
@@ -276,13 +293,13 @@ static void on_handshake_next_done_grpc_wrapper(
|
|
276
293
|
grpc_exec_ctx_finish(&exec_ctx);
|
277
294
|
}
|
278
295
|
|
279
|
-
static grpc_error
|
280
|
-
grpc_exec_ctx
|
281
|
-
const unsigned char
|
296
|
+
static grpc_error* do_handshaker_next_locked(
|
297
|
+
grpc_exec_ctx* exec_ctx, security_handshaker* h,
|
298
|
+
const unsigned char* bytes_received, size_t bytes_received_size) {
|
282
299
|
// Invoke TSI handshaker.
|
283
|
-
const unsigned char
|
300
|
+
const unsigned char* bytes_to_send = nullptr;
|
284
301
|
size_t bytes_to_send_size = 0;
|
285
|
-
tsi_handshaker_result
|
302
|
+
tsi_handshaker_result* handshaker_result = nullptr;
|
286
303
|
tsi_result result = tsi_handshaker_next(
|
287
304
|
h->handshaker, bytes_received, bytes_received_size, &bytes_to_send,
|
288
305
|
&bytes_to_send_size, &handshaker_result,
|
@@ -298,36 +315,22 @@ static grpc_error *do_handshaker_next_locked(
|
|
298
315
|
bytes_to_send_size, handshaker_result);
|
299
316
|
}
|
300
317
|
|
301
|
-
static void on_handshake_data_received_from_peer(grpc_exec_ctx
|
302
|
-
void
|
303
|
-
security_handshaker
|
318
|
+
static void on_handshake_data_received_from_peer(grpc_exec_ctx* exec_ctx,
|
319
|
+
void* arg, grpc_error* error) {
|
320
|
+
security_handshaker* h = (security_handshaker*)arg;
|
304
321
|
gpr_mu_lock(&h->mu);
|
305
322
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
306
323
|
security_handshake_failed_locked(
|
307
|
-
exec_ctx, h,
|
308
|
-
|
324
|
+
exec_ctx, h,
|
325
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
326
|
+
"Handshake read failed", &error, 1));
|
309
327
|
gpr_mu_unlock(&h->mu);
|
310
328
|
security_handshaker_unref(exec_ctx, h);
|
311
329
|
return;
|
312
330
|
}
|
313
331
|
// Copy all slices received.
|
314
|
-
size_t
|
315
|
-
|
316
|
-
for (i = 0; i < h->args->read_buffer->count; i++) {
|
317
|
-
bytes_received_size += GRPC_SLICE_LENGTH(h->args->read_buffer->slices[i]);
|
318
|
-
}
|
319
|
-
if (bytes_received_size > h->handshake_buffer_size) {
|
320
|
-
h->handshake_buffer =
|
321
|
-
(uint8_t *)gpr_realloc(h->handshake_buffer, bytes_received_size);
|
322
|
-
h->handshake_buffer_size = bytes_received_size;
|
323
|
-
}
|
324
|
-
size_t offset = 0;
|
325
|
-
for (i = 0; i < h->args->read_buffer->count; i++) {
|
326
|
-
size_t slice_size = GPR_SLICE_LENGTH(h->args->read_buffer->slices[i]);
|
327
|
-
memcpy(h->handshake_buffer + offset,
|
328
|
-
GRPC_SLICE_START_PTR(h->args->read_buffer->slices[i]), slice_size);
|
329
|
-
offset += slice_size;
|
330
|
-
}
|
332
|
+
size_t bytes_received_size =
|
333
|
+
move_read_buffer_into_handshake_buffer(exec_ctx, h);
|
331
334
|
// Call TSI handshaker.
|
332
335
|
error = do_handshaker_next_locked(exec_ctx, h, h->handshake_buffer,
|
333
336
|
bytes_received_size);
|
@@ -341,20 +344,21 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
|
|
341
344
|
}
|
342
345
|
}
|
343
346
|
|
344
|
-
static void on_handshake_data_sent_to_peer(grpc_exec_ctx
|
345
|
-
grpc_error
|
346
|
-
security_handshaker
|
347
|
+
static void on_handshake_data_sent_to_peer(grpc_exec_ctx* exec_ctx, void* arg,
|
348
|
+
grpc_error* error) {
|
349
|
+
security_handshaker* h = (security_handshaker*)arg;
|
347
350
|
gpr_mu_lock(&h->mu);
|
348
351
|
if (error != GRPC_ERROR_NONE || h->shutdown) {
|
349
352
|
security_handshake_failed_locked(
|
350
|
-
exec_ctx, h,
|
351
|
-
|
353
|
+
exec_ctx, h,
|
354
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
355
|
+
"Handshake write failed", &error, 1));
|
352
356
|
gpr_mu_unlock(&h->mu);
|
353
357
|
security_handshaker_unref(exec_ctx, h);
|
354
358
|
return;
|
355
359
|
}
|
356
360
|
// We may be done.
|
357
|
-
if (h->handshaker_result ==
|
361
|
+
if (h->handshaker_result == nullptr) {
|
358
362
|
grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer,
|
359
363
|
&h->on_handshake_data_received_from_peer);
|
360
364
|
} else {
|
@@ -373,16 +377,16 @@ static void on_handshake_data_sent_to_peer(grpc_exec_ctx *exec_ctx, void *arg,
|
|
373
377
|
// public handshaker API
|
374
378
|
//
|
375
379
|
|
376
|
-
static void security_handshaker_destroy(grpc_exec_ctx
|
377
|
-
grpc_handshaker
|
378
|
-
security_handshaker
|
380
|
+
static void security_handshaker_destroy(grpc_exec_ctx* exec_ctx,
|
381
|
+
grpc_handshaker* handshaker) {
|
382
|
+
security_handshaker* h = (security_handshaker*)handshaker;
|
379
383
|
security_handshaker_unref(exec_ctx, h);
|
380
384
|
}
|
381
385
|
|
382
|
-
static void security_handshaker_shutdown(grpc_exec_ctx
|
383
|
-
grpc_handshaker
|
384
|
-
grpc_error
|
385
|
-
security_handshaker
|
386
|
+
static void security_handshaker_shutdown(grpc_exec_ctx* exec_ctx,
|
387
|
+
grpc_handshaker* handshaker,
|
388
|
+
grpc_error* why) {
|
389
|
+
security_handshaker* h = (security_handshaker*)handshaker;
|
386
390
|
gpr_mu_lock(&h->mu);
|
387
391
|
if (!h->shutdown) {
|
388
392
|
h->shutdown = true;
|
@@ -393,17 +397,20 @@ static void security_handshaker_shutdown(grpc_exec_ctx *exec_ctx,
|
|
393
397
|
GRPC_ERROR_UNREF(why);
|
394
398
|
}
|
395
399
|
|
396
|
-
static void security_handshaker_do_handshake(grpc_exec_ctx
|
397
|
-
grpc_handshaker
|
398
|
-
grpc_tcp_server_acceptor
|
399
|
-
grpc_closure
|
400
|
-
grpc_handshaker_args
|
401
|
-
security_handshaker
|
400
|
+
static void security_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
401
|
+
grpc_handshaker* handshaker,
|
402
|
+
grpc_tcp_server_acceptor* acceptor,
|
403
|
+
grpc_closure* on_handshake_done,
|
404
|
+
grpc_handshaker_args* args) {
|
405
|
+
security_handshaker* h = (security_handshaker*)handshaker;
|
402
406
|
gpr_mu_lock(&h->mu);
|
403
407
|
h->args = args;
|
404
408
|
h->on_handshake_done = on_handshake_done;
|
405
409
|
gpr_ref(&h->refs);
|
406
|
-
|
410
|
+
size_t bytes_received_size =
|
411
|
+
move_read_buffer_into_handshake_buffer(exec_ctx, h);
|
412
|
+
grpc_error* error = do_handshaker_next_locked(
|
413
|
+
exec_ctx, h, h->handshake_buffer, bytes_received_size);
|
407
414
|
if (error != GRPC_ERROR_NONE) {
|
408
415
|
security_handshake_failed_locked(exec_ctx, h, error);
|
409
416
|
gpr_mu_unlock(&h->mu);
|
@@ -417,18 +424,18 @@ static const grpc_handshaker_vtable security_handshaker_vtable = {
|
|
417
424
|
security_handshaker_destroy, security_handshaker_shutdown,
|
418
425
|
security_handshaker_do_handshake};
|
419
426
|
|
420
|
-
static grpc_handshaker
|
421
|
-
grpc_exec_ctx
|
422
|
-
grpc_security_connector
|
423
|
-
security_handshaker
|
424
|
-
(security_handshaker
|
427
|
+
static grpc_handshaker* security_handshaker_create(
|
428
|
+
grpc_exec_ctx* exec_ctx, tsi_handshaker* handshaker,
|
429
|
+
grpc_security_connector* connector) {
|
430
|
+
security_handshaker* h =
|
431
|
+
(security_handshaker*)gpr_zalloc(sizeof(security_handshaker));
|
425
432
|
grpc_handshaker_init(&security_handshaker_vtable, &h->base);
|
426
433
|
h->handshaker = handshaker;
|
427
434
|
h->connector = GRPC_SECURITY_CONNECTOR_REF(connector, "handshake");
|
428
435
|
gpr_mu_init(&h->mu);
|
429
436
|
gpr_ref_init(&h->refs, 1);
|
430
437
|
h->handshake_buffer_size = GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE;
|
431
|
-
h->handshake_buffer = (uint8_t
|
438
|
+
h->handshake_buffer = (uint8_t*)gpr_malloc(h->handshake_buffer_size);
|
432
439
|
GRPC_CLOSURE_INIT(&h->on_handshake_data_sent_to_peer,
|
433
440
|
on_handshake_data_sent_to_peer, h,
|
434
441
|
grpc_schedule_on_exec_ctx);
|
@@ -445,22 +452,22 @@ static grpc_handshaker *security_handshaker_create(
|
|
445
452
|
// fail_handshaker
|
446
453
|
//
|
447
454
|
|
448
|
-
static void fail_handshaker_destroy(grpc_exec_ctx
|
449
|
-
grpc_handshaker
|
455
|
+
static void fail_handshaker_destroy(grpc_exec_ctx* exec_ctx,
|
456
|
+
grpc_handshaker* handshaker) {
|
450
457
|
gpr_free(handshaker);
|
451
458
|
}
|
452
459
|
|
453
|
-
static void fail_handshaker_shutdown(grpc_exec_ctx
|
454
|
-
grpc_handshaker
|
455
|
-
grpc_error
|
460
|
+
static void fail_handshaker_shutdown(grpc_exec_ctx* exec_ctx,
|
461
|
+
grpc_handshaker* handshaker,
|
462
|
+
grpc_error* why) {
|
456
463
|
GRPC_ERROR_UNREF(why);
|
457
464
|
}
|
458
465
|
|
459
|
-
static void fail_handshaker_do_handshake(grpc_exec_ctx
|
460
|
-
grpc_handshaker
|
461
|
-
grpc_tcp_server_acceptor
|
462
|
-
grpc_closure
|
463
|
-
grpc_handshaker_args
|
466
|
+
static void fail_handshaker_do_handshake(grpc_exec_ctx* exec_ctx,
|
467
|
+
grpc_handshaker* handshaker,
|
468
|
+
grpc_tcp_server_acceptor* acceptor,
|
469
|
+
grpc_closure* on_handshake_done,
|
470
|
+
grpc_handshaker_args* args) {
|
464
471
|
GRPC_CLOSURE_SCHED(exec_ctx, on_handshake_done,
|
465
472
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
466
473
|
"Failed to create security handshaker"));
|
@@ -470,8 +477,8 @@ static const grpc_handshaker_vtable fail_handshaker_vtable = {
|
|
470
477
|
fail_handshaker_destroy, fail_handshaker_shutdown,
|
471
478
|
fail_handshaker_do_handshake};
|
472
479
|
|
473
|
-
static grpc_handshaker
|
474
|
-
grpc_handshaker
|
480
|
+
static grpc_handshaker* fail_handshaker_create() {
|
481
|
+
grpc_handshaker* h = (grpc_handshaker*)gpr_malloc(sizeof(*h));
|
475
482
|
grpc_handshaker_init(&fail_handshaker_vtable, h);
|
476
483
|
return h;
|
477
484
|
}
|
@@ -481,27 +488,27 @@ static grpc_handshaker *fail_handshaker_create() {
|
|
481
488
|
//
|
482
489
|
|
483
490
|
static void client_handshaker_factory_add_handshakers(
|
484
|
-
grpc_exec_ctx
|
485
|
-
const grpc_channel_args
|
486
|
-
grpc_channel_security_connector
|
487
|
-
(grpc_channel_security_connector
|
491
|
+
grpc_exec_ctx* exec_ctx, grpc_handshaker_factory* handshaker_factory,
|
492
|
+
const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) {
|
493
|
+
grpc_channel_security_connector* security_connector =
|
494
|
+
(grpc_channel_security_connector*)grpc_security_connector_find_in_args(
|
488
495
|
args);
|
489
496
|
grpc_channel_security_connector_add_handshakers(exec_ctx, security_connector,
|
490
497
|
handshake_mgr);
|
491
498
|
}
|
492
499
|
|
493
500
|
static void server_handshaker_factory_add_handshakers(
|
494
|
-
grpc_exec_ctx
|
495
|
-
const grpc_channel_args
|
496
|
-
grpc_server_security_connector
|
497
|
-
(grpc_server_security_connector
|
501
|
+
grpc_exec_ctx* exec_ctx, grpc_handshaker_factory* hf,
|
502
|
+
const grpc_channel_args* args, grpc_handshake_manager* handshake_mgr) {
|
503
|
+
grpc_server_security_connector* security_connector =
|
504
|
+
(grpc_server_security_connector*)grpc_security_connector_find_in_args(
|
498
505
|
args);
|
499
506
|
grpc_server_security_connector_add_handshakers(exec_ctx, security_connector,
|
500
507
|
handshake_mgr);
|
501
508
|
}
|
502
509
|
|
503
510
|
static void handshaker_factory_destroy(
|
504
|
-
grpc_exec_ctx
|
511
|
+
grpc_exec_ctx* exec_ctx, grpc_handshaker_factory* handshaker_factory) {}
|
505
512
|
|
506
513
|
static const grpc_handshaker_factory_vtable client_handshaker_factory_vtable = {
|
507
514
|
client_handshaker_factory_add_handshakers, handshaker_factory_destroy};
|
@@ -519,12 +526,12 @@ static grpc_handshaker_factory server_handshaker_factory = {
|
|
519
526
|
// exported functions
|
520
527
|
//
|
521
528
|
|
522
|
-
grpc_handshaker
|
523
|
-
grpc_exec_ctx
|
524
|
-
grpc_security_connector
|
529
|
+
grpc_handshaker* grpc_security_handshaker_create(
|
530
|
+
grpc_exec_ctx* exec_ctx, tsi_handshaker* handshaker,
|
531
|
+
grpc_security_connector* connector) {
|
525
532
|
// If no TSI handshaker was created, return a handshaker that always fails.
|
526
533
|
// Otherwise, return a real security handshaker.
|
527
|
-
if (handshaker ==
|
534
|
+
if (handshaker == nullptr) {
|
528
535
|
return fail_handshaker_create();
|
529
536
|
} else {
|
530
537
|
return security_handshaker_create(exec_ctx, handshaker, connector);
|