SSL_NEW_DOMAIN(3SSL)
π SSL_NEW_DOMAIN(3SSL) β the OpenSSL manual, but make it cute β¨
okay so bestie, you know how the OpenSSL squad maintains their own man pages? yeah. this one lives in the 3SSL manual section and it's all about QUIC event domains π¦. SSL_new_domain, SSL_is_domain and SSL_get0_domain are the three functions here and honestly? they're iconic.
πΈ NAME πΈ
SSL_new_domain, SSL_is_domain, SSL_get0_domain β the SSL object interface for managing QUIC event domains, periodt π
β¨ SYNOPSIS β¨
#include <openssl/ssl.h>
SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags);
int SSL_is_domain(SSL *ssl);
SSL *SSL_get0_domain(SSL *ssl);
look at that. three functions, one header, zero drama β¨
π«Ά DESCRIPTION π«Ά
so, SSL_new_domain() makes you a brand-new QUIC event domain, and it represents it as an SSL object. the cute nickname for this is a QUIC domain SSL object β QDSO, iykyk π. if you want the full lore on what a QUIC event domain even is, that's all in openssl-quic-concurrency(7).
now the flags argument on SSL_new_domain()? that's you handing over a set of domain flags, and here's the tea β: if your flags doesn't specify one of SSL_DOMAIN_FLAG_SINGLE_THREAD, SSL_DOMAIN_FLAG_MULTI_THREAD or SSL_DOMAIN_FLAG_THREAD_ASSISTED, then the domain flags configured on the SSL_CTX get inherited as the default, and any other flags you passed in flags get added onto that inherited set. otherwise (so: if you did name one of those three), the domain flags in flags are just used as-is. the deets on which domain flags exist and how to set them on an SSL_CTX are in SSL_CTX_set_domain_flags(3).
a QUIC domain SSL object gets managed exactly like any other SSL object β it can be refcounted and freed normally, no special treatment π. and it's the parent of a whole bunch of child objects, like QUIC listener SSL objects. once you've created a QUIC domain SSL object, you can create a listener under it with SSL_new_listener_from(3) π.
SSL_is_domain() returns 1 if a SSL object is a QUIC domain SSL object.
SSL_get0_domain() gets you a pointer to the QUIC domain SSL object in a SSL object hierarchy (if there is one β that "(if any)" is doing work, bestie).
and this part is honestly kind of the rule of the house: all SSL objects in a QUIC event domain use the same domain flags, and the domain flags for a QUIC domain cannot be changed after construction. so no take-backsies π.
π Supported Operations π
a QUIC domain SSL object literally exists to contain other QUIC SSL objects and to provide unified event handling. that's its whole personality. so it only supports this specific list of operations:
- Standard reference counting and free operations, like
SSL_up_ref(3)andSSL_free(3); - Event processing and polling enablement APIs such as
SSL_handle_events(3), andSSL_get_event_timeout(3). - Creating listeners under the domain using
SSL_new_listener_from(3).
the basic workflow for a domain object goes like:
- Create a new domain object using
SSL_new_domain()with aSSL_CTXthat uses a supportedSSL_METHOD(such asOSSL_QUIC_server_method(3)); - Create listeners under the domain using
SSL_new_listener_from(3).
for the full listener situation, go read SSL_new_listener_from(3).
also, rn? domain SSL objects are only supported for QUIC usage via any QUIC SSL_METHOD. that's the vibe check and it passed β
.
π₯ RETURN VALUES π₯
SSL_new_domain()returns a new domain SSL object, orNULLon failure πSSL_is_domain()returns0or1, depending on the type of the SSL object you called it onSSL_get0_domain()returns an SSL object pointer (which, yes, could literally be the same object you called it on) orNULL
π SEE ALSO π
SSL_new_listener_from(3) SSL_handle_events(3), SSL_CTX_set_domain_flags(3), openssl-quic-concurrency(7)
π HISTORY π
These functions were added in OpenSSL 3.5. new-ish, freshly iconic π
π COPYRIGHT π
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>.
and that's the whole page, bestie π this was SSL_NEW_DOMAIN(3SSL) from OpenSSL 4.0.3, dated 2026-09-29. slay, go build a QUIC domain π¦β¨
π¦ where this page comes from
- ubuntu stonking: libssl-doc 4.0.3-1ubuntu1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms