diff --git a/crypto/err/err.c b/crypto/err/err.c index b0fd19e7ae29756408ca41d8c9356ddc982e96fa..fd2ea8194afc01e1a560ff37d569a314e4038da6 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -740,7 +740,7 @@ const char *ERR_reason_error_string(unsigned long e) return ((p == NULL) ? NULL : p->string); } -void ERR_remove_thread_state(void) +void err_delete_thread_state(void) { ERR_STATE *state = ERR_get_state(); if (state == NULL) @@ -750,10 +750,15 @@ void ERR_remove_thread_state(void) ERR_STATE_free(state); } +#if OPENSSL_API_COMPAT < 0x10000000L +void ERR_remove_thread_state(void *dummy) +{ +} +#endif + #if OPENSSL_API_COMPAT < 0x10000000L void ERR_remove_state(unsigned long pid) { - ERR_remove_thread_state(); } #endif diff --git a/crypto/include/internal/err_int.h b/crypto/include/internal/err_int.h index 7f1037e939f1066cddde55b75c6e7f2b7afe962e..0aebe8466e92895ccbefab3df9db611e3028ad16 100644 --- a/crypto/include/internal/err_int.h +++ b/crypto/include/internal/err_int.h @@ -13,5 +13,6 @@ void err_load_crypto_strings_int(void); void err_cleanup(void); +void err_delete_thread_state(void); #endif diff --git a/crypto/init.c b/crypto/init.c index 48f74c496c0c73b9490fe2f8aca140cd122824e3..938bf78a39cef71b34e12e2ed14a515c6fc57b21 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -351,9 +351,9 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals) if (locals->err_state) { #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: " - "ERR_remove_thread_state()\n"); + "err_delete_thread_state()\n"); #endif - ERR_remove_thread_state(); + err_delete_thread_state(); } OPENSSL_free(locals); diff --git a/doc/crypto/ERR_remove_state.pod b/doc/crypto/ERR_remove_state.pod index b011182c47afa8f0b4ce19f8c0bb31fe45c94f33..944365d89c48108d6462c96022296ac703665df4 100644 --- a/doc/crypto/ERR_remove_state.pod +++ b/doc/crypto/ERR_remove_state.pod @@ -2,44 +2,42 @@ =head1 NAME -ERR_remove_thread_state, ERR_remove_state - free a thread's error queue +ERR_remove_thread_state, ERR_remove_state - DEPRECATED =head1 SYNOPSIS - #include - - void ERR_remove_thread_state(void); - Deprecated: #if OPENSSL_API_COMPAT < 0x10000000L void ERR_remove_state(unsigned long pid); #endif -=head1 DESCRIPTION + #if OPENSSL_API_COMPAT < 0x10100000L + void ERR_remove_thread_state(void *); + #endif -ERR_remove_thread_state() frees the error queue associated with the current -thread. +=head1 DESCRIPTION -Since error queue data structures are allocated automatically for new -threads, they must be freed when threads are terminated in order to -avoid memory leaks. +The functions described here were used to free the error queue +associated with the current or specificed thread. -ERR_remove_state is deprecated and has been replaced by -ERR_remove_thread_state. Any argument to this function is ignored and -calling ERR_remove_state is equivalent to B. +They are now deprecated and do nothing, please use +OPENSSL_thread_stop() instead. =head1 RETURN VALUE -ERR_remove_thread_state and ERR_remove_state() return no value. +The functions described here return no value. =head1 SEE ALSO -L +L, L =head1 HISTORY -ERR_remove_state() -was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state() was introduced. +ERR_remove_state() was deprecated in OpenSSL 1.0.0 when +ERR_remove_thread_state() was introduced. + +ERR_remove_thread_state() was deprecated in OpenSSL 1.1.0 when the +thread handling functionality was entirely rewritten. =cut diff --git a/doc/crypto/err.pod b/doc/crypto/err.pod index 33cb19d0cf43b1e2246edade3b8b02d91e0b6b53..a590cd756ad588e6bc7ef97e413220114d3446a9 100644 --- a/doc/crypto/err.pod +++ b/doc/crypto/err.pod @@ -22,7 +22,6 @@ err - error codes int ERR_GET_REASON(unsigned long e); void ERR_clear_error(void); - void ERR_remove_thread_state(void); char *ERR_error_string(unsigned long e, char *buf); const char *ERR_lib_error_string(unsigned long e); @@ -48,6 +47,10 @@ Deprecated: void ERR_remove_state(unsigned long pid); #endif + #if OPENSSL_API_COMPAT < 0x10100000L + void ERR_remove_thread_state(void *); + #endif + #if OPENSSL_API_COMPAT < 0x10100000L void ERR_free_strings(void) #endif @@ -71,9 +74,6 @@ messages is described in L. L can be used to clear the error queue. -Note that L should be used to -avoid memory leaks when threads are terminated. - =head1 ADDING NEW ERROR CODES TO OPENSSL See L if you want to record error codes in the @@ -186,7 +186,6 @@ L, L, L, L, -L, L, L, L diff --git a/include/openssl/err.h b/include/openssl/err.h index ccf2ff72deb35908d719bdec96b3cec9caa4f0e9..e41fdc3efe8339bebd0a54bd19a0fc6136d1a988 100644 --- a/include/openssl/err.h +++ b/include/openssl/err.h @@ -359,9 +359,8 @@ void ERR_load_ERR_strings(void); # define ERR_free_strings() while(0) continue #endif -void ERR_remove_thread_state(void); -DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) /* if zero we - * look it up */ +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) ERR_STATE *ERR_get_state(void); LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void);