grpc 1.9.1 → 1.10.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -68,22 +68,21 @@
|
|
68
68
|
#include "internal.h"
|
69
69
|
|
70
70
|
|
71
|
+
namespace bssl {
|
71
72
|
|
72
|
-
|
73
|
-
|
73
|
+
// DTLS1_MTU_TIMEOUTS is the maximum number of timeouts to expire
|
74
|
+
// before starting to decrease the MTU.
|
74
75
|
#define DTLS1_MTU_TIMEOUTS 2
|
75
76
|
|
76
|
-
|
77
|
-
|
77
|
+
// DTLS1_MAX_TIMEOUTS is the maximum number of timeouts to expire
|
78
|
+
// before failing the DTLS handshake.
|
78
79
|
#define DTLS1_MAX_TIMEOUTS 12
|
79
80
|
|
80
81
|
int dtls1_new(SSL *ssl) {
|
81
|
-
DTLS1_STATE *d1;
|
82
|
-
|
83
82
|
if (!ssl3_new(ssl)) {
|
84
83
|
return 0;
|
85
84
|
}
|
86
|
-
d1 = OPENSSL_malloc(sizeof *d1);
|
85
|
+
DTLS1_STATE *d1 = (DTLS1_STATE *)OPENSSL_malloc(sizeof *d1);
|
87
86
|
if (d1 == NULL) {
|
88
87
|
ssl3_free(ssl);
|
89
88
|
return 0;
|
@@ -92,11 +91,11 @@ int dtls1_new(SSL *ssl) {
|
|
92
91
|
|
93
92
|
ssl->d1 = d1;
|
94
93
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
94
|
+
// Set the version to the highest supported version.
|
95
|
+
//
|
96
|
+
// TODO(davidben): Move this field into |s3|, have it store the normalized
|
97
|
+
// protocol version, and implement this pre-negotiation quirk in |SSL_version|
|
98
|
+
// at the API boundary rather than in internal state.
|
100
99
|
ssl->version = DTLS1_2_VERSION;
|
101
100
|
return 1;
|
102
101
|
}
|
@@ -110,114 +109,64 @@ void dtls1_free(SSL *ssl) {
|
|
110
109
|
|
111
110
|
dtls_clear_incoming_messages(ssl);
|
112
111
|
dtls_clear_outgoing_messages(ssl);
|
112
|
+
Delete(ssl->d1->last_aead_write_ctx);
|
113
113
|
|
114
114
|
OPENSSL_free(ssl->d1);
|
115
115
|
ssl->d1 = NULL;
|
116
116
|
}
|
117
117
|
|
118
|
-
void DTLSv1_set_initial_timeout_duration(SSL *ssl, unsigned int duration_ms) {
|
119
|
-
ssl->initial_timeout_duration_ms = duration_ms;
|
120
|
-
}
|
121
|
-
|
122
118
|
void dtls1_start_timer(SSL *ssl) {
|
123
|
-
|
119
|
+
// If timer is not set, initialize duration (by default, 1 second)
|
124
120
|
if (ssl->d1->next_timeout.tv_sec == 0 && ssl->d1->next_timeout.tv_usec == 0) {
|
125
121
|
ssl->d1->timeout_duration_ms = ssl->initial_timeout_duration_ms;
|
126
122
|
}
|
127
123
|
|
128
|
-
|
124
|
+
// Set timeout to current time
|
129
125
|
ssl_get_current_time(ssl, &ssl->d1->next_timeout);
|
130
126
|
|
131
|
-
|
127
|
+
// Add duration to current time
|
132
128
|
ssl->d1->next_timeout.tv_sec += ssl->d1->timeout_duration_ms / 1000;
|
133
129
|
ssl->d1->next_timeout.tv_usec += (ssl->d1->timeout_duration_ms % 1000) * 1000;
|
134
130
|
if (ssl->d1->next_timeout.tv_usec >= 1000000) {
|
135
131
|
ssl->d1->next_timeout.tv_sec++;
|
136
132
|
ssl->d1->next_timeout.tv_usec -= 1000000;
|
137
133
|
}
|
138
|
-
BIO_ctrl(ssl->rbio, BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0,
|
139
|
-
&ssl->d1->next_timeout);
|
140
|
-
}
|
141
|
-
|
142
|
-
int DTLSv1_get_timeout(const SSL *ssl, struct timeval *out) {
|
143
|
-
if (!SSL_is_dtls(ssl)) {
|
144
|
-
return 0;
|
145
|
-
}
|
146
|
-
|
147
|
-
/* If no timeout is set, just return NULL */
|
148
|
-
if (ssl->d1->next_timeout.tv_sec == 0 && ssl->d1->next_timeout.tv_usec == 0) {
|
149
|
-
return 0;
|
150
|
-
}
|
151
|
-
|
152
|
-
struct timeval timenow;
|
153
|
-
ssl_get_current_time(ssl, &timenow);
|
154
|
-
|
155
|
-
/* If timer already expired, set remaining time to 0 */
|
156
|
-
if (ssl->d1->next_timeout.tv_sec < timenow.tv_sec ||
|
157
|
-
(ssl->d1->next_timeout.tv_sec == timenow.tv_sec &&
|
158
|
-
ssl->d1->next_timeout.tv_usec <= timenow.tv_usec)) {
|
159
|
-
OPENSSL_memset(out, 0, sizeof(struct timeval));
|
160
|
-
return 1;
|
161
|
-
}
|
162
|
-
|
163
|
-
/* Calculate time left until timer expires */
|
164
|
-
OPENSSL_memcpy(out, &ssl->d1->next_timeout, sizeof(struct timeval));
|
165
|
-
out->tv_sec -= timenow.tv_sec;
|
166
|
-
out->tv_usec -= timenow.tv_usec;
|
167
|
-
if (out->tv_usec < 0) {
|
168
|
-
out->tv_sec--;
|
169
|
-
out->tv_usec += 1000000;
|
170
|
-
}
|
171
|
-
|
172
|
-
/* If remaining time is less than 15 ms, set it to 0 to prevent issues
|
173
|
-
* because of small devergences with socket timeouts. */
|
174
|
-
if (out->tv_sec == 0 && out->tv_usec < 15000) {
|
175
|
-
OPENSSL_memset(out, 0, sizeof(struct timeval));
|
176
|
-
}
|
177
|
-
|
178
|
-
return 1;
|
179
134
|
}
|
180
135
|
|
181
136
|
int dtls1_is_timer_expired(SSL *ssl) {
|
182
137
|
struct timeval timeleft;
|
183
138
|
|
184
|
-
|
139
|
+
// Get time left until timeout, return false if no timer running
|
185
140
|
if (!DTLSv1_get_timeout(ssl, &timeleft)) {
|
186
141
|
return 0;
|
187
142
|
}
|
188
143
|
|
189
|
-
|
144
|
+
// Return false if timer is not expired yet
|
190
145
|
if (timeleft.tv_sec > 0 || timeleft.tv_usec > 0) {
|
191
146
|
return 0;
|
192
147
|
}
|
193
148
|
|
194
|
-
|
149
|
+
// Timer expired, so return true
|
195
150
|
return 1;
|
196
151
|
}
|
197
152
|
|
198
|
-
void dtls1_double_timeout(SSL *ssl) {
|
153
|
+
static void dtls1_double_timeout(SSL *ssl) {
|
199
154
|
ssl->d1->timeout_duration_ms *= 2;
|
200
155
|
if (ssl->d1->timeout_duration_ms > 60000) {
|
201
156
|
ssl->d1->timeout_duration_ms = 60000;
|
202
157
|
}
|
203
|
-
dtls1_start_timer(ssl);
|
204
158
|
}
|
205
159
|
|
206
160
|
void dtls1_stop_timer(SSL *ssl) {
|
207
|
-
/* Reset everything */
|
208
161
|
ssl->d1->num_timeouts = 0;
|
209
|
-
OPENSSL_memset(&ssl->d1->next_timeout, 0, sizeof(
|
162
|
+
OPENSSL_memset(&ssl->d1->next_timeout, 0, sizeof(ssl->d1->next_timeout));
|
210
163
|
ssl->d1->timeout_duration_ms = ssl->initial_timeout_duration_ms;
|
211
|
-
BIO_ctrl(ssl->rbio, BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0,
|
212
|
-
&ssl->d1->next_timeout);
|
213
|
-
/* Clear retransmission buffer */
|
214
|
-
dtls_clear_outgoing_messages(ssl);
|
215
164
|
}
|
216
165
|
|
217
166
|
int dtls1_check_timeout_num(SSL *ssl) {
|
218
167
|
ssl->d1->num_timeouts++;
|
219
168
|
|
220
|
-
|
169
|
+
// Reduce MTU after 2 unsuccessful retransmissions
|
221
170
|
if (ssl->d1->num_timeouts > DTLS1_MTU_TIMEOUTS &&
|
222
171
|
!(SSL_get_options(ssl) & SSL_OP_NO_QUERY_MTU)) {
|
223
172
|
long mtu = BIO_ctrl(ssl->wbio, BIO_CTRL_DGRAM_GET_FALLBACK_MTU, 0, NULL);
|
@@ -227,32 +176,90 @@ int dtls1_check_timeout_num(SSL *ssl) {
|
|
227
176
|
}
|
228
177
|
|
229
178
|
if (ssl->d1->num_timeouts > DTLS1_MAX_TIMEOUTS) {
|
230
|
-
|
179
|
+
// fail the connection, enough alerts have been sent
|
231
180
|
OPENSSL_PUT_ERROR(SSL, SSL_R_READ_TIMEOUT_EXPIRED);
|
232
|
-
return
|
181
|
+
return 0;
|
233
182
|
}
|
234
183
|
|
235
|
-
return
|
184
|
+
return 1;
|
185
|
+
}
|
186
|
+
|
187
|
+
} // namespace bssl
|
188
|
+
|
189
|
+
using namespace bssl;
|
190
|
+
|
191
|
+
void DTLSv1_set_initial_timeout_duration(SSL *ssl, unsigned int duration_ms) {
|
192
|
+
ssl->initial_timeout_duration_ms = duration_ms;
|
193
|
+
}
|
194
|
+
|
195
|
+
int DTLSv1_get_timeout(const SSL *ssl, struct timeval *out) {
|
196
|
+
if (!SSL_is_dtls(ssl)) {
|
197
|
+
return 0;
|
198
|
+
}
|
199
|
+
|
200
|
+
// If no timeout is set, just return 0.
|
201
|
+
if (ssl->d1->next_timeout.tv_sec == 0 && ssl->d1->next_timeout.tv_usec == 0) {
|
202
|
+
return 0;
|
203
|
+
}
|
204
|
+
|
205
|
+
struct OPENSSL_timeval timenow;
|
206
|
+
ssl_get_current_time(ssl, &timenow);
|
207
|
+
|
208
|
+
// If timer already expired, set remaining time to 0.
|
209
|
+
if (ssl->d1->next_timeout.tv_sec < timenow.tv_sec ||
|
210
|
+
(ssl->d1->next_timeout.tv_sec == timenow.tv_sec &&
|
211
|
+
ssl->d1->next_timeout.tv_usec <= timenow.tv_usec)) {
|
212
|
+
OPENSSL_memset(out, 0, sizeof(*out));
|
213
|
+
return 1;
|
214
|
+
}
|
215
|
+
|
216
|
+
// Calculate time left until timer expires.
|
217
|
+
struct OPENSSL_timeval ret;
|
218
|
+
OPENSSL_memcpy(&ret, &ssl->d1->next_timeout, sizeof(ret));
|
219
|
+
ret.tv_sec -= timenow.tv_sec;
|
220
|
+
if (ret.tv_usec >= timenow.tv_usec) {
|
221
|
+
ret.tv_usec -= timenow.tv_usec;
|
222
|
+
} else {
|
223
|
+
ret.tv_usec = 1000000 + ret.tv_usec - timenow.tv_usec;
|
224
|
+
ret.tv_sec--;
|
225
|
+
}
|
226
|
+
|
227
|
+
// If remaining time is less than 15 ms, set it to 0 to prevent issues
|
228
|
+
// because of small divergences with socket timeouts.
|
229
|
+
if (ret.tv_sec == 0 && ret.tv_usec < 15000) {
|
230
|
+
OPENSSL_memset(&ret, 0, sizeof(ret));
|
231
|
+
}
|
232
|
+
|
233
|
+
// Clamp the result in case of overflow.
|
234
|
+
if (ret.tv_sec > INT_MAX) {
|
235
|
+
assert(0);
|
236
|
+
out->tv_sec = INT_MAX;
|
237
|
+
} else {
|
238
|
+
out->tv_sec = ret.tv_sec;
|
239
|
+
}
|
240
|
+
|
241
|
+
out->tv_usec = ret.tv_usec;
|
242
|
+
return 1;
|
236
243
|
}
|
237
244
|
|
238
245
|
int DTLSv1_handle_timeout(SSL *ssl) {
|
239
246
|
ssl_reset_error_state(ssl);
|
240
247
|
|
241
248
|
if (!SSL_is_dtls(ssl)) {
|
249
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
|
242
250
|
return -1;
|
243
251
|
}
|
244
252
|
|
245
|
-
|
253
|
+
// If no timer is expired, don't do anything.
|
246
254
|
if (!dtls1_is_timer_expired(ssl)) {
|
247
255
|
return 0;
|
248
256
|
}
|
249
257
|
|
250
|
-
|
251
|
-
|
252
|
-
if (dtls1_check_timeout_num(ssl) < 0) {
|
258
|
+
if (!dtls1_check_timeout_num(ssl)) {
|
253
259
|
return -1;
|
254
260
|
}
|
255
261
|
|
262
|
+
dtls1_double_timeout(ssl);
|
256
263
|
dtls1_start_timer(ssl);
|
257
264
|
return dtls1_retransmit_outgoing_messages(ssl);
|
258
265
|
}
|
@@ -126,9 +126,11 @@
|
|
126
126
|
#include "internal.h"
|
127
127
|
|
128
128
|
|
129
|
+
namespace bssl {
|
130
|
+
|
129
131
|
int dtls1_get_record(SSL *ssl) {
|
130
132
|
again:
|
131
|
-
switch (ssl->s3->
|
133
|
+
switch (ssl->s3->read_shutdown) {
|
132
134
|
case ssl_shutdown_none:
|
133
135
|
break;
|
134
136
|
case ssl_shutdown_fatal_alert:
|
@@ -138,11 +140,15 @@ again:
|
|
138
140
|
return 0;
|
139
141
|
}
|
140
142
|
|
141
|
-
|
142
|
-
if (
|
143
|
+
// Read a new packet if there is no unconsumed one.
|
144
|
+
if (ssl_read_buffer(ssl).empty()) {
|
143
145
|
int read_ret = ssl_read_buffer_extend_to(ssl, 0 /* unused */);
|
144
146
|
if (read_ret < 0 && dtls1_is_timer_expired(ssl)) {
|
145
|
-
|
147
|
+
// Historically, timeouts were handled implicitly if the caller did not
|
148
|
+
// handle them.
|
149
|
+
//
|
150
|
+
// TODO(davidben): This was to support blocking sockets but affected
|
151
|
+
// non-blocking sockets. Can it be removed?
|
146
152
|
int timeout_ret = DTLSv1_handle_timeout(ssl);
|
147
153
|
if (timeout_ret <= 0) {
|
148
154
|
return timeout_ret;
|
@@ -153,31 +159,31 @@ again:
|
|
153
159
|
return read_ret;
|
154
160
|
}
|
155
161
|
}
|
156
|
-
assert(
|
162
|
+
assert(!ssl_read_buffer(ssl).empty());
|
157
163
|
|
158
|
-
|
164
|
+
Span<uint8_t> body;
|
159
165
|
uint8_t type, alert;
|
160
166
|
size_t consumed;
|
161
|
-
enum ssl_open_record_t open_ret =
|
162
|
-
|
163
|
-
ssl_read_buffer(ssl), ssl_read_buffer_len(ssl));
|
167
|
+
enum ssl_open_record_t open_ret = dtls_open_record(
|
168
|
+
ssl, &type, &body, &consumed, &alert, ssl_read_buffer(ssl));
|
164
169
|
ssl_read_buffer_consume(ssl, consumed);
|
165
170
|
switch (open_ret) {
|
166
171
|
case ssl_open_record_partial:
|
167
|
-
|
172
|
+
// Impossible in DTLS.
|
168
173
|
break;
|
169
174
|
|
170
|
-
case ssl_open_record_success:
|
171
|
-
if (
|
175
|
+
case ssl_open_record_success: {
|
176
|
+
if (body.size() > 0xffff) {
|
172
177
|
OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
|
173
178
|
return -1;
|
174
179
|
}
|
175
180
|
|
176
181
|
SSL3_RECORD *rr = &ssl->s3->rrec;
|
177
182
|
rr->type = type;
|
178
|
-
rr->length =
|
179
|
-
rr->data = (
|
183
|
+
rr->length = static_cast<uint16_t>(body.size());
|
184
|
+
rr->data = body.data();
|
180
185
|
return 1;
|
186
|
+
}
|
181
187
|
|
182
188
|
case ssl_open_record_discard:
|
183
189
|
goto again;
|
@@ -185,11 +191,10 @@ again:
|
|
185
191
|
case ssl_open_record_close_notify:
|
186
192
|
return 0;
|
187
193
|
|
188
|
-
case ssl_open_record_fatal_alert:
|
189
|
-
return -1;
|
190
|
-
|
191
194
|
case ssl_open_record_error:
|
192
|
-
|
195
|
+
if (alert != 0) {
|
196
|
+
ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
|
197
|
+
}
|
193
198
|
return -1;
|
194
199
|
}
|
195
200
|
|
@@ -198,11 +203,11 @@ again:
|
|
198
203
|
return -1;
|
199
204
|
}
|
200
205
|
|
201
|
-
int dtls1_read_app_data(SSL *ssl,
|
202
|
-
int peek) {
|
206
|
+
int dtls1_read_app_data(SSL *ssl, bool *out_got_handshake, uint8_t *buf,
|
207
|
+
int len, int peek) {
|
203
208
|
assert(!SSL_in_init(ssl));
|
204
209
|
|
205
|
-
*out_got_handshake =
|
210
|
+
*out_got_handshake = false;
|
206
211
|
SSL3_RECORD *rr = &ssl->s3->rrec;
|
207
212
|
|
208
213
|
again:
|
@@ -214,9 +219,9 @@ again:
|
|
214
219
|
}
|
215
220
|
|
216
221
|
if (rr->type == SSL3_RT_HANDSHAKE) {
|
217
|
-
|
218
|
-
|
219
|
-
|
222
|
+
// Parse the first fragment header to determine if this is a pre-CCS or
|
223
|
+
// post-CCS handshake record. DTLS resets handshake message numbers on each
|
224
|
+
// handshake, so renegotiations and retransmissions are ambiguous.
|
220
225
|
CBS cbs, body;
|
221
226
|
struct hm_header_st msg_hdr;
|
222
227
|
CBS_init(&cbs, rr->data, rr->length);
|
@@ -229,10 +234,10 @@ again:
|
|
229
234
|
if (msg_hdr.type == SSL3_MT_FINISHED &&
|
230
235
|
msg_hdr.seq == ssl->d1->handshake_read_seq - 1) {
|
231
236
|
if (msg_hdr.frag_off == 0) {
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
if (dtls1_check_timeout_num(ssl)
|
237
|
+
// Retransmit our last flight of messages. If the peer sends the second
|
238
|
+
// Finished, they may not have received ours. Only do this for the
|
239
|
+
// first fragment, in case the Finished was fragmented.
|
240
|
+
if (!dtls1_check_timeout_num(ssl)) {
|
236
241
|
return -1;
|
237
242
|
}
|
238
243
|
|
@@ -243,8 +248,8 @@ again:
|
|
243
248
|
goto again;
|
244
249
|
}
|
245
250
|
|
246
|
-
|
247
|
-
|
251
|
+
// Otherwise, this is a pre-CCS handshake message from an unsupported
|
252
|
+
// renegotiation attempt. Fall through to the error path.
|
248
253
|
}
|
249
254
|
|
250
255
|
if (rr->type != SSL3_RT_APPLICATION_DATA) {
|
@@ -253,7 +258,7 @@ again:
|
|
253
258
|
return -1;
|
254
259
|
}
|
255
260
|
|
256
|
-
|
261
|
+
// Discard empty records.
|
257
262
|
if (rr->length == 0) {
|
258
263
|
goto again;
|
259
264
|
}
|
@@ -268,12 +273,12 @@ again:
|
|
268
273
|
|
269
274
|
OPENSSL_memcpy(buf, rr->data, len);
|
270
275
|
if (!peek) {
|
271
|
-
|
272
|
-
|
276
|
+
// TODO(davidben): Should the record be truncated instead? This is a
|
277
|
+
// datagram transport. See https://crbug.com/boringssl/65.
|
273
278
|
rr->length -= len;
|
274
279
|
rr->data += len;
|
275
280
|
if (rr->length == 0) {
|
276
|
-
|
281
|
+
// The record has been consumed, so we may now clear the buffer.
|
277
282
|
ssl_read_buffer_discard(ssl);
|
278
283
|
}
|
279
284
|
}
|
@@ -281,58 +286,20 @@ again:
|
|
281
286
|
return len;
|
282
287
|
}
|
283
288
|
|
284
|
-
int dtls1_read_change_cipher_spec(SSL *ssl) {
|
285
|
-
SSL3_RECORD *rr = &ssl->s3->rrec;
|
286
|
-
|
287
|
-
again:
|
288
|
-
if (rr->length == 0) {
|
289
|
-
int ret = dtls1_get_record(ssl);
|
290
|
-
if (ret <= 0) {
|
291
|
-
return ret;
|
292
|
-
}
|
293
|
-
}
|
294
|
-
|
295
|
-
/* Drop handshake records silently. The epochs match, so this must be a
|
296
|
-
* retransmit of a message we already received. */
|
297
|
-
if (rr->type == SSL3_RT_HANDSHAKE) {
|
298
|
-
rr->length = 0;
|
299
|
-
goto again;
|
300
|
-
}
|
301
|
-
|
302
|
-
/* Other record types are illegal in this epoch. Note all application data
|
303
|
-
* records come in the encrypted epoch. */
|
304
|
-
if (rr->type != SSL3_RT_CHANGE_CIPHER_SPEC) {
|
305
|
-
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
|
306
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
|
307
|
-
return -1;
|
308
|
-
}
|
309
|
-
|
310
|
-
if (rr->length != 1 || rr->data[0] != SSL3_MT_CCS) {
|
311
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC);
|
312
|
-
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
|
313
|
-
return -1;
|
314
|
-
}
|
315
|
-
|
316
|
-
ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_CHANGE_CIPHER_SPEC, rr->data,
|
317
|
-
rr->length);
|
318
|
-
|
319
|
-
rr->length = 0;
|
320
|
-
ssl_read_buffer_discard(ssl);
|
321
|
-
return 1;
|
322
|
-
}
|
323
|
-
|
324
289
|
void dtls1_read_close_notify(SSL *ssl) {
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
if (ssl->s3->
|
330
|
-
ssl->s3->
|
290
|
+
// Bidirectional shutdown doesn't make sense for an unordered transport. DTLS
|
291
|
+
// alerts also aren't delivered reliably, so we may even time out because the
|
292
|
+
// peer never received our close_notify. Report to the caller that the channel
|
293
|
+
// has fully shut down.
|
294
|
+
if (ssl->s3->read_shutdown == ssl_shutdown_none) {
|
295
|
+
ssl->s3->read_shutdown = ssl_shutdown_close_notify;
|
331
296
|
}
|
332
297
|
}
|
333
298
|
|
334
|
-
int dtls1_write_app_data(SSL *ssl,
|
299
|
+
int dtls1_write_app_data(SSL *ssl, bool *out_needs_handshake,
|
300
|
+
const uint8_t *buf, int len) {
|
335
301
|
assert(!SSL_in_init(ssl));
|
302
|
+
*out_needs_handshake = false;
|
336
303
|
|
337
304
|
if (len > SSL3_RT_MAX_PLAIN_LENGTH) {
|
338
305
|
OPENSSL_PUT_ERROR(SSL, SSL_R_DTLS_MESSAGE_TOO_BIG);
|
@@ -359,9 +326,9 @@ int dtls1_write_app_data(SSL *ssl, const uint8_t *buf, int len) {
|
|
359
326
|
int dtls1_write_record(SSL *ssl, int type, const uint8_t *buf, size_t len,
|
360
327
|
enum dtls1_use_epoch_t use_epoch) {
|
361
328
|
assert(len <= SSL3_RT_MAX_PLAIN_LENGTH);
|
362
|
-
|
363
|
-
|
364
|
-
|
329
|
+
// There should never be a pending write buffer in DTLS. One can't write half
|
330
|
+
// a datagram, so the write buffer is always dropped in
|
331
|
+
// |ssl_write_buffer_flush|.
|
365
332
|
assert(!ssl_write_buffer_is_pending(ssl));
|
366
333
|
|
367
334
|
if (len > SSL3_RT_MAX_PLAIN_LENGTH) {
|
@@ -395,16 +362,17 @@ int dtls1_dispatch_alert(SSL *ssl) {
|
|
395
362
|
}
|
396
363
|
ssl->s3->alert_dispatch = 0;
|
397
364
|
|
398
|
-
|
365
|
+
// If the alert is fatal, flush the BIO now.
|
399
366
|
if (ssl->s3->send_alert[0] == SSL3_AL_FATAL) {
|
400
367
|
BIO_flush(ssl->wbio);
|
401
368
|
}
|
402
369
|
|
403
|
-
ssl_do_msg_callback(ssl, 1 /* write */, SSL3_RT_ALERT, ssl->s3->send_alert
|
404
|
-
2);
|
370
|
+
ssl_do_msg_callback(ssl, 1 /* write */, SSL3_RT_ALERT, ssl->s3->send_alert);
|
405
371
|
|
406
372
|
int alert = (ssl->s3->send_alert[0] << 8) | ssl->s3->send_alert[1];
|
407
373
|
ssl_do_info_callback(ssl, SSL_CB_WRITE_ALERT, alert);
|
408
374
|
|
409
375
|
return 1;
|
410
376
|
}
|
377
|
+
|
378
|
+
} // namespace bssl
|