Describe the bug
If baton.sock is occupied, by a second relay instance or a stale socket, the IPC listener thread logs once and returns Ok(()) (relay/src/state.rs:373-380). It reports success while having done nothing. ipc_connect then sets ipc_thread_handle to Some regardless (relay/src/state.rs:495-497), so the guard at relay/src/state.rs:355-357 rejects every later Connect IPC press.
Because ipc_connect runs at startup (relay/src/main.rs:37-41), the relay boots straight into this state.
To Reproduce
- Start one relay instance.
- Start a second one.
- The second shows
:( No Baton Connection forever.
- Press
Connect IPC. Nothing happens and no error is shown.
Expected behavior
The socket conflict is surfaced in the GUI, and the thread does not report success when it failed to start.
Additional context
The only visible symptom is :( No Baton Connection, which is indistinguishable from the plugin simply not running. Disconnect IPC clears the handle and is the undocumented recovery. The message goes to stderr only.
Found while writing the setup documentation in #138 / #178.
Describe the bug
If
baton.sockis occupied, by a second relay instance or a stale socket, the IPC listener thread logs once and returnsOk(())(relay/src/state.rs:373-380). It reports success while having done nothing.ipc_connectthen setsipc_thread_handletoSomeregardless (relay/src/state.rs:495-497), so the guard atrelay/src/state.rs:355-357rejects every laterConnect IPCpress.Because
ipc_connectruns at startup (relay/src/main.rs:37-41), the relay boots straight into this state.To Reproduce
:( No Baton Connectionforever.Connect IPC. Nothing happens and no error is shown.Expected behavior
The socket conflict is surfaced in the GUI, and the thread does not report success when it failed to start.
Additional context
The only visible symptom is
:( No Baton Connection, which is indistinguishable from the plugin simply not running.Disconnect IPCclears the handle and is the undocumented recovery. The message goes to stderr only.Found while writing the setup documentation in #138 / #178.