=pod =head1 NAME SSL_set_bio, SSL_set0_rbio, SSL_set0_wbio - connect the SSL object with a BIO =head1 SYNOPSIS #include 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); =head1 DESCRIPTION SSL_set0_rbio() connects the BIO B for the read operations of the B object. The SSL engine inherits the behaviour of B. If the BIO is non-blocking then the B object will also have non-blocking behaviour. This function transfers ownership of B to B. It will be automatically freed using L when the B is freed. On calling this function, any existing B that was previously set will also be freed via a call to L (this includes the case where the B 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 B for the write operations of the B 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 L before calling the set0 functions. SSL_set_bio() is similar to SSL_set0_rbio() and SSL_set0_wbio() except that it connects both the B and the B at the same time, and transfers the ownership of B and B to B according to the following set of rules: =over 2 =item * If neither the B or B have changed from their previous values then nothing is done. =item * If the B and B 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. =item * If the B and B parameters are the same and the B is not the same as the previously set value then one reference is consumed. =item * If the B and B parameters are the same and the B is the same as the previously set value, then no additional references are consumed. =item * If the B and B parameters are different and the B is the same as the previously set value then one reference is consumed for the B and no references are consumed for the B. =item * If the B and B parameters are different and the B is the same as the previously set value and the old B and B values were the same as each other then one reference is consumed for the B and no references are consumed for the B. =item * If the B and B parameters are different and the B is the same as the previously set value and the old B and B values were different to each other then one reference is consumed for the B and one reference is consumed for the B. =back Because of this complexity, this function should be avoided; use SSL_set0_rbio() and SSL_set0_wbio() instead. =head1 RETURN VALUES SSL_set_bio(), SSL_set_rbio() and SSL_set_wbio() cannot fail. =head1 SEE ALSO L, L, L, L, L, L =head1 HISTORY SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0. =head1 COPYRIGHT Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Licensed under the OpenSSL license (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 L. =cut