grpc 0.13.1 → 0.14.1.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2098 -828
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -20
- data/include/grpc/census.h +4 -4
- data/include/grpc/compression.h +6 -5
- data/include/grpc/grpc.h +31 -20
- data/include/grpc/grpc_security.h +17 -31
- data/include/grpc/grpc_security_constants.h +114 -0
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +1 -1
- data/include/grpc/impl/codegen/atm.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_sync.h +1 -1
- data/include/grpc/impl/codegen/atm_win32.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/{src/core/client_config/lb_policies/round_robin.h → include/grpc/impl/codegen/byte_buffer_reader.h} +19 -8
- data/include/grpc/impl/codegen/grpc_types.h +20 -3
- data/include/grpc/impl/codegen/log.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +102 -17
- data/include/grpc/impl/codegen/propagation_bits.h +3 -3
- data/include/grpc/impl/codegen/slice.h +3 -3
- data/include/grpc/impl/codegen/slice_buffer.h +3 -3
- data/include/grpc/impl/codegen/status.h +1 -1
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/include/grpc/impl/codegen/sync_posix.h +1 -1
- data/include/grpc/impl/codegen/sync_win32.h +1 -1
- data/include/grpc/impl/codegen/time.h +3 -3
- data/include/grpc/status.h +1 -1
- data/include/grpc/support/alloc.h +1 -1
- data/include/grpc/support/atm.h +1 -1
- data/include/grpc/support/atm_gcc_atomic.h +4 -4
- data/include/grpc/support/atm_gcc_sync.h +1 -1
- data/include/grpc/support/atm_win32.h +1 -1
- data/include/grpc/support/avl.h +1 -1
- data/include/grpc/support/cmdline.h +1 -1
- data/include/grpc/support/cpu.h +1 -1
- data/include/grpc/support/histogram.h +1 -1
- data/include/grpc/support/host_port.h +1 -1
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/log_win32.h +1 -1
- data/include/grpc/support/port_platform.h +1 -1
- data/include/grpc/support/slice.h +1 -1
- data/include/grpc/support/slice_buffer.h +1 -1
- data/include/grpc/support/string_util.h +3 -1
- data/include/grpc/support/subprocess.h +2 -2
- data/include/grpc/support/sync.h +1 -1
- data/include/grpc/support/sync_generic.h +1 -1
- data/include/grpc/support/sync_posix.h +1 -1
- data/include/grpc/support/sync_win32.h +1 -1
- data/include/grpc/support/thd.h +1 -1
- data/include/grpc/support/time.h +1 -1
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +45 -1
- data/include/grpc/support/tls_msvc.h +3 -3
- data/include/grpc/support/tls_pthread.h +1 -1
- data/include/grpc/support/useful.h +1 -1
- data/src/boringssl/err_data.c +258 -252
- data/src/core/{census → ext/census}/aggregation.h +3 -3
- data/src/core/{statistics → ext/census}/census_interface.h +3 -3
- data/src/core/{statistics → ext/census}/census_rpc_stats.h +4 -4
- data/src/core/{census → ext/census}/context.c +2 -2
- data/src/core/{census → ext/census}/grpc_context.c +2 -2
- data/src/core/{census → ext/census}/grpc_filter.c +30 -16
- data/src/core/{census → ext/census}/grpc_filter.h +4 -4
- data/src/core/ext/census/grpc_plugin.c +82 -0
- data/src/core/{census → ext/census}/initialize.c +1 -1
- data/src/core/{census → ext/census}/mlog.c +2 -2
- data/src/core/{census → ext/census}/mlog.h +4 -4
- data/src/core/{census → ext/census}/operation.c +0 -0
- data/src/core/{census → ext/census}/placeholders.c +0 -0
- data/src/core/{census → ext/census}/rpc_metric_id.h +3 -3
- data/src/core/{census → ext/census}/tracing.c +0 -0
- data/src/core/{surface → ext/client_config}/channel_connectivity.c +8 -21
- data/src/core/{channel → ext/client_config}/client_channel.c +80 -35
- data/src/core/{channel → ext/client_config}/client_channel.h +5 -5
- data/src/core/{client_config/subchannel_factory.c → ext/client_config/client_channel_factory.c} +14 -6
- data/src/core/ext/client_config/client_channel_factory.h +85 -0
- data/src/core/{client_config → ext/client_config}/client_config.c +4 -2
- data/src/core/{client_config → ext/client_config}/client_config.h +4 -4
- data/src/core/ext/client_config/client_config_plugin.c +95 -0
- data/src/core/{client_config → ext/client_config}/connector.c +2 -2
- data/src/core/{client_config → ext/client_config}/connector.h +7 -10
- data/src/core/{client_config → ext/client_config}/default_initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.c +1 -1
- data/src/core/{client_config → ext/client_config}/initial_connect_string.h +4 -4
- data/src/core/{client_config → ext/client_config}/lb_policy.c +12 -3
- data/src/core/{client_config → ext/client_config}/lb_policy.h +19 -6
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.c +4 -3
- data/src/core/{client_config → ext/client_config}/lb_policy_factory.h +14 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.c +4 -9
- data/src/core/{client_config → ext/client_config}/lb_policy_registry.h +7 -6
- data/src/core/ext/client_config/parse_address.c +137 -0
- data/src/core/ext/client_config/parse_address.h +56 -0
- data/src/core/{client_config → ext/client_config}/resolver.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver.h +6 -6
- data/src/core/{client_config → ext/client_config}/resolver_factory.c +1 -1
- data/src/core/{client_config → ext/client_config}/resolver_factory.h +7 -7
- data/src/core/{client_config → ext/client_config}/resolver_registry.c +25 -11
- data/src/core/{client_config → ext/client_config}/resolver_registry.h +9 -5
- data/src/core/{client_config → ext/client_config}/subchannel.c +90 -126
- data/src/core/{client_config → ext/client_config}/subchannel.h +15 -15
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.c +9 -8
- data/src/core/{channel → ext/client_config}/subchannel_call_holder.h +7 -7
- data/src/core/{client_config → ext/client_config}/subchannel_index.c +3 -2
- data/src/core/{client_config → ext/client_config}/subchannel_index.h +5 -5
- data/src/core/{client_config → ext/client_config}/uri_parser.c +69 -1
- data/src/core/{client_config → ext/client_config}/uri_parser.h +15 -3
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.c +18 -9
- data/src/core/{client_config/lb_policies → ext/lb_policy/grpclb}/load_balancer_api.h +5 -5
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.c +1 -1
- data/src/core/{proto → ext/lb_policy/grpclb/proto}/grpc/lb/v0/load_balancer.pb.h +0 -0
- data/src/core/{client_config/lb_policies → ext/lb_policy/pick_first}/pick_first.c +95 -32
- data/src/core/{client_config/lb_policies → ext/lb_policy/round_robin}/round_robin.c +98 -34
- data/src/core/{client_config/resolvers → ext/resolver/dns/native}/dns_resolver.c +83 -39
- data/src/core/{client_config/resolvers → ext/resolver/sockaddr}/sockaddr_resolver.c +66 -169
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/alpn}/alpn.h +3 -3
- data/src/core/{surface → ext/transport/chttp2/client/insecure}/channel_create.c +65 -59
- data/src/core/{surface → ext/transport/chttp2/client/secure}/secure_channel_create.c +77 -69
- data/src/core/{surface → ext/transport/chttp2/server/insecure}/server_chttp2.c +8 -11
- data/src/core/{security → ext/transport/chttp2/server/secure}/server_secure_chttp2.c +14 -17
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.c +28 -74
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/bin_encoder.h +5 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +46 -0
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.c +551 -310
- data/src/core/{transport → ext/transport/chttp2/transport}/chttp2_transport.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.c +30 -14
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_data.h +10 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_goaway.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_ping.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.c +9 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_rst_stream.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.c +6 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_settings.h +5 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.c +11 -5
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/frame_window_update.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.c +21 -12
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_encoder.h +8 -6
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.c +42 -25
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_parser.h +7 -7
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.c +21 -11
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/hpack_table.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/http2_errors.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +105 -0
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/huffsyms.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.c +2 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/incoming_metadata.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/internal.h +81 -37
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/parsing.c +54 -21
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/status_conversion.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_lists.c +10 -2
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/stream_map.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.c +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/timeout_encoding.h +4 -4
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.c +1 -1
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/varint.h +3 -3
- data/src/core/{transport/chttp2 → ext/transport/chttp2/transport}/writing.c +30 -20
- data/src/core/{channel → lib/channel}/channel_args.c +3 -15
- data/src/core/{channel → lib/channel}/channel_args.h +11 -15
- data/src/core/{channel → lib/channel}/channel_stack.c +5 -3
- data/src/core/{channel → lib/channel}/channel_stack.h +13 -8
- data/src/core/lib/channel/channel_stack_builder.c +277 -0
- data/src/core/lib/channel/channel_stack_builder.h +161 -0
- data/src/core/{channel → lib/channel}/compress_filter.c +51 -16
- data/src/core/{channel → lib/channel}/compress_filter.h +6 -4
- data/src/core/{channel → lib/channel}/connected_channel.c +34 -24
- data/src/core/lib/channel/connected_channel.h +42 -0
- data/src/core/{channel → lib/channel}/context.h +3 -3
- data/src/core/{channel → lib/channel}/http_client_filter.c +24 -13
- data/src/core/{channel → lib/channel}/http_client_filter.h +4 -4
- data/src/core/{channel → lib/channel}/http_server_filter.c +39 -19
- data/src/core/{channel → lib/channel}/http_server_filter.h +4 -4
- data/src/core/{compression → lib/compression}/algorithm_metadata.h +4 -4
- data/src/core/{compression → lib/compression}/compression_algorithm.c +46 -9
- data/src/core/{compression → lib/compression}/message_compress.c +1 -1
- data/src/core/{compression → lib/compression}/message_compress.h +3 -3
- data/src/core/{debug → lib/debug}/trace.c +2 -2
- data/src/core/{debug → lib/debug}/trace.h +3 -3
- data/src/core/{httpcli → lib/http}/format_request.c +8 -8
- data/src/core/{httpcli → lib/http}/format_request.h +4 -4
- data/src/core/{httpcli → lib/http}/httpcli.c +24 -19
- data/src/core/{httpcli → lib/http}/httpcli.h +14 -33
- data/src/core/{httpcli → lib/http}/httpcli_security_connector.c +5 -5
- data/src/core/lib/http/parser.c +341 -0
- data/src/core/lib/http/parser.h +119 -0
- data/src/core/{iomgr → lib/iomgr}/closure.c +8 -2
- data/src/core/{iomgr → lib/iomgr}/closure.h +7 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/endpoint.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_posix.c +8 -7
- data/src/core/{iomgr → lib/iomgr}/endpoint_pair_windows.c +4 -4
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +1936 -0
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +41 -0
- data/src/core/lib/iomgr/ev_posix.c +164 -0
- data/src/core/lib/iomgr/ev_posix.h +158 -0
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.c +78 -3
- data/src/core/{iomgr → lib/iomgr}/exec_ctx.h +25 -10
- data/src/core/{iomgr → lib/iomgr}/executor.c +3 -3
- data/src/core/{iomgr → lib/iomgr}/executor.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iocp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/iomgr.c +13 -10
- data/src/core/{iomgr → lib/iomgr}/iomgr.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/iomgr_internal.h +5 -9
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.c +6 -6
- data/src/core/{iomgr → lib/iomgr}/iomgr_posix.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/iomgr_windows.c +7 -4
- data/src/core/{iomgr → lib/iomgr}/pollset.h +11 -11
- data/src/core/{iomgr → lib/iomgr}/pollset_set.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/pollset_set_windows.c +2 -2
- data/src/core/lib/iomgr/pollset_set_windows.h +39 -0
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.c +7 -7
- data/src/core/{iomgr → lib/iomgr}/pollset_windows.h +8 -5
- data/src/core/{iomgr → lib/iomgr}/resolve_address.h +10 -9
- data/src/core/{iomgr → lib/iomgr}/resolve_address_posix.c +22 -22
- data/src/core/{iomgr → lib/iomgr}/resolve_address_windows.c +20 -12
- data/src/core/{iomgr → lib/iomgr}/sockaddr.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.c +9 -16
- data/src/core/{iomgr → lib/iomgr}/sockaddr_utils.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/sockaddr_win32.h +6 -4
- data/src/core/{iomgr → lib/iomgr}/socket_utils_common_posix.c +29 -7
- data/src/core/{iomgr → lib/iomgr}/socket_utils_linux.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/socket_utils_posix.h +14 -4
- data/src/core/{iomgr → lib/iomgr}/socket_windows.c +7 -5
- data/src/core/{iomgr → lib/iomgr}/socket_windows.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_client_posix.c +33 -18
- data/src/core/{iomgr → lib/iomgr}/tcp_client_windows.c +30 -20
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.c +9 -10
- data/src/core/{iomgr → lib/iomgr}/tcp_posix.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server.h +6 -6
- data/src/core/{iomgr → lib/iomgr}/tcp_server_posix.c +24 -37
- data/src/core/{iomgr → lib/iomgr}/tcp_server_windows.c +8 -36
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.c +27 -17
- data/src/core/{iomgr → lib/iomgr}/tcp_windows.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/time_averaged_stats.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/timer.c +31 -4
- data/src/core/{iomgr → lib/iomgr}/timer.h +6 -7
- data/src/core/{iomgr → lib/iomgr}/timer_heap.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/timer_heap.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/udp_server.c +13 -37
- data/src/core/{iomgr → lib/iomgr}/udp_server.h +11 -10
- data/src/core/lib/iomgr/unix_sockets_posix.c +89 -0
- data/src/core/{client_config/resolvers/sockaddr_resolver.h → lib/iomgr/unix_sockets_posix.h} +15 -11
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +59 -0
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_eventfd.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_nospecial.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.c +8 -3
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_pipe.h +4 -4
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.c +2 -2
- data/src/core/{iomgr → lib/iomgr}/wakeup_fd_posix.h +3 -3
- data/src/core/{iomgr → lib/iomgr}/workqueue.h +10 -10
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.c +5 -6
- data/src/core/{iomgr → lib/iomgr}/workqueue_posix.h +5 -5
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.c +1 -1
- data/src/core/{iomgr → lib/iomgr}/workqueue_windows.h +3 -3
- data/src/core/{json → lib/json}/json.c +1 -1
- data/src/core/{json → lib/json}/json.h +4 -4
- data/src/core/{json → lib/json}/json_common.h +3 -3
- data/src/core/{json → lib/json}/json_reader.c +16 -4
- data/src/core/{json → lib/json}/json_reader.h +4 -4
- data/src/core/{json → lib/json}/json_string.c +4 -4
- data/src/core/{json → lib/json}/json_writer.c +1 -1
- data/src/core/{json → lib/json}/json_writer.h +4 -4
- data/src/core/{profiling → lib/profiling}/basic_timers.c +3 -2
- data/src/core/{profiling → lib/profiling}/stap_timers.c +2 -2
- data/src/core/{profiling → lib/profiling}/timers.h +3 -3
- data/src/core/{security → lib/security}/auth_filters.h +4 -4
- data/src/core/{security → lib/security}/b64.c +2 -2
- data/src/core/{security → lib/security}/b64.h +4 -4
- data/src/core/{security → lib/security}/client_auth_filter.c +16 -16
- data/src/core/{security → lib/security}/credentials.c +42 -26
- data/src/core/{security → lib/security}/credentials.h +11 -10
- data/src/core/{security → lib/security}/credentials_metadata.c +1 -1
- data/src/core/{security → lib/security}/credentials_posix.c +3 -3
- data/src/core/{security → lib/security}/credentials_win32.c +3 -3
- data/src/core/{security → lib/security}/google_default_credentials.c +10 -9
- data/src/core/{security → lib/security}/handshake.c +4 -4
- data/src/core/{security → lib/security}/handshake.h +6 -6
- data/src/core/{security → lib/security}/json_token.c +4 -4
- data/src/core/{security → lib/security}/json_token.h +4 -4
- data/src/core/{security → lib/security}/jwt_verifier.c +14 -14
- data/src/core/{security → lib/security}/jwt_verifier.h +5 -5
- data/src/core/{security → lib/security}/secure_endpoint.c +9 -8
- data/src/core/{security → lib/security}/secure_endpoint.h +4 -4
- data/src/core/{security → lib/security}/security_connector.c +53 -21
- data/src/core/{security → lib/security}/security_connector.h +8 -8
- data/src/core/{security → lib/security}/security_context.c +5 -5
- data/src/core/{security → lib/security}/security_context.h +5 -5
- data/src/core/{security → lib/security}/server_auth_filter.c +9 -9
- data/src/core/{support → lib/support}/alloc.c +5 -3
- data/src/core/{support → lib/support}/avl.c +1 -1
- data/src/core/lib/support/backoff.c +76 -0
- data/src/core/lib/support/backoff.h +68 -0
- data/src/core/{support → lib/support}/block_annotate.h +3 -3
- data/src/core/{support → lib/support}/cmdline.c +1 -1
- data/src/core/{support → lib/support}/cpu_iphone.c +0 -0
- data/src/core/{support → lib/support}/cpu_linux.c +2 -2
- data/src/core/{support → lib/support}/cpu_posix.c +2 -2
- data/src/core/{support → lib/support}/cpu_windows.c +0 -0
- data/src/core/{support → lib/support}/env.h +3 -3
- data/src/core/{support → lib/support}/env_linux.c +3 -3
- data/src/core/{support → lib/support}/env_posix.c +2 -2
- data/src/core/{support → lib/support}/env_win32.c +27 -21
- data/src/core/{support → lib/support}/histogram.c +1 -1
- data/src/core/{support → lib/support}/host_port.c +1 -1
- data/src/core/{support → lib/support}/load_file.c +4 -4
- data/src/core/{support → lib/support}/load_file.h +4 -4
- data/src/core/{support → lib/support}/log.c +33 -0
- data/src/core/{support → lib/support}/log_android.c +2 -2
- data/src/core/{support → lib/support}/log_linux.c +6 -5
- data/src/core/{support → lib/support}/log_posix.c +3 -3
- data/src/core/{support → lib/support}/log_win32.c +8 -22
- data/src/core/{support → lib/support}/murmur_hash.c +1 -1
- data/src/core/{support → lib/support}/murmur_hash.h +3 -3
- data/src/core/{support → lib/support}/slice.c +0 -0
- data/src/core/{support → lib/support}/slice_buffer.c +0 -0
- data/src/core/{support → lib/support}/stack_lockfree.c +7 -7
- data/src/core/{support → lib/support}/stack_lockfree.h +3 -3
- data/src/core/{support → lib/support}/string.c +1 -1
- data/src/core/{support → lib/support}/string.h +4 -4
- data/src/core/{support → lib/support}/string_posix.c +1 -1
- data/src/core/{support/string_win32.c → lib/support/string_util_win32.c} +23 -38
- data/src/core/lib/support/string_win32.c +83 -0
- data/src/core/{support → lib/support}/string_win32.h +3 -3
- data/src/core/{support → lib/support}/subprocess_posix.c +3 -3
- data/src/core/{support → lib/support}/subprocess_windows.c +3 -3
- data/src/core/{support → lib/support}/sync.c +2 -2
- data/src/core/{support → lib/support}/sync_posix.c +3 -3
- data/src/core/{support → lib/support}/sync_win32.c +1 -1
- data/src/core/{support → lib/support}/thd.c +0 -0
- data/src/core/{support → lib/support}/thd_internal.h +3 -3
- data/src/core/{support → lib/support}/thd_posix.c +4 -3
- data/src/core/{support → lib/support}/thd_win32.c +1 -1
- data/src/core/{support → lib/support}/time.c +2 -2
- data/src/core/{support → lib/support}/time_posix.c +12 -6
- data/src/core/{support → lib/support}/time_precise.c +0 -0
- data/src/core/{support → lib/support}/time_precise.h +3 -3
- data/src/core/{support → lib/support}/time_win32.c +7 -7
- data/src/core/{support → lib/support}/tls_pthread.c +0 -0
- data/src/core/{support → lib/support}/tmpfile.h +4 -4
- data/src/core/lib/support/tmpfile_msys.c +73 -0
- data/src/core/{support → lib/support}/tmpfile_posix.c +5 -5
- data/src/core/{support → lib/support}/tmpfile_win32.c +5 -5
- data/src/core/{support → lib/support}/wrap_memcpy.c +0 -0
- data/src/core/{surface → lib/surface}/alarm.c +3 -3
- data/src/core/{surface → lib/surface}/api_trace.c +1 -1
- data/src/core/{surface → lib/surface}/api_trace.h +4 -4
- data/src/core/{surface → lib/surface}/byte_buffer.c +3 -3
- data/src/core/{surface → lib/surface}/byte_buffer_reader.c +3 -3
- data/src/core/{surface → lib/surface}/call.c +145 -73
- data/src/core/{surface → lib/surface}/call.h +14 -7
- data/src/core/{surface → lib/surface}/call_details.c +1 -1
- data/src/core/{surface → lib/surface}/call_log_batch.c +2 -2
- data/src/core/{surface → lib/surface}/call_test_only.h +3 -3
- data/src/core/{surface → lib/surface}/channel.c +33 -34
- data/src/core/{surface → lib/surface}/channel.h +9 -9
- data/src/core/lib/surface/channel_init.c +140 -0
- data/src/core/lib/surface/channel_init.h +87 -0
- data/src/core/{surface → lib/surface}/channel_ping.c +4 -4
- data/src/core/lib/surface/channel_stack_type.c +54 -0
- data/src/core/{httpcli/parser.h → lib/surface/channel_stack_type.h} +22 -28
- data/src/core/{surface → lib/surface}/completion_queue.c +15 -11
- data/src/core/{surface → lib/surface}/completion_queue.h +4 -4
- data/src/core/{surface → lib/surface}/event_string.c +2 -2
- data/src/core/{surface → lib/surface}/event_string.h +3 -3
- data/src/core/lib/surface/init.c +217 -0
- data/src/core/{surface → lib/surface}/init.h +4 -3
- data/src/core/lib/surface/init_secure.c +89 -0
- data/src/core/{surface → lib/surface}/lame_client.c +31 -19
- data/src/core/{iomgr/pollset_set_windows.h → lib/surface/lame_client.h} +7 -5
- data/src/core/{surface → lib/surface}/metadata_array.c +1 -1
- data/src/core/{surface → lib/surface}/server.c +208 -183
- data/src/core/{surface → lib/surface}/server.h +6 -11
- data/src/core/{surface → lib/surface}/surface_trace.h +5 -5
- data/src/core/{surface → lib/surface}/validate_metadata.c +1 -1
- data/src/core/{surface → lib/surface}/version.c +2 -2
- data/src/core/{transport → lib/transport}/byte_stream.c +1 -1
- data/src/core/{transport → lib/transport}/byte_stream.h +4 -4
- data/src/core/{transport → lib/transport}/connectivity_state.c +2 -2
- data/src/core/{transport → lib/transport}/connectivity_state.h +4 -4
- data/src/core/{transport → lib/transport}/metadata.c +71 -19
- data/src/core/{transport → lib/transport}/metadata.h +11 -4
- data/src/core/{transport → lib/transport}/metadata_batch.c +2 -2
- data/src/core/{transport → lib/transport}/metadata_batch.h +4 -4
- data/src/core/{transport → lib/transport}/static_metadata.c +100 -32
- data/src/core/{transport → lib/transport}/static_metadata.h +58 -58
- data/src/core/{transport → lib/transport}/transport.c +25 -5
- data/src/core/{transport → lib/transport}/transport.h +41 -16
- data/src/core/{transport → lib/transport}/transport_impl.h +8 -5
- data/src/core/{transport → lib/transport}/transport_op_string.c +2 -2
- data/src/core/{tsi → lib/tsi}/fake_transport_security.c +18 -14
- data/src/core/{tsi → lib/tsi}/fake_transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.c +173 -63
- data/src/core/{tsi → lib/tsi}/ssl_transport_security.h +24 -6
- data/src/core/{tsi → lib/tsi}/ssl_types.h +3 -3
- data/src/core/{tsi → lib/tsi}/transport_security.c +12 -28
- data/src/core/{tsi → lib/tsi}/transport_security.h +4 -4
- data/src/core/{tsi → lib/tsi}/transport_security_interface.h +12 -3
- data/src/core/plugin_registry/grpc_plugin_registry.c +66 -0
- data/src/ruby/ext/grpc/extconf.rb +14 -20
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
- data/src/ruby/ext/grpc/rb_call.c +37 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
- data/src/ruby/ext/grpc/rb_channel.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
- data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
- data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
- data/src/ruby/ext/grpc/rb_server.c +2 -3
- data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
- data/src/ruby/ext/grpc/rb_signal.c +70 -0
- data/src/ruby/ext/grpc/rb_signal.h +39 -0
- data/src/ruby/lib/grpc.rb +21 -13
- data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
- data/src/ruby/lib/grpc/errors.rb +2 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
- data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
- data/src/ruby/lib/grpc/generic/service.rb +5 -15
- data/src/ruby/lib/grpc/grpc.rb +3 -3
- data/src/ruby/{bin/interop/interop_server.rb → lib/grpc/signals.rb} +39 -20
- data/src/ruby/lib/grpc/version.rb +2 -2
- data/src/ruby/pb/generate_proto_ruby.sh +9 -2
- data/src/ruby/pb/grpc/health/checker.rb +1 -1
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
- data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
- data/src/ruby/pb/test/client.rb +12 -23
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
- data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
- data/src/ruby/spec/generic/service_spec.rb +0 -69
- data/src/ruby/{bin/interop/interop_client.rb → spec/pb/duplicate/codegen_spec.rb} +41 -21
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +184 -176
- data/third_party/boringssl/crypto/asn1/a_bool.c +42 -44
- data/third_party/boringssl/crypto/asn1/a_bytes.c +236 -245
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +173 -192
- data/third_party/boringssl/crypto/asn1/a_dup.c +43 -35
- data/third_party/boringssl/crypto/asn1/a_enum.c +107 -109
- data/third_party/boringssl/crypto/asn1/a_gentm.c +180 -181
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +73 -80
- data/third_party/boringssl/crypto/asn1/a_int.c +357 -353
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +272 -253
- data/third_party/boringssl/crypto/asn1/a_object.c +293 -309
- data/third_party/boringssl/crypto/asn1/a_octet.c +13 -6
- data/third_party/boringssl/crypto/asn1/a_print.c +54 -52
- data/third_party/boringssl/crypto/asn1/a_strnid.c +179 -157
- data/third_party/boringssl/crypto/asn1/a_time.c +125 -129
- data/third_party/boringssl/crypto/asn1/a_type.c +79 -86
- data/third_party/boringssl/crypto/asn1/a_utctm.c +246 -255
- data/third_party/boringssl/crypto/asn1/a_utf8.c +159 -135
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +361 -368
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +11 -11
- data/third_party/boringssl/crypto/asn1/asn1_par.c +309 -351
- data/third_party/boringssl/crypto/asn1/asn_pack.c +30 -29
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +375 -394
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +146 -149
- data/third_party/boringssl/crypto/asn1/f_enum.c +128 -134
- data/third_party/boringssl/crypto/asn1/f_int.c +131 -139
- data/third_party/boringssl/crypto/asn1/f_string.c +125 -133
- data/third_party/boringssl/crypto/asn1/t_bitst.c +30 -29
- data/third_party/boringssl/crypto/asn1/t_pkey.c +45 -47
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1099 -1216
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +556 -592
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +175 -193
- data/third_party/boringssl/crypto/asn1/tasn_new.c +271 -288
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +462 -508
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +28 -21
- data/third_party/boringssl/crypto/asn1/x_bignum.c +62 -52
- data/third_party/boringssl/crypto/asn1/x_long.c +101 -86
- data/third_party/boringssl/crypto/bio/buffer.c +3 -3
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +8 -68
- data/third_party/boringssl/crypto/bn/bn.c +1 -1
- data/third_party/boringssl/crypto/bn/bn_asn1.c +9 -22
- data/third_party/boringssl/crypto/bn/convert.c +9 -4
- data/third_party/boringssl/crypto/bn/div.c +0 -20
- data/third_party/boringssl/crypto/bn/exponentiation.c +22 -13
- data/third_party/boringssl/crypto/bn/generic.c +6 -242
- data/third_party/boringssl/crypto/bn/internal.h +9 -70
- data/third_party/boringssl/crypto/bn/montgomery.c +1 -2
- data/third_party/boringssl/crypto/bn/mul.c +6 -26
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +21 -28
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +51 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +128 -87
- data/third_party/boringssl/crypto/bytestring/cbb.c +37 -3
- data/third_party/boringssl/crypto/bytestring/internal.h +39 -10
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +4 -9
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +39 -10
- data/third_party/boringssl/crypto/conf/conf.c +9 -0
- data/third_party/boringssl/crypto/cpu-intel.c +1 -1
- data/third_party/boringssl/crypto/crypto.c +2 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +125 -120
- data/third_party/boringssl/crypto/curve25519/internal.h +45 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +225 -0
- data/third_party/boringssl/crypto/dh/check.c +32 -10
- data/third_party/boringssl/crypto/dh/dh.c +1 -1
- data/third_party/boringssl/crypto/digest/md32_common.h +0 -60
- data/third_party/boringssl/crypto/dsa/dsa.c +47 -21
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +249 -64
- data/third_party/boringssl/crypto/ec/ec.c +45 -31
- data/third_party/boringssl/crypto/ec/ec_asn1.c +315 -382
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -4
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -9
- data/third_party/boringssl/crypto/ec/internal.h +1 -19
- data/third_party/boringssl/crypto/ec/oct.c +12 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +4 -65
- data/third_party/boringssl/crypto/ec/p256-64.c +9 -71
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +1 -6
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +3 -13
- data/third_party/boringssl/crypto/ec/simple.c +0 -76
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +1 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +10 -24
- data/third_party/boringssl/crypto/evp/evp.c +4 -3
- data/third_party/boringssl/crypto/evp/evp_asn1.c +101 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +22 -51
- data/third_party/boringssl/crypto/evp/internal.h +28 -27
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +78 -249
- data/third_party/boringssl/crypto/evp/p_ec.c +19 -66
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +74 -231
- data/third_party/boringssl/crypto/evp/p_rsa.c +90 -13
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +49 -48
- data/third_party/boringssl/crypto/internal.h +16 -1
- data/third_party/boringssl/crypto/mem.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +2 -1
- data/third_party/boringssl/crypto/modes/gcm.c +5 -3
- data/third_party/boringssl/crypto/obj/obj_dat.h +6 -3
- data/third_party/boringssl/crypto/pem/pem_all.c +83 -102
- data/third_party/boringssl/crypto/pem/pem_info.c +286 -309
- data/third_party/boringssl/crypto/pem/pem_lib.c +690 -710
- data/third_party/boringssl/crypto/pem/pem_oth.c +15 -16
- data/third_party/boringssl/crypto/pem/pem_pk8.c +132 -119
- data/third_party/boringssl/crypto/pem/pem_pkey.c +144 -220
- data/third_party/boringssl/crypto/pem/pem_x509.c +3 -3
- data/third_party/boringssl/crypto/pem/pem_xaux.c +5 -4
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +54 -60
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +3 -1
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +48 -50
- data/third_party/boringssl/crypto/rand/rand.c +2 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +8 -48
- data/third_party/boringssl/crypto/rsa/internal.h +1 -9
- data/third_party/boringssl/crypto/rsa/padding.c +73 -77
- data/third_party/boringssl/crypto/rsa/rsa.c +1 -1
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +27 -46
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +23 -34
- data/third_party/boringssl/crypto/test/scoped_types.h +3 -0
- data/third_party/boringssl/crypto/thread_win.c +15 -13
- data/third_party/boringssl/crypto/time_support.c +0 -6
- data/third_party/boringssl/crypto/x509/a_digest.c +26 -27
- data/third_party/boringssl/crypto/x509/a_sign.c +63 -64
- data/third_party/boringssl/crypto/x509/a_strex.c +482 -413
- data/third_party/boringssl/crypto/x509/a_verify.c +45 -51
- data/third_party/boringssl/crypto/x509/asn1_gen.c +715 -769
- data/third_party/boringssl/crypto/x509/by_dir.c +355 -393
- data/third_party/boringssl/crypto/x509/by_file.c +186 -206
- data/third_party/boringssl/crypto/x509/charmap.h +11 -11
- data/third_party/boringssl/crypto/x509/i2d_pr.c +21 -22
- data/third_party/boringssl/crypto/x509/t_crl.c +50 -51
- data/third_party/boringssl/crypto/x509/t_x509.c +414 -406
- data/third_party/boringssl/crypto/x509/t_x509a.c +44 -42
- data/third_party/boringssl/crypto/x509/vpm_int.h +13 -13
- data/third_party/boringssl/crypto/x509/x509_att.c +241 -219
- data/third_party/boringssl/crypto/x509/x509_cmp.c +343 -359
- data/third_party/boringssl/crypto/x509/x509_d2.c +36 -35
- data/third_party/boringssl/crypto/x509/x509_def.c +23 -13
- data/third_party/boringssl/crypto/x509/x509_ext.c +75 -75
- data/third_party/boringssl/crypto/x509/x509_lu.c +574 -612
- data/third_party/boringssl/crypto/x509/x509_obj.c +104 -115
- data/third_party/boringssl/crypto/x509/x509_r2x.c +40 -40
- data/third_party/boringssl/crypto/x509/x509_req.c +181 -174
- data/third_party/boringssl/crypto/x509/x509_set.c +71 -76
- data/third_party/boringssl/crypto/x509/x509_trs.c +193 -171
- data/third_party/boringssl/crypto/x509/x509_txt.c +135 -138
- data/third_party/boringssl/crypto/x509/x509_v3.c +174 -167
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2079 -2130
- data/third_party/boringssl/crypto/x509/x509_vpm.c +486 -522
- data/third_party/boringssl/crypto/x509/x509cset.c +96 -99
- data/third_party/boringssl/crypto/x509/x509name.c +280 -275
- data/third_party/boringssl/crypto/x509/x509rset.c +15 -14
- data/third_party/boringssl/crypto/x509/x509spki.c +62 -60
- data/third_party/boringssl/crypto/x509/x509type.c +58 -60
- data/third_party/boringssl/crypto/x509/x_algor.c +70 -73
- data/third_party/boringssl/crypto/x509/x_all.c +282 -328
- data/third_party/boringssl/crypto/x509/x_attrib.c +36 -42
- data/third_party/boringssl/crypto/x509/x_crl.c +397 -418
- data/third_party/boringssl/crypto/x509/x_exten.c +5 -5
- data/third_party/boringssl/crypto/x509/x_info.c +30 -27
- data/third_party/boringssl/crypto/x509/x_name.c +387 -388
- data/third_party/boringssl/crypto/x509/x_pkey.c +32 -29
- data/third_party/boringssl/crypto/x509/x_pubkey.c +261 -280
- data/third_party/boringssl/crypto/x509/x_req.c +30 -33
- data/third_party/boringssl/crypto/x509/x_sig.c +2 -2
- data/third_party/boringssl/crypto/x509/x_spki.c +9 -7
- data/third_party/boringssl/crypto/x509/x_val.c +2 -2
- data/third_party/boringssl/crypto/x509/x_x509.c +120 -119
- data/third_party/boringssl/crypto/x509/x_x509a.c +99 -91
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +57 -51
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +199 -214
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +57 -64
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +95 -90
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +86 -87
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +61 -64
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +108 -117
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +676 -724
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +128 -136
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +7 -6
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +499 -507
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +54 -47
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +67 -67
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +330 -328
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +354 -338
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +441 -496
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +35 -33
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +66 -63
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +157 -159
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +45 -43
- data/third_party/boringssl/crypto/x509v3/v3_info.c +124 -112
- data/third_party/boringssl/crypto/x509v3/v3_int.c +30 -26
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +231 -204
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +353 -381
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +252 -270
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +9 -8
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +58 -61
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +35 -34
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +72 -74
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +146 -121
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +651 -582
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +76 -72
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +139 -131
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1072 -1068
- data/third_party/boringssl/include/openssl/asn1.h +40 -38
- data/third_party/boringssl/include/openssl/base.h +10 -1
- data/third_party/boringssl/include/openssl/bio.h +10 -11
- data/third_party/boringssl/include/openssl/bn.h +12 -9
- data/third_party/boringssl/include/openssl/buf.h +1 -1
- data/third_party/boringssl/include/openssl/bytestring.h +29 -0
- data/third_party/boringssl/include/openssl/conf.h +25 -0
- data/third_party/boringssl/include/openssl/crypto.h +6 -1
- data/third_party/boringssl/include/openssl/curve25519.h +6 -3
- data/third_party/boringssl/include/openssl/dh.h +7 -3
- data/third_party/boringssl/include/openssl/dsa.h +108 -51
- data/third_party/boringssl/include/openssl/ec.h +46 -21
- data/third_party/boringssl/include/openssl/ec_key.h +78 -42
- data/third_party/boringssl/include/openssl/ecdsa.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -2
- data/third_party/boringssl/include/openssl/evp.h +120 -37
- data/third_party/boringssl/include/openssl/mem.h +4 -13
- data/third_party/boringssl/include/openssl/obj_mac.h +4 -0
- data/third_party/boringssl/include/openssl/pem.h +0 -9
- data/third_party/boringssl/include/openssl/pkcs8.h +6 -2
- data/third_party/boringssl/include/openssl/rand.h +3 -0
- data/third_party/boringssl/include/openssl/rsa.h +42 -42
- data/third_party/boringssl/include/openssl/ssl.h +115 -41
- data/third_party/boringssl/include/openssl/stack.h +0 -3
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -256
- data/third_party/boringssl/include/openssl/tls1.h +1 -1
- data/third_party/boringssl/include/openssl/x509.h +0 -2
- data/third_party/boringssl/include/openssl/x509_vfy.h +5 -0
- data/third_party/boringssl/ssl/d1_both.c +102 -101
- data/third_party/boringssl/ssl/d1_clnt.c +145 -150
- data/third_party/boringssl/ssl/d1_lib.c +63 -62
- data/third_party/boringssl/ssl/d1_pkt.c +73 -71
- data/third_party/boringssl/ssl/d1_srvr.c +116 -125
- data/third_party/boringssl/ssl/dtls_record.c +3 -3
- data/third_party/boringssl/ssl/internal.h +210 -208
- data/third_party/boringssl/ssl/pqueue/pqueue.c +2 -2
- data/third_party/boringssl/ssl/s3_both.c +116 -130
- data/third_party/boringssl/ssl/s3_clnt.c +589 -740
- data/third_party/boringssl/ssl/s3_enc.c +52 -151
- data/third_party/boringssl/ssl/s3_lib.c +70 -76
- data/third_party/boringssl/ssl/s3_pkt.c +105 -144
- data/third_party/boringssl/ssl/s3_srvr.c +542 -806
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +1 -1
- data/third_party/boringssl/ssl/ssl_cert.c +2 -2
- data/third_party/boringssl/ssl/ssl_cipher.c +7 -3
- data/third_party/boringssl/ssl/ssl_ecdh.c +374 -0
- data/third_party/boringssl/ssl/ssl_lib.c +260 -221
- data/third_party/boringssl/ssl/ssl_session.c +17 -17
- data/third_party/boringssl/ssl/t1_enc.c +128 -273
- data/third_party/boringssl/ssl/t1_lib.c +134 -258
- data/third_party/boringssl/ssl/test/test_config.h +2 -0
- data/third_party/boringssl/ssl/tls_record.c +52 -15
- metadata +385 -359
- data/src/core/channel/client_uchannel.c +0 -243
- data/src/core/channel/client_uchannel.h +0 -60
- data/src/core/channel/connected_channel.h +0 -51
- data/src/core/client_config/lb_policies/pick_first.h +0 -43
- data/src/core/client_config/resolvers/dns_resolver.h +0 -42
- data/src/core/client_config/subchannel_factory.h +0 -66
- data/src/core/httpcli/parser.c +0 -211
- data/src/core/iomgr/fd_posix.c +0 -451
- data/src/core/iomgr/fd_posix.h +0 -192
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +0 -324
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +0 -234
- data/src/core/iomgr/pollset_posix.c +0 -633
- data/src/core/iomgr/pollset_posix.h +0 -153
- data/src/core/iomgr/pollset_set_posix.c +0 -202
- data/src/core/iomgr/pollset_set_posix.h +0 -45
- data/src/core/surface/init.c +0 -174
- data/src/core/surface/init_secure.c +0 -42
- data/src/core/surface/server_create.c +0 -48
- data/src/core/transport/chttp2/huffsyms.c +0 -297
- data/src/ruby/bin/grpc_ruby_interop_client +0 -33
- data/src/ruby/bin/grpc_ruby_interop_server +0 -33
- data/third_party/boringssl/crypto/dsa/internal.h +0 -78
@@ -84,15 +84,15 @@
|
|
84
84
|
|
85
85
|
static void get_current_time(const SSL *ssl, struct timeval *out_clock);
|
86
86
|
|
87
|
-
int dtls1_new(SSL *
|
87
|
+
int dtls1_new(SSL *ssl) {
|
88
88
|
DTLS1_STATE *d1;
|
89
89
|
|
90
|
-
if (!ssl3_new(
|
90
|
+
if (!ssl3_new(ssl)) {
|
91
91
|
return 0;
|
92
92
|
}
|
93
93
|
d1 = OPENSSL_malloc(sizeof *d1);
|
94
94
|
if (d1 == NULL) {
|
95
|
-
ssl3_free(
|
95
|
+
ssl3_free(ssl);
|
96
96
|
return 0;
|
97
97
|
}
|
98
98
|
memset(d1, 0, sizeof *d1);
|
@@ -104,52 +104,52 @@ int dtls1_new(SSL *s) {
|
|
104
104
|
pqueue_free(d1->buffered_messages);
|
105
105
|
pqueue_free(d1->sent_messages);
|
106
106
|
OPENSSL_free(d1);
|
107
|
-
ssl3_free(
|
107
|
+
ssl3_free(ssl);
|
108
108
|
return 0;
|
109
109
|
}
|
110
110
|
|
111
|
-
|
111
|
+
ssl->d1 = d1;
|
112
112
|
|
113
|
-
/* Set the version to the highest version
|
114
|
-
* state of |s->enc_method| and what the API reports as the version prior to
|
115
|
-
* negotiation.
|
113
|
+
/* Set the version to the highest supported version.
|
116
114
|
*
|
117
|
-
* TODO(davidben):
|
118
|
-
|
115
|
+
* TODO(davidben): Move this field into |s3|, have it store the normalized
|
116
|
+
* protocol version, and implement this pre-negotiation quirk in |SSL_version|
|
117
|
+
* at the API boundary rather than in internal state. */
|
118
|
+
ssl->version = DTLS1_2_VERSION;
|
119
119
|
return 1;
|
120
120
|
}
|
121
121
|
|
122
|
-
static void dtls1_clear_queues(SSL *
|
122
|
+
static void dtls1_clear_queues(SSL *ssl) {
|
123
123
|
pitem *item = NULL;
|
124
124
|
hm_fragment *frag = NULL;
|
125
125
|
|
126
|
-
while ((item = pqueue_pop(
|
126
|
+
while ((item = pqueue_pop(ssl->d1->buffered_messages)) != NULL) {
|
127
127
|
frag = (hm_fragment *)item->data;
|
128
128
|
dtls1_hm_fragment_free(frag);
|
129
129
|
pitem_free(item);
|
130
130
|
}
|
131
131
|
|
132
|
-
while ((item = pqueue_pop(
|
132
|
+
while ((item = pqueue_pop(ssl->d1->sent_messages)) != NULL) {
|
133
133
|
frag = (hm_fragment *)item->data;
|
134
134
|
dtls1_hm_fragment_free(frag);
|
135
135
|
pitem_free(item);
|
136
136
|
}
|
137
137
|
}
|
138
138
|
|
139
|
-
void dtls1_free(SSL *
|
140
|
-
ssl3_free(
|
139
|
+
void dtls1_free(SSL *ssl) {
|
140
|
+
ssl3_free(ssl);
|
141
141
|
|
142
|
-
if (
|
142
|
+
if (ssl == NULL || ssl->d1 == NULL) {
|
143
143
|
return;
|
144
144
|
}
|
145
145
|
|
146
|
-
dtls1_clear_queues(
|
146
|
+
dtls1_clear_queues(ssl);
|
147
147
|
|
148
|
-
pqueue_free(
|
149
|
-
pqueue_free(
|
148
|
+
pqueue_free(ssl->d1->buffered_messages);
|
149
|
+
pqueue_free(ssl->d1->sent_messages);
|
150
150
|
|
151
|
-
OPENSSL_free(
|
152
|
-
|
151
|
+
OPENSSL_free(ssl->d1);
|
152
|
+
ssl->d1 = NULL;
|
153
153
|
}
|
154
154
|
|
155
155
|
int dtls1_supports_cipher(const SSL_CIPHER *cipher) {
|
@@ -158,19 +158,19 @@ int dtls1_supports_cipher(const SSL_CIPHER *cipher) {
|
|
158
158
|
return cipher->algorithm_enc != SSL_RC4 && cipher->algorithm_enc != SSL_eNULL;
|
159
159
|
}
|
160
160
|
|
161
|
-
void dtls1_start_timer(SSL *
|
161
|
+
void dtls1_start_timer(SSL *ssl) {
|
162
162
|
/* If timer is not set, initialize duration with 1 second */
|
163
|
-
if (
|
164
|
-
|
163
|
+
if (ssl->d1->next_timeout.tv_sec == 0 && ssl->d1->next_timeout.tv_usec == 0) {
|
164
|
+
ssl->d1->timeout_duration = 1;
|
165
165
|
}
|
166
166
|
|
167
167
|
/* Set timeout to current time */
|
168
|
-
get_current_time(
|
168
|
+
get_current_time(ssl, &ssl->d1->next_timeout);
|
169
169
|
|
170
170
|
/* Add duration to current time */
|
171
|
-
|
172
|
-
BIO_ctrl(SSL_get_rbio(
|
173
|
-
&
|
171
|
+
ssl->d1->next_timeout.tv_sec += ssl->d1->timeout_duration;
|
172
|
+
BIO_ctrl(SSL_get_rbio(ssl), BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0,
|
173
|
+
&ssl->d1->next_timeout);
|
174
174
|
}
|
175
175
|
|
176
176
|
int DTLSv1_get_timeout(const SSL *ssl, struct timeval *out) {
|
@@ -213,11 +213,11 @@ int DTLSv1_get_timeout(const SSL *ssl, struct timeval *out) {
|
|
213
213
|
return 1;
|
214
214
|
}
|
215
215
|
|
216
|
-
int dtls1_is_timer_expired(SSL *
|
216
|
+
int dtls1_is_timer_expired(SSL *ssl) {
|
217
217
|
struct timeval timeleft;
|
218
218
|
|
219
219
|
/* Get time left until timeout, return false if no timer running */
|
220
|
-
if (!DTLSv1_get_timeout(
|
220
|
+
if (!DTLSv1_get_timeout(ssl, &timeleft)) {
|
221
221
|
return 0;
|
222
222
|
}
|
223
223
|
|
@@ -230,39 +230,39 @@ int dtls1_is_timer_expired(SSL *s) {
|
|
230
230
|
return 1;
|
231
231
|
}
|
232
232
|
|
233
|
-
void dtls1_double_timeout(SSL *
|
234
|
-
|
235
|
-
if (
|
236
|
-
|
233
|
+
void dtls1_double_timeout(SSL *ssl) {
|
234
|
+
ssl->d1->timeout_duration *= 2;
|
235
|
+
if (ssl->d1->timeout_duration > 60) {
|
236
|
+
ssl->d1->timeout_duration = 60;
|
237
237
|
}
|
238
|
-
dtls1_start_timer(
|
238
|
+
dtls1_start_timer(ssl);
|
239
239
|
}
|
240
240
|
|
241
|
-
void dtls1_stop_timer(SSL *
|
241
|
+
void dtls1_stop_timer(SSL *ssl) {
|
242
242
|
/* Reset everything */
|
243
|
-
|
244
|
-
memset(&
|
245
|
-
|
246
|
-
BIO_ctrl(SSL_get_rbio(
|
247
|
-
&
|
243
|
+
ssl->d1->num_timeouts = 0;
|
244
|
+
memset(&ssl->d1->next_timeout, 0, sizeof(struct timeval));
|
245
|
+
ssl->d1->timeout_duration = 1;
|
246
|
+
BIO_ctrl(SSL_get_rbio(ssl), BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0,
|
247
|
+
&ssl->d1->next_timeout);
|
248
248
|
/* Clear retransmission buffer */
|
249
|
-
dtls1_clear_record_buffer(
|
249
|
+
dtls1_clear_record_buffer(ssl);
|
250
250
|
}
|
251
251
|
|
252
|
-
int dtls1_check_timeout_num(SSL *
|
253
|
-
|
252
|
+
int dtls1_check_timeout_num(SSL *ssl) {
|
253
|
+
ssl->d1->num_timeouts++;
|
254
254
|
|
255
255
|
/* Reduce MTU after 2 unsuccessful retransmissions */
|
256
|
-
if (
|
257
|
-
!(SSL_get_options(
|
258
|
-
long mtu = BIO_ctrl(SSL_get_wbio(
|
256
|
+
if (ssl->d1->num_timeouts > DTLS1_MTU_TIMEOUTS &&
|
257
|
+
!(SSL_get_options(ssl) & SSL_OP_NO_QUERY_MTU)) {
|
258
|
+
long mtu = BIO_ctrl(SSL_get_wbio(ssl), BIO_CTRL_DGRAM_GET_FALLBACK_MTU, 0,
|
259
259
|
NULL);
|
260
260
|
if (mtu >= 0 && mtu <= (1 << 30) && (unsigned)mtu >= dtls1_min_mtu()) {
|
261
|
-
|
261
|
+
ssl->d1->mtu = (unsigned)mtu;
|
262
262
|
}
|
263
263
|
}
|
264
264
|
|
265
|
-
if (
|
265
|
+
if (ssl->d1->num_timeouts > DTLS1_MAX_TIMEOUTS) {
|
266
266
|
/* fail the connection, enough alerts have been sent */
|
267
267
|
OPENSSL_PUT_ERROR(SSL, SSL_R_READ_TIMEOUT_EXPIRED);
|
268
268
|
return -1;
|
@@ -307,21 +307,22 @@ static void get_current_time(const SSL *ssl, struct timeval *out_clock) {
|
|
307
307
|
#endif
|
308
308
|
}
|
309
309
|
|
310
|
-
int dtls1_set_handshake_header(SSL *
|
311
|
-
uint8_t *message = (uint8_t *)
|
312
|
-
const struct hm_header_st *msg_hdr = &
|
310
|
+
int dtls1_set_handshake_header(SSL *ssl, int htype, unsigned long len) {
|
311
|
+
uint8_t *message = (uint8_t *)ssl->init_buf->data;
|
312
|
+
const struct hm_header_st *msg_hdr = &ssl->d1->w_msg_hdr;
|
313
313
|
uint8_t serialised_header[DTLS1_HM_HEADER_LENGTH];
|
314
314
|
uint8_t *p = serialised_header;
|
315
315
|
|
316
|
-
|
317
|
-
|
316
|
+
ssl->d1->handshake_write_seq = ssl->d1->next_handshake_write_seq;
|
317
|
+
ssl->d1->next_handshake_write_seq++;
|
318
318
|
|
319
|
-
dtls1_set_message_header(
|
320
|
-
|
321
|
-
|
319
|
+
dtls1_set_message_header(ssl, htype, len, ssl->d1->handshake_write_seq, 0,
|
320
|
+
len);
|
321
|
+
ssl->init_num = (int)len + DTLS1_HM_HEADER_LENGTH;
|
322
|
+
ssl->init_off = 0;
|
322
323
|
|
323
324
|
/* Buffer the message to handle re-xmits */
|
324
|
-
dtls1_buffer_message(
|
325
|
+
dtls1_buffer_message(ssl);
|
325
326
|
|
326
327
|
/* Add the new message to the handshake hash. Serialize the message
|
327
328
|
* header as if it were a single fragment. */
|
@@ -330,11 +331,11 @@ int dtls1_set_handshake_header(SSL *s, int htype, unsigned long len) {
|
|
330
331
|
s2n(msg_hdr->seq, p);
|
331
332
|
l2n3(0, p);
|
332
333
|
l2n3(msg_hdr->msg_len, p);
|
333
|
-
return ssl3_update_handshake_hash(
|
334
|
+
return ssl3_update_handshake_hash(ssl, serialised_header,
|
334
335
|
sizeof(serialised_header)) &&
|
335
|
-
ssl3_update_handshake_hash(
|
336
|
+
ssl3_update_handshake_hash(ssl, message + DTLS1_HM_HEADER_LENGTH, len);
|
336
337
|
}
|
337
338
|
|
338
|
-
int dtls1_handshake_write(SSL *
|
339
|
-
return dtls1_do_handshake_write(
|
339
|
+
int dtls1_handshake_write(SSL *ssl) {
|
340
|
+
return dtls1_do_handshake_write(ssl, dtls1_use_current_epoch);
|
340
341
|
}
|
@@ -124,7 +124,7 @@
|
|
124
124
|
#include "internal.h"
|
125
125
|
|
126
126
|
|
127
|
-
static int do_dtls1_write(SSL *
|
127
|
+
static int do_dtls1_write(SSL *ssl, int type, const uint8_t *buf,
|
128
128
|
unsigned int len, enum dtls1_use_epoch_t use_epoch);
|
129
129
|
|
130
130
|
/* dtls1_get_record reads a new input record. On success, it places it in
|
@@ -232,7 +232,7 @@ void dtls1_read_close_notify(SSL *ssl) {
|
|
232
232
|
*
|
233
233
|
* This function must handle any surprises the peer may have for us, such as
|
234
234
|
* Alert records (e.g. close_notify) and out of records. */
|
235
|
-
int dtls1_read_bytes(SSL *
|
235
|
+
int dtls1_read_bytes(SSL *ssl, int type, unsigned char *buf, int len, int peek) {
|
236
236
|
int al, i, ret;
|
237
237
|
unsigned int n;
|
238
238
|
SSL3_RECORD *rr;
|
@@ -245,9 +245,9 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) {
|
|
245
245
|
return -1;
|
246
246
|
}
|
247
247
|
|
248
|
-
if (!
|
248
|
+
if (!ssl->in_handshake && SSL_in_init(ssl)) {
|
249
249
|
/* type == SSL3_RT_APPLICATION_DATA */
|
250
|
-
i =
|
250
|
+
i = ssl->handshake_func(ssl);
|
251
251
|
if (i < 0) {
|
252
252
|
return i;
|
253
253
|
}
|
@@ -258,24 +258,24 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) {
|
|
258
258
|
}
|
259
259
|
|
260
260
|
start:
|
261
|
-
|
261
|
+
ssl->rwstate = SSL_NOTHING;
|
262
262
|
|
263
|
-
/*
|
264
|
-
*
|
265
|
-
*
|
266
|
-
*
|
267
|
-
rr = &
|
263
|
+
/* ssl->s3->rrec.type - is the type of record
|
264
|
+
* ssl->s3->rrec.data - data
|
265
|
+
* ssl->s3->rrec.off - offset into 'data' for next read
|
266
|
+
* ssl->s3->rrec.length - number of bytes. */
|
267
|
+
rr = &ssl->s3->rrec;
|
268
268
|
|
269
269
|
/* Check for timeout */
|
270
|
-
if (DTLSv1_handle_timeout(
|
270
|
+
if (DTLSv1_handle_timeout(ssl) > 0) {
|
271
271
|
goto start;
|
272
272
|
}
|
273
273
|
|
274
274
|
/* get new packet if necessary */
|
275
275
|
if (rr->length == 0) {
|
276
|
-
ret = dtls1_get_record(
|
276
|
+
ret = dtls1_get_record(ssl);
|
277
277
|
if (ret <= 0) {
|
278
|
-
ret = dtls1_read_failed(
|
278
|
+
ret = dtls1_read_failed(ssl, ret);
|
279
279
|
/* anything other than a timeout is an error */
|
280
280
|
if (ret <= 0) {
|
281
281
|
return ret;
|
@@ -289,9 +289,9 @@ start:
|
|
289
289
|
|
290
290
|
/* If the other end has shut down, throw anything we read away (even in
|
291
291
|
* 'peek' mode) */
|
292
|
-
if (
|
292
|
+
if (ssl->shutdown & SSL_RECEIVED_SHUTDOWN) {
|
293
293
|
rr->length = 0;
|
294
|
-
|
294
|
+
ssl->rwstate = SSL_NOTHING;
|
295
295
|
return 0;
|
296
296
|
}
|
297
297
|
|
@@ -299,8 +299,8 @@ start:
|
|
299
299
|
if (type == rr->type) {
|
300
300
|
/* Make sure that we are not getting application data when we
|
301
301
|
* are doing a handshake for the first time. */
|
302
|
-
if (SSL_in_init(
|
303
|
-
(
|
302
|
+
if (SSL_in_init(ssl) && (type == SSL3_RT_APPLICATION_DATA) &&
|
303
|
+
(ssl->s3->aead_read_ctx == NULL)) {
|
304
304
|
/* TODO(davidben): Is this check redundant with the handshake_func
|
305
305
|
* check? */
|
306
306
|
al = SSL_AD_UNEXPECTED_MESSAGE;
|
@@ -329,7 +329,7 @@ start:
|
|
329
329
|
rr->data += n;
|
330
330
|
if (rr->length == 0) {
|
331
331
|
/* The record has been consumed, so we may now clear the buffer. */
|
332
|
-
ssl_read_buffer_discard(
|
332
|
+
ssl_read_buffer_discard(ssl);
|
333
333
|
}
|
334
334
|
}
|
335
335
|
|
@@ -348,42 +348,42 @@ start:
|
|
348
348
|
goto f_err;
|
349
349
|
}
|
350
350
|
|
351
|
-
if (
|
352
|
-
|
353
|
-
|
351
|
+
if (ssl->msg_callback) {
|
352
|
+
ssl->msg_callback(0, ssl->version, SSL3_RT_ALERT, rr->data, 2, ssl,
|
353
|
+
ssl->msg_callback_arg);
|
354
354
|
}
|
355
355
|
const uint8_t alert_level = rr->data[0];
|
356
356
|
const uint8_t alert_descr = rr->data[1];
|
357
357
|
rr->length -= 2;
|
358
358
|
rr->data += 2;
|
359
359
|
|
360
|
-
if (
|
361
|
-
cb =
|
362
|
-
} else if (
|
363
|
-
cb =
|
360
|
+
if (ssl->info_callback != NULL) {
|
361
|
+
cb = ssl->info_callback;
|
362
|
+
} else if (ssl->ctx->info_callback != NULL) {
|
363
|
+
cb = ssl->ctx->info_callback;
|
364
364
|
}
|
365
365
|
|
366
366
|
if (cb != NULL) {
|
367
367
|
uint16_t alert = (alert_level << 8) | alert_descr;
|
368
|
-
cb(
|
368
|
+
cb(ssl, SSL_CB_READ_ALERT, alert);
|
369
369
|
}
|
370
370
|
|
371
371
|
if (alert_level == SSL3_AL_WARNING) {
|
372
|
-
|
372
|
+
ssl->s3->warn_alert = alert_descr;
|
373
373
|
if (alert_descr == SSL_AD_CLOSE_NOTIFY) {
|
374
|
-
|
374
|
+
ssl->shutdown |= SSL_RECEIVED_SHUTDOWN;
|
375
375
|
return 0;
|
376
376
|
}
|
377
377
|
} else if (alert_level == SSL3_AL_FATAL) {
|
378
378
|
char tmp[16];
|
379
379
|
|
380
|
-
|
381
|
-
|
380
|
+
ssl->rwstate = SSL_NOTHING;
|
381
|
+
ssl->s3->fatal_alert = alert_descr;
|
382
382
|
OPENSSL_PUT_ERROR(SSL, SSL_AD_REASON_OFFSET + alert_descr);
|
383
383
|
BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr);
|
384
384
|
ERR_add_error_data(2, "SSL alert number ", tmp);
|
385
|
-
|
386
|
-
SSL_CTX_remove_session(
|
385
|
+
ssl->shutdown |= SSL_RECEIVED_SHUTDOWN;
|
386
|
+
SSL_CTX_remove_session(ssl->ctx, ssl->session);
|
387
387
|
return 0;
|
388
388
|
} else {
|
389
389
|
al = SSL_AD_ILLEGAL_PARAMETER;
|
@@ -403,8 +403,10 @@ start:
|
|
403
403
|
* Application data must come in the encrypted epoch, and ChangeCipherSpec in
|
404
404
|
* the unencrypted epoch (we never renegotiate). Other cases fall through and
|
405
405
|
* fail with a fatal error. */
|
406
|
-
if ((rr->type == SSL3_RT_APPLICATION_DATA &&
|
407
|
-
|
406
|
+
if ((rr->type == SSL3_RT_APPLICATION_DATA &&
|
407
|
+
ssl->s3->aead_read_ctx != NULL) ||
|
408
|
+
(rr->type == SSL3_RT_CHANGE_CIPHER_SPEC &&
|
409
|
+
ssl->s3->aead_read_ctx == NULL)) {
|
408
410
|
rr->length = 0;
|
409
411
|
goto start;
|
410
412
|
}
|
@@ -434,11 +436,11 @@ start:
|
|
434
436
|
/* Retransmit our last flight of messages. If the peer sends the second
|
435
437
|
* Finished, they may not have received ours. Only do this for the
|
436
438
|
* first fragment, in case the Finished was fragmented. */
|
437
|
-
if (dtls1_check_timeout_num(
|
439
|
+
if (dtls1_check_timeout_num(ssl) < 0) {
|
438
440
|
return -1;
|
439
441
|
}
|
440
442
|
|
441
|
-
dtls1_retransmit_buffered_messages(
|
443
|
+
dtls1_retransmit_buffered_messages(ssl);
|
442
444
|
}
|
443
445
|
|
444
446
|
rr->length = 0;
|
@@ -453,15 +455,15 @@ start:
|
|
453
455
|
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
454
456
|
|
455
457
|
f_err:
|
456
|
-
ssl3_send_alert(
|
458
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
|
457
459
|
return -1;
|
458
460
|
}
|
459
461
|
|
460
|
-
int dtls1_write_app_data(SSL *
|
462
|
+
int dtls1_write_app_data(SSL *ssl, const void *buf_, int len) {
|
461
463
|
int i;
|
462
464
|
|
463
|
-
if (SSL_in_init(
|
464
|
-
i =
|
465
|
+
if (SSL_in_init(ssl) && !ssl->in_handshake) {
|
466
|
+
i = ssl->handshake_func(ssl);
|
465
467
|
if (i < 0) {
|
466
468
|
return i;
|
467
469
|
}
|
@@ -476,33 +478,33 @@ int dtls1_write_app_data(SSL *s, const void *buf_, int len) {
|
|
476
478
|
return -1;
|
477
479
|
}
|
478
480
|
|
479
|
-
i = dtls1_write_bytes(
|
481
|
+
i = dtls1_write_bytes(ssl, SSL3_RT_APPLICATION_DATA, buf_, len,
|
480
482
|
dtls1_use_current_epoch);
|
481
483
|
return i;
|
482
484
|
}
|
483
485
|
|
484
486
|
/* Call this to write data in records of type 'type' It will return <= 0 if not
|
485
487
|
* all data has been sent or non-blocking IO. */
|
486
|
-
int dtls1_write_bytes(SSL *
|
488
|
+
int dtls1_write_bytes(SSL *ssl, int type, const void *buf, int len,
|
487
489
|
enum dtls1_use_epoch_t use_epoch) {
|
488
490
|
int i;
|
489
491
|
|
490
492
|
assert(len <= SSL3_RT_MAX_PLAIN_LENGTH);
|
491
|
-
|
492
|
-
i = do_dtls1_write(
|
493
|
+
ssl->rwstate = SSL_NOTHING;
|
494
|
+
i = do_dtls1_write(ssl, type, buf, len, use_epoch);
|
493
495
|
return i;
|
494
496
|
}
|
495
497
|
|
496
|
-
static int do_dtls1_write(SSL *
|
498
|
+
static int do_dtls1_write(SSL *ssl, int type, const uint8_t *buf,
|
497
499
|
unsigned int len, enum dtls1_use_epoch_t use_epoch) {
|
498
500
|
/* There should never be a pending write buffer in DTLS. One can't write half
|
499
501
|
* a datagram, so the write buffer is always dropped in
|
500
502
|
* |ssl_write_buffer_flush|. */
|
501
|
-
assert(!ssl_write_buffer_is_pending(
|
503
|
+
assert(!ssl_write_buffer_is_pending(ssl));
|
502
504
|
|
503
505
|
/* If we have an alert to send, lets send it */
|
504
|
-
if (
|
505
|
-
int ret =
|
506
|
+
if (ssl->s3->alert_dispatch) {
|
507
|
+
int ret = ssl->method->ssl_dispatch_alert(ssl);
|
506
508
|
if (ret <= 0) {
|
507
509
|
return ret;
|
508
510
|
}
|
@@ -518,59 +520,59 @@ static int do_dtls1_write(SSL *s, int type, const uint8_t *buf,
|
|
518
520
|
return 0;
|
519
521
|
}
|
520
522
|
|
521
|
-
size_t max_out = len + ssl_max_seal_overhead(
|
523
|
+
size_t max_out = len + ssl_max_seal_overhead(ssl);
|
522
524
|
uint8_t *out;
|
523
525
|
size_t ciphertext_len;
|
524
|
-
if (!ssl_write_buffer_init(
|
525
|
-
!dtls_seal_record(
|
526
|
+
if (!ssl_write_buffer_init(ssl, &out, max_out) ||
|
527
|
+
!dtls_seal_record(ssl, out, &ciphertext_len, max_out, type, buf, len,
|
526
528
|
use_epoch)) {
|
527
|
-
ssl_write_buffer_clear(
|
529
|
+
ssl_write_buffer_clear(ssl);
|
528
530
|
return -1;
|
529
531
|
}
|
530
|
-
ssl_write_buffer_set_len(
|
532
|
+
ssl_write_buffer_set_len(ssl, ciphertext_len);
|
531
533
|
|
532
|
-
int ret = ssl_write_buffer_flush(
|
534
|
+
int ret = ssl_write_buffer_flush(ssl);
|
533
535
|
if (ret <= 0) {
|
534
536
|
return ret;
|
535
537
|
}
|
536
538
|
return (int)len;
|
537
539
|
}
|
538
540
|
|
539
|
-
int dtls1_dispatch_alert(SSL *
|
541
|
+
int dtls1_dispatch_alert(SSL *ssl) {
|
540
542
|
int i, j;
|
541
543
|
void (*cb)(const SSL *ssl, int type, int value) = NULL;
|
542
544
|
uint8_t buf[DTLS1_AL_HEADER_LENGTH];
|
543
545
|
uint8_t *ptr = &buf[0];
|
544
546
|
|
545
|
-
|
547
|
+
ssl->s3->alert_dispatch = 0;
|
546
548
|
|
547
549
|
memset(buf, 0x00, sizeof(buf));
|
548
|
-
*ptr++ =
|
549
|
-
*ptr++ =
|
550
|
+
*ptr++ = ssl->s3->send_alert[0];
|
551
|
+
*ptr++ = ssl->s3->send_alert[1];
|
550
552
|
|
551
|
-
i = do_dtls1_write(
|
553
|
+
i = do_dtls1_write(ssl, SSL3_RT_ALERT, &buf[0], sizeof(buf),
|
552
554
|
dtls1_use_current_epoch);
|
553
555
|
if (i <= 0) {
|
554
|
-
|
556
|
+
ssl->s3->alert_dispatch = 1;
|
555
557
|
} else {
|
556
|
-
if (
|
557
|
-
(void)BIO_flush(
|
558
|
+
if (ssl->s3->send_alert[0] == SSL3_AL_FATAL) {
|
559
|
+
(void)BIO_flush(ssl->wbio);
|
558
560
|
}
|
559
561
|
|
560
|
-
if (
|
561
|
-
|
562
|
-
|
562
|
+
if (ssl->msg_callback) {
|
563
|
+
ssl->msg_callback(1, ssl->version, SSL3_RT_ALERT, ssl->s3->send_alert, 2,
|
564
|
+
ssl, ssl->msg_callback_arg);
|
563
565
|
}
|
564
566
|
|
565
|
-
if (
|
566
|
-
cb =
|
567
|
-
} else if (
|
568
|
-
cb =
|
567
|
+
if (ssl->info_callback != NULL) {
|
568
|
+
cb = ssl->info_callback;
|
569
|
+
} else if (ssl->ctx->info_callback != NULL) {
|
570
|
+
cb = ssl->ctx->info_callback;
|
569
571
|
}
|
570
572
|
|
571
573
|
if (cb != NULL) {
|
572
|
-
j = (
|
573
|
-
cb(
|
574
|
+
j = (ssl->s3->send_alert[0] << 8) | ssl->s3->send_alert[1];
|
575
|
+
cb(ssl, SSL_CB_WRITE_ALERT, j);
|
574
576
|
}
|
575
577
|
}
|
576
578
|
|