=pod

=head1 NAME

SSL_get_rbio, SSL_get_wbio - get BIO linked to an SSL object

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 BIO *SSL_get_rbio(SSL *ssl);
 BIO *SSL_get_wbio(SSL *ssl);

=head1 DESCRIPTION

SSL_get_rbio() and SSL_get_wbio() return pointers to the BIOs for the
read or the write channel, which can be different. The reference count
of the BIO is not incremented.

=head1 RETURN VALUES

The following return values can occur:

=over 4

=item NULL

No BIO was connected to the SSL object

=item Any other pointer

The BIO linked to B<ssl>.

=back

=head1 SEE ALSO

L<SSL_set_bio(3)|SSL_set_bio(3)>, L<ssl(3)|ssl(3)> , L<bio(3)|bio(3)>

=cut
