---
name: "libressl-SSL_set_bio"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-SSL_set_bio"
---

# libressl-SSL\_set\_bio(3)

connect the SSL object with a BIO

## NAME

**SSL\_set\_bio** – connect the SSL object with a BIO

## SYNOPSIS

SSL Library (libssl, -lssl) libcrypto

**#include \<openssl/ssl.h\>**

*void*\

**SSL\_set\_bio**(*SSL \*ssl*, *BIO \*rbio*, *BIO \*wbio*);

## DESCRIPTION

**SSL\_set\_bio**() connects the*BIO* s *rbio* and *wbio* for the read and write operations of the TLS/SSL (encrypted) side of *ssl*.

The SSL engine inherits the behaviour of *rbio* and *wbio*, respectively. If a *BIO* is non-blocking, the *ssl* will also have non-blocking behaviour.

If there was already a *BIO* connected to *ssl*, BIO\_free(3) will be called (for both the reading and writing side, if different).

## SEE ALSO

BIO\_new(3), [ssl(3)](/ssl/3.md), SSL\_accept(3), SSL\_connect(3), SSL\_get\_rbio(3), SSL\_shutdown(3)

## HISTORY

**SSL\_set\_bio**() first appeared in SSLeay 0.6.0 and has been available since OpenBSD 2.4.
