From patchwork Fri May 17 15:25:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 48953 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp2950774pzb; Fri, 17 May 2024 08:26:01 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWPmUxF8w5LfygKO0R0mzQN37ZQym8hxHXGdkyhhJsGK1MXd2jHrFPopNSaWhSCx9sf2iz+C7H+L9wVpYhJZwMin7du2TzIsIfVPg== X-Google-Smtp-Source: AGHT+IFzBGov3qLeQYYIKKVbRVN0KaEs6Uf/c2lKTzVBTIscZfG/7gqVD98P+bViY2kLeiVUHXka X-Received: by 2002:a50:cc48:0:b0:573:5c4c:a87a with SMTP id 4fb4d7f45d1cf-5735c4ca8b7mr13588674a12.27.1715959560999; Fri, 17 May 2024 08:26:00 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5733bec0a35si9610072a12.141.2024.05.17.08.26.00; Fri, 17 May 2024 08:26:00 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=fmGWcwnV; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC93468CEDC; Fri, 17 May 2024 18:25:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2028.outbound.protection.outlook.com [40.92.90.28]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DED2268D274 for ; Fri, 17 May 2024 18:25:49 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kclgro7Srv4ngXo22+ZlUDUIfzFa9Wlflcc3gbh3WckmFXwfADkWkfGOsKgU27DQ6xY3JaZc4g8bIHRrD6ll7RBYW06u2YMbrqjfy6Z9bfIj0q3Al4OYEAW4VcHKLGdy7mAdAeV+UbFq9KMM3xmitCIgA2moaxf6aKA/HR1R085TqhmwQBM4LzfI3I0E0m9DkIPH07kLgn6RYudnvgjPevnc5UjDIHnCE+yo6FLhtNDvv2uVof+dZxds37JAXFsIdXSx6LE7z7e0q9wcG6hjpY6UBT0Q9+8NqfwWmXK1IX41CVAP3u1IW9WZDBVoJpB/Z3BPlQNxU0zoc0rLebrBbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=llYIvgdfzGl4vWafeSQoG6cTuAxNk6cwttcRz9nx6qA=; b=lEZk+tC9jVHAyWBmo6ZcK5UKTxutglzLbmqYs9ixMCxOCWS85H5seyumn08ejVyg+QDoXGqQCYVvwzDqitndRZlD2dL2tpUyLzoHTD0QbxSRjoc1ZCoSKz78sqlRFmmjEESzVWje36lPcqaU15l+EguTnBt2goM04kj9qAB5TUxmKGz62mVuT9f00H4Z0ZoGwE2hPSbKeIFRz4X+wTHEK7S9eg7NSixglIRYaYyi9Wu5x6tCdcpS98YB7wMxcR9SA++dKplFp1JlZD6VW4zvuEsRa7+YvCV1M7bg8YN6LCqlhurjqGtBvnujG/fDX0n4t5dYsebNgyM6eqNMsafOog== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=llYIvgdfzGl4vWafeSQoG6cTuAxNk6cwttcRz9nx6qA=; b=fmGWcwnVFtbM5Tlwud8VDnTOVNSkKq0i7ynaQ2nHVg6Jp7xHEzLXkeUk5VscgV4yrlpg0t03EFNzQhpexsNfxOKVHeZpCRxCl1bq29TuYixoT/KlH5hylsGJB8NTKGXTFnJB+yR186VdlCLuHIT1IvjFXnrvLpem0eJ+IAEwND09UpmcYl2H3j1Y60t9UzkruEOlWEUVQbNHepMxE7d3TPxTHj3XX3vtaB42yGWK02Re0vwSSzVVWppJuFIr59K63Pg3gG2zhAmFTNj5gLZy2sAA/M/6pwESybhOrwH+hmCw3S/8bBvA2kwjlDeQ8nteDthbObnA3LpuIaiqd11pCw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0048.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:23b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Fri, 17 May 2024 15:25:47 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%4]) with mapi id 15.20.7544.052; Fri, 17 May 2024 15:25:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 May 2024 17:25:36 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [LzH2P5x1wlvGijwRDtdWb+e72gdMUWGGY6kg2tYRtR0=] X-ClientProxiedBy: FR0P281CA0269.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b5::7) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240517152540.3794055-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0048:EE_ X-MS-Office365-Filtering-Correlation-Id: 1975b701-390f-4280-fa28-08dc7685a03e X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1602099003|1710799017; X-Microsoft-Antispam-Message-Info: jLPF7L2pULagAm8/CY9H6fzEs13LiHrRLyVWLO7T1HuazW0QuLpnr+XqOH8VLExiGqPa5LUECYxnzI773BgyxKha7ygNCV5z5MVhNWcQzNeIhrMC+Ze2dFuAm15AxhwLGIXsLNpqqgXQmEiMXIJIEqYwKbmya9HG+IjOpwCFw4L5MiEg9O18ONYfPVpzA7SqpgE8N/qzP0ahihOn3s56snNYc/7JDMIWmJcdar8XdG/N0IvNag2R134YbbDwxf3XdMyOLQRg3zC0cA4OJJvTa0npMCHRw7EjL6H9zpxMlYtPoxMTJGzVsyhRwIEQ60KpleCudUY+D5XKnFuHg8U7xyR+GCb3OerifMv3H6h1Qrj/nWv338yRbH8XQnMNxxObqawD2x5K4vkIR+fWLLQPOUcodpUucpOgzwvqYjZBfOO8sghIPQ9rWLhhhdDN7UHlZYVuzB8lRcDGcsRBuKo+uVv+wywP39d68O2SYcfGW3srY9aYaaMLZ7gIP3EIc69Xg42ntNqStoFmYdA7Ejsl+bpHiSIhLhIAZfrryKsrlK0Gq7wE6o7WKr3hso5FF2YZ6etOgmT+9N0ALaxUfEzG7AlqutMioCJG1l1DFV9LLGAb9OPjhondQ7VZ8squUFAsDgYeo91wriOAtLiOEXsT/yWYLz+b6mcnt3n+pKIL5F4zqZ7/wgiIE9dhkT0rrhdV X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LFxgurJCnoLSMmTkHh7wdMnp7LWfyeut3VjPZtytd0Fzs2WcWTcbbTQT6Mdb7wrPdiASzOSkMlfTBoPjPOJ4ssl3kucyPK0wtjXh9QVPix+xRwwrTfyDSmlFreDTSPj3BYrhwAY7X5kcEpF5AtSqr3AahLof4f648y3c6JOWQsJhM6qG7GIRP5ibt0++ZFIZ7DwbRa3vUUWDf0F14E2P/t1dn5GdrX+/SyjQZTJteyD2TVWWB1K7cciijmztjIEPJOxFig7McZsNqOr1UJOrckNZWkxSSpxWXe2Miyx04ieAezhYWkDTUelZzeNZoRaQ2Y3xC7oAWlMdtV9nC6TOGBM6z8Mc2AvKKJFD6kv9BXoHMunK8HS4kXaBWwDcRfpwMYx8Od/207kx5z4uU2EeBimk5z26cCO3ZEy5LcwkNNZpzLAKBMM9XEuPiTQGIMxizkmmhioUTfHVaa4kErOTa/zoauQFuqyzjlYSmnzwHyaMXGy07LRB6izTKHpFjOz8gTeudggU2OxQOKhoXX8APM5L3BXLEuf0l+aP32dJMPaR2xavV2RApn2kHMwQ/LgUFFu7aQRyF5IzoAbIMvH8kgHVfHjfWfOQeGZiejeIcmOgUj5Hc7WjiSOYF1uD8PjbPI+fIbIN5MhV4YDMEPBALUxirldjYCaPqHFvYJir/ohDlbBzYfIb9cVhYWKIPEPsdTS9s6P5sPaf9QoysSg7aqAffxPN8rcLkhW322USitoPqEaa6bEIwRDPowuGs2jArAuATFds+cQZtPI5RQHHE8RoZMER+wp6ZgHIOu2hEPbcSIvTpesBAy0IXXsNjY4ZzKU5cEr1wRnQ34TQ0m2qiRGq/09Gv1DwugfKlKpgBf13kOiwwe9I8R4fxA0I0ZTgu05tvN11nQvicSvwZHUtQBAM59tQBUm6msY0ecO2/d54HRxdqLQVELI6p4Wv5FhkLCmvxNwYySWpXUwaWIHsIOoYCq9a/wv2+6mhSsgmE4W8z63Y5oLCTVL0x+0SSQIO7ZArnQnCiRWJ0d345xBpVcWcvBy94LuKNCFRBwpMZ5ApKKj6bEMdt08Nm2xJSGvfjHGzvUyKRQ9M8NU2CEgBFDQpZv/+LS7FKyWUYehLtXTrhB/pm18xTUKa77Cw8Ruq42I/kTDVgfRUg346aB/Ox6aO0roMhkVf3+XzF0AdBC9z5avBnmXxpjIGfURDI7LILwSV07RjFYydvOTVvZMP5dq9o4npboPdGYMz/YKiZMIEPVBMRco0nIK1UWQESVW/oe3b6me/CnhgZF1RgoE7hg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1975b701-390f-4280-fa28-08dc7685a03e X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2024 15:25:47.2860 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0048 Subject: [FFmpeg-devel] [PATCH 2/6] avformat/tls_openssl: #if ff_openssl_init/deinit() away if possible X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: aCK9jxAYGi7l These functions do nothing useful when used with a non-ancient version of openssl (namely 1.1.0 or above). Signed-off-by: Andreas Rheinhardt --- libavformat/network.c | 9 +++++++-- libavformat/tls_openssl.c | 34 ++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/libavformat/network.c b/libavformat/network.c index f752efc411..6db82b6d26 100644 --- a/libavformat/network.c +++ b/libavformat/network.c @@ -18,8 +18,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" #include "config_components.h" +#if CONFIG_TLS_PROTOCOL && CONFIG_OPENSSL +#include +#endif + #include #include "network.h" #include "tls.h" @@ -31,7 +36,7 @@ int ff_tls_init(void) { #if CONFIG_TLS_PROTOCOL -#if CONFIG_OPENSSL +#if CONFIG_OPENSSL && OPENSSL_VERSION_NUMBER < 0x10100000L int ret; if ((ret = ff_openssl_init()) < 0) return ret; @@ -46,7 +51,7 @@ int ff_tls_init(void) void ff_tls_deinit(void) { #if CONFIG_TLS_PROTOCOL -#if CONFIG_OPENSSL +#if CONFIG_OPENSSL && OPENSSL_VERSION_NUMBER < 0x10100000L ff_openssl_deinit(); #endif #if CONFIG_GNUTLS diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c index 89d7c6e1ea..8b0cf9efb2 100644 --- a/libavformat/tls_openssl.c +++ b/libavformat/tls_openssl.c @@ -23,16 +23,12 @@ #include "os_support.h" #include "url.h" #include "tls.h" -#include "libavutil/mem.h" #include "libavutil/opt.h" -#include "libavutil/thread.h" #include #include #include -static int openssl_init; - typedef struct TLSContext { const AVClass *class; TLSShared tls_shared; @@ -44,10 +40,22 @@ typedef struct TLSContext { int io_err; } TLSContext; +/* OpenSSL 1.0.2 or below, then you would use SSL_library_init. If you are + * using OpenSSL 1.1.0 or above, then the library will initialize + * itself automatically. + * https://wiki.openssl.org/index.php/Library_Initialization + */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +#include "libavutil/thread.h" + static AVMutex openssl_mutex = AV_MUTEX_INITIALIZER; -#if HAVE_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L +static int openssl_init; + +#if HAVE_THREADS #include +#include "libavutil/mem.h" + pthread_mutex_t *openssl_mutexes; static void openssl_lock(int mode, int type, const char *file, int line) { @@ -68,16 +76,9 @@ int ff_openssl_init(void) { ff_mutex_lock(&openssl_mutex); if (!openssl_init) { - /* OpenSSL 1.0.2 or below, then you would use SSL_library_init. If you are - * using OpenSSL 1.1.0 or above, then the library will initialize - * itself automatically. - * https://wiki.openssl.org/index.php/Library_Initialization - */ -#if OPENSSL_VERSION_NUMBER < 0x10100000L SSL_library_init(); SSL_load_error_strings(); -#endif -#if HAVE_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L +#if HAVE_THREADS if (!CRYPTO_get_locking_callback()) { int i; openssl_mutexes = av_malloc_array(sizeof(pthread_mutex_t), CRYPTO_num_locks()); @@ -106,7 +107,7 @@ void ff_openssl_deinit(void) ff_mutex_lock(&openssl_mutex); openssl_init--; if (!openssl_init) { -#if HAVE_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L +#if HAVE_THREADS if (CRYPTO_get_locking_callback() == openssl_lock) { int i; CRYPTO_set_locking_callback(NULL); @@ -118,6 +119,7 @@ void ff_openssl_deinit(void) } ff_mutex_unlock(&openssl_mutex); } +#endif static int print_tls_error(URLContext *h, int ret) { @@ -157,7 +159,9 @@ static int tls_close(URLContext *h) if (c->url_bio_method) BIO_meth_free(c->url_bio_method); #endif +#if OPENSSL_VERSION_NUMBER < 0x10100000L ff_openssl_deinit(); +#endif return 0; } @@ -253,8 +257,10 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op BIO *bio; int ret; +#if OPENSSL_VERSION_NUMBER < 0x10100000L if ((ret = ff_openssl_init()) < 0) return ret; +#endif if ((ret = ff_tls_open_underlying(c, h, uri, options)) < 0) goto fail;