oss-slu / oss-slu/PilotDataSynchronization
Failed TCP connection is silent and blocks all further connection attempts
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 4
- Forks
- 8
- Avg merge
- 5d 17h
- Merged PRs (30d)
- 2
Description
Describe the bug
When TcpStream::connect fails, nothing appears in the GUI and every later attempt to connect also fails. The user has no way to know what happened or how to recover.
state.tcp_bichannel is set before the thread spawns (relay/src/state.rs:531) and tcp_thread_handle is set after it (relay/src/state.rs:633), both unconditionally, so tcp_connect returns Ok(()) even when the thread bailed. The guard at relay/src/state.rs:526-529 then rejects every retry with "TCP thread already exists", and that error goes to log_event, which is never displayed.
To Reproduce
- Start the relay with nothing listening on the target port.
- Enter an address and press
Connect TCP. - Status stays
falseand no error appears. - Press
Connect TCPagain. Nothing happens, with no explanation.
Expected behavior
The failure is shown in the GUI, and pressing Connect TCP again retries instead of silently failing.
Additional context
Disconnect TCP is currently the only way to recover, because it is the only path that clears tcp_thread_handle (relay/src/state.rs:641-645). This is undiscoverable. The connection error is written to stderr only (relay/src/state.rs:540), which is invisible when the GUI is not launched from a terminal.
Found while writing the setup documentation in #138 / #178.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in relay/src/state.rs around tcp_connect at lines 526-545 and the thread-handle cleanup at lines 633-645. Reproduce the failure with no listener on the target port, then trace how the connection error reaches log_event and the GUI. Done means failed connections are visible to the user and a later Connect TCP attempt retries without requiring Disconnect TCP.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop, networking
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100