SSL_CTX_SET_DOMAIN_FLAGS(3ossl)

πŸ“¦ version 3.5.0, in opensuse-leap 16.0

πŸ’… SSL_CTX_SET_DOMAIN_FLAGS(3ossl) β€” like, the whole domain flags situation

okay so bestie, welcome to the 3ossl manual page for SSL_CTX_set_domain_flags, SSL_CTX_get_domain_flags, SSL_get_domain_flags, SSL_DOMAIN_FLAG_SINGLE_THREAD, SSL_DOMAIN_FLAG_MULTI_THREAD, SSL_DOMAIN_FLAG_THREAD_ASSISTED, SSL_DOMAIN_FLAG_BLOCKING, and SSL_DOMAIN_FLAG_LEGACY_BLOCKING β€” collectively, they control the concurrency model used by a QUIC domain. yes, the whole squad. 🫢


✨ NAME ✨

SSL_CTX_set_domain_flags, SSL_CTX_get_domain_flags, SSL_get_domain_flags, SSL_DOMAIN_FLAG_SINGLE_THREAD, SSL_DOMAIN_FLAG_MULTI_THREAD, SSL_DOMAIN_FLAG_THREAD_ASSISTED, SSL_DOMAIN_FLAG_BLOCKING, SSL_DOMAIN_FLAG_LEGACY_BLOCKING β€” they control the concurrency model used by a QUIC domain. iconic behaviour tbh.


🌸 SYNOPSIS 🌸

#include <openssl/ssl.h>

#define SSL_DOMAIN_FLAG_SINGLE_THREAD
#define SSL_DOMAIN_FLAG_MULTI_THREAD
#define SSL_DOMAIN_FLAG_LEGACY_BLOCKING
#define SSL_DOMAIN_FLAG_BLOCKING
#define SSL_DOMAIN_FLAG_THREAD_ASSISTED

int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t flags);
int SSL_CTX_get_domain_flags(SSL_CTX *ctx, uint64_t *flags);

int SSL_get_domain_flags(SSL *ssl, uint64_t *flags);

πŸ¦‹ DESCRIPTION πŸ¦‹

so, SSL_CTX_set_domain_flags() and SSL_CTX_get_domain_flags() set and get the QUIC domain flags on a SSL_CTX using a QUIC SSL_METHOD. these flags determine the concurrency model which is used for a QUIC domain. and if you're sitting there like "girl what does that even mean", there's a detailed introduction to these concepts in openssl-quic-concurrency(7). go read it, i'll wait. πŸ’…

Applications may use either one the flags here:

  • SSL_DOMAIN_FLAG_SINGLE_THREAD β€” Specifying this flag configures the Single-Threaded Concurrency Model (SCM). one thread, one vibe, no sharing. πŸŽ€
  • SSL_DOMAIN_FLAG_MULTI_THREAD β€” Speciyfing this flag configures the Contentive Concurrency Model (CCM) (unless SSL_DOMAIN_FLAG_THREAD_ASSISTED is also specified). and listen β€” if OpenSSL was built without thread support, this is identical to SSL_DOMAIN_FLAG_SINGLE_THREAD. so like, it's giving multi-thread but it's not. πŸ™ˆ
  • SSL_DOMAIN_FLAG_THREAD_ASSISTED β€” Specifying this flag configures the Thread-Assisted Concurrency Model (TACM). It implies SSL_DOMAIN_FLAG_MULTI_THREAD and SSL_DOMAIN_FLAG_BLOCKING. okay but important: this concurrency model is not available if OpenSSL was built without thread support, in which case attempting to configure it will result in an error. so like… check your build first, bestie. 😭
  • SSL_DOMAIN_FLAG_BLOCKING β€” Enable reliable support for blocking I/O calls, allocating whatever OS resources are necessary to realise this. If this flag is specified, SSL_DOMAIN_FLAG_LEGACY_BLOCKING is ignored. it ate, honestly. πŸ”₯
  • SSL_DOMAIN_FLAG_LEGACY_BLOCKING β€” Enables legacy blocking compatibility mode. See "Legacy Blocking Support Compatibility" in openssl-quic-concurrency(7).

Mutually exclusive flag combinations result in an error (for example, combining SSL_DOMAIN_FLAG_SINGLE_THREAD and SSL_DOMAIN_FLAG_MULTI_THREADED). the audacity of some combinations, fr fr. πŸ’€

Because exactly one concurrency model must be chosen, the domain flags cannot be set to 0 and attempting to do so will result in an error. zero is not a personality, okay? pick a model. ⭐

Changing these flags using SSL_CTX_set_domain_flags() has no effect on QUIC domains which have already been created. like, they're already out there living their lives. you can't retroactively change their whole thing. πŸ¦‹

The default set of domain flags set on a newly created SSL_CTX may vary by OpenSSL version, chosen SSL_METHOD, and operating environment. See openssl-quic-concurrency(7) for details. An application can retrieve the default domain flags by calling SSL_CTX_get_domain_flags() immediately after constructing a SSL_CTX. get ahead of it, bestie, know your defaults. πŸ’–

SSL_get_domain_flags() retrieves the domain flags which are effective for a QUIC domain when called on any QUIC SSL object under that domain. iykyk.


πŸ‘‘ RETURN VALUES πŸ‘‘

SSL_CTX_set_domain_flags(), SSL_CTX_get_domain_flags() and SSL_get_domain_flags() return 1 on success and 0 on failure. classic.

SSL_CTX_set_domain_flags() fails if called with a set of flags which are inconsistent or which cannot be supported given the current environment. vibe check failed, basically. 🧚

SSL_CTX_set_domain_flags() and SSL_CTX_get_domain_flags() fail if called on a SSL_CTX which is not using a QUIC SSL_METHOD. wrong context, babe. not every SSL_CTX is a QUIC SSL_CTX and that's okay. 🌸

SSL_get_domain_flags() fails if called on a non-QUIC SSL object. same energy. πŸ™ˆ


🌈 SEE ALSO 🌈


⭐ HISTORY ⭐

These functions were added in @QUIC_SERVER_VERSION@. new gen behaviour, honestly. ✨


Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


okay that's the whole page, bestie β€” you ate that. πŸ“ this was 3.5.0, dated 2026-09-25, and it's the SSL_CTX_SET_DOMAIN_FLAGS(3ossl) manual, mwah πŸ’‹ go configure a concurrency model responsibly, ily πŸ«ΆπŸ’–βœ¨

πŸ“¦ where this page comes from