---
name: "libressl-SSL_set_session"
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_session"
---

# libressl-SSL\_set\_session(3)

set a TLS/SSL session to be used during TLS/SSL connect

## NAME

**SSL\_set\_session** – set a TLS/SSL session to be used during TLS/SSL connect

## SYNOPSIS

SSL Library (libssl, -lssl) libcrypto

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

*int*\

**SSL\_set\_session**(*SSL \*ssl*, *SSL\_SESSION \*session*);

## DESCRIPTION

**SSL\_set\_session**() sets *session* to be used when the TLS/SSL connection is to be established. **SSL\_set\_session**() is only useful for TLS/SSL clients. When the session is set, the reference count of *session* is incremented by 1. If the session is not reused, the reference count is decremented again during **SSL\_connect**(). Whether the session was reused can be queried with the SSL\_session\_reused(3) call.

If there is already a session set inside *ssl* (because it was set with **SSL\_set\_session**() before or because the same *ssl* was already used for a connection), SSL\_SESSION\_free(3) will be called for that session.

*SSL\_SESSION* objects keep internal link information about the session cache list when being inserted into one *SSL\_CTX* object's session cache. One *SSL\_SESSION* object, regardless of its reference count, must therefore only be used with one *SSL\_CTX* object (and the *SSL* objects created from this *SSL\_CTX* object).

## RETURN VALUES

The following return values can occur:

- 0

  The operation failed; check the error stack to find out the reason.

- 1

  The operation succeeded.

## SEE ALSO

[ssl(3)](/ssl/3.md), SSL\_CTX\_set\_session\_cache\_mode(3), SSL\_get\_session(3), SSL\_SESSION\_free(3), SSL\_session\_reused(3)

## HISTORY

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