fix(tcp): cancel pending connects on disconnect and propagate remote close

This commit is contained in:
just-stuff-tm
2026-03-09 20:39:17 -04:00
parent 7a2bb20bf7
commit 929c1c3d28
2 changed files with 5 additions and 3 deletions
@@ -22,9 +22,6 @@ class MeshCoreTcpManager {
} }
Future<void> disconnect() async { Future<void> disconnect() async {
if (!_service.isConnected && _service.activeEndpoint == null) {
return;
}
_debugLog?.info('TcpManager.disconnect', tag: 'TCP'); _debugLog?.info('TcpManager.disconnect', tag: 'TCP');
await _service.disconnect(); await _service.disconnect();
} }
@@ -175,6 +175,11 @@ class TcpTransportService {
} }
void _handleSocketDone() { void _handleSocketDone() {
if (_status == TcpTransportStatus.disconnecting ||
_status == TcpTransportStatus.disconnected) {
return;
}
_addFrameError(StateError('TCP socket closed by remote endpoint'));
unawaited(disconnect()); unawaited(disconnect());
} }