diff options
Diffstat (limited to 'src/lib/libssl/t1_clnt.c')
-rw-r--r-- | src/lib/libssl/t1_clnt.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/libssl/t1_clnt.c b/src/lib/libssl/t1_clnt.c index 9ad518f9f4..57205fb429 100644 --- a/src/lib/libssl/t1_clnt.c +++ b/src/lib/libssl/t1_clnt.c | |||
@@ -79,11 +79,18 @@ SSL_METHOD *TLSv1_client_method(void) | |||
79 | 79 | ||
80 | if (init) | 80 | if (init) |
81 | { | 81 | { |
82 | memcpy((char *)&TLSv1_client_data,(char *)tlsv1_base_method(), | 82 | CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); |
83 | sizeof(SSL_METHOD)); | 83 | |
84 | TLSv1_client_data.ssl_connect=ssl3_connect; | 84 | if (init) |
85 | TLSv1_client_data.get_ssl_method=tls1_get_client_method; | 85 | { |
86 | init=0; | 86 | memcpy((char *)&TLSv1_client_data,(char *)tlsv1_base_method(), |
87 | sizeof(SSL_METHOD)); | ||
88 | TLSv1_client_data.ssl_connect=ssl3_connect; | ||
89 | TLSv1_client_data.get_ssl_method=tls1_get_client_method; | ||
90 | init=0; | ||
91 | } | ||
92 | |||
93 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); | ||
87 | } | 94 | } |
88 | return(&TLSv1_client_data); | 95 | return(&TLSv1_client_data); |
89 | } | 96 | } |