Move state and next_state to SSL_HANDSHAKE. state is now initialized to SSL_ST_INIT in SSL_HANDSHAKE. If there is no handshake present, we report SSL_ST_OK. This saves 8 bytes of per-connection post-handshake memory. Change-Id: Idb3f7031045caed005bd7712bc8c4b42c81a1d04 Reviewed-on: https://boringssl-review.googlesource.com/12697 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 2b73409..336689a 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c
@@ -390,8 +390,6 @@ ssl->min_version = ctx->min_version; ssl->max_version = ctx->max_version; - ssl->state = SSL_ST_INIT; - /* RFC 6347 states that implementations SHOULD use an initial timer value of * 1 second. */ ssl->initial_timeout_duration_ms = 1000; @@ -722,7 +720,6 @@ } ssl->s3->total_renegotiations++; - ssl->state = SSL_ST_INIT; return 1; no_renegotiation: @@ -2297,7 +2294,14 @@ return ssl->info_callback; } -int SSL_state(const SSL *ssl) { return ssl->state; } +int SSL_state(const SSL *ssl) { + if (ssl->s3->hs == NULL) { + assert(ssl->s3->initial_handshake_complete); + return SSL_ST_OK; + } + + return ssl->s3->hs->state; +} void SSL_set_state(SSL *ssl, int state) { } @@ -2613,11 +2617,11 @@ } int SSL_is_init_finished(const SSL *ssl) { - return ssl->state == SSL_ST_OK; + return SSL_state(ssl) == SSL_ST_OK; } int SSL_in_init(const SSL *ssl) { - return (ssl->state & SSL_ST_INIT) != 0; + return (SSL_state(ssl) & SSL_ST_INIT) != 0; } int SSL_in_false_start(const SSL *ssl) { @@ -2886,7 +2890,6 @@ * naturally reset at the right points between |SSL_new|, |SSL_clear|, and * |ssl3_new|. */ - ssl->state = SSL_ST_INIT; ssl->rwstate = SSL_NOTHING; BUF_MEM_free(ssl->init_buf);