Consistently use session_ctx for session caching.

The TLS 1.3 client logic used ctx instead. This is all moot as
SSL_set_SSL_CTX on a client really wouldn't work, but we should be
consistent. Unfortunately, this moves moving the pointer back to SSL
from SSL_CONFIG.

Change-Id: I45f8241e16f499ad416afd5eceb52dc82af9c4f4
Reviewed-on: https://boringssl-review.googlesource.com/27985
Commit-Queue: David Benjamin <davidben@google.com>
Commit-Queue: Steven Valdez <svaldez@google.com>
Reviewed-by: Steven Valdez <svaldez@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 7b80a03..5a842ac 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -274,7 +274,7 @@
 
 void ssl_update_cache(SSL_HANDSHAKE *hs, int mode) {
   SSL *const ssl = hs->ssl;
-  SSL_CTX *ctx = hs->config->session_ctx;
+  SSL_CTX *ctx = ssl->session_ctx;
   // Never cache sessions with empty session IDs.
   if (ssl->s3->established_session->session_id_length == 0 ||
       ssl->s3->established_session->not_resumable ||
@@ -728,7 +728,7 @@
   SSL_CTX_up_ref(ctx);
   ssl->ctx = ctx;
   SSL_CTX_up_ref(ctx);
-  ssl->config->session_ctx = ctx;
+  ssl->session_ctx = ctx;
 
   if (ctx->supported_group_list) {
     ssl->config->supported_group_list = (uint16_t *)BUF_memdup(
@@ -806,7 +806,6 @@
   }
   Delete(cipher_list);
   Delete(cert);
-  SSL_CTX_free(session_ctx);
   OPENSSL_free(supported_group_list);
   OPENSSL_free(alpn_client_proto_list);
   OPENSSL_free(token_binding_params);
@@ -838,6 +837,7 @@
     ssl->method->ssl_free(ssl);
   }
   SSL_CTX_free(ssl->ctx);
+  SSL_CTX_free(ssl->session_ctx);
 
   OPENSSL_free(ssl);
 }
@@ -2377,7 +2377,7 @@
   }
 
   if (ctx == NULL) {
-    ctx = ssl->config->session_ctx;
+    ctx = ssl->session_ctx;
   }
 
   Delete(ssl->config->cert);