- agent.go: guard reader goroutine msgCh send with sessionCtx.Done()
to prevent permanent goroutine hang
- checks.go: cache regex.Compile (not MatchString) per HTTP check;
cache x509.SystemCertPool via sync.Once across SSL checks
- lldp.go: remove dead walkErrors variable
- ssh_test.go: reset global host key store to fix TOFU port collision
flakiness across tests
- .gitignore: add towerops-agent binary, .tool-versions
Final fixes to pass all tests after audit improvements:
- Fixed reader goroutine context handling: added dedicated goroutine that
closes WebSocket connection on context cancellation, enabling fast shutdown
- Fixed HTTP client timeout: shared transports but per-check client with
custom timeout and redirect policy
- Fixed HTTP redirect handling: CheckRedirect function properly respects
FollowRedirects config
- Updated TestWSDialWriteHandshakeError: removed duplicate assertion, now
accepts both 'write handshake' and 'set deadline' errors
- Updated job executor tests: changed to expect error results on nil device
(executeSnmpJob, executeCredentialTest, executePingJob, executeMikrotikJob)
- Added missing 'strings' import to snmp_test.go
All 249 tests now pass with 97.6% coverage. go vet clean.