[FFmpeg-cvslog] Revert "avformat/tls_openssl: properly get new BIO index"

Kacper Michajłow git at videolan.org
Wed Jul 30 20:46:34 EEST 2025


ffmpeg | branch: master | Kacper Michajłow <kasper93 at gmail.com> | Tue Jul 29 00:39:18 2025 +0200| [daee46ed7efa71ac317abfa835c3d3d00fd8eab4] | committer: Kacper Michajłow

Revert "avformat/tls_openssl: properly get new BIO index"

BIO_get_new_index() is static counter meant to get index for custom bio
type definition. As we can read in the documentation:

> Note that BIO_get_new_index() can only be used 127 times before it
> returns an error.

We cannot call it repeatedly, because it will fail eventually.

To my understanding the index is not needed in our use and we could
safely use BIO_TYPE_NONE. Documentation states:

> type can be set to either BIO_TYPE_NONE or via BIO_get_new_index() if
> a unique type is required for searching (See BIO_find_type(3))

We don't use any search related functions.

This reverts commit 816dad231f5b312fd98e81cc6a6cbaf47c1e26a5.
Fixes: https://github.com/mpv-player/mpv/issues/16589

Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=daee46ed7efa71ac317abfa835c3d3d00fd8eab4
---

 libavformat/tls_openssl.c | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c
index 0a7998210f..499cd19ef5 100644
--- a/libavformat/tls_openssl.c
+++ b/libavformat/tls_openssl.c
@@ -659,14 +659,11 @@ static int url_bio_bputs(BIO *b, const char *str)
     return url_bio_bwrite(b, str, strlen(str));
 }
 
-static av_cold int init_bio_method(URLContext *h)
+static av_cold void init_bio_method(URLContext *h)
 {
     TLSContext *p = h->priv_data;
     BIO *bio;
-    int bio_idx = BIO_get_new_index();
-    if (bio_idx == -1)
-        return AVERROR_EXTERNAL;
-    p->url_bio_method = BIO_meth_new(bio_idx | BIO_TYPE_SOURCE_SINK, "urlprotocol bio");
+    p->url_bio_method = BIO_meth_new(BIO_TYPE_SOURCE_SINK, "urlprotocol bio");
     BIO_meth_set_write(p->url_bio_method, url_bio_bwrite);
     BIO_meth_set_read(p->url_bio_method, url_bio_bread);
     BIO_meth_set_puts(p->url_bio_method, url_bio_bputs);
@@ -677,7 +674,6 @@ static av_cold int init_bio_method(URLContext *h)
     BIO_set_data(bio, p);
 
     SSL_set_bio(p->ssl, bio, bio);
-    return 0;
 }
 
 static void openssl_info_callback(const SSL *ssl, int where, int ret) {
@@ -874,11 +870,7 @@ static int dtls_start(URLContext *h, const char *url, int flags, AVDictionary **
     SSL_set_options(p->ssl, SSL_OP_NO_QUERY_MTU);
     SSL_set_mtu(p->ssl, c->mtu);
     DTLS_set_link_mtu(p->ssl, c->mtu);
-
-    ret = init_bio_method(h);
-    if (ret < 0)
-        goto fail;
-
+    init_bio_method(h);
     if (p->tls_shared.external_sock != 1) {
         if ((ret = ff_tls_open_underlying(&p->tls_shared, h, url, options)) < 0) {
             av_log(p, AV_LOG_ERROR, "Failed to connect %s\n", url);
@@ -956,9 +948,7 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
     }
     SSL_set_ex_data(p->ssl, 0, p);
     SSL_CTX_set_info_callback(p->ctx, openssl_info_callback);
-    ret = init_bio_method(h);
-    if (ret < 0)
-        goto fail;
+    init_bio_method(h);
     if (!c->listen && !c->numerichost) {
         // By default OpenSSL does too lax wildcard matching
         SSL_set_hostflags(p->ssl, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);



More information about the ffmpeg-cvslog mailing list