https://gitlab.synchro.net/main/sbbs/-/commit/55431cba505efb42bcf5a115
Added Files:
exec/load/ircd/channel-policy.js services-compatibility.md services-lines.js services-state.js exec/tests/ircd/channel-policy.js clock-stall-network.js config-reload-network.js config-reload.js connect-cancel-network.py invitemasks.js mode-network.js services-211.js services-fileserv-relay.js services-legacy.js services-lines.js services-policy-legacy.js services-policy-relay.js services-policy.js services-protocol-probe.sjs services-review.js services-state.js exec/tests/socket/connect-callbacks.js connect-callbacks.sjs connect-cancel-fixture.c connect-cancel.py connect-cancel.sjs connect-tls.sjs
Modified Files:
exec/ircd.js ircdcfg.js exec/load/ircd/PROTOCOL.md channel.js client-security.js config.js core.js exceptions.js server.js services-core.js services-help.js services.js services.md tls.js tls.md unregistered.js user.js exec/tests/ircd/config-editor.js lib.sjs link-security.js rolling.js services-relay.js state-fixture.sjs state.js tls-network.py tls-worker.sjs tls.js visibility.js src/sbbs3/js_internal.cpp js_socket.cpp js_socket.h
Log Message:
ircd: complete services support and connection stability for 2.11
Translate IRCServices Bahamut commands into negotiated Synchronet capabilities. Add routed SVSNICK/SVSMODE, owned AKILL expiry, invite masks, extended channel policies and native realname/nickname S-lines. Keep services authority, native operator modes, BBS account proof and client TLS observations independent; embedded NickServ/ChanServ share the registered markers and channel policies.
Preserve services timestamp-zero authority without resetting channel age or existing ops. Filter unsupported modes together with their arguments, deliver rejected JOIN/SJOIN corrections even when privacy hides channels, and preserve canonical hub state across old-leaf bursts, departures and reconnects. Recognize
routed native FileServ helpers without granting account, operator or TLS proof. Preserve non-ASCII S-lines and translate conditional services timestamps through
incarnation-bound mappings separate from canonical time and BBS authentication.
Reject numeric-only MODE input without terminating the callback engine. Stage configuration reloads so open/read/parser failures retain the active identity, classes, trust, timers, TLS cache and services; preserve startup/editor defaults
and parser errors. Detect callback stalls before consuming queued CLOCK samples and require fresh nonce confirmation before rejecting suspect announcements. Queued pushes cannot extend the recovery deadline or confirm stale clock state.
Add native Socket.connectTLS(callback[, timeout=10]) using the asynchronous TLS worker and cancellation lifecycle. Defer outbound IRC credentials until TLS and certificate validation finish, cancel obsolete TCP/TLS attempts on successful REHASH or shutdown, and reject outbound TLS on hosts lacking the native API. Plaintext links to old leaves remain supported.
Retain pending Socket.connect descriptors until the existing worker completion is collected on the JS thread. JS close() invalidates the socket immediately, suppresses its callback and defers native close, preventing descriptor reuse while DNS or connect is still running. Drain completions before releasing roots at event teardown; reject overlapping connects and descriptor replacement, and unwind worker startup failures. Preserve synchronous and borrowed-descriptor behavior using one main-thread-only flag, without mutexes or reference counting.
Teardown may wait for the system resolver or connect timeout.
Validate on FreeBSD with native JSexec: focused MODE, failed-REHASH, queued-clock
and silent-TLS reproductions; 18 certificate cases; 6 acceptTLS and 7 connectTLS
API cases; automatic/manual links and six TLS route groups; callback, queue, SQLite, BBS, FileServ/DCC, embedded/external services and six-server suites. Run services, policy, visibility and rolling/reconnect checks with unmodified 1.3a, 2.0, 2.3 and 2.7 leaves below current hubs. Base visibility expectations on
FULLCHAN and bound TLS worker-drain recovery separately from IRC responsiveness.
Retain coverage of 6bd095d0's services authority and final shutdown queue flush.
Add deterministic delayed-DNS, queued-completion, GC, teardown and startup-failure
regressions, plus native IRCd failed/successful REHASH and shutdown tests. Verify
callback results, binds, modes and synchronous/borrowed sockets; re-run the TLS and 30-case network suites and all 16 legacy-leaf compatibility runs.
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net