From 8615374c43ab773f30731fe8e59ba24df366615c Mon Sep 17 00:00:00 2001 From: Joannis Orlandos Date: Sun, 1 Oct 2023 22:22:46 +0200 Subject: [PATCH] Fix using Exec side-by-side with SFTP --- Sources/Citadel/Exec/ExecHandler.swift | 15 ++------------- Sources/Citadel/Server.swift | 4 ++++ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/Sources/Citadel/Exec/ExecHandler.swift b/Sources/Citadel/Exec/ExecHandler.swift index 9bf3426..3695555 100644 --- a/Sources/Citadel/Exec/ExecHandler.swift +++ b/Sources/Citadel/Exec/ExecHandler.swift @@ -35,7 +35,7 @@ enum SSHServerError: Error { final class ExecHandler: ChannelDuplexHandler { typealias InboundIn = SSHChannelData - typealias InboundOut = ByteBuffer + typealias InboundOut = SSHChannelData typealias OutboundIn = SSHChannelData typealias OutboundOut = SSHChannelData @@ -92,18 +92,7 @@ final class ExecHandler: ChannelDuplexHandler { } func channelRead(context: ChannelHandlerContext, data: NIOAny) { - let data = self.unwrapInboundIn(data) - - guard case .byteBuffer(let bytes) = data.data else { - fatalError("Unexpected read type") - } - - guard case .channel = data.type else { - context.fireErrorCaught(SSHServerError.invalidDataType) - return - } - - context.fireChannelRead(self.wrapInboundOut(bytes)) + context.fireChannelRead(data) } func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise?) { diff --git a/Sources/Citadel/Server.swift b/Sources/Citadel/Server.swift index 761031a..b0501be 100644 --- a/Sources/Citadel/Server.swift +++ b/Sources/Citadel/Server.swift @@ -84,6 +84,10 @@ final class SubsystemHandler: ChannelDuplexHandler { func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise?) { context.write(data, promise: promise) } + + deinit { + configured.fail(CitadelError.channelCreationFailed) + } } final class CitadelServerDelegate {