TLS_ACCEPT_SOCKET(3) | Library Functions Manual | TLS_ACCEPT_SOCKET(3)

# NAME

`tls_accept_socket`, `tls_accept_fds`, `tls_accept_cbs` — accept an incoming client connection in a TLS server

# SYNOPSIS

library “libtls” libssl libcrypto
`#include <tls.h>`

int
`tls_accept_socket`(struct tls *tls, struct tls **cctx, int socket);

int
`tls_accept_fds`(struct tls *tls, struct tls **cctx, int fd_read, int fd_write);

int
`tls_accept_cbs`(struct tls *tls, struct tls **cctx, ssize_t (*tls_read_cb)(struct tls *ctx, void *buf, size_t buflen, void *cb_arg), ssize_t (*tls_write_cb)(struct tls *ctx, const void *buf, size_t buflen, void *cb_arg), void *cb_arg);

# DESCRIPTION

After creating a TLS server context tls with tls_server(3) and configuring it with tls_configure(3), a server can accept a new client connection by calling `tls_accept_socket`() on an already established socket connection.

Alternatively, a new client connection can be accepted over a pair of existing file descriptors by calling `tls_accept_fds`().

Calling `tls_accept_cbs`() allows read and write callback functions to handle data transfers. The specified cb_arg parameter is passed back to the functions, and can contain a pointer to any caller-specified data.

All these functions create a new context suitable for reading and writing and return it in *cctx.

# RETURN VALUES

These functions return 0 on success or -1 on error.

# SEE ALSO

tls_close(3), tls_config_set_session_id(3), tls_configure(3), tls_connect(3), tls_init(3), tls_server(3)

# HISTORY

`tls_accept_socket`() appeared in OpenBSD 5.6 and got its final name in OpenBSD 5.7.

`tls_accept_fds`() appeared in OpenBSD 5.8 and `tls_accept_cbs`() in OpenBSD 6.1.

# AUTHORS

Joel Sing <jsing@openbsd.org>

`tls_accept_cbs`() was written by Tobias Pape <tobias@netshed.de>.

July 7, 2025 | Debian