- Store the state of the thread-shared entropy for global init/cleanup.
- Use curl's thread support of mbedtls for all Windows builds instead of
just when the threaded resolver is used via USE_THREADS_WIN32.
Prior to this change on global cleanup curl builds that have curl thread
support for mbedtls freed the entropy (8b1d2298) but failed to mark that
it had been freed, which caused problems on subsequent init + transfer.
Bug: https://github.com/curl/curl/discussions/11919#discussioncomment-8687105
Reported-by: awesomekosm@users.noreply.github.com
Closes https://github.com/curl/curl/pull/13071
51 lines
1.8 KiB
C
51 lines
1.8 KiB
C
#ifndef HEADER_CURL_MBEDTLS_THREADLOCK_H
|
|
#define HEADER_CURL_MBEDTLS_THREADLOCK_H
|
|
/***************************************************************************
|
|
* _ _ ____ _
|
|
* Project ___| | | | _ \| |
|
|
* / __| | | | |_) | |
|
|
* | (__| |_| | _ <| |___
|
|
* \___|\___/|_| \_\_____|
|
|
*
|
|
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
* Copyright (C) Hoi-Ho Chan, <hoiho.chan@gmail.com>
|
|
*
|
|
* This software is licensed as described in the file COPYING, which
|
|
* you should have received as part of this distribution. The terms
|
|
* are also available at https://curl.se/docs/copyright.html.
|
|
*
|
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
* copies of the Software, and permit persons to whom the Software is
|
|
* furnished to do so, under the terms of the COPYING file.
|
|
*
|
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
* KIND, either express or implied.
|
|
*
|
|
* SPDX-License-Identifier: curl
|
|
*
|
|
***************************************************************************/
|
|
#include "curl_setup.h"
|
|
|
|
#ifdef USE_MBEDTLS
|
|
|
|
#if (defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H)) || \
|
|
defined(_WIN32)
|
|
|
|
int Curl_mbedtlsthreadlock_thread_setup(void);
|
|
int Curl_mbedtlsthreadlock_thread_cleanup(void);
|
|
int Curl_mbedtlsthreadlock_lock_function(int n);
|
|
int Curl_mbedtlsthreadlock_unlock_function(int n);
|
|
|
|
#else
|
|
|
|
#define Curl_mbedtlsthreadlock_thread_setup() 1
|
|
#define Curl_mbedtlsthreadlock_thread_cleanup() 1
|
|
#define Curl_mbedtlsthreadlock_lock_function(x) 1
|
|
#define Curl_mbedtlsthreadlock_unlock_function(x) 1
|
|
|
|
#endif /* USE_THREADS_POSIX || USE_THREADS_WIN32 */
|
|
|
|
#endif /* USE_MBEDTLS */
|
|
|
|
#endif /* HEADER_CURL_MBEDTLS_THREADLOCK_H */
|