π€ AI: jamulusserver/setRecordingDirectory always replies "acknowledged", but a bad path silently disables recording and discards the stored directory β with nothing to roll back to, and if a recording was already running, it ends the WAV mid-session while the jam continues, unannounced.
Root cause, confirmed on current main (4a43f6f6). SetRecordingDir tears down the existing recorder thread (EndRecorderThread() + wait()) before validating the new directory; on failure strRecordingDir is wiped to "". The RPC handler reports "acknowledged" regardless of which branch ran.
Measured on a headless build (wt-3861, 2026-08-12; the cited lines read identical on current main). A parent-is-a-file path and a path beyond PATH_MAX both flip enabled/initialised True β False and recordingDirectory β "", RPC still "acknowledged".
A recording already in flight stops at the instant the bad call returns. A growing WAV (950,272 β 975,916 bytes across a good call) sits flat at every checkpoint afterward, while getClients keeps reporting the same live connection throughout β the jam itself is untouched, so nobody in the room is told recording just ended.
The identical failure is loud in the GUI β GetRecorderErrMsg() drives a QMessageBox::warning β and silent over RPC, which discards the same string. getRecorderStatus's errorMessage does carry it, and the method's own doc comment says to re-check β a caller who does so can catch this β but nothing prompts the re-check, and "acknowledged" does not suggest a session recording just silently ended.
π€ This message was written by AI and reviewed by @mcfnord.
π€ AI:
jamulusserver/setRecordingDirectoryalways replies"acknowledged", but a bad path silently disables recording and discards the stored directory β with nothing to roll back to, and if a recording was already running, it ends the WAV mid-session while the jam continues, unannounced.Root cause, confirmed on current
main(4a43f6f6).SetRecordingDirtears down the existing recorder thread (EndRecorderThread()+wait()) before validating the new directory; on failurestrRecordingDiris wiped to"". The RPC handler reports"acknowledged"regardless of which branch ran.Measured on a headless build (
wt-3861, 2026-08-12; the cited lines read identical on currentmain). A parent-is-a-file path and a path beyondPATH_MAXboth flipenabled/initialisedTrue β FalseandrecordingDirectoryβ"", RPC still"acknowledged".A recording already in flight stops at the instant the bad call returns. A growing WAV (950,272 β 975,916 bytes across a good call) sits flat at every checkpoint afterward, while
getClientskeeps reporting the same live connection throughout β the jam itself is untouched, so nobody in the room is told recording just ended.The identical failure is loud in the GUI β
GetRecorderErrMsg()drives aQMessageBox::warningβ and silent over RPC, which discards the same string.getRecorderStatus'serrorMessagedoes carry it, and the method's own doc comment says to re-check β a caller who does so can catch this β but nothing prompts the re-check, and "acknowledged" does not suggest a session recording just silently ended.π€ This message was written by AI and reviewed by @mcfnord.