From 4c51533fa3019f5575c1f70a66f5bd13fe7a9973 Mon Sep 17 00:00:00 2001 From: Mattt Zmuda Date: Fri, 2 May 2025 13:56:38 -0700 Subject: [PATCH] Resume with EOF instead of throwing error when no data is received --- Sources/MCP/Base/Transports/NetworkTransport.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Sources/MCP/Base/Transports/NetworkTransport.swift b/Sources/MCP/Base/Transports/NetworkTransport.swift index 7c435bb..69f0dd0 100644 --- a/Sources/MCP/Base/Transports/NetworkTransport.swift +++ b/Sources/MCP/Base/Transports/NetworkTransport.swift @@ -168,6 +168,11 @@ import struct Foundation.Data while isConnected && !Task.isCancelled { do { let newData = try await receiveData() + // Check for EOF (empty data) + if newData.isEmpty { + logger.info("Connection closed by peer (EOF).") + break // Exit loop gracefully + } buffer.append(newData) // Process complete messages @@ -219,8 +224,8 @@ import struct Foundation.Data } else if let content = content { continuation.resume(returning: content) } else { - continuation.resume( - throwing: MCPError.internalError("No data received")) + // EOF: Resume with empty data instead of throwing an error + continuation.resume(returning: Data()) } } }