Fix epoll dispatch dropping INotify events, ConsoleServer self-deadlock, and add TLS SNI support

- INotify/Thread epoll dispatch was silently dropping every live
  core::INotify event (an isKnownINotify registry fixes it) - this had
  broken mail delivery for over a week, masked by routine restarts.
- TCPServer::lock self-deadlocked every admin-console connection via a
  plain std::mutex being re-entered; switched to recursive_mutex.
- TLS.cpp/h: SNI-based certificate selection (addSNIContext), the
  groundwork for multi-tenant TLS (qualityiron.vegas alongside
  barant.com on one APIServer process).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Brad ArantandClaude Sonnet 5 committed 2026-10-06 17:38:37 +00:00
1 parent d058322cc6
commit 1d3d30cd05
8 files changed
+222 -55

No files matched your search

+6
View File
@@ -7,10 +7,16 @@ namespace core {
INotify::INotify(EPoll &ePoll) : Socket(ePoll, "INotify") {
setDescriptor(inotify_init());
// See isKnownINotify()'s own doc comment - registers this object
// as safe for Thread::run() to dispatch epoll events to directly.
std::lock_guard<std::mutex> guard(knownINotifiesMutex());
knownINotifies().insert(this);
}
INotify::~INotify() {
shutdown();
std::lock_guard<std::mutex> guard(knownINotifiesMutex());
knownINotifies().erase(this);
}
int INotify::addWatch(coreutils::ZString &watch) {