Build Information
Successful build of Citadel, reference main (ae8562), with Swift 6.1 for macOS (SPM) on 4 Apr 2026 15:49:24 UTC.
Swift 6 data race errors: 33
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCapturesBuild Log
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:214:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
212 | }
213 |
214 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:217:106: warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
217 | SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
| `- warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
218 | }.get()
219 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:26:20: note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
24 | /// other usage models, including port forwarding. It is also able to construct somewhat
25 | /// arbitrary secure multiplexed channels.
26 | public final class NIOSSHHandler {
| `- note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
27 | internal var channel: Channel? {
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:253:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
251 | ).get()
252 |
253 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
254 | let session = SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
255 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:247:35: warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
245 | try await SSHClientSession.addHandlers(
246 | on: channel,
247 | authenticationMethod: authenticationMethod(),
| |- warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
248 | inboundChannelHandler: inboundChannelHandler,
249 | hostKeyValidator: hostKeyValidator,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:293:35: warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
291 | host: host,
292 | port: port,
293 | authenticationMethod: authenticationMethod,
| `- warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
294 | hostKeyValidator: hostKeyValidator,
295 | algorithms: algorithms,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SSHAuthenticationMethod.swift:6:20: note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
4 |
5 | /// Represents an authentication method.
6 | public final class SSHAuthenticationMethod: NIOSSHClientUserAuthenticationDelegate {
| `- note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
7 | private enum Implementation {
8 | case custom(NIOSSHClientUserAuthenticationDelegate)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:324:13: warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
322 | private func onNewSession(_ session: SSHClientSession) {
323 | session.channel.closeFuture.whenComplete { [weak self] _ in
324 | self?.onClose()
| `- warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
325 | }
326 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:359:35: warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
357 | host: host,
358 | port: port,
359 | authenticationMethod: self.authenticationMethod(),
| `- warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
360 | hostKeyValidator: self.hostKeyValidator,
361 | protocolOptions: protocolOptions,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:231:15: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
229 | channel.pipeline.handler(type: ClientHandshakeHandler.self).flatMap { handshakeHandler in
230 | handshakeHandler.authenticated
231 | }.flatMap {
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
232 | channel.pipeline.handler(type: NIOSSHHandler.self)
233 | }.map { sshHandler in
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:271:36: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
269 | settings.protocolOptions = protocolOptions
270 | settings.group = group
271 | settings.channelHandlers = channelHandlers
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
272 | settings.connectTimeout = connectTimeout
273 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:12:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
10 | func handlerAdded(context: ChannelHandlerContext) {
11 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
12 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
13 | }
14 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:46:21: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
44 | .flatMap { remote in
45 | channel.pipeline.addHandlers([
46 | DataToBufferCodec()
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:48:49: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
46 | DataToBufferCodec()
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
49 | remote.writeAndFlush(data, promise: promise)
50 | })
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:52:48: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
50 | })
51 | }.flatMap {
52 | remote.pipeline.addHandler(ProxyChannelHandler { [weak channel] data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
53 | guard let channel else {
54 | promise?.fail(ChannelError.ioOnClosedChannel)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:329:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
327 |
328 | private func onClose() {
329 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
330 | self.onDisconnect?()
| `- note: closure captures 'self' which is accessible to code in the current task
331 |
332 | switch connectionSettings.reconnect.mode {
[986/997] Compiling Citadel DirectTCPIP+Client.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:182:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
180 | ).get()
181 |
182 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
183 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
184 | let session = try await handshakeHandler.authenticated.map {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:185:106: warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
183 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
184 | let session = try await handshakeHandler.authenticated.map {
185 | SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
| `- warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
186 | }.get()
187 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:26:20: note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
24 | /// other usage models, including port forwarding. It is also able to construct somewhat
25 | /// arbitrary secure multiplexed channels.
26 | public final class NIOSSHHandler {
| `- note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
27 | internal var channel: Channel? {
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:214:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
212 | }
213 |
214 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:217:106: warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
217 | SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
| `- warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
218 | }.get()
219 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:26:20: note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
24 | /// other usage models, including port forwarding. It is also able to construct somewhat
25 | /// arbitrary secure multiplexed channels.
26 | public final class NIOSSHHandler {
| `- note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
27 | internal var channel: Channel? {
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:253:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
251 | ).get()
252 |
253 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
254 | let session = SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
255 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:247:35: warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
245 | try await SSHClientSession.addHandlers(
246 | on: channel,
247 | authenticationMethod: authenticationMethod(),
| |- warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
248 | inboundChannelHandler: inboundChannelHandler,
249 | hostKeyValidator: hostKeyValidator,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:293:35: warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
291 | host: host,
292 | port: port,
293 | authenticationMethod: authenticationMethod,
| `- warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
294 | hostKeyValidator: hostKeyValidator,
295 | algorithms: algorithms,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SSHAuthenticationMethod.swift:6:20: note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
4 |
5 | /// Represents an authentication method.
6 | public final class SSHAuthenticationMethod: NIOSSHClientUserAuthenticationDelegate {
| `- note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
7 | private enum Implementation {
8 | case custom(NIOSSHClientUserAuthenticationDelegate)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:324:13: warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
322 | private func onNewSession(_ session: SSHClientSession) {
323 | session.channel.closeFuture.whenComplete { [weak self] _ in
324 | self?.onClose()
| `- warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
325 | }
326 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:359:35: warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
357 | host: host,
358 | port: port,
359 | authenticationMethod: self.authenticationMethod(),
| `- warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
360 | hostKeyValidator: self.hostKeyValidator,
361 | protocolOptions: protocolOptions,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:231:15: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
229 | channel.pipeline.handler(type: ClientHandshakeHandler.self).flatMap { handshakeHandler in
230 | handshakeHandler.authenticated
231 | }.flatMap {
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
232 | channel.pipeline.handler(type: NIOSSHHandler.self)
233 | }.map { sshHandler in
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:271:36: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
269 | settings.protocolOptions = protocolOptions
270 | settings.group = group
271 | settings.channelHandlers = channelHandlers
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
272 | settings.connectTimeout = connectTimeout
273 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:12:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
10 | func handlerAdded(context: ChannelHandlerContext) {
11 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
12 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
13 | }
14 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:46:21: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
44 | .flatMap { remote in
45 | channel.pipeline.addHandlers([
46 | DataToBufferCodec()
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:48:49: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
46 | DataToBufferCodec()
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
49 | remote.writeAndFlush(data, promise: promise)
50 | })
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:52:48: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
50 | })
51 | }.flatMap {
52 | remote.pipeline.addHandler(ProxyChannelHandler { [weak channel] data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
53 | guard let channel else {
54 | promise?.fail(ChannelError.ioOnClosedChannel)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:329:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
327 |
328 | private func onClose() {
329 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
330 | self.onDisconnect?()
| `- note: closure captures 'self' which is accessible to code in the current task
331 |
332 | switch connectionSettings.reconnect.mode {
[987/997] Compiling Citadel DirectTCPIP+Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:182:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
180 | ).get()
181 |
182 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
183 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
184 | let session = try await handshakeHandler.authenticated.map {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:185:106: warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
183 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
184 | let session = try await handshakeHandler.authenticated.map {
185 | SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
| `- warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
186 | }.get()
187 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:26:20: note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
24 | /// other usage models, including port forwarding. It is also able to construct somewhat
25 | /// arbitrary secure multiplexed channels.
26 | public final class NIOSSHHandler {
| `- note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
27 | internal var channel: Channel? {
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:214:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
212 | }
213 |
214 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:217:106: warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
215 | let handshakeHandler = try await channel.pipeline.handler(type: ClientHandshakeHandler.self).get()
216 | let session = try await handshakeHandler.authenticated.map {
217 | SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
| `- warning: capture of 'sshHandler' with non-sendable type 'NIOSSHHandler' in a '@Sendable' closure
218 | }.get()
219 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:26:20: note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
24 | /// other usage models, including port forwarding. It is also able to construct somewhat
25 | /// arbitrary secure multiplexed channels.
26 | public final class NIOSSHHandler {
| `- note: class 'NIOSSHHandler' does not conform to the 'Sendable' protocol
27 | internal var channel: Channel? {
28 | self.context.map { $0.channel }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:253:87: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
251 | ).get()
252 |
253 | let sshHandler = try await channel.pipeline.handler(type: NIOSSHHandler.self).get()
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
254 | let session = SSHClientSession(channel: channel, inboundChannelHandler: inboundChannelHandler, sshHandler: sshHandler)
255 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:247:35: warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
245 | try await SSHClientSession.addHandlers(
246 | on: channel,
247 | authenticationMethod: authenticationMethod(),
| |- warning: implicit capture of 'authenticationMethod' requires that '() -> SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
248 | inboundChannelHandler: inboundChannelHandler,
249 | hostKeyValidator: hostKeyValidator,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:293:35: warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
291 | host: host,
292 | port: port,
293 | authenticationMethod: authenticationMethod,
| `- warning: implicit capture of 'authenticationMethod' requires that 'SSHAuthenticationMethod' conforms to 'Sendable'; this is an error in the Swift 6 language mode
294 | hostKeyValidator: hostKeyValidator,
295 | algorithms: algorithms,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SSHAuthenticationMethod.swift:6:20: note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
4 |
5 | /// Represents an authentication method.
6 | public final class SSHAuthenticationMethod: NIOSSHClientUserAuthenticationDelegate {
| `- note: class 'SSHAuthenticationMethod' does not conform to the 'Sendable' protocol
7 | private enum Implementation {
8 | case custom(NIOSSHClientUserAuthenticationDelegate)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:324:13: warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
322 | private func onNewSession(_ session: SSHClientSession) {
323 | session.channel.closeFuture.whenComplete { [weak self] _ in
324 | self?.onClose()
| `- warning: capture of 'self' with non-sendable type 'SSHClient?' in a '@Sendable' closure
325 | }
326 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:359:35: warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
:
357 | host: host,
358 | port: port,
359 | authenticationMethod: self.authenticationMethod(),
| `- warning: implicit capture of 'self' requires that 'SSHClient' conforms to 'Sendable'; this is an error in the Swift 6 language mode
360 | hostKeyValidator: self.hostKeyValidator,
361 | protocolOptions: protocolOptions,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:231:15: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
229 | channel.pipeline.handler(type: ClientHandshakeHandler.self).flatMap { handshakeHandler in
230 | handshakeHandler.authenticated
231 | }.flatMap {
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable
232 | channel.pipeline.handler(type: NIOSSHHandler.self)
233 | }.map { sshHandler in
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ClientSession.swift:271:36: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
269 | settings.protocolOptions = protocolOptions
270 | settings.group = group
271 | settings.channelHandlers = channelHandlers
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
272 | settings.connectTimeout = connectTimeout
273 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:12:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
10 | func handlerAdded(context: ChannelHandlerContext) {
11 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
12 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
13 | }
14 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:59:24: warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
57 | }
58 |
59 | return initialize(channel)
| |- warning: capture of 'initialize' with non-sendable type '(any Channel) -> EventLoopFuture<Void>' in an isolated closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
60 | }
61 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:46:21: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
44 | .flatMap { remote in
45 | channel.pipeline.addHandlers([
46 | DataToBufferCodec()
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:48:49: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
46 | DataToBufferCodec()
47 | ]).flatMap {
48 | channel.pipeline.addHandler(ProxyChannelHandler { data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
49 | remote.writeAndFlush(data, promise: promise)
50 | })
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Server/DirectTCPIP+Server.swift:52:48: warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | fileprivate final class ProxyChannelHandler: ChannelOutboundHandler {
| `- note: class 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
5 | typealias OutboundIn = ByteBuffer
6 |
:
50 | })
51 | }.flatMap {
52 | remote.pipeline.addHandler(ProxyChannelHandler { [weak channel] data, promise in
| `- warning: type 'ProxyChannelHandler' does not conform to the 'Sendable' protocol
53 | guard let channel else {
54 | promise?.fail(ChannelError.ioOnClosedChannel)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:329:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
327 |
328 | private func onClose() {
329 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
330 | self.onDisconnect?()
| `- note: closure captures 'self' which is accessible to code in the current task
331 |
332 | switch connectionSettings.reconnect.mode {
[988/997] Compiling Citadel NIOGlueHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:80:44: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | defer { session.inboundChannelHandler.unregisterForwardedTCPIP(host: host, port: port) }
79 |
80 | let response = try await eventLoop.flatSubmit {
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:3:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
1 | import Foundation
2 | import NIO
3 | import NIOSSH
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
4 | import Logging
5 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:88:11: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
86 | )
87 | return responsePromise.futureResult
88 | }.get()
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
89 |
90 | guard let response = response else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:81:35: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
79 |
80 | let response = try await eventLoop.flatSubmit {
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
83 | self.session.sshHandler.value.sendTCPForwardingRequest(
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:185:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 |
184 | try await withThrowingTaskGroup(of: Void.self) { group in
185 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | return try await self.withRemotePortForward(
| `- note: closure captures 'self' which is accessible to code in the current task
187 | host: host,
188 | port: port,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:200:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
198 | }
199 |
200 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
:
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:203:39: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
203 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
204 | do {
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
[989/997] Compiling Citadel OpenSSHKey.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:80:44: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | defer { session.inboundChannelHandler.unregisterForwardedTCPIP(host: host, port: port) }
79 |
80 | let response = try await eventLoop.flatSubmit {
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:3:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
1 | import Foundation
2 | import NIO
3 | import NIOSSH
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
4 | import Logging
5 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:88:11: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
86 | )
87 | return responsePromise.futureResult
88 | }.get()
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
89 |
90 | guard let response = response else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:81:35: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
79 |
80 | let response = try await eventLoop.flatSubmit {
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
83 | self.session.sshHandler.value.sendTCPForwardingRequest(
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:185:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 |
184 | try await withThrowingTaskGroup(of: Void.self) { group in
185 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | return try await self.withRemotePortForward(
| `- note: closure captures 'self' which is accessible to code in the current task
187 | host: host,
188 | port: port,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:200:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
198 | }
199 |
200 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
:
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:203:39: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
203 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
204 | do {
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
[990/997] Compiling Citadel RemotePortForward+Client.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:80:44: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | defer { session.inboundChannelHandler.unregisterForwardedTCPIP(host: host, port: port) }
79 |
80 | let response = try await eventLoop.flatSubmit {
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:3:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
1 | import Foundation
2 | import NIO
3 | import NIOSSH
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
4 | import Logging
5 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:88:11: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
86 | )
87 | return responsePromise.futureResult
88 | }.get()
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
89 |
90 | guard let response = response else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:81:35: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
79 |
80 | let response = try await eventLoop.flatSubmit {
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
83 | self.session.sshHandler.value.sendTCPForwardingRequest(
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:185:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 |
184 | try await withThrowingTaskGroup(of: Void.self) { group in
185 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | return try await self.withRemotePortForward(
| `- note: closure captures 'self' which is accessible to code in the current task
187 | host: host,
188 | port: port,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:200:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
198 | }
199 |
200 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
:
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:203:39: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
203 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
204 | do {
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
[991/997] Compiling Citadel RemotePortForward+Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:80:44: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
78 | defer { session.inboundChannelHandler.unregisterForwardedTCPIP(host: host, port: port) }
79 |
80 | let response = try await eventLoop.flatSubmit {
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:3:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
1 | import Foundation
2 | import NIO
3 | import NIOSSH
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
4 | import Logging
5 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:88:11: warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
86 | )
87 | return responsePromise.futureResult
88 | }.get()
| `- warning: type 'GlobalRequest.TCPForwardingResponse' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
89 |
90 | guard let response = response else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/GlobalRequestDelegate.swift:52:19: note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
50 |
51 | /// The data associated with a successful response to a TCP forwarding request.
52 | public struct TCPForwardingResponse: Hashable {
| `- note: struct 'TCPForwardingResponse' does not conform to the 'Sendable' protocol
53 | /// If requested to listen on a port, and the port the client requested was 0, this is set to the
54 | /// port that was actually bound. Otherwise is nil.
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:81:35: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
79 |
80 | let response = try await eventLoop.flatSubmit {
81 | let responsePromise = self.eventLoop.makePromise(of: GlobalRequest.TCPForwardingResponse?.self)
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure
82 | self.logger.debug("Sending TCP forwarding request", metadata: ["host": "\(host)", "port": "\(port)"])
83 | self.session.sshHandler.value.sendTCPForwardingRequest(
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:185:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
183 |
184 | try await withThrowingTaskGroup(of: Void.self) { group in
185 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
186 | return try await self.withRemotePortForward(
| `- note: closure captures 'self' which is accessible to code in the current task
187 | host: host,
188 | port: port,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:200:27: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
198 | }
199 |
200 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
:
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/RemotePortForward/Client/RemotePortForward+Client.swift:203:39: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
201 | await withDiscardingTaskGroup { group in
202 | for await client in newClients {
203 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
204 | do {
205 | try await onAccept(client)
206 | } catch {
207 | self.logger.error("Error in remote port forwarded connection", metadata: [
| `- note: closure captures 'self' which is accessible to code in the current task
208 | "error": "\(error)"
209 | ])
[992/997] Compiling Citadel Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
38 | func handlerAdded(context: ChannelHandlerContext) {
39 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
40 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
41 | }
42 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
57 | guard let shell = shell, let parent = context.channel.parent else {
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
60 | return context.channel.close()
61 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
60 | return context.channel.close()
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
61 | }
62 | return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
65 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
66 | ShellServerSubsystem.setupChannelHanders(
67 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
68 | shell: shell,
69 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
71 | )
72 | }.flatMap { () -> EventLoopFuture<Void> in
73 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
73 | let promise = context.eventLoop.makePromise(of: Void.self)
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
78 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
79 | }
80 | case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
89 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
90 | SFTPServerSubsystem.setupChannelHanders(
91 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
92 | sftp: sftp,
93 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
95 | )
96 | }.flatMap { () -> EventLoopFuture<Void> in
97 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
97 | let promise = context.eventLoop.makePromise(of: Void.self)
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
102 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 | }
104 | default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
43 | /// }
44 | /// }
45 | public struct NIOAny {
| `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
46 | @usableFromInline
47 | let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 | handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 | case .directTCPIP(let request):
170 | guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 | }
173 |
174 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 | return delegate.initializeDirectTCPIPChannel(
176 | channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 | return channel.pipeline.addHandlers([
324 | NIOSSHHandler(
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 | role: .server(server),
326 | allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
:
331 | }
332 | ),
333 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 | ])
335 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 | let channel: Channel
243 | let delegate: CitadelServerDelegate
:
339 | return try await bootstrap.bind(host: host, port: port).map { channel in
340 | SSHServer(channel: channel, logger: logger, delegate: delegate)
341 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 | }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 | }
101 |
102 | done.futureResult.whenFailure(context.fireErrorCaught)
| `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 | }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
82 |
83 | group.addTask {
84 | for try await message in self.outbound.stream {
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
| `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
| `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
| `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
| `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 | typealias OutboundIn = ByteBuffer
32 | typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
| `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 | CloseErrorHandler(logger: logger)
138 | )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 | )
139 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 | self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 | }
126 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 | streamContinuation.yield(.stderr(stderr))
284 | case .eof(let error):
285 | self.logger.debug("EOF triggered, ending the command stream.")
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 | if let error {
287 | streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
73 | done.completeWithTask {
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
76 | try await self.delegate.startShell(
| `- note: closure captures non-Sendable 'self'
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- note: closure captures non-Sendable 'shellContext'
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
81 | }
82 |
83 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 | for try await message in self.outbound.stream {
| `- note: closure captures 'self' which is accessible to code in the current task
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 | )
523 |
524 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 | do {
526 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
527 | for try await chunk in stream {
528 | switch chunk {
[993/997] Compiling Citadel ShellDelegate.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
38 | func handlerAdded(context: ChannelHandlerContext) {
39 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
40 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
41 | }
42 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
57 | guard let shell = shell, let parent = context.channel.parent else {
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
60 | return context.channel.close()
61 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
60 | return context.channel.close()
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
61 | }
62 | return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
65 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
66 | ShellServerSubsystem.setupChannelHanders(
67 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
68 | shell: shell,
69 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
71 | )
72 | }.flatMap { () -> EventLoopFuture<Void> in
73 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
73 | let promise = context.eventLoop.makePromise(of: Void.self)
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
78 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
79 | }
80 | case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
89 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
90 | SFTPServerSubsystem.setupChannelHanders(
91 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
92 | sftp: sftp,
93 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
95 | )
96 | }.flatMap { () -> EventLoopFuture<Void> in
97 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
97 | let promise = context.eventLoop.makePromise(of: Void.self)
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
102 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 | }
104 | default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
43 | /// }
44 | /// }
45 | public struct NIOAny {
| `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
46 | @usableFromInline
47 | let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 | handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 | case .directTCPIP(let request):
170 | guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 | }
173 |
174 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 | return delegate.initializeDirectTCPIPChannel(
176 | channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 | return channel.pipeline.addHandlers([
324 | NIOSSHHandler(
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 | role: .server(server),
326 | allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
:
331 | }
332 | ),
333 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 | ])
335 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 | let channel: Channel
243 | let delegate: CitadelServerDelegate
:
339 | return try await bootstrap.bind(host: host, port: port).map { channel in
340 | SSHServer(channel: channel, logger: logger, delegate: delegate)
341 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 | }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 | }
101 |
102 | done.futureResult.whenFailure(context.fireErrorCaught)
| `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 | }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
82 |
83 | group.addTask {
84 | for try await message in self.outbound.stream {
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
| `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
| `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
| `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
| `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 | typealias OutboundIn = ByteBuffer
32 | typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
| `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 | CloseErrorHandler(logger: logger)
138 | )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 | )
139 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 | self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 | }
126 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 | streamContinuation.yield(.stderr(stderr))
284 | case .eof(let error):
285 | self.logger.debug("EOF triggered, ending the command stream.")
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 | if let error {
287 | streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
73 | done.completeWithTask {
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
76 | try await self.delegate.startShell(
| `- note: closure captures non-Sendable 'self'
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- note: closure captures non-Sendable 'shellContext'
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
81 | }
82 |
83 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 | for try await message in self.outbound.stream {
| `- note: closure captures 'self' which is accessible to code in the current task
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 | )
523 |
524 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 | do {
526 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
527 | for try await chunk in stream {
528 | switch chunk {
[994/997] Compiling Citadel TTY.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
38 | func handlerAdded(context: ChannelHandlerContext) {
39 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
40 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
41 | }
42 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
57 | guard let shell = shell, let parent = context.channel.parent else {
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
60 | return context.channel.close()
61 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
58 | _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
59 | self.configured.succeed(())
60 | return context.channel.close()
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
61 | }
62 | return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
65 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
66 | ShellServerSubsystem.setupChannelHanders(
67 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
68 | shell: shell,
69 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
71 | )
72 | }.flatMap { () -> EventLoopFuture<Void> in
73 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
73 | let promise = context.eventLoop.makePromise(of: Void.self)
74 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
75 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
76 | return promise.futureResult
77 | }.whenFailure { _ in
78 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
79 | }
80 | case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
89 | parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
90 | SFTPServerSubsystem.setupChannelHanders(
91 | channel: context.channel,
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
92 | sftp: sftp,
93 | logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
95 | )
96 | }.flatMap { () -> EventLoopFuture<Void> in
97 | let promise = context.eventLoop.makePromise(of: Void.self)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
18 | }
19 |
20 | final class SubsystemHandler: ChannelDuplexHandler {
| `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
21 | typealias InboundIn = SSHChannelData
22 | typealias InboundOut = SSHChannelData
:
97 | let promise = context.eventLoop.makePromise(of: Void.self)
98 | context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
99 | self.configured.succeed(())
| `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 | return promise.futureResult
101 | }.whenFailure { _ in
102 | context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 | }
104 | default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 | func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 | configured.futureResult.whenSuccess {
114 | context.fireChannelRead(data)
| `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 | }
116 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
43 | /// }
44 | /// }
45 | public struct NIOAny {
| `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
46 | @usableFromInline
47 | let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 | handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 | case .directTCPIP(let request):
170 | guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 | }
173 |
174 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 | return delegate.initializeDirectTCPIPChannel(
176 | channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 | return channel.pipeline.addHandlers([
324 | NIOSSHHandler(
| `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 | role: .server(server),
326 | allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
79 |
80 | @available(*, unavailable)
81 | extension NIOSSHHandler: Sendable {}
| `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
82 |
83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
:
331 | }
332 | ),
333 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 | ])
335 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 | let channel: Channel
243 | let delegate: CitadelServerDelegate
:
339 | return try await bootstrap.bind(host: host, port: port).map { channel in
340 | SSHServer(channel: channel, logger: logger, delegate: delegate)
341 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 | }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 | }
101 |
102 | done.futureResult.whenFailure(context.fireErrorCaught)
| `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 | }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
76 | try await self.delegate.startShell(
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
33 | }
34 |
35 | public struct SSHShellContext {
| `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
36 | public struct WindowSize {
37 | public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
82 |
83 | group.addTask {
84 | for try await message in self.outbound.stream {
| `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
| `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
| `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 | return channel.pipeline.addHandlers(
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
| `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
| `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 | typealias OutboundIn = ByteBuffer
32 | typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
43 | }
44 |
45 | final class ShellServerInboundHandler: ChannelInboundHandler {
| `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
46 | typealias InboundIn = ByteBuffer
47 |
:
134 | SSHChannelDataUnwrapper(),
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
| `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 | CloseErrorHandler(logger: logger)
138 | )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 | SSHOutboundChannelDataWrapper(),
136 | shellInboundHandler,
137 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 | )
139 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
4 | import NIOConcurrencyHelpers
5 |
6 | final class CloseErrorHandler: ChannelInboundHandler {
| `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
7 | typealias InboundIn = Any
8 | let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 | context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 | self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 | context.fireErrorCaught(error)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 | }
126 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 | // visible for ChannelPipeline to modify
1861 | fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 | streamContinuation.yield(.stderr(stderr))
284 | case .eof(let error):
285 | self.logger.debug("EOF triggered, ending the command stream.")
| `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 | if let error {
287 | streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
| `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 | private(set) var session: SSHClientSession
114 | private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
73 | done.completeWithTask {
74 | try await withThrowingTaskGroup(of: Void.self) { group in
75 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
76 | try await self.delegate.startShell(
| `- note: closure captures non-Sendable 'self'
77 | inbound: self.inbound.stream,
78 | outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
79 | context: shellContext
| `- note: closure captures non-Sendable 'shellContext'
80 | )
81 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
81 | }
82 |
83 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 | for try await message in self.outbound.stream {
| `- note: closure captures 'self' which is accessible to code in the current task
85 | switch message.event {
86 | case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 | )
523 |
524 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 | do {
526 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
527 | for try await chunk in stream {
528 | switch chunk {
[995/1004] Compiling CitadelServerExample Terminal.swift
[996/1004] Compiling CitadelServerExample HostKeyFile.swift
[997/1004] Compiling CitadelServerExample EchoShell.swift
[998/1004] Compiling CitadelServerExample Extensions.swift
[999/1004] Compiling CitadelServerExample BasicCommands.swift
[1000/1004] Emitting module CitadelServerExample
[1001/1004] Compiling CitadelServerExample Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:24:42: warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
22 | }
23 |
24 | let server = try await SSHServer.host(
| `- warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
25 | host: "localhost",
26 | port: 2323,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:241:20: note: class 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 | let channel: Channel
243 | let delegate: CitadelServerDelegate
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
1 | import Citadel
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
2 | import Crypto
3 | import Foundation
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:76:36: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
74 | ) {
75 | if case .password(.init(password: password)) = request.request, request.username == username {
76 | return responsePromise.succeed(.success)
| `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 | }
78 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:229:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
227 |
228 | /// The outcome of a user authentication attempt.
229 | public enum NIOSSHUserAuthenticationOutcome {
| `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
230 | case success
231 | case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:5:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
3 | import Foundation
4 | import NIO
5 | import NIOSSH
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
6 |
7 | @main struct ExampleSSHServer {
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:79:32: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 | }
78 |
79 | return responsePromise.succeed(.failure)
| `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
80 | }
81 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:229:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
227 |
228 | /// The outcome of a user authentication attempt.
229 | public enum NIOSSHUserAuthenticationOutcome {
| `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
230 | case success
231 | case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
[1001/1004] Write Objects.LinkFileList
[1002/1004] Linking CitadelServerExample
[1003/1004] Applying CitadelServerExample
Build complete! (55.66s)
Fetching https://github.com/Wellz26/swift-nio-ssh.git
Fetching https://github.com/attaswift/BigInt.git
Fetching https://github.com/mtynior/ColorizeSwift.git
Fetching https://github.com/apple/swift-nio.git from cache
Fetching https://github.com/apple/swift-crypto.git from cache
Fetching https://github.com/apple/swift-log.git from cache
[1/291] Fetching colorizeswift
[36/3114] Fetching colorizeswift, swift-nio-ssh
[93/7992] Fetching colorizeswift, swift-nio-ssh, bigint
Fetched https://github.com/mtynior/ColorizeSwift.git from cache (2.37s)
Fetched https://github.com/attaswift/BigInt.git from cache (2.37s)
Fetched https://github.com/Wellz26/swift-nio-ssh.git from cache (2.37s)
Fetched https://github.com/apple/swift-log.git from cache (2.43s)
Fetched https://github.com/apple/swift-crypto.git from cache (2.43s)
Fetched https://github.com/apple/swift-nio.git from cache (2.51s)
Computing version for https://github.com/mtynior/ColorizeSwift.git
Computed https://github.com/mtynior/ColorizeSwift.git at 1.7.0 (5.58s)
Computing version for https://github.com/Wellz26/swift-nio-ssh.git
Computed https://github.com/Wellz26/swift-nio-ssh.git at 0.3.6 (0.52s)
Fetching https://github.com/apple/swift-atomics.git from cache
Fetched https://github.com/apple/swift-atomics.git from cache (0.67s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.0 (1.17s)
Computing version for https://github.com/apple/swift-crypto.git
Computed https://github.com/apple/swift-crypto.git at 3.15.1 (2.84s)
Fetching https://github.com/apple/swift-asn1.git from cache
Fetched https://github.com/apple/swift-asn1.git from cache (0.60s)
Computing version for https://github.com/apple/swift-asn1.git
Computed https://github.com/apple/swift-asn1.git at 1.6.0 (3.06s)
Computing version for https://github.com/attaswift/BigInt.git
Computed https://github.com/attaswift/BigInt.git at 5.7.0 (0.49s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.97.1 (0.64s)
Fetching https://github.com/apple/swift-collections.git from cache
Fetching https://github.com/apple/swift-system.git from cache
Fetched https://github.com/apple/swift-system.git from cache (1.53s)
Fetched https://github.com/apple/swift-collections.git from cache (1.55s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.6.4 (2.10s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.4.1 (0.60s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.11.0 (0.48s)
Creating working copy for https://github.com/apple/swift-asn1.git
Working copy of https://github.com/apple/swift-asn1.git resolved at 1.6.0
Creating working copy for https://github.com/attaswift/BigInt.git
Working copy of https://github.com/attaswift/BigInt.git resolved at 5.7.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.11.0
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.4.1
Creating working copy for https://github.com/Wellz26/swift-nio-ssh.git
Working copy of https://github.com/Wellz26/swift-nio-ssh.git resolved at 0.3.6
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.6.4
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-crypto.git
Working copy of https://github.com/apple/swift-crypto.git resolved at 3.15.1
Creating working copy for https://github.com/mtynior/ColorizeSwift.git
Working copy of https://github.com/mtynior/ColorizeSwift.git resolved at 1.7.0
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.97.1
Build complete.
{
"dependencies" : [
{
"identity" : "swift-nio-ssh",
"requirement" : {
"range" : [
{
"lower_bound" : "0.3.4",
"upper_bound" : "0.4.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Wellz26/swift-nio-ssh.git"
},
{
"identity" : "swift-nio",
"requirement" : {
"range" : [
{
"lower_bound" : "2.81.0",
"upper_bound" : "3.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-nio.git"
},
{
"identity" : "swift-log",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-log.git"
},
{
"identity" : "bigint",
"requirement" : {
"range" : [
{
"lower_bound" : "5.2.0",
"upper_bound" : "6.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/attaswift/BigInt.git"
},
{
"identity" : "swift-crypto",
"requirement" : {
"range" : [
{
"lower_bound" : "3.12.3",
"upper_bound" : "4.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-crypto.git"
},
{
"identity" : "colorizeswift",
"requirement" : {
"range" : [
{
"lower_bound" : "1.5.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/mtynior/ColorizeSwift.git"
}
],
"manifest_display_name" : "Citadel",
"name" : "Citadel",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "14.0"
},
{
"name" : "ios",
"version" : "17.0"
}
],
"products" : [
{
"name" : "Citadel",
"targets" : [
"Citadel"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "CitadelServerExample",
"targets" : [
"CitadelServerExample"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "CitadelTests",
"module_type" : "SwiftTarget",
"name" : "CitadelTests",
"path" : "Tests/CitadelTests",
"product_dependencies" : [
"NIOSSH",
"BigInt",
"Logging"
],
"sources" : [
"Citadel2Tests.swift",
"EndToEndTests.swift",
"KeyTests.swift",
"RemotePortForwardTests.swift",
"WithExecTests.swift"
],
"target_dependencies" : [
"Citadel"
],
"type" : "test"
},
{
"c99name" : "CitadelServerExample",
"module_type" : "SwiftTarget",
"name" : "CitadelServerExample",
"path" : "Sources/CitadelServerExample",
"product_dependencies" : [
"ColorizeSwift"
],
"product_memberships" : [
"CitadelServerExample"
],
"sources" : [
"EchoShell/BasicCommands.swift",
"EchoShell/EchoShell.swift",
"EchoShell/Extensions.swift",
"EchoShell/Terminal.swift",
"HostKeyFile.swift",
"Server.swift"
],
"target_dependencies" : [
"Citadel"
],
"type" : "executable"
},
{
"c99name" : "Citadel",
"module_type" : "SwiftTarget",
"name" : "Citadel",
"path" : "Sources/Citadel",
"product_dependencies" : [
"NIOSSH",
"NIO",
"Crypto",
"_CryptoExtras",
"BigInt",
"Logging"
],
"product_memberships" : [
"Citadel",
"CitadelServerExample"
],
"sources" : [
"Algorithms/AES.swift",
"Algorithms/DH-Helpers.swift",
"Algorithms/DiffieHellmanGroup14Sha1.swift",
"Algorithms/DiffieHellmanGroup14Sha256.swift",
"Algorithms/RSA.swift",
"BCrypt.swift",
"ByteBufferHelpers.swift",
"ChannelUnwrapper.swift",
"Client.swift",
"ClientSession.swift",
"DirectTCPIP/Client/DirectTCPIP+Client.swift",
"DirectTCPIP/Server/DirectTCPIP+Server.swift",
"Errors.swift",
"Exec/Client/ExecClient.swift",
"Exec/Server/ExecDelegate.swift",
"Exec/Server/ExecHandler.swift",
"NIOGlueHandler.swift",
"OpenSSHKey.swift",
"RemotePortForward/Client/RemotePortForward+Client.swift",
"RemotePortForward/Server/RemotePortForward+Server.swift",
"SFTP/Client/SFTPClient.swift",
"SFTP/Client/SFTPClientInboundHandler.swift",
"SFTP/Client/SFTPFile.swift",
"SFTP/SFTPBasicEnums.swift",
"SFTP/SFTPFileFlags.swift",
"SFTP/SFTPMessage.swift",
"SFTP/SFTPMessageParser.swift",
"SFTP/SFTPSerializer.swift",
"SFTP/Server/SFTPServer.swift",
"SFTP/Server/SFTPServerInboundHandler.swift",
"SSHAuthenticationMethod.swift",
"SSHCert.swift",
"SSHConnectionPoolSettings.swift",
"SSHKeyTypeDetection.swift",
"Server.swift",
"Shell/Server/ShellDelegate.swift",
"TTY/Client/TTY.swift"
],
"target_dependencies" : [
"CCitadelBcrypt"
],
"type" : "library"
},
{
"c99name" : "CCitadelBcrypt",
"module_type" : "ClangTarget",
"name" : "CCitadelBcrypt",
"path" : "Sources/CCitadelBcrypt",
"product_memberships" : [
"Citadel",
"CitadelServerExample"
],
"sources" : [
"bcrypt-kdf.c",
"bcrypt.c",
"blf.c"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.