Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The current strategy for handling TCP connection interruptions is to rely on an exception on connection disruption. However, if a remote server respectfully closes the connection (as opposed to the connection being interrupted), no exception is generated and the read methods will continue to return empty strings, causing our code to never detect the disconnect and receive empty messages without stopping.
This change pipes through the connection state of the underlying
TcpClient
to check connection on each cycle of the receive loop. This allows the code to detect a disconnection by the server and set the state of theAprsIsConnection
to disconnected to match.Changes
TcpClient.Connected
check toITcpConnection
andTcpConnection
ITcpConnection.Connected
in the receive loop inAprsIsConnection
Validation