]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
BIO_ssl: Make helper functions configure BIOs for QUIC correctly
authorHugo Landau <hlandau@openssl.org>
Wed, 9 Aug 2023 16:46:32 +0000 (17:46 +0100)
committerHugo Landau <hlandau@openssl.org>
Fri, 1 Sep 2023 09:45:33 +0000 (10:45 +0100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21715)

ssl/bio_ssl.c

index ea72b394a175ac1567a72d22c1566f8d93f00d14..b342c846daa03b88d5b82e9eb4cb6730cbfd3399 100644 (file)
@@ -438,6 +438,12 @@ BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx)
 #ifndef OPENSSL_NO_SOCK
     BIO *ret = NULL, *buf = NULL, *ssl = NULL;
 
+# ifndef OPENSSL_NO_QUIC
+    if (ctx != NULL && IS_QUIC_CTX(ctx))
+        /* Never use buffering for QUIC. */
+        return BIO_new_ssl_connect(ctx);
+# endif
+
     if ((buf = BIO_new(BIO_f_buffer())) == NULL)
         return NULL;
     if ((ssl = BIO_new_ssl_connect(ctx)) == NULL)
@@ -459,6 +465,13 @@ BIO *BIO_new_ssl_connect(SSL_CTX *ctx)
 
     if ((con = BIO_new(BIO_s_connect())) == NULL)
         return NULL;
+
+# ifndef OPENSSL_NO_QUIC
+    if (ctx != NULL && IS_QUIC_CTX(ctx))
+        if (!BIO_set_sock_type(con, SOCK_DGRAM))
+            goto err;
+#endif
+
     if ((ssl = BIO_new_ssl(ctx, 1)) == NULL)
         goto err;
     if ((ret = BIO_push(ssl, con)) == NULL)