summaryrefslogtreecommitdiffstats
path: root/lib/libtls/tls.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2018-03-07 19:07:13 +0000
committerderaadt <deraadt@openbsd.org>2018-03-07 19:07:13 +0000
commitd6bdacfdb0b9edd553f9810fcc2c1f3c8e0e5e8d (patch)
tree80561fad967a5157768ba578c1d7b6e97f173d65 /lib/libtls/tls.c
parentRemounting files systems read-only does not work reliably. There (diff)
downloadwireguard-openbsd-d6bdacfdb0b9edd553f9810fcc2c1f3c8e0e5e8d.tar.xz
wireguard-openbsd-d6bdacfdb0b9edd553f9810fcc2c1f3c8e0e5e8d.zip
backout. diff was not tested comprehensively, resulting in a broken tree.
Diffstat (limited to 'lib/libtls/tls.c')
-rw-r--r--lib/libtls/tls.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/lib/libtls/tls.c b/lib/libtls/tls.c
index 4a9db289bd6..c0430d7cd1d 100644
--- a/lib/libtls/tls.c
+++ b/lib/libtls/tls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls.c,v 1.76 2018/03/07 17:17:47 beck Exp $ */
+/* $OpenBSD: tls.c,v 1.77 2018/03/07 19:07:13 deraadt Exp $ */
/*
* Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
*
@@ -19,7 +19,6 @@
#include <errno.h>
#include <limits.h>
-#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
@@ -36,35 +35,28 @@
static struct tls_config *tls_config_default;
-static int tls_init_rv = -1;
-
-static void
-tls_do_init(void)
+int
+tls_init(void)
{
+ static int tls_initialised = 0;
+
+ if (tls_initialised)
+ return (0);
+
SSL_load_error_strings();
SSL_library_init();
if (BIO_sock_init() != 1)
- return;
+ return (-1);
if ((tls_config_default = tls_config_new()) == NULL)
- return;
+ return (-1);
tls_config_default->refcount++;
- tls_init_rv = 0;
- return;
-}
-
-int
-tls_init(void)
-{
- static pthread_once_t once = PTHREAD_ONCE_INIT;
-
- if (pthread_once(&once, tls_do_init) != 0)
- return -1;
+ tls_initialised = 1;
- return tls_init_rv;
+ return (0);
}
const char *