Commit Graph
6 Commits
Author SHA1 Message Date
user edbbdc9ca5 style: satisfy golangci-lint on the round-6 changes
check / check (push) Successful in 7m26s
nolintlint: gosec was not firing on the deferred Close.
nonamedreturns + varnamelen in collapseUserModeOps.
2026-09-04 05:52:26 +00:00
user dbdef00e91 test: cover user-mode apply atomicity and non-blocking KILL
check / check (push) Failing after 16s
db: TestSetSessionUserModesIsAtomic installs a trigger that rejects the
is_oper UPDATE after the is_wallops UPDATE has run, proving the '+w-o'
partial-failure the old independent-UPDATE loop exhibited is gone.

ircserver: TestDisconnectDoesNotBlockOnUnresponsiveVictim drives
Disconnect against a net.Pipe victim that never reads and requires the
call to return promptly; verified to fail against the synchronous
implementation. Its counterpart asserts the notification is still
delivered and the socket still closed.
2026-09-04 05:36:16 +00:00
user 209b0ff364 test(ircserver): cover VERSION/ADMIN/TIME under the default empty SERVER_NAME
check / check (push) Failing after 1m16s
Both wire test environments hardcoded ServerName: "test.irc", so no test
exercised the shipped default and the empty server-name parameter went
unnoticed for five rework rounds. Parameterize the env's server name and
add a wire test that runs with it empty, asserting the numerics name
"neoirc" and contain no empty parameter. Verified to fail against the
pre-fix handlers.
2026-09-04 05:34:33 +00:00
user cfff726054 fix(ircserver): KILL notify-and-close must not block the killer
check / check (push) Failing after 24s
WIP: Disconnect ran two blocking writes to the victim's socket on the
killer's goroutine with the full 30s writeTimeout each, so a victim that
stopped reading stalled the killer up to ~60s -- wedging the operator's
serve() loop or the HTTP KILL request. Move the notify-and-close to its
own goroutine and bound both writes with a short killWriteWindow.
2026-09-04 05:33:07 +00:00
user 534d10d719 fix(service): make ApplyUserMode apply stage transactional
check / check (push) Has been cancelled
WIP: the apply loop issued independent UPDATEs, so a failure partway
through '+w-o' left '+w' persisted while the caller reported total
failure, contradicting the doc comment. Collapse the parsed ops to the
final value of each flag and write them in one transaction via the new
db.SetSessionUserModes.
2026-09-04 05:32:19 +00:00
user 86813b506b fix(ircserver): VERSION/ADMIN/TIME use serverSfx fallback
check / check (push) Has been cancelled
WIP: c.cfg.ServerName defaults to "", so the three new wire handlers
emitted an empty server-name parameter under the shipped default config.
c.serverSfx already carries the same "neoirc" fallback the HTTP path
uses, and sendNumeric uses it for the prefix. Empty-ServerName test
follows.
2026-09-04 05:31:29 +00:00