grpc 1.0.1 → 1.1.2
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 +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -31,14 +31,23 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
|
34
|
+
/* With the addition of a libuv endpoint, sockaddr.h now includes uv.h when
|
35
|
+
using that endpoint. Because of various transitive includes in uv.h,
|
36
|
+
including windows.h on Windows, uv.h must be included before other system
|
37
|
+
headers. Therefore, sockaddr.h must always be included first */
|
38
|
+
#include "src/core/lib/iomgr/sockaddr.h"
|
39
|
+
|
40
|
+
#include <grpc/slice.h>
|
41
|
+
#include <grpc/slice_buffer.h>
|
35
42
|
#include <grpc/support/alloc.h>
|
36
43
|
#include <grpc/support/log.h>
|
37
|
-
#include <grpc/support/slice.h>
|
38
|
-
#include <grpc/support/slice_buffer.h>
|
39
44
|
#include <grpc/support/sync.h>
|
40
45
|
#include "src/core/lib/debug/trace.h"
|
46
|
+
#include "src/core/lib/profiling/timers.h"
|
47
|
+
#include "src/core/lib/security/transport/secure_endpoint.h"
|
41
48
|
#include "src/core/lib/security/transport/tsi_error.h"
|
49
|
+
#include "src/core/lib/slice/slice_internal.h"
|
50
|
+
#include "src/core/lib/slice/slice_string_helpers.h"
|
42
51
|
#include "src/core/lib/support/string.h"
|
43
52
|
#include "src/core/lib/tsi/transport_security_interface.h"
|
44
53
|
|
@@ -53,15 +62,15 @@ typedef struct {
|
|
53
62
|
grpc_closure *read_cb;
|
54
63
|
grpc_closure *write_cb;
|
55
64
|
grpc_closure on_read;
|
56
|
-
|
57
|
-
|
65
|
+
grpc_slice_buffer *read_buffer;
|
66
|
+
grpc_slice_buffer source_buffer;
|
58
67
|
/* saved handshaker leftover data to unprotect. */
|
59
|
-
|
68
|
+
grpc_slice_buffer leftover_bytes;
|
60
69
|
/* buffers for read and write */
|
61
|
-
|
70
|
+
grpc_slice read_staging_buffer;
|
62
71
|
|
63
|
-
|
64
|
-
|
72
|
+
grpc_slice write_staging_buffer;
|
73
|
+
grpc_slice_buffer output_buffer;
|
65
74
|
|
66
75
|
gpr_refcount ref;
|
67
76
|
} secure_endpoint;
|
@@ -72,11 +81,11 @@ static void destroy(grpc_exec_ctx *exec_ctx, secure_endpoint *secure_ep) {
|
|
72
81
|
secure_endpoint *ep = secure_ep;
|
73
82
|
grpc_endpoint_destroy(exec_ctx, ep->wrapped_ep);
|
74
83
|
tsi_frame_protector_destroy(ep->protector);
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
84
|
+
grpc_slice_buffer_destroy_internal(exec_ctx, &ep->leftover_bytes);
|
85
|
+
grpc_slice_unref_internal(exec_ctx, ep->read_staging_buffer);
|
86
|
+
grpc_slice_unref_internal(exec_ctx, ep->write_staging_buffer);
|
87
|
+
grpc_slice_buffer_destroy_internal(exec_ctx, &ep->output_buffer);
|
88
|
+
grpc_slice_buffer_destroy_internal(exec_ctx, &ep->source_buffer);
|
80
89
|
gpr_mu_destroy(&ep->protector_mu);
|
81
90
|
gpr_free(ep);
|
82
91
|
}
|
@@ -120,25 +129,25 @@ static void secure_endpoint_ref(secure_endpoint *ep) { gpr_ref(&ep->ref); }
|
|
120
129
|
|
121
130
|
static void flush_read_staging_buffer(secure_endpoint *ep, uint8_t **cur,
|
122
131
|
uint8_t **end) {
|
123
|
-
|
124
|
-
ep->read_staging_buffer =
|
125
|
-
*cur =
|
126
|
-
*end =
|
132
|
+
grpc_slice_buffer_add(ep->read_buffer, ep->read_staging_buffer);
|
133
|
+
ep->read_staging_buffer = grpc_slice_malloc(STAGING_BUFFER_SIZE);
|
134
|
+
*cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
|
135
|
+
*end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
|
127
136
|
}
|
128
137
|
|
129
138
|
static void call_read_cb(grpc_exec_ctx *exec_ctx, secure_endpoint *ep,
|
130
139
|
grpc_error *error) {
|
131
|
-
if (
|
140
|
+
if (grpc_trace_secure_endpoint) {
|
132
141
|
size_t i;
|
133
142
|
for (i = 0; i < ep->read_buffer->count; i++) {
|
134
|
-
char *data =
|
135
|
-
|
143
|
+
char *data = grpc_dump_slice(ep->read_buffer->slices[i],
|
144
|
+
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
136
145
|
gpr_log(GPR_DEBUG, "READ %p: %s", ep, data);
|
137
146
|
gpr_free(data);
|
138
147
|
}
|
139
148
|
}
|
140
149
|
ep->read_buffer = NULL;
|
141
|
-
|
150
|
+
grpc_closure_sched(exec_ctx, ep->read_cb, error);
|
142
151
|
SECURE_ENDPOINT_UNREF(exec_ctx, ep, "read");
|
143
152
|
}
|
144
153
|
|
@@ -148,11 +157,11 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
|
|
148
157
|
uint8_t keep_looping = 0;
|
149
158
|
tsi_result result = TSI_OK;
|
150
159
|
secure_endpoint *ep = (secure_endpoint *)user_data;
|
151
|
-
uint8_t *cur =
|
152
|
-
uint8_t *end =
|
160
|
+
uint8_t *cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
|
161
|
+
uint8_t *end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
|
153
162
|
|
154
163
|
if (error != GRPC_ERROR_NONE) {
|
155
|
-
|
164
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer);
|
156
165
|
call_read_cb(exec_ctx, ep, GRPC_ERROR_CREATE_REFERENCING(
|
157
166
|
"Secure read failed", &error, 1));
|
158
167
|
return;
|
@@ -160,9 +169,9 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
|
|
160
169
|
|
161
170
|
/* TODO(yangg) check error, maybe bail out early */
|
162
171
|
for (i = 0; i < ep->source_buffer.count; i++) {
|
163
|
-
|
164
|
-
uint8_t *message_bytes =
|
165
|
-
size_t message_size =
|
172
|
+
grpc_slice encrypted = ep->source_buffer.slices[i];
|
173
|
+
uint8_t *message_bytes = GRPC_SLICE_START_PTR(encrypted);
|
174
|
+
size_t message_size = GRPC_SLICE_LENGTH(encrypted);
|
166
175
|
|
167
176
|
while (message_size > 0 || keep_looping) {
|
168
177
|
size_t unprotected_buffer_size_written = (size_t)(end - cur);
|
@@ -197,20 +206,20 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
|
|
197
206
|
if (result != TSI_OK) break;
|
198
207
|
}
|
199
208
|
|
200
|
-
if (cur !=
|
201
|
-
|
209
|
+
if (cur != GRPC_SLICE_START_PTR(ep->read_staging_buffer)) {
|
210
|
+
grpc_slice_buffer_add(
|
202
211
|
ep->read_buffer,
|
203
|
-
|
212
|
+
grpc_slice_split_head(
|
204
213
|
&ep->read_staging_buffer,
|
205
|
-
(size_t)(cur -
|
214
|
+
(size_t)(cur - GRPC_SLICE_START_PTR(ep->read_staging_buffer))));
|
206
215
|
}
|
207
216
|
|
208
217
|
/* TODO(yangg) experiment with moving this block after read_cb to see if it
|
209
218
|
helps latency */
|
210
|
-
|
219
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->source_buffer);
|
211
220
|
|
212
221
|
if (result != TSI_OK) {
|
213
|
-
|
222
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer);
|
214
223
|
call_read_cb(exec_ctx, ep, grpc_set_tsi_error_result(
|
215
224
|
GRPC_ERROR_CREATE("Unwrap failed"), result));
|
216
225
|
return;
|
@@ -220,15 +229,15 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *user_data,
|
|
220
229
|
}
|
221
230
|
|
222
231
|
static void endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
|
223
|
-
|
232
|
+
grpc_slice_buffer *slices, grpc_closure *cb) {
|
224
233
|
secure_endpoint *ep = (secure_endpoint *)secure_ep;
|
225
234
|
ep->read_cb = cb;
|
226
235
|
ep->read_buffer = slices;
|
227
|
-
|
236
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, ep->read_buffer);
|
228
237
|
|
229
238
|
SECURE_ENDPOINT_REF(ep, "read");
|
230
239
|
if (ep->leftover_bytes.count) {
|
231
|
-
|
240
|
+
grpc_slice_buffer_swap(&ep->leftover_bytes, &ep->source_buffer);
|
232
241
|
GPR_ASSERT(ep->leftover_bytes.count == 0);
|
233
242
|
on_read(exec_ctx, ep, GRPC_ERROR_NONE);
|
234
243
|
return;
|
@@ -240,35 +249,37 @@ static void endpoint_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
|
|
240
249
|
|
241
250
|
static void flush_write_staging_buffer(secure_endpoint *ep, uint8_t **cur,
|
242
251
|
uint8_t **end) {
|
243
|
-
|
244
|
-
ep->write_staging_buffer =
|
245
|
-
*cur =
|
246
|
-
*end =
|
252
|
+
grpc_slice_buffer_add(&ep->output_buffer, ep->write_staging_buffer);
|
253
|
+
ep->write_staging_buffer = grpc_slice_malloc(STAGING_BUFFER_SIZE);
|
254
|
+
*cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
|
255
|
+
*end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
|
247
256
|
}
|
248
257
|
|
249
258
|
static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
|
250
|
-
|
259
|
+
grpc_slice_buffer *slices, grpc_closure *cb) {
|
260
|
+
GPR_TIMER_BEGIN("secure_endpoint.endpoint_write", 0);
|
261
|
+
|
251
262
|
unsigned i;
|
252
263
|
tsi_result result = TSI_OK;
|
253
264
|
secure_endpoint *ep = (secure_endpoint *)secure_ep;
|
254
|
-
uint8_t *cur =
|
255
|
-
uint8_t *end =
|
265
|
+
uint8_t *cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
|
266
|
+
uint8_t *end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
|
256
267
|
|
257
|
-
|
268
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->output_buffer);
|
258
269
|
|
259
|
-
if (
|
270
|
+
if (grpc_trace_secure_endpoint) {
|
260
271
|
for (i = 0; i < slices->count; i++) {
|
261
272
|
char *data =
|
262
|
-
|
273
|
+
grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
263
274
|
gpr_log(GPR_DEBUG, "WRITE %p: %s", ep, data);
|
264
275
|
gpr_free(data);
|
265
276
|
}
|
266
277
|
}
|
267
278
|
|
268
279
|
for (i = 0; i < slices->count; i++) {
|
269
|
-
|
270
|
-
uint8_t *message_bytes =
|
271
|
-
size_t message_size =
|
280
|
+
grpc_slice plain = slices->slices[i];
|
281
|
+
uint8_t *message_bytes = GRPC_SLICE_START_PTR(plain);
|
282
|
+
size_t message_size = GRPC_SLICE_LENGTH(plain);
|
272
283
|
while (message_size > 0) {
|
273
284
|
size_t protected_buffer_size_to_send = (size_t)(end - cur);
|
274
285
|
size_t processed_message_size = message_size;
|
@@ -307,26 +318,27 @@ static void endpoint_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *secure_ep,
|
|
307
318
|
flush_write_staging_buffer(ep, &cur, &end);
|
308
319
|
}
|
309
320
|
} while (still_pending_size > 0);
|
310
|
-
if (cur !=
|
311
|
-
|
321
|
+
if (cur != GRPC_SLICE_START_PTR(ep->write_staging_buffer)) {
|
322
|
+
grpc_slice_buffer_add(
|
312
323
|
&ep->output_buffer,
|
313
|
-
|
324
|
+
grpc_slice_split_head(
|
314
325
|
&ep->write_staging_buffer,
|
315
|
-
(size_t)(cur -
|
326
|
+
(size_t)(cur - GRPC_SLICE_START_PTR(ep->write_staging_buffer))));
|
316
327
|
}
|
317
328
|
}
|
318
329
|
|
319
330
|
if (result != TSI_OK) {
|
320
331
|
/* TODO(yangg) do different things according to the error type? */
|
321
|
-
|
322
|
-
|
332
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &ep->output_buffer);
|
333
|
+
grpc_closure_sched(
|
323
334
|
exec_ctx, cb,
|
324
|
-
grpc_set_tsi_error_result(GRPC_ERROR_CREATE("Wrap failed"), result)
|
325
|
-
|
335
|
+
grpc_set_tsi_error_result(GRPC_ERROR_CREATE("Wrap failed"), result));
|
336
|
+
GPR_TIMER_END("secure_endpoint.endpoint_write", 0);
|
326
337
|
return;
|
327
338
|
}
|
328
339
|
|
329
340
|
grpc_endpoint_write(exec_ctx, ep->wrapped_ep, &ep->output_buffer, cb);
|
341
|
+
GPR_TIMER_END("secure_endpoint.endpoint_write", 0);
|
330
342
|
}
|
331
343
|
|
332
344
|
static void endpoint_shutdown(grpc_exec_ctx *exec_ctx,
|
@@ -360,11 +372,22 @@ static char *endpoint_get_peer(grpc_endpoint *secure_ep) {
|
|
360
372
|
return grpc_endpoint_get_peer(ep->wrapped_ep);
|
361
373
|
}
|
362
374
|
|
375
|
+
static int endpoint_get_fd(grpc_endpoint *secure_ep) {
|
376
|
+
secure_endpoint *ep = (secure_endpoint *)secure_ep;
|
377
|
+
return grpc_endpoint_get_fd(ep->wrapped_ep);
|
378
|
+
}
|
379
|
+
|
363
380
|
static grpc_workqueue *endpoint_get_workqueue(grpc_endpoint *secure_ep) {
|
364
381
|
secure_endpoint *ep = (secure_endpoint *)secure_ep;
|
365
382
|
return grpc_endpoint_get_workqueue(ep->wrapped_ep);
|
366
383
|
}
|
367
384
|
|
385
|
+
static grpc_resource_user *endpoint_get_resource_user(
|
386
|
+
grpc_endpoint *secure_ep) {
|
387
|
+
secure_endpoint *ep = (secure_endpoint *)secure_ep;
|
388
|
+
return grpc_endpoint_get_resource_user(ep->wrapped_ep);
|
389
|
+
}
|
390
|
+
|
368
391
|
static const grpc_endpoint_vtable vtable = {endpoint_read,
|
369
392
|
endpoint_write,
|
370
393
|
endpoint_get_workqueue,
|
@@ -372,27 +395,29 @@ static const grpc_endpoint_vtable vtable = {endpoint_read,
|
|
372
395
|
endpoint_add_to_pollset_set,
|
373
396
|
endpoint_shutdown,
|
374
397
|
endpoint_destroy,
|
375
|
-
|
398
|
+
endpoint_get_resource_user,
|
399
|
+
endpoint_get_peer,
|
400
|
+
endpoint_get_fd};
|
376
401
|
|
377
402
|
grpc_endpoint *grpc_secure_endpoint_create(
|
378
403
|
struct tsi_frame_protector *protector, grpc_endpoint *transport,
|
379
|
-
|
404
|
+
grpc_slice *leftover_slices, size_t leftover_nslices) {
|
380
405
|
size_t i;
|
381
406
|
secure_endpoint *ep = (secure_endpoint *)gpr_malloc(sizeof(secure_endpoint));
|
382
407
|
ep->base.vtable = &vtable;
|
383
408
|
ep->wrapped_ep = transport;
|
384
409
|
ep->protector = protector;
|
385
|
-
|
410
|
+
grpc_slice_buffer_init(&ep->leftover_bytes);
|
386
411
|
for (i = 0; i < leftover_nslices; i++) {
|
387
|
-
|
388
|
-
|
412
|
+
grpc_slice_buffer_add(&ep->leftover_bytes,
|
413
|
+
grpc_slice_ref_internal(leftover_slices[i]));
|
389
414
|
}
|
390
|
-
ep->write_staging_buffer =
|
391
|
-
ep->read_staging_buffer =
|
392
|
-
|
393
|
-
|
415
|
+
ep->write_staging_buffer = grpc_slice_malloc(STAGING_BUFFER_SIZE);
|
416
|
+
ep->read_staging_buffer = grpc_slice_malloc(STAGING_BUFFER_SIZE);
|
417
|
+
grpc_slice_buffer_init(&ep->output_buffer);
|
418
|
+
grpc_slice_buffer_init(&ep->source_buffer);
|
394
419
|
ep->read_buffer = NULL;
|
395
|
-
grpc_closure_init(&ep->on_read, on_read, ep);
|
420
|
+
grpc_closure_init(&ep->on_read, on_read, ep, grpc_schedule_on_exec_ctx);
|
396
421
|
gpr_mu_init(&ep->protector_mu);
|
397
422
|
gpr_ref_init(&ep->ref, 1);
|
398
423
|
return &ep->base;
|
@@ -34,7 +34,7 @@
|
|
34
34
|
#ifndef GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H
|
35
35
|
#define GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H
|
36
36
|
|
37
|
-
#include <grpc/
|
37
|
+
#include <grpc/slice.h>
|
38
38
|
#include "src/core/lib/iomgr/endpoint.h"
|
39
39
|
|
40
40
|
struct tsi_frame_protector;
|
@@ -44,6 +44,6 @@ extern int grpc_trace_secure_endpoint;
|
|
44
44
|
/* Takes ownership of protector and to_wrap, and refs leftover_slices. */
|
45
45
|
grpc_endpoint *grpc_secure_endpoint_create(
|
46
46
|
struct tsi_frame_protector *protector, grpc_endpoint *to_wrap,
|
47
|
-
|
47
|
+
grpc_slice *leftover_slices, size_t leftover_nslices);
|
48
48
|
|
49
49
|
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H */
|
@@ -36,18 +36,19 @@
|
|
36
36
|
#include <stdbool.h>
|
37
37
|
#include <string.h>
|
38
38
|
|
39
|
+
#include <grpc/slice_buffer.h>
|
39
40
|
#include <grpc/support/alloc.h>
|
40
41
|
#include <grpc/support/host_port.h>
|
41
42
|
#include <grpc/support/log.h>
|
42
|
-
#include <grpc/support/slice_buffer.h>
|
43
43
|
#include <grpc/support/string_util.h>
|
44
44
|
|
45
45
|
#include "src/core/ext/transport/chttp2/alpn/alpn.h"
|
46
|
+
#include "src/core/lib/channel/handshaker.h"
|
46
47
|
#include "src/core/lib/iomgr/load_file.h"
|
47
48
|
#include "src/core/lib/security/context/security_context.h"
|
48
49
|
#include "src/core/lib/security/credentials/credentials.h"
|
49
|
-
#include "src/core/lib/security/transport/handshake.h"
|
50
50
|
#include "src/core/lib/security/transport/secure_endpoint.h"
|
51
|
+
#include "src/core/lib/security/transport/security_handshaker.h"
|
51
52
|
#include "src/core/lib/support/env.h"
|
52
53
|
#include "src/core/lib/support/string.h"
|
53
54
|
#include "src/core/lib/tsi/fake_transport_security.h"
|
@@ -111,54 +112,34 @@ const tsi_peer_property *tsi_peer_get_property_by_name(const tsi_peer *peer,
|
|
111
112
|
return NULL;
|
112
113
|
}
|
113
114
|
|
114
|
-
void
|
115
|
-
grpc_exec_ctx *exec_ctx,
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
tmp = connector->handshaking_handshakes;
|
120
|
-
grpc_security_handshake_shutdown(
|
121
|
-
exec_ctx, connector->handshaking_handshakes->handshake);
|
122
|
-
connector->handshaking_handshakes = tmp->next;
|
123
|
-
gpr_free(tmp);
|
115
|
+
void grpc_channel_security_connector_add_handshakers(
|
116
|
+
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *connector,
|
117
|
+
grpc_handshake_manager *handshake_mgr) {
|
118
|
+
if (connector != NULL) {
|
119
|
+
connector->add_handshakers(exec_ctx, connector, handshake_mgr);
|
124
120
|
}
|
125
|
-
gpr_mu_unlock(&connector->mu);
|
126
121
|
}
|
127
122
|
|
128
|
-
void
|
129
|
-
grpc_exec_ctx *exec_ctx,
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
cb(exec_ctx, user_data, GRPC_SECURITY_ERROR, NULL, NULL);
|
134
|
-
} else {
|
135
|
-
sc->do_handshake(exec_ctx, sc, nonsecure_endpoint, deadline, cb, user_data);
|
136
|
-
}
|
137
|
-
}
|
138
|
-
|
139
|
-
void grpc_server_security_connector_do_handshake(
|
140
|
-
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *sc,
|
141
|
-
grpc_tcp_server_acceptor *acceptor, grpc_endpoint *nonsecure_endpoint,
|
142
|
-
gpr_timespec deadline, grpc_security_handshake_done_cb cb,
|
143
|
-
void *user_data) {
|
144
|
-
if (sc == NULL || nonsecure_endpoint == NULL) {
|
145
|
-
cb(exec_ctx, user_data, GRPC_SECURITY_ERROR, NULL, NULL);
|
146
|
-
} else {
|
147
|
-
sc->do_handshake(exec_ctx, sc, acceptor, nonsecure_endpoint, deadline, cb,
|
148
|
-
user_data);
|
123
|
+
void grpc_server_security_connector_add_handshakers(
|
124
|
+
grpc_exec_ctx *exec_ctx, grpc_server_security_connector *connector,
|
125
|
+
grpc_handshake_manager *handshake_mgr) {
|
126
|
+
if (connector != NULL) {
|
127
|
+
connector->add_handshakers(exec_ctx, connector, handshake_mgr);
|
149
128
|
}
|
150
129
|
}
|
151
130
|
|
152
131
|
void grpc_security_connector_check_peer(grpc_exec_ctx *exec_ctx,
|
153
132
|
grpc_security_connector *sc,
|
154
133
|
tsi_peer peer,
|
155
|
-
|
156
|
-
|
134
|
+
grpc_auth_context **auth_context,
|
135
|
+
grpc_closure *on_peer_checked) {
|
157
136
|
if (sc == NULL) {
|
158
|
-
|
137
|
+
grpc_closure_sched(
|
138
|
+
exec_ctx, on_peer_checked,
|
139
|
+
GRPC_ERROR_CREATE("cannot check peer -- no security connector"));
|
159
140
|
tsi_peer_destruct(&peer);
|
160
141
|
} else {
|
161
|
-
sc->vtable->check_peer(exec_ctx, sc, peer,
|
142
|
+
sc->vtable->check_peer(exec_ctx, sc, peer, auth_context, on_peer_checked);
|
162
143
|
}
|
163
144
|
}
|
164
145
|
|
@@ -191,7 +172,8 @@ grpc_security_connector *grpc_security_connector_ref(
|
|
191
172
|
}
|
192
173
|
|
193
174
|
#ifdef GRPC_SECURITY_CONNECTOR_REFCOUNT_DEBUG
|
194
|
-
void grpc_security_connector_unref(
|
175
|
+
void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx,
|
176
|
+
grpc_security_connector *sc,
|
195
177
|
const char *file, int line,
|
196
178
|
const char *reason) {
|
197
179
|
if (sc == NULL) return;
|
@@ -199,18 +181,19 @@ void grpc_security_connector_unref(grpc_security_connector *sc,
|
|
199
181
|
"SECURITY_CONNECTOR:%p unref %d -> %d %s", sc,
|
200
182
|
(int)sc->refcount.count, (int)sc->refcount.count - 1, reason);
|
201
183
|
#else
|
202
|
-
void grpc_security_connector_unref(
|
184
|
+
void grpc_security_connector_unref(grpc_exec_ctx *exec_ctx,
|
185
|
+
grpc_security_connector *sc) {
|
203
186
|
if (sc == NULL) return;
|
204
187
|
#endif
|
205
|
-
if (gpr_unref(&sc->refcount)) sc->vtable->destroy(sc);
|
188
|
+
if (gpr_unref(&sc->refcount)) sc->vtable->destroy(exec_ctx, sc);
|
206
189
|
}
|
207
190
|
|
208
|
-
static void connector_pointer_arg_destroy(void *p) {
|
209
|
-
GRPC_SECURITY_CONNECTOR_UNREF(p, "
|
191
|
+
static void connector_pointer_arg_destroy(grpc_exec_ctx *exec_ctx, void *p) {
|
192
|
+
GRPC_SECURITY_CONNECTOR_UNREF(exec_ctx, p, "connector_pointer_arg_destroy");
|
210
193
|
}
|
211
194
|
|
212
195
|
static void *connector_pointer_arg_copy(void *p) {
|
213
|
-
return GRPC_SECURITY_CONNECTOR_REF(p, "
|
196
|
+
return GRPC_SECURITY_CONNECTOR_REF(p, "connector_pointer_arg_copy");
|
214
197
|
}
|
215
198
|
|
216
199
|
static int connector_pointer_cmp(void *a, void *b) { return GPR_ICMP(a, b); }
|
@@ -252,51 +235,51 @@ grpc_security_connector *grpc_find_security_connector_in_args(
|
|
252
235
|
|
253
236
|
/* -- Fake implementation. -- */
|
254
237
|
|
255
|
-
static void fake_channel_destroy(
|
238
|
+
static void fake_channel_destroy(grpc_exec_ctx *exec_ctx,
|
239
|
+
grpc_security_connector *sc) {
|
256
240
|
grpc_channel_security_connector *c = (grpc_channel_security_connector *)sc;
|
257
|
-
grpc_call_credentials_unref(c->request_metadata_creds);
|
241
|
+
grpc_call_credentials_unref(exec_ctx, c->request_metadata_creds);
|
258
242
|
gpr_free(sc);
|
259
243
|
}
|
260
244
|
|
261
|
-
static void fake_server_destroy(
|
262
|
-
|
263
|
-
gpr_mu_destroy(&c->mu);
|
245
|
+
static void fake_server_destroy(grpc_exec_ctx *exec_ctx,
|
246
|
+
grpc_security_connector *sc) {
|
264
247
|
gpr_free(sc);
|
265
248
|
}
|
266
249
|
|
267
250
|
static void fake_check_peer(grpc_exec_ctx *exec_ctx,
|
268
251
|
grpc_security_connector *sc, tsi_peer peer,
|
269
|
-
|
252
|
+
grpc_auth_context **auth_context,
|
253
|
+
grpc_closure *on_peer_checked) {
|
270
254
|
const char *prop_name;
|
271
|
-
|
272
|
-
|
255
|
+
grpc_error *error = GRPC_ERROR_NONE;
|
256
|
+
*auth_context = NULL;
|
273
257
|
if (peer.property_count != 1) {
|
274
|
-
|
275
|
-
status = GRPC_SECURITY_ERROR;
|
258
|
+
error = GRPC_ERROR_CREATE("Fake peers should only have 1 property.");
|
276
259
|
goto end;
|
277
260
|
}
|
278
261
|
prop_name = peer.properties[0].name;
|
279
262
|
if (prop_name == NULL ||
|
280
263
|
strcmp(prop_name, TSI_CERTIFICATE_TYPE_PEER_PROPERTY)) {
|
281
|
-
|
282
|
-
|
283
|
-
|
264
|
+
char *msg;
|
265
|
+
gpr_asprintf(&msg, "Unexpected property in fake peer: %s.",
|
266
|
+
prop_name == NULL ? "<EMPTY>" : prop_name);
|
267
|
+
error = GRPC_ERROR_CREATE(msg);
|
268
|
+
gpr_free(msg);
|
284
269
|
goto end;
|
285
270
|
}
|
286
271
|
if (strncmp(peer.properties[0].value.data, TSI_FAKE_CERTIFICATE_TYPE,
|
287
272
|
peer.properties[0].value.length)) {
|
288
|
-
|
289
|
-
status = GRPC_SECURITY_ERROR;
|
273
|
+
error = GRPC_ERROR_CREATE("Invalid value for cert type property.");
|
290
274
|
goto end;
|
291
275
|
}
|
292
|
-
auth_context = grpc_auth_context_create(NULL);
|
276
|
+
*auth_context = grpc_auth_context_create(NULL);
|
293
277
|
grpc_auth_context_add_cstring_property(
|
294
|
-
auth_context, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
|
278
|
+
*auth_context, GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
|
295
279
|
GRPC_FAKE_TRANSPORT_SECURITY_TYPE);
|
296
280
|
|
297
281
|
end:
|
298
|
-
|
299
|
-
grpc_auth_context_unref(auth_context);
|
282
|
+
grpc_closure_sched(exec_ctx, on_peer_checked, error);
|
300
283
|
tsi_peer_destruct(&peer);
|
301
284
|
}
|
302
285
|
|
@@ -309,26 +292,24 @@ static void fake_channel_check_call_host(grpc_exec_ctx *exec_ctx,
|
|
309
292
|
cb(exec_ctx, user_data, GRPC_SECURITY_OK);
|
310
293
|
}
|
311
294
|
|
312
|
-
static void
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
295
|
+
static void fake_channel_add_handshakers(
|
296
|
+
grpc_exec_ctx *exec_ctx, grpc_channel_security_connector *sc,
|
297
|
+
grpc_handshake_manager *handshake_mgr) {
|
298
|
+
grpc_handshake_manager_add(
|
299
|
+
handshake_mgr,
|
300
|
+
grpc_security_handshaker_create(
|
301
|
+
exec_ctx, tsi_create_fake_handshaker(true /* is_client */),
|
302
|
+
&sc->base));
|
320
303
|
}
|
321
304
|
|
322
|
-
static void
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
false, nonsecure_endpoint, deadline, cb,
|
331
|
-
user_data);
|
305
|
+
static void fake_server_add_handshakers(grpc_exec_ctx *exec_ctx,
|
306
|
+
grpc_server_security_connector *sc,
|
307
|
+
grpc_handshake_manager *handshake_mgr) {
|
308
|
+
grpc_handshake_manager_add(
|
309
|
+
handshake_mgr,
|
310
|
+
grpc_security_handshaker_create(
|
311
|
+
exec_ctx, tsi_create_fake_handshaker(false /* is_client */),
|
312
|
+
&sc->base));
|
332
313
|
}
|
333
314
|
|
334
315
|
static grpc_security_connector_vtable fake_channel_vtable = {
|
@@ -346,7 +327,7 @@ grpc_channel_security_connector *grpc_fake_channel_security_connector_create(
|
|
346
327
|
c->base.vtable = &fake_channel_vtable;
|
347
328
|
c->request_metadata_creds = grpc_call_credentials_ref(request_metadata_creds);
|
348
329
|
c->check_call_host = fake_channel_check_call_host;
|
349
|
-
c->
|
330
|
+
c->add_handshakers = fake_channel_add_handshakers;
|
350
331
|
return c;
|
351
332
|
}
|
352
333
|
|
@@ -358,8 +339,7 @@ grpc_server_security_connector *grpc_fake_server_security_connector_create(
|
|
358
339
|
gpr_ref_init(&c->base.refcount, 1);
|
359
340
|
c->base.vtable = &fake_server_vtable;
|
360
341
|
c->base.url_scheme = GRPC_FAKE_SECURITY_URL_SCHEME;
|
361
|
-
c->
|
362
|
-
gpr_mu_init(&c->mu);
|
342
|
+
c->add_handshakers = fake_server_add_handshakers;
|
363
343
|
return c;
|
364
344
|
}
|
365
345
|
|
@@ -377,10 +357,11 @@ typedef struct {
|
|
377
357
|
tsi_ssl_handshaker_factory *handshaker_factory;
|
378
358
|
} grpc_ssl_server_security_connector;
|
379
359
|
|
380
|
-
static void ssl_channel_destroy(
|
360
|
+
static void ssl_channel_destroy(grpc_exec_ctx *exec_ctx,
|
361
|
+
grpc_security_connector *sc) {
|
381
362
|
grpc_ssl_channel_security_connector *c =
|
382
363
|
(grpc_ssl_channel_security_connector *)sc;
|
383
|
-
grpc_call_credentials_unref(c->base.request_metadata_creds);
|
364
|
+
grpc_call_credentials_unref(exec_ctx, c->base.request_metadata_creds);
|
384
365
|
if (c->handshaker_factory != NULL) {
|
385
366
|
tsi_ssl_handshaker_factory_destroy(c->handshaker_factory);
|
386
367
|
}
|
@@ -389,14 +370,13 @@ static void ssl_channel_destroy(grpc_security_connector *sc) {
|
|
389
370
|
gpr_free(sc);
|
390
371
|
}
|
391
372
|
|
392
|
-
static void ssl_server_destroy(
|
373
|
+
static void ssl_server_destroy(grpc_exec_ctx *exec_ctx,
|
374
|
+
grpc_security_connector *sc) {
|
393
375
|
grpc_ssl_server_security_connector *c =
|
394
376
|
(grpc_ssl_server_security_connector *)sc;
|
395
|
-
|
396
377
|
if (c->handshaker_factory != NULL) {
|
397
378
|
tsi_ssl_handshaker_factory_destroy(c->handshaker_factory);
|
398
379
|
}
|
399
|
-
gpr_mu_destroy(&c->base.mu);
|
400
380
|
gpr_free(sc);
|
401
381
|
}
|
402
382
|
|
@@ -415,46 +395,35 @@ static grpc_security_status ssl_create_handshaker(
|
|
415
395
|
return GRPC_SECURITY_OK;
|
416
396
|
}
|
417
397
|
|
418
|
-
static void
|
419
|
-
|
420
|
-
|
421
|
-
gpr_timespec deadline,
|
422
|
-
grpc_security_handshake_done_cb cb,
|
423
|
-
void *user_data) {
|
398
|
+
static void ssl_channel_add_handshakers(grpc_exec_ctx *exec_ctx,
|
399
|
+
grpc_channel_security_connector *sc,
|
400
|
+
grpc_handshake_manager *handshake_mgr) {
|
424
401
|
grpc_ssl_channel_security_connector *c =
|
425
402
|
(grpc_ssl_channel_security_connector *)sc;
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
grpc_server_security_connector *sc,
|
442
|
-
grpc_tcp_server_acceptor *acceptor,
|
443
|
-
grpc_endpoint *nonsecure_endpoint,
|
444
|
-
gpr_timespec deadline,
|
445
|
-
grpc_security_handshake_done_cb cb,
|
446
|
-
void *user_data) {
|
403
|
+
// Instantiate TSI handshaker.
|
404
|
+
tsi_handshaker *tsi_hs = NULL;
|
405
|
+
ssl_create_handshaker(c->handshaker_factory, true /* is_client */,
|
406
|
+
c->overridden_target_name != NULL
|
407
|
+
? c->overridden_target_name
|
408
|
+
: c->target_name,
|
409
|
+
&tsi_hs);
|
410
|
+
// Create handshakers.
|
411
|
+
grpc_handshake_manager_add(handshake_mgr, grpc_security_handshaker_create(
|
412
|
+
exec_ctx, tsi_hs, &sc->base));
|
413
|
+
}
|
414
|
+
|
415
|
+
static void ssl_server_add_handshakers(grpc_exec_ctx *exec_ctx,
|
416
|
+
grpc_server_security_connector *sc,
|
417
|
+
grpc_handshake_manager *handshake_mgr) {
|
447
418
|
grpc_ssl_server_security_connector *c =
|
448
419
|
(grpc_ssl_server_security_connector *)sc;
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
nonsecure_endpoint, deadline, cb, user_data);
|
457
|
-
}
|
420
|
+
// Instantiate TSI handshaker.
|
421
|
+
tsi_handshaker *tsi_hs = NULL;
|
422
|
+
ssl_create_handshaker(c->handshaker_factory, false /* is_client */,
|
423
|
+
NULL /* peer_name */, &tsi_hs);
|
424
|
+
// Create handshakers.
|
425
|
+
grpc_handshake_manager_add(handshake_mgr, grpc_security_handshaker_create(
|
426
|
+
exec_ctx, tsi_hs, &sc->base));
|
458
427
|
}
|
459
428
|
|
460
429
|
static int ssl_host_matches_name(const tsi_peer *peer, const char *peer_name) {
|
@@ -511,57 +480,53 @@ grpc_auth_context *tsi_ssl_peer_to_auth_context(const tsi_peer *peer) {
|
|
511
480
|
return ctx;
|
512
481
|
}
|
513
482
|
|
514
|
-
static
|
515
|
-
|
516
|
-
|
517
|
-
grpc_auth_context **auth_context) {
|
483
|
+
static grpc_error *ssl_check_peer(grpc_security_connector *sc,
|
484
|
+
const char *peer_name, const tsi_peer *peer,
|
485
|
+
grpc_auth_context **auth_context) {
|
518
486
|
/* Check the ALPN. */
|
519
487
|
const tsi_peer_property *p =
|
520
488
|
tsi_peer_get_property_by_name(peer, TSI_SSL_ALPN_SELECTED_PROTOCOL);
|
521
489
|
if (p == NULL) {
|
522
|
-
|
523
|
-
|
490
|
+
return GRPC_ERROR_CREATE(
|
491
|
+
"Cannot check peer: missing selected ALPN property.");
|
524
492
|
}
|
525
493
|
if (!grpc_chttp2_is_alpn_version_supported(p->value.data, p->value.length)) {
|
526
|
-
|
527
|
-
return GRPC_SECURITY_ERROR;
|
494
|
+
return GRPC_ERROR_CREATE("Cannot check peer: invalid ALPN value.");
|
528
495
|
}
|
529
496
|
|
530
497
|
/* Check the peer name if specified. */
|
531
498
|
if (peer_name != NULL && !ssl_host_matches_name(peer, peer_name)) {
|
532
|
-
|
533
|
-
|
499
|
+
char *msg;
|
500
|
+
gpr_asprintf(&msg, "Peer name %s is not in peer certificate", peer_name);
|
501
|
+
grpc_error *error = GRPC_ERROR_CREATE(msg);
|
502
|
+
gpr_free(msg);
|
503
|
+
return error;
|
534
504
|
}
|
535
505
|
*auth_context = tsi_ssl_peer_to_auth_context(peer);
|
536
|
-
return
|
506
|
+
return GRPC_ERROR_NONE;
|
537
507
|
}
|
538
508
|
|
539
509
|
static void ssl_channel_check_peer(grpc_exec_ctx *exec_ctx,
|
540
510
|
grpc_security_connector *sc, tsi_peer peer,
|
541
|
-
|
542
|
-
|
511
|
+
grpc_auth_context **auth_context,
|
512
|
+
grpc_closure *on_peer_checked) {
|
543
513
|
grpc_ssl_channel_security_connector *c =
|
544
514
|
(grpc_ssl_channel_security_connector *)sc;
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
&peer, &auth_context);
|
551
|
-
cb(exec_ctx, user_data, status, auth_context);
|
552
|
-
grpc_auth_context_unref(auth_context);
|
515
|
+
grpc_error *error = ssl_check_peer(sc, c->overridden_target_name != NULL
|
516
|
+
? c->overridden_target_name
|
517
|
+
: c->target_name,
|
518
|
+
&peer, auth_context);
|
519
|
+
grpc_closure_sched(exec_ctx, on_peer_checked, error);
|
553
520
|
tsi_peer_destruct(&peer);
|
554
521
|
}
|
555
522
|
|
556
523
|
static void ssl_server_check_peer(grpc_exec_ctx *exec_ctx,
|
557
524
|
grpc_security_connector *sc, tsi_peer peer,
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
grpc_security_status status = ssl_check_peer(sc, NULL, &peer, &auth_context);
|
525
|
+
grpc_auth_context **auth_context,
|
526
|
+
grpc_closure *on_peer_checked) {
|
527
|
+
grpc_error *error = ssl_check_peer(sc, NULL, &peer, auth_context);
|
562
528
|
tsi_peer_destruct(&peer);
|
563
|
-
|
564
|
-
grpc_auth_context_unref(auth_context);
|
529
|
+
grpc_closure_sched(exec_ctx, on_peer_checked, error);
|
565
530
|
}
|
566
531
|
|
567
532
|
static void add_shallow_auth_property_to_peer(tsi_peer *peer,
|
@@ -635,8 +600,8 @@ static grpc_security_connector_vtable ssl_channel_vtable = {
|
|
635
600
|
static grpc_security_connector_vtable ssl_server_vtable = {
|
636
601
|
ssl_server_destroy, ssl_server_check_peer};
|
637
602
|
|
638
|
-
static
|
639
|
-
|
603
|
+
static grpc_slice compute_default_pem_root_certs_once(void) {
|
604
|
+
grpc_slice result = gpr_empty_slice();
|
640
605
|
|
641
606
|
/* First try to load the roots from the environment. */
|
642
607
|
char *default_root_certs_path =
|
@@ -649,17 +614,17 @@ static gpr_slice compute_default_pem_root_certs_once(void) {
|
|
649
614
|
|
650
615
|
/* Try overridden roots if needed. */
|
651
616
|
grpc_ssl_roots_override_result ovrd_res = GRPC_SSL_ROOTS_OVERRIDE_FAIL;
|
652
|
-
if (
|
617
|
+
if (GRPC_SLICE_IS_EMPTY(result) && ssl_roots_override_cb != NULL) {
|
653
618
|
char *pem_root_certs = NULL;
|
654
619
|
ovrd_res = ssl_roots_override_cb(&pem_root_certs);
|
655
620
|
if (ovrd_res == GRPC_SSL_ROOTS_OVERRIDE_OK) {
|
656
621
|
GPR_ASSERT(pem_root_certs != NULL);
|
657
|
-
result =
|
622
|
+
result = grpc_slice_new(pem_root_certs, strlen(pem_root_certs), gpr_free);
|
658
623
|
}
|
659
624
|
}
|
660
625
|
|
661
626
|
/* Fall back to installed certs if needed. */
|
662
|
-
if (
|
627
|
+
if (GRPC_SLICE_IS_EMPTY(result) &&
|
663
628
|
ovrd_res != GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY) {
|
664
629
|
GRPC_LOG_IF_ERROR("load_file",
|
665
630
|
grpc_load_file(installed_roots_path, 0, &result));
|
@@ -667,13 +632,13 @@ static gpr_slice compute_default_pem_root_certs_once(void) {
|
|
667
632
|
return result;
|
668
633
|
}
|
669
634
|
|
670
|
-
static
|
635
|
+
static grpc_slice default_pem_root_certs;
|
671
636
|
|
672
637
|
static void init_default_pem_root_certs(void) {
|
673
638
|
default_pem_root_certs = compute_default_pem_root_certs_once();
|
674
639
|
}
|
675
640
|
|
676
|
-
|
641
|
+
grpc_slice grpc_get_default_ssl_roots_for_testing(void) {
|
677
642
|
return compute_default_pem_root_certs_once();
|
678
643
|
}
|
679
644
|
|
@@ -707,12 +672,12 @@ size_t grpc_get_default_ssl_roots(const unsigned char **pem_root_certs) {
|
|
707
672
|
loading all the roots once for the lifetime of the process. */
|
708
673
|
static gpr_once once = GPR_ONCE_INIT;
|
709
674
|
gpr_once_init(&once, init_default_pem_root_certs);
|
710
|
-
*pem_root_certs =
|
711
|
-
return
|
675
|
+
*pem_root_certs = GRPC_SLICE_START_PTR(default_pem_root_certs);
|
676
|
+
return GRPC_SLICE_LENGTH(default_pem_root_certs);
|
712
677
|
}
|
713
678
|
|
714
679
|
grpc_security_status grpc_ssl_channel_security_connector_create(
|
715
|
-
grpc_call_credentials *request_metadata_creds,
|
680
|
+
grpc_exec_ctx *exec_ctx, grpc_call_credentials *request_metadata_creds,
|
716
681
|
const grpc_ssl_config *config, const char *target_name,
|
717
682
|
const char *overridden_target_name, grpc_channel_security_connector **sc) {
|
718
683
|
size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
|
@@ -758,7 +723,7 @@ grpc_security_status grpc_ssl_channel_security_connector_create(
|
|
758
723
|
c->base.request_metadata_creds =
|
759
724
|
grpc_call_credentials_ref(request_metadata_creds);
|
760
725
|
c->base.check_call_host = ssl_channel_check_call_host;
|
761
|
-
c->base.
|
726
|
+
c->base.add_handshakers = ssl_channel_add_handshakers;
|
762
727
|
gpr_split_host_port(target_name, &c->target_name, &port);
|
763
728
|
gpr_free(port);
|
764
729
|
if (overridden_target_name != NULL) {
|
@@ -773,7 +738,7 @@ grpc_security_status grpc_ssl_channel_security_connector_create(
|
|
773
738
|
if (result != TSI_OK) {
|
774
739
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
775
740
|
tsi_result_to_string(result));
|
776
|
-
ssl_channel_destroy(&c->base.base);
|
741
|
+
ssl_channel_destroy(exec_ctx, &c->base.base);
|
777
742
|
*sc = NULL;
|
778
743
|
goto error;
|
779
744
|
}
|
@@ -789,7 +754,8 @@ error:
|
|
789
754
|
}
|
790
755
|
|
791
756
|
grpc_security_status grpc_ssl_server_security_connector_create(
|
792
|
-
const grpc_ssl_server_config *config,
|
757
|
+
grpc_exec_ctx *exec_ctx, const grpc_ssl_server_config *config,
|
758
|
+
grpc_server_security_connector **sc) {
|
793
759
|
size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
|
794
760
|
const unsigned char **alpn_protocol_strings =
|
795
761
|
gpr_malloc(sizeof(const char *) * num_alpn_protocols);
|
@@ -829,12 +795,11 @@ grpc_security_status grpc_ssl_server_security_connector_create(
|
|
829
795
|
if (result != TSI_OK) {
|
830
796
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
831
797
|
tsi_result_to_string(result));
|
832
|
-
ssl_server_destroy(&c->base.base);
|
798
|
+
ssl_server_destroy(exec_ctx, &c->base.base);
|
833
799
|
*sc = NULL;
|
834
800
|
goto error;
|
835
801
|
}
|
836
|
-
|
837
|
-
c->base.do_handshake = ssl_server_do_handshake;
|
802
|
+
c->base.add_handshakers = ssl_server_add_handshakers;
|
838
803
|
*sc = &c->base;
|
839
804
|
gpr_free((void *)alpn_protocol_strings);
|
840
805
|
gpr_free(alpn_protocol_string_lengths);
|