SSL_set_bio, SSL_set0_rbio, SSL_set0_wbio - connect the SSL object with a BIO
 #include <openssl/ssl.h>
 void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
 void SSL_set0_rbio(SSL *s, BIO *rbio);
 void SSL_set0_wbio(SSL *s, BIO *wbio);
SSL_set0_rbio() connects the BIO rbio for the read operations of
  the ssl object. The SSL engine inherits the behaviour of rbio.
  If the BIO is nonblocking then the ssl object will also have
  nonblocking behaviour. This function transfers ownership of rbio to
  ssl. It will be automatically freed using BIO_free_all(3) when
  the ssl is freed. On calling this function, any existing rbio
  that was previously set will also be freed via a call to
  BIO_free_all(3) (this includes the case where the rbio is set to
  the same value as previously).
SSL_set0_wbio() works in the same as SSL_set0_rbio()
    except that it connects the BIO wbio for the write operations of the
    ssl object. Note that if the rbio and wbio are the same then
    SSL_set0_rbio() and SSL_set0_wbio() each take ownership of one
    reference. Therefore, it may be necessary to increment the number of
    references available using BIO_up_ref(3) before calling the set0
    functions.
SSL_set_bio() is similar to SSL_set0_rbio() and
    SSL_set0_wbio() except that it connects both the rbio and the
    wbio at the same time, and transfers the ownership of rbio and
    wbio to ssl according to the following set of rules:
  - If neither the rbio or wbio have changed from their previous
      values then nothing is done.
- If the rbio and wbio parameters are different and both are
      different to their previously set values then one reference is consumed
      for the rbio and one reference is consumed for the wbio.
- If the rbio and wbio parameters are the same and the
      rbio is not the same as the previously set value then one reference
      is consumed.
- If the rbio and wbio parameters are the same and the
      rbio is the same as the previously set value, then no additional
      references are consumed.
- If the rbio and wbio parameters are different and the
      rbio is the same as the previously set value then one reference is
      consumed for the wbio and no references are consumed for the
      rbio.
- If the rbio and wbio parameters are different and the
      wbio is the same as the previously set value and the old
      rbio and wbio values were the same as each other then one
      reference is consumed for the rbio and no references are consumed
      for the wbio.
- If the rbio and wbio parameters are different and the
      wbio is the same as the previously set value and the old
      rbio and wbio values were different to each other, then one
      reference is consumed for the rbio and one reference is consumed
      for the wbio.
Because of this complexity, this function should be avoided; use
    SSL_set0_rbio() and SSL_set0_wbio() instead.
SSL_set_bio(), SSL_set0_rbio() and SSL_set0_wbio() cannot
  fail.
SSL_get_rbio(3), SSL_connect(3), SSL_accept(3),
  SSL_shutdown(3), ssl(7), bio(7)
SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0.
Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License").
    You may not use this file except in compliance with the License. You can
    obtain a copy in the file LICENSE in the source distribution or at
    <https://www.openssl.org/source/license.html>.