boringssl/ssl
David Benjamin e52f4c4642 Replay the entire error queue on ssl_hs_error.
This is analogous to the Go stack's handshakeErr field. Since it's quite
common for callers to run two I/O operations in parallel[*] like
SSL_read and SSL_write (or SSL_read and SSL_do_handshake for client
0-RTT). Accordingly, the new handshake state machine jams itself up on
handshake error, but to fully work with such callers, we should also
replay the error state.

This doesn't yet catch all cases (there are some parts of the read flow
which need to be fixed). Those will be resolved in later changes.

[*] Not actually in parallel, of course, but logically in parallel on a
non-blocking socket.

Bug: 206
Change-Id: I5a4d37a258b9e3fc555b732938b0528b839650f8
Reviewed-on: https://boringssl-review.googlesource.com/21285
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Steven Valdez <svaldez@google.com>
2017-10-09 21:53:33 +00:00
..
test Fix comment about EarlyCCS. 2017-10-06 22:46:57 +00:00
bio_ssl.cc Switch a number of files to C++. 2017-07-12 20:54:02 +00:00
CMakeLists.txt Migrate TLS 1.2 and below state machines to the new style. 2017-08-29 19:23:22 +00:00
custom_extensions.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
d1_both.cc Switch more things to Array. 2017-09-27 18:29:43 +00:00
d1_lib.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
d1_pkt.cc More miscellaneous bools. 2017-09-01 15:07:52 +00:00
d1_srtp.cc Clear a goto in d1_srtp.cc. 2017-09-22 15:15:48 +00:00
dtls_method.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
dtls_record.cc Add experiment without client CCS and fix session ID bug. 2017-09-12 18:05:50 +00:00
handshake_client.cc Inline ssl_clear_tls13_state. 2017-09-27 18:32:34 +00:00
handshake_server.cc Switch more things to Array. 2017-09-27 18:29:43 +00:00
handshake.cc Replay the entire error queue on ssl_hs_error. 2017-10-09 21:53:33 +00:00
internal.h Replay the entire error queue on ssl_hs_error. 2017-10-09 21:53:33 +00:00
s3_both.cc Remove old TLS 1.3 variants (NoSessionID and RecordType). 2017-10-03 18:12:23 +00:00
s3_lib.cc Add experiment without client CCS and fix session ID bug. 2017-09-12 18:05:50 +00:00
s3_pkt.cc Remove old TLS 1.3 variants (NoSessionID and RecordType). 2017-10-03 18:12:23 +00:00
span_test.cc Add bssl::SealRecord and bssl::OpenRecord. 2017-07-24 20:14:08 +00:00
ssl_aead_ctx.cc Add bssl::Span<T>::subspan and use it. 2017-10-02 19:33:28 +00:00
ssl_asn1.cc Make SNI per-connection, not per-session. 2017-09-06 20:25:26 +00:00
ssl_buffer.cc Zero memory in |OPENSSL_free|. 2017-09-06 19:22:46 +00:00
ssl_cert.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
ssl_cipher.cc Switch int to bool in ssl_cipher.cc. 2017-10-02 20:41:20 +00:00
ssl_file.cc Switch OPENSSL_VERSION_NUMBER to 1.1.0. 2017-09-29 04:51:27 +00:00
ssl_key_share.cc Introduce bssl::Array<T> and use it in SSLKeyShare. 2017-09-27 17:29:23 +00:00
ssl_lib.cc Switch int to bool in ssl_cipher.cc. 2017-10-02 20:41:20 +00:00
ssl_privkey.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
ssl_session.cc Add SSL_SESSION_{get,set}_protocol_version. 2017-10-03 19:52:34 +00:00
ssl_stat.cc Migrate TLS 1.2 and below state machines to the new style. 2017-08-29 19:23:22 +00:00
ssl_test.cc Replay the entire error queue on ssl_hs_error. 2017-10-09 21:53:33 +00:00
ssl_transcript.cc Remove unnecessary parameter. 2017-08-31 14:18:26 +00:00
ssl_versions.cc Add SSL_SESSION_{get,set}_protocol_version. 2017-10-03 19:52:34 +00:00
ssl_x509.cc Have fun with lock scopers. 2017-09-28 17:49:37 +00:00
t1_enc.cc Add SSL_SESSION_{get,set}_protocol_version. 2017-10-03 19:52:34 +00:00
t1_lib.cc Add SSL_SESSION_{get,set}_protocol_version. 2017-10-03 19:52:34 +00:00
tls13_both.cc More miscellaneous bools. 2017-09-01 15:07:52 +00:00
tls13_client.cc Inline ssl_clear_tls13_state. 2017-09-27 18:32:34 +00:00
tls13_enc.cc Add TLS 1.3 EXPORTER_SECRET to SSLKEYLOGFILE. 2017-10-04 15:24:58 +00:00
tls13_server.cc Introduce bssl::Array<T> and use it in SSLKeyShare. 2017-09-27 17:29:23 +00:00
tls_method.cc Convert comments in ssl. 2017-08-29 21:33:32 +00:00
tls_record.cc Add experiment without client CCS and fix session ID bug. 2017-09-12 18:05:50 +00:00