mirror of
https://github.com/tailscale/tailscale.git
synced 2026-10-31 15:39:58 -04:00
Cancel fail-closed sessions before sending recording upload failure notifications. Bound each notifyControl request to five seconds, including recorder connection failures on the synchronous session startup path. An unresponsive control request must not keep an unrecorded session running or indefinitely delay rejection or fail-open startup. Keep the timeout local to each notification, independent of the session and upload lifetime, without adding another goroutine. Test blocked startup notifications in both rejection and fail-open modes, and use virtual time to cover earlier and simultaneous cancellation/deadlines. Send SFTP recording rejection diagnostics to stderr, preserving the binary protocol on stdout and exit status 254. Add real SSH/recorder tests for fail-closed and fail-open behavior with blocked notifications, and an SFTP client regression test. Updates tailscale/corp#50380 Signed-off-by: James Tucker <james@tailscale.com> Change-Id: I270d624975a6a9115502a4915ee5ff28a67d714b