From 2b67a1233f9088085a35e400685518c137b51a04 Mon Sep 17 00:00:00 2001 From: Mattt Date: Fri, 2 May 2025 14:24:37 -0700 Subject: [PATCH] Resume with EOF instead of throwing error when no data is received (#94) --- 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()) } } }