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)
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
void err_load_crypto_strings_int(void);
void err_cleanup(void);
+void err_delete_thread_state(void);
#endif
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);
=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 <openssl/err.h>
-
- 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<ERR_remove_thread_state()>.
+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<err(3)>
+L<err(3)>, L<OPENSSL_thread_stop(3)>
=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
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);
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
L<ERR_clear_error(3)> can be used to clear the
error queue.
-Note that L<ERR_remove_thread_state(3)> should be used to
-avoid memory leaks when threads are terminated.
-
=head1 ADDING NEW ERROR CODES TO OPENSSL
See L<ERR_put_error(3)> if you want to record error codes in the
L<ERR_error_string(3)>,
L<ERR_print_errors(3)>,
L<ERR_load_crypto_strings(3)>,
-L<ERR_remove_thread_state(3)>,
L<ERR_put_error(3)>,
L<ERR_load_strings(3)>,
L<SSL_get_error(3)>
# 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);