diff options
Diffstat (limited to 'src/lib/libssl/t1_srvr.c')
-rw-r--r-- | src/lib/libssl/t1_srvr.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/libssl/t1_srvr.c b/src/lib/libssl/t1_srvr.c index 6e765e587f..1c1149e49f 100644 --- a/src/lib/libssl/t1_srvr.c +++ b/src/lib/libssl/t1_srvr.c | |||
@@ -80,11 +80,18 @@ SSL_METHOD *TLSv1_server_method(void) | |||
80 | 80 | ||
81 | if (init) | 81 | if (init) |
82 | { | 82 | { |
83 | memcpy((char *)&TLSv1_server_data,(char *)tlsv1_base_method(), | 83 | CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); |
84 | sizeof(SSL_METHOD)); | 84 | |
85 | TLSv1_server_data.ssl_accept=ssl3_accept; | 85 | if (init) |
86 | TLSv1_server_data.get_ssl_method=tls1_get_server_method; | 86 | { |
87 | init=0; | 87 | memcpy((char *)&TLSv1_server_data,(char *)tlsv1_base_method(), |
88 | sizeof(SSL_METHOD)); | ||
89 | TLSv1_server_data.ssl_accept=ssl3_accept; | ||
90 | TLSv1_server_data.get_ssl_method=tls1_get_server_method; | ||
91 | init=0; | ||
92 | } | ||
93 | |||
94 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); | ||
88 | } | 95 | } |
89 | return(&TLSv1_server_data); | 96 | return(&TLSv1_server_data); |
90 | } | 97 | } |