mirror of
https://github.com/openbsd/src.git
synced 2025-01-10 06:47:55 -08:00
Move ex_data, next and prev from SSL_SESSION to internal.
ok beck@
This commit is contained in:
parent
18fa7430ca
commit
c24cef59b7
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: ssl.h,v 1.112 2017/01/23 05:13:02 jsing Exp $ */
|
||||
/* $OpenBSD: ssl.h,v 1.113 2017/01/23 05:27:22 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -496,11 +496,6 @@ struct ssl_session_st {
|
||||
|
||||
STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */
|
||||
|
||||
CRYPTO_EX_DATA ex_data; /* application specific data */
|
||||
|
||||
/* These are used to make removal of session-ids more
|
||||
* efficient and to implement a maximum cache size. */
|
||||
struct ssl_session_st *prev, *next;
|
||||
char *tlsext_hostname;
|
||||
|
||||
/* RFC4507 info */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: ssl_locl.h,v 1.156 2017/01/23 05:13:02 jsing Exp $ */
|
||||
/* $OpenBSD: ssl_locl.h,v 1.157 2017/01/23 05:27:22 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -373,6 +373,12 @@ __BEGIN_HIDDEN_DECLS
|
||||
#define NAMED_CURVE_TYPE 3
|
||||
|
||||
typedef struct ssl_session_internal_st {
|
||||
CRYPTO_EX_DATA ex_data; /* application specific data */
|
||||
|
||||
/* These are used to make removal of session-ids more
|
||||
* efficient and to implement a maximum cache size. */
|
||||
struct ssl_session_st *prev, *next;
|
||||
|
||||
/* Used to indicate that session resumption is not allowed.
|
||||
* Applications can also set this bit for a new session via
|
||||
* not_resumable_session_cb to disable session caching and tickets. */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: ssl_sess.c,v 1.60 2017/01/23 05:13:02 jsing Exp $ */
|
||||
/* $OpenBSD: ssl_sess.c,v 1.61 2017/01/23 05:27:22 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -185,13 +185,13 @@ SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
|
||||
int
|
||||
SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, void *arg)
|
||||
{
|
||||
return (CRYPTO_set_ex_data(&s->ex_data, idx, arg));
|
||||
return (CRYPTO_set_ex_data(&s->internal->ex_data, idx, arg));
|
||||
}
|
||||
|
||||
void *
|
||||
SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx)
|
||||
{
|
||||
return (CRYPTO_get_ex_data(&s->ex_data, idx));
|
||||
return (CRYPTO_get_ex_data(&s->internal->ex_data, idx));
|
||||
}
|
||||
|
||||
SSL_SESSION *
|
||||
@ -213,8 +213,8 @@ SSL_SESSION_new(void)
|
||||
ss->references = 1;
|
||||
ss->timeout=60*5+4; /* 5 minute timeout by default */
|
||||
ss->time = time(NULL);
|
||||
ss->prev = NULL;
|
||||
ss->next = NULL;
|
||||
ss->internal->prev = NULL;
|
||||
ss->internal->next = NULL;
|
||||
ss->tlsext_hostname = NULL;
|
||||
|
||||
ss->internal->tlsext_ecpointformatlist_length = 0;
|
||||
@ -222,7 +222,7 @@ SSL_SESSION_new(void)
|
||||
ss->internal->tlsext_ellipticcurvelist_length = 0;
|
||||
ss->internal->tlsext_ellipticcurvelist = NULL;
|
||||
|
||||
CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
|
||||
CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->internal->ex_data);
|
||||
|
||||
return (ss);
|
||||
}
|
||||
@ -695,7 +695,7 @@ SSL_SESSION_free(SSL_SESSION *ss)
|
||||
if (i > 0)
|
||||
return;
|
||||
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
|
||||
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->internal->ex_data);
|
||||
|
||||
explicit_bzero(ss->master_key, sizeof ss->master_key);
|
||||
explicit_bzero(ss->session_id, sizeof ss->session_id);
|
||||
@ -962,50 +962,50 @@ ssl_clear_bad_session(SSL *s)
|
||||
static void
|
||||
SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s)
|
||||
{
|
||||
if ((s->next == NULL) || (s->prev == NULL))
|
||||
if ((s->internal->next == NULL) || (s->internal->prev == NULL))
|
||||
return;
|
||||
|
||||
if (s->next == (SSL_SESSION *)&(ctx->internal->session_cache_tail)) {
|
||||
if (s->internal->next == (SSL_SESSION *)&(ctx->internal->session_cache_tail)) {
|
||||
/* last element in list */
|
||||
if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
|
||||
if (s->internal->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
|
||||
/* only one element in list */
|
||||
ctx->internal->session_cache_head = NULL;
|
||||
ctx->internal->session_cache_tail = NULL;
|
||||
} else {
|
||||
ctx->internal->session_cache_tail = s->prev;
|
||||
s->prev->next =
|
||||
ctx->internal->session_cache_tail = s->internal->prev;
|
||||
s->internal->prev->internal->next =
|
||||
(SSL_SESSION *)&(ctx->internal->session_cache_tail);
|
||||
}
|
||||
} else {
|
||||
if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
|
||||
if (s->internal->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
|
||||
/* first element in list */
|
||||
ctx->internal->session_cache_head = s->next;
|
||||
s->next->prev =
|
||||
ctx->internal->session_cache_head = s->internal->next;
|
||||
s->internal->next->internal->prev =
|
||||
(SSL_SESSION *)&(ctx->internal->session_cache_head);
|
||||
} else {
|
||||
/* middle of list */
|
||||
s->next->prev = s->prev;
|
||||
s->prev->next = s->next;
|
||||
s->internal->next->internal->prev = s->internal->prev;
|
||||
s->internal->prev->internal->next = s->internal->next;
|
||||
}
|
||||
}
|
||||
s->prev = s->next = NULL;
|
||||
s->internal->prev = s->internal->next = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s)
|
||||
{
|
||||
if ((s->next != NULL) && (s->prev != NULL))
|
||||
if ((s->internal->next != NULL) && (s->internal->prev != NULL))
|
||||
SSL_SESSION_list_remove(ctx, s);
|
||||
|
||||
if (ctx->internal->session_cache_head == NULL) {
|
||||
ctx->internal->session_cache_head = s;
|
||||
ctx->internal->session_cache_tail = s;
|
||||
s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
|
||||
s->next = (SSL_SESSION *)&(ctx->internal->session_cache_tail);
|
||||
s->internal->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
|
||||
s->internal->next = (SSL_SESSION *)&(ctx->internal->session_cache_tail);
|
||||
} else {
|
||||
s->next = ctx->internal->session_cache_head;
|
||||
s->next->prev = s;
|
||||
s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
|
||||
s->internal->next = ctx->internal->session_cache_head;
|
||||
s->internal->next->internal->prev = s;
|
||||
s->internal->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
|
||||
ctx->internal->session_cache_head = s;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user