BIO: Wire poll descriptor functions in BIO_s_sock
authorHugo Landau <hlandau@openssl.org>
Thu, 14 Sep 2023 07:40:14 +0000 (08:40 +0100)
committerPauli <pauli@openssl.org>
Wed, 20 Sep 2023 01:20:34 +0000 (11:20 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21979)

crypto/bio/bss_sock.c

index f64eb8c843a4ba110ebf658446b6f754f4bcdf2c..4ff4defadff46fe6af5c1771cc683952fb6fdde8 100644 (file)
@@ -215,6 +215,20 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
     case BIO_CTRL_FLUSH:
         ret = 1;
         break;
+    case BIO_CTRL_GET_RPOLL_DESCRIPTOR:
+    case BIO_CTRL_GET_WPOLL_DESCRIPTOR:
+        {
+            BIO_POLL_DESCRIPTOR *pd = ptr;
+
+            if (!b->init) {
+                ret = 0;
+                break;
+            }
+
+            pd->type        = BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD;
+            pd->value.fd    = b->num;
+        }
+        break;
 # ifndef OPENSSL_NO_KTLS
     case BIO_CTRL_SET_KTLS:
         crypto_info = (ktls_crypto_info_t *)ptr;