Repository navigation
Connection Lifecycle, Resource Controls and Semantic Logging
SNode.C 2.0.0 brings major improvements to connection lifecycle management, resource controls, logging and application configuration.
📦 Get prebuilt packages
Install SNode.C without building from source: visit the SNodeC Project Package Repository for prebuilt packages and installation instructions.
Highlights
- Independent connection and listener flows for each
connect()andlisten()call, with improved retry, reconnect and address fallback behavior. - More robust stream and TLS shutdown, handshake cancellation and connection lifetime handling.
- Configurable write-queue limits and watermarks, HTTP parser and server limits, and WebSocket frame, message and fragment limits.
- Descriptor-based HTTP response streaming and Unix-domain peer credentials.
- Consolidated semantic logging with structured context, text/JSON output, filtering and asynchronous processing that drains during shutdown.
- Checked runtime reconfiguration and the
snodec-controlcommand-line and terminal configuration interface. - Protocol fixes covering malformed HTTP chunked requests, IPv4/IPv6 resolution, TLS fallback and portable WebSocket buffer handling.
- Improved component packaging, installed CMake consumers, documentation and GCC/Clang compatibility.
Upgrading from 1.x
This release introduces incompatible C++ API and ABI changes. Rebuild applications, libraries and dynamically loaded plugins against SNode.C 2.0. Do not mix 1.x and 2.0 C++ binaries in the same process.
Update code using the removed legacy logging macros to the current logging API. Check the return value of FileReader::open() before using it: an opening failure can return nullptr.
Validation
The release source passed all 212 framework tests with GCC 16 and all 227 framework and control-tool tests with Clang 21.