diff options
Diffstat (limited to 'src/lib/libtls/tls.c')
-rw-r--r-- | src/lib/libtls/tls.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index 4a9db289bd..c0430d7cd1 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.76 2018/03/07 17:17:47 beck Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.77 2018/03/07 19:07:13 deraadt Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <errno.h> | 20 | #include <errno.h> |
21 | #include <limits.h> | 21 | #include <limits.h> |
22 | #include <pthread.h> | ||
23 | #include <stdlib.h> | 22 | #include <stdlib.h> |
24 | #include <unistd.h> | 23 | #include <unistd.h> |
25 | 24 | ||
@@ -36,35 +35,28 @@ | |||
36 | 35 | ||
37 | static struct tls_config *tls_config_default; | 36 | static struct tls_config *tls_config_default; |
38 | 37 | ||
39 | static int tls_init_rv = -1; | 38 | int |
40 | 39 | tls_init(void) | |
41 | static void | ||
42 | tls_do_init(void) | ||
43 | { | 40 | { |
41 | static int tls_initialised = 0; | ||
42 | |||
43 | if (tls_initialised) | ||
44 | return (0); | ||
45 | |||
44 | SSL_load_error_strings(); | 46 | SSL_load_error_strings(); |
45 | SSL_library_init(); | 47 | SSL_library_init(); |
46 | 48 | ||
47 | if (BIO_sock_init() != 1) | 49 | if (BIO_sock_init() != 1) |
48 | return; | 50 | return (-1); |
49 | 51 | ||
50 | if ((tls_config_default = tls_config_new()) == NULL) | 52 | if ((tls_config_default = tls_config_new()) == NULL) |
51 | return; | 53 | return (-1); |
52 | 54 | ||
53 | tls_config_default->refcount++; | 55 | tls_config_default->refcount++; |
54 | 56 | ||
55 | tls_init_rv = 0; | 57 | tls_initialised = 1; |
56 | return; | ||
57 | } | ||
58 | |||
59 | int | ||
60 | tls_init(void) | ||
61 | { | ||
62 | static pthread_once_t once = PTHREAD_ONCE_INIT; | ||
63 | |||
64 | if (pthread_once(&once, tls_do_init) != 0) | ||
65 | return -1; | ||
66 | 58 | ||
67 | return tls_init_rv; | 59 | return (0); |
68 | } | 60 | } |
69 | 61 | ||
70 | const char * | 62 | const char * |