aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-10-05 11:28:51 +0100
committerMatt Caswell <matt@openssl.org>2015-10-30 08:39:47 +0000
commit91eac8d567c2717ef7bfd7a5997f8e73057ce780 (patch)
treee90f03a8cf4254b7c3b59c7bce5c4a88860f1581
parentf3ae986218ad2269758f4994ffe137b8233dc0b8 (diff)
downloadopenssl-91eac8d567c2717ef7bfd7a5997f8e73057ce780.zip
openssl-91eac8d567c2717ef7bfd7a5997f8e73057ce780.tar.gz
openssl-91eac8d567c2717ef7bfd7a5997f8e73057ce780.tar.bz2
Add a function to get the info_callback
Remove repeated blocks of checking SSL and then SSL_CTX for the info_callback. Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r--ssl/statem/statem.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c
index f0bb26d..f681ab4 100644
--- a/ssl/statem/statem.c
+++ b/ssl/statem/statem.c
@@ -196,6 +196,16 @@ int ossl_statem_accept(SSL *s)
return state_machine(s, 1);
}
+static void (*get_callback(SSL *s))(const SSL *, int, int)
+{
+ if (s->info_callback != NULL)
+ return s->info_callback;
+ else if (s->ctx->info_callback != NULL)
+ return s->ctx->info_callback;
+
+ return NULL;
+}
+
/*
* The main message flow state machine. We start in the MSG_FLOW_UNINITED or
* MSG_FLOW_RENEGOTIATE state and finish in MSG_FLOW_FINISHED. Valid states and
@@ -241,10 +251,7 @@ static int state_machine(SSL *s, int server) {
ERR_clear_error();
clear_sys_error();
- if (s->info_callback != NULL)
- cb = s->info_callback;
- else if (s->ctx->info_callback != NULL)
- cb = s->ctx->info_callback;
+ cb = get_callback(s);
s->in_handshake++;
if (!SSL_in_init(s) || SSL_in_before(s)) {
@@ -496,10 +503,7 @@ static SUB_STATE_RETURN read_state_machine(SSL *s) {
unsigned long (*max_message_size)(SSL *s);
void (*cb) (const SSL *ssl, int type, int val) = NULL;
- if (s->info_callback != NULL)
- cb = s->info_callback;
- else if (s->ctx->info_callback != NULL)
- cb = s->ctx->info_callback;
+ cb = get_callback(s);
if(s->server) {
transition = server_read_transition;
@@ -696,10 +700,7 @@ static SUB_STATE_RETURN write_state_machine(SSL *s)
int (*construct_message)(SSL *s);
void (*cb) (const SSL *ssl, int type, int val) = NULL;
- if (s->info_callback != NULL)
- cb = s->info_callback;
- else if (s->ctx->info_callback != NULL)
- cb = s->ctx->info_callback;
+ cb = get_callback(s);
if(s->server) {
transition = server_write_transition;