---
name: "libressl-SSL_rstate_string"
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_rstate_string"
---

# libressl-SSL\_rstate\_string(3)

get textual description of state of an SSL object during read operation

## NAME

**SSL\_rstate\_string**, **SSL\_rstate\_string\_long** – get textual description of state of an SSL object during read operation

## SYNOPSIS

SSL Library (libssl, -lssl) libcrypto

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

*const* *char* *\**\

**SSL\_rstate\_string**(*SSL \*ssl*);

*const* *char* *\**\

**SSL\_rstate\_string\_long**(*SSL \*ssl*);

## DESCRIPTION

**SSL\_rstate\_string**() returns a 2-letter string indicating the current read state of the *SSL* object *ssl*.

**SSL\_rstate\_string\_long**() returns a string indicating the current read state of the *SSL* object *ssl*.

When performing a read operation, the SSL/TLS engine must parse the record, consisting of header and body. When working in a blocking environment, **SSL\_rstate\_string\[\_long\]**() should always return "RD"/"read done".

This function should only seldom be needed in applications.

## RETURN VALUES

**SSL\_rstate\_string**() and **SSL\_rstate\_string\_long**() can return the following values:

- "RH"/"read header"

  The header of the record is being evaluated.

- "RB"/"read body"

  The body of the record is being evaluated.

- "RD"/"read done"

  The record has been completely processed.

- "unknown"/"unknown"

  The read state is unknown. This should never happen.

## SEE ALSO

[ssl(3)](/ssl/3.md)

## HISTORY

**SSL\_rstate\_string**() and **SSL\_rstate\_string\_long**() first appeared in SSLeay 0.6.0 and have been available since OpenBSD 2.4.
