summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_sess.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_sess.c')
-rw-r--r--src/lib/libssl/ssl_sess.c56
1 files changed, 28 insertions, 28 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index 541b143384..c114e6ec07 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_sess.c,v 1.59 2017/01/23 04:55:27 beck Exp $ */ 1/* $OpenBSD: ssl_sess.c,v 1.60 2017/01/23 05:13:02 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -449,7 +449,7 @@ ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
449 } 449 }
450 450
451 if (try_session_cache && ret == NULL && 451 if (try_session_cache && ret == NULL &&
452 !(s->session_ctx->session_cache_mode & 452 !(s->session_ctx->internal->session_cache_mode &
453 SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) { 453 SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) {
454 SSL_SESSION data; 454 SSL_SESSION data;
455 data.ssl_version = s->version; 455 data.ssl_version = s->version;
@@ -457,7 +457,7 @@ ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
457 memcpy(data.session_id, session_id, len); 457 memcpy(data.session_id, session_id, len);
458 458
459 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); 459 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
460 ret = lh_SSL_SESSION_retrieve(s->session_ctx->sessions, &data); 460 ret = lh_SSL_SESSION_retrieve(s->session_ctx->internal->sessions, &data);
461 if (ret != NULL) { 461 if (ret != NULL) {
462 /* Don't allow other threads to steal it. */ 462 /* Don't allow other threads to steal it. */
463 CRYPTO_add(&ret->references, 1, 463 CRYPTO_add(&ret->references, 1,
@@ -493,7 +493,7 @@ ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
493 * Add the externally cached session to the internal 493 * Add the externally cached session to the internal
494 * cache as well if and only if we are supposed to. 494 * cache as well if and only if we are supposed to.
495 */ 495 */
496 if (!(s->session_ctx->session_cache_mode & 496 if (!(s->session_ctx->internal->session_cache_mode &
497 SSL_SESS_CACHE_NO_INTERNAL_STORE)) 497 SSL_SESS_CACHE_NO_INTERNAL_STORE))
498 /* 498 /*
499 * The following should not return 1, 499 * The following should not return 1,
@@ -593,12 +593,12 @@ SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c)
593 * later. 593 * later.
594 */ 594 */
595 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX); 595 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
596 s = lh_SSL_SESSION_insert(ctx->sessions, c); 596 s = lh_SSL_SESSION_insert(ctx->internal->sessions, c);
597 597
598 /* 598 /*
599 * s != NULL iff we already had a session with the given PID. 599 * s != NULL iff we already had a session with the given PID.
600 * In this case, s == c should hold (then we did not really modify 600 * In this case, s == c should hold (then we did not really modify
601 * ctx->sessions), or we're in trouble. 601 * ctx->internal->sessions), or we're in trouble.
602 */ 602 */
603 if (s != NULL && s != c) { 603 if (s != NULL && s != c) {
604 /* We *are* in trouble ... */ 604 /* We *are* in trouble ... */
@@ -638,7 +638,7 @@ SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c)
638 while (SSL_CTX_sess_number(ctx) > 638 while (SSL_CTX_sess_number(ctx) >
639 SSL_CTX_sess_get_cache_size(ctx)) { 639 SSL_CTX_sess_get_cache_size(ctx)) {
640 if (!remove_session_lock(ctx, 640 if (!remove_session_lock(ctx,
641 ctx->session_cache_tail, 0)) 641 ctx->internal->session_cache_tail, 0))
642 break; 642 break;
643 else 643 else
644 ctx->internal->stats.sess_cache_full++; 644 ctx->internal->stats.sess_cache_full++;
@@ -664,9 +664,9 @@ remove_session_lock(SSL_CTX *ctx, SSL_SESSION *c, int lck)
664 if ((c != NULL) && (c->session_id_length != 0)) { 664 if ((c != NULL) && (c->session_id_length != 0)) {
665 if (lck) 665 if (lck)
666 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX); 666 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
667 if ((r = lh_SSL_SESSION_retrieve(ctx->sessions, c)) == c) { 667 if ((r = lh_SSL_SESSION_retrieve(ctx->internal->sessions, c)) == c) {
668 ret = 1; 668 ret = 1;
669 r = lh_SSL_SESSION_delete(ctx->sessions, c); 669 r = lh_SSL_SESSION_delete(ctx->internal->sessions, c);
670 SSL_SESSION_list_remove(ctx, c); 670 SSL_SESSION_list_remove(ctx, c);
671 } 671 }
672 if (lck) 672 if (lck)
@@ -934,7 +934,7 @@ SSL_CTX_flush_sessions(SSL_CTX *s, long t)
934 TIMEOUT_PARAM tp; 934 TIMEOUT_PARAM tp;
935 935
936 tp.ctx = s; 936 tp.ctx = s;
937 tp.cache = s->sessions; 937 tp.cache = s->internal->sessions;
938 if (tp.cache == NULL) 938 if (tp.cache == NULL)
939 return; 939 return;
940 tp.time = t; 940 tp.time = t;
@@ -965,23 +965,23 @@ SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s)
965 if ((s->next == NULL) || (s->prev == NULL)) 965 if ((s->next == NULL) || (s->prev == NULL))
966 return; 966 return;
967 967
968 if (s->next == (SSL_SESSION *)&(ctx->session_cache_tail)) { 968 if (s->next == (SSL_SESSION *)&(ctx->internal->session_cache_tail)) {
969 /* last element in list */ 969 /* last element in list */
970 if (s->prev == (SSL_SESSION *)&(ctx->session_cache_head)) { 970 if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
971 /* only one element in list */ 971 /* only one element in list */
972 ctx->session_cache_head = NULL; 972 ctx->internal->session_cache_head = NULL;
973 ctx->session_cache_tail = NULL; 973 ctx->internal->session_cache_tail = NULL;
974 } else { 974 } else {
975 ctx->session_cache_tail = s->prev; 975 ctx->internal->session_cache_tail = s->prev;
976 s->prev->next = 976 s->prev->next =
977 (SSL_SESSION *)&(ctx->session_cache_tail); 977 (SSL_SESSION *)&(ctx->internal->session_cache_tail);
978 } 978 }
979 } else { 979 } else {
980 if (s->prev == (SSL_SESSION *)&(ctx->session_cache_head)) { 980 if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
981 /* first element in list */ 981 /* first element in list */
982 ctx->session_cache_head = s->next; 982 ctx->internal->session_cache_head = s->next;
983 s->next->prev = 983 s->next->prev =
984 (SSL_SESSION *)&(ctx->session_cache_head); 984 (SSL_SESSION *)&(ctx->internal->session_cache_head);
985 } else { 985 } else {
986 /* middle of list */ 986 /* middle of list */
987 s->next->prev = s->prev; 987 s->next->prev = s->prev;
@@ -997,16 +997,16 @@ SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s)
997 if ((s->next != NULL) && (s->prev != NULL)) 997 if ((s->next != NULL) && (s->prev != NULL))
998 SSL_SESSION_list_remove(ctx, s); 998 SSL_SESSION_list_remove(ctx, s);
999 999
1000 if (ctx->session_cache_head == NULL) { 1000 if (ctx->internal->session_cache_head == NULL) {
1001 ctx->session_cache_head = s; 1001 ctx->internal->session_cache_head = s;
1002 ctx->session_cache_tail = s; 1002 ctx->internal->session_cache_tail = s;
1003 s->prev = (SSL_SESSION *)&(ctx->session_cache_head); 1003 s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
1004 s->next = (SSL_SESSION *)&(ctx->session_cache_tail); 1004 s->next = (SSL_SESSION *)&(ctx->internal->session_cache_tail);
1005 } else { 1005 } else {
1006 s->next = ctx->session_cache_head; 1006 s->next = ctx->internal->session_cache_head;
1007 s->next->prev = s; 1007 s->next->prev = s;
1008 s->prev = (SSL_SESSION *)&(ctx->session_cache_head); 1008 s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
1009 ctx->session_cache_head = s; 1009 ctx->internal->session_cache_head = s;
1010 } 1010 }
1011} 1011}
1012 1012
@@ -1091,7 +1091,7 @@ SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e)
1091 ENGINE_finish(e); 1091 ENGINE_finish(e);
1092 return 0; 1092 return 0;
1093 } 1093 }
1094 ctx->client_cert_engine = e; 1094 ctx->internal->client_cert_engine = e;
1095 return 1; 1095 return 1;
1096} 1096}
1097#endif 1097#endif