Fold SSL_want constants into SSL_get_error constants.
There's no sense in having two of these (with similar but slightly
different numbers, no less!). Fold them together and remove the
redundant SSL_want constants. Almost everything uses SSL_get_error.
Update-Note: Most of the SSL_want constants have been removed, except
SSL_NOTHING, SSL_READING, and SSL_WRITING which are used by external
code.
Change-Id: I75727f7cf6333694767ce8129ee6815fd464c163
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37187
Commit-Queue: Adam Langley <agl@google.com>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 80a33bc..9cf14d5 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -201,7 +201,7 @@
void ssl_reset_error_state(SSL *ssl) {
// Functions which use |SSL_get_error| must reset I/O and error state on
// entry.
- ssl->s3->rwstate = SSL_NOTHING;
+ ssl->s3->rwstate = SSL_ERROR_NONE;
ERR_clear_error();
ERR_clear_system_error();
}
@@ -1343,19 +1343,19 @@
}
switch (ssl->s3->rwstate) {
- case SSL_PENDING_SESSION:
- return SSL_ERROR_PENDING_SESSION;
+ case SSL_ERROR_PENDING_SESSION:
+ case SSL_ERROR_PENDING_CERTIFICATE:
+ case SSL_ERROR_HANDOFF:
+ case SSL_ERROR_HANDBACK:
+ case SSL_ERROR_WANT_X509_LOOKUP:
+ case SSL_ERROR_WANT_CHANNEL_ID_LOOKUP:
+ case SSL_ERROR_WANT_PRIVATE_KEY_OPERATION:
+ case SSL_ERROR_PENDING_TICKET:
+ case SSL_ERROR_EARLY_DATA_REJECTED:
+ case SSL_ERROR_WANT_CERTIFICATE_VERIFY:
+ return ssl->s3->rwstate;
- case SSL_CERTIFICATE_SELECTION_PENDING:
- return SSL_ERROR_PENDING_CERTIFICATE;
-
- case SSL_HANDOFF:
- return SSL_ERROR_HANDOFF;
-
- case SSL_HANDBACK:
- return SSL_ERROR_HANDBACK;
-
- case SSL_READING: {
+ case SSL_ERROR_WANT_READ: {
if (ssl->quic_method) {
return SSL_ERROR_WANT_READ;
}
@@ -1377,7 +1377,7 @@
break;
}
- case SSL_WRITING: {
+ case SSL_ERROR_WANT_WRITE: {
BIO *bio = SSL_get_wbio(ssl);
if (BIO_should_write(bio)) {
return SSL_ERROR_WANT_WRITE;
@@ -1395,24 +1395,6 @@
break;
}
-
- case SSL_X509_LOOKUP:
- return SSL_ERROR_WANT_X509_LOOKUP;
-
- case SSL_CHANNEL_ID_LOOKUP:
- return SSL_ERROR_WANT_CHANNEL_ID_LOOKUP;
-
- case SSL_PRIVATE_KEY_OPERATION:
- return SSL_ERROR_WANT_PRIVATE_KEY_OPERATION;
-
- case SSL_PENDING_TICKET:
- return SSL_ERROR_PENDING_TICKET;
-
- case SSL_EARLY_DATA_REJECTED:
- return SSL_ERROR_EARLY_DATA_REJECTED;
-
- case SSL_CERTIFICATE_VERIFY:
- return SSL_ERROR_WANT_CERTIFICATE_VERIFY;
}
return SSL_ERROR_SYSCALL;