Build Information
Successful build of Citadel, reference main (66be8c
), with Swift 6.1 for Linux on 27 Apr 2025 19:46:16 UTC.
Swift 6 data race errors: 33
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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 InferSendableFromCaptures 2>&1
Build Log
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:454:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
452 |
453 | public struct Name: SFTPMessageContent, Sendable {
454 | public static let id = SFTPMessageType.name
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
455 |
456 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:470:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
468 |
469 | public struct Attributes: SFTPMessageContent, Sendable {
470 | public static let id = SFTPMessageType.attributes
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
471 |
472 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:481:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
479 |
480 | public struct ReadDir: SFTPMessageContent, Sendable {
481 | public static let id = SFTPMessageType.readdir
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
482 |
483 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
[866/879] Compiling Citadel SFTPSerializer.swift
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:60:27: warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
51 |
52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
53 | public struct Flags: OptionSet {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
54 | public var rawValue: UInt32
55 |
:
58 | }
59 |
60 | public static let size = Flags(rawValue: 0x00000001)
| |- warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'size' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 | public static let uidgid = Flags(rawValue: 0x00000002)
62 | public static let permissions = Flags(rawValue: 0x00000004)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:61:27: warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
51 |
52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
53 | public struct Flags: OptionSet {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
54 | public var rawValue: UInt32
55 |
:
59 |
60 | public static let size = Flags(rawValue: 0x00000001)
61 | public static let uidgid = Flags(rawValue: 0x00000002)
| |- warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'uidgid' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
62 | public static let permissions = Flags(rawValue: 0x00000004)
63 | public static let acmodtime = Flags(rawValue: 0x00000008)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:62:27: warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
51 |
52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
53 | public struct Flags: OptionSet {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
54 | public var rawValue: UInt32
55 |
:
60 | public static let size = Flags(rawValue: 0x00000001)
61 | public static let uidgid = Flags(rawValue: 0x00000002)
62 | public static let permissions = Flags(rawValue: 0x00000004)
| |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
63 | public static let acmodtime = Flags(rawValue: 0x00000008)
64 | public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
51 |
52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
53 | public struct Flags: OptionSet {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
54 | public var rawValue: UInt32
55 |
:
61 | public static let uidgid = Flags(rawValue: 0x00000002)
62 | public static let permissions = Flags(rawValue: 0x00000004)
63 | public static let acmodtime = Flags(rawValue: 0x00000008)
| |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
64 | public static let extended = Flags(rawValue: 0x80000000)
65 | }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
51 |
52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable {
53 | public struct Flags: OptionSet {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
54 | public var rawValue: UInt32
55 |
:
62 | public static let permissions = Flags(rawValue: 0x00000004)
63 | public static let acmodtime = Flags(rawValue: 0x00000008)
64 | public static let extended = Flags(rawValue: 0x80000000)
| |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
65 | }
66 |
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:208:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
206 | public enum SFTPMessage: Sendable {
207 | public struct Initialize: SFTPMessageContent, Sendable {
208 | public static let id = SFTPMessageType.initialize
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
209 |
210 | public let version: SFTPProtocolVersion
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:217:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
215 |
216 | public struct Version: SFTPMessageContent, Sendable {
217 | public static let id = SFTPMessageType.version
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
218 |
219 | public let version: SFTPProtocolVersion
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:227:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
225 |
226 | public struct OpenFile: SFTPMessageContent, Sendable {
227 | public static let id = SFTPMessageType.openFile
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
228 |
229 | public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:242:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
240 |
241 | public struct CloseFile: SFTPMessageContent, Sendable {
242 | public static let id = SFTPMessageType.closeFile
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
243 |
244 | public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:252:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
250 |
251 | public struct ReadFile: SFTPMessageContent, Sendable {
252 | public static let id = SFTPMessageType.read
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
253 |
254 | public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:264:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
262 |
263 | public struct WriteFile: SFTPMessageContent, Sendable {
264 | public static let id = SFTPMessageType.write
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
265 |
266 | public var requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:276:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
274 |
275 | public struct Status: Error, SFTPMessageContent, Sendable {
276 | public static let id = SFTPMessageType.status
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
277 |
278 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:289:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
287 |
288 | public struct Handle: SFTPMessageContent, Sendable {
289 | public static let id = SFTPMessageType.handle
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 |
291 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:299:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
297 |
298 | public struct FileStat: SFTPMessageContent, Sendable {
299 | public static let id = SFTPMessageType.fstat
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
300 |
301 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:309:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
307 |
308 | public struct Remove: SFTPMessageContent, Sendable {
309 | public static let id = SFTPMessageType.remove
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
310 |
311 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:319:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
317 |
318 | public struct FileSetStat: SFTPMessageContent, Sendable {
319 | public static let id = SFTPMessageType.fsetstat
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
320 |
321 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:330:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
328 |
329 | public struct SetStat: SFTPMessageContent, Sendable {
330 | public static let id = SFTPMessageType.setstat
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
331 |
332 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:341:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
339 |
340 | public struct Rename: SFTPMessageContent, Sendable {
341 | public static let id = SFTPMessageType.rename
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
342 |
343 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:353:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
351 |
352 | public struct Symlink: SFTPMessageContent, Sendable {
353 | public static let id = SFTPMessageType.symlink
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
354 |
355 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:364:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
362 |
363 | public struct Readlink: SFTPMessageContent, Sendable {
364 | public static let id = SFTPMessageType.readlink
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
365 |
366 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:374:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
372 |
373 | public struct FileData: SFTPMessageContent, Sendable {
374 | public static let id = SFTPMessageType.data
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
375 |
376 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:384:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
382 |
383 | public struct MkDir: SFTPMessageContent, Sendable {
384 | public static let id = SFTPMessageType.mkdir
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
385 |
386 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:397:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
395 |
396 | public struct RmDir: SFTPMessageContent, Sendable {
397 | public static let id = SFTPMessageType.rmdir
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
398 |
399 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:409:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
407 |
408 | public struct OpenDir: SFTPMessageContent, Sendable {
409 | public static let id = SFTPMessageType.opendir
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
410 |
411 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:421:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
419 |
420 | public struct Stat: SFTPMessageContent, Sendable {
421 | public static let id = SFTPMessageType.stat
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
422 |
423 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:432:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
430 |
431 | public struct LStat: SFTPMessageContent, Sendable {
432 | public static let id = SFTPMessageType.lstat
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
433 |
434 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:443:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
441 |
442 | public struct RealPath: SFTPMessageContent, Sendable {
443 | public static let id = SFTPMessageType.realpath
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
444 |
445 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:454:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
452 |
453 | public struct Name: SFTPMessageContent, Sendable {
454 | public static let id = SFTPMessageType.name
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
455 |
456 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:470:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
468 |
469 | public struct Attributes: SFTPMessageContent, Sendable {
470 | public static let id = SFTPMessageType.attributes
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
471 |
472 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPMessage.swift:481:27: warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
479 |
480 | public struct ReadDir: SFTPMessageContent, Sendable {
481 | public static let id = SFTPMessageType.readdir
| |- warning: static property 'id' is not concurrency-safe because non-'Sendable' type 'SFTPMessageType' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'id' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
482 |
483 | public let requestId: UInt32
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
36 | }
37 |
38 | public enum SFTPMessageType: UInt8 {
| `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
39 | case initialize = 1
40 | case version = 2
[867/879] Compiling Citadel SSHConnectionPoolSettings.swift
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 | handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 | case .directTCPIP(let request):
165 | guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 | }
168 |
169 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 | return delegate.initializeDirectTCPIPChannel(
171 | channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270: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
:
268 | }
269 | ),
270 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 | ])
272 | }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 | let channel: Channel
188 | let delegate: CitadelServerDelegate
:
276 | return try await bootstrap.bind(host: host, port: port).map { channel in
277 | SSHServer(channel: channel, logger: logger, delegate: delegate)
278 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 | }
280 | }
/host/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 |
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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):
/host/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,
/host/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
/host/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)
/host/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
/host/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 | )
/host/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 | }
/host/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
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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)
/host/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
/host/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 | }
/host/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):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467: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
465 | )
466 |
467 | 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
468 | do {
469 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
470 | for try await chunk in stream {
471 | switch chunk {
[868/879] Compiling Citadel Server.swift
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 | handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 | case .directTCPIP(let request):
165 | guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 | }
168 |
169 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 | return delegate.initializeDirectTCPIPChannel(
171 | channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270: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
:
268 | }
269 | ),
270 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 | ])
272 | }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 | let channel: Channel
188 | let delegate: CitadelServerDelegate
:
276 | return try await bootstrap.bind(host: host, port: port).map { channel in
277 | SSHServer(channel: channel, logger: logger, delegate: delegate)
278 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 | }
280 | }
/host/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 |
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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):
/host/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,
/host/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
/host/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)
/host/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
/host/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 | )
/host/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 | }
/host/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
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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)
/host/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
/host/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 | }
/host/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):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467: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
465 | )
466 |
467 | 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
468 | do {
469 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
470 | for try await chunk in stream {
471 | switch chunk {
[869/879] Compiling Citadel ShellDelegate.swift
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 | handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 | case .directTCPIP(let request):
165 | guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 | }
168 |
169 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 | return delegate.initializeDirectTCPIPChannel(
171 | channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270: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
:
268 | }
269 | ),
270 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 | ])
272 | }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 | let channel: Channel
188 | let delegate: CitadelServerDelegate
:
276 | return try await bootstrap.bind(host: host, port: port).map { channel in
277 | SSHServer(channel: channel, logger: logger, delegate: delegate)
278 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 | }
280 | }
/host/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 |
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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):
/host/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,
/host/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
/host/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)
/host/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
/host/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 | )
/host/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 | }
/host/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
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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)
/host/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
/host/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 | }
/host/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):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467: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
465 | )
466 |
467 | 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
468 | do {
469 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
470 | for try await chunk in stream {
471 | switch chunk {
[870/879] Compiling Citadel TTY.swift
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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
/host/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:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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 | }
/host/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
/host/spi-builder-workspace/Sources/Citadel/Server.swift:163:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
161 | handlers.append(ExecHandler(delegate: exec, username: username))
162 |
163 | return channel.pipeline.addHandlers(handlers)
| `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
164 | case .directTCPIP(let request):
165 | guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:169:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
167 | }
168 |
169 | return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
| `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
170 | return delegate.initializeDirectTCPIPChannel(
171 | channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:13: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
2 | import NIOSSH
3 |
4 | final class DataToBufferCodec: ChannelDuplexHandler {
| `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
5 | typealias InboundIn = SSHChannelData
6 | typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:270: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
:
268 | }
269 | ),
270 | CloseErrorHandler(logger: logger)
| `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
271 | ])
272 | }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:278:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 | let channel: Channel
188 | let delegate: CitadelServerDelegate
:
276 | return try await bootstrap.bind(host: host, port: port).map { channel in
277 | SSHServer(channel: channel, logger: logger, delegate: delegate)
278 | }.get()
| `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
279 | }
280 | }
/host/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 |
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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),
/host/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 | }
/host/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
/host/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):
/host/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,
/host/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
/host/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)
/host/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
/host/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 | )
/host/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 | }
/host/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
/host/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 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/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)
/host/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
/host/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 | }
/host/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):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467: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
465 | )
466 |
467 | 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
468 | do {
469 | let stream = try await executeCommandStream(command, inShell: inShell)
| `- note: closure captures 'self' which is accessible to code in the current task
470 | for try await chunk in stream {
471 | switch chunk {
[871/879] Compiling Citadel AES.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
96 | let serialized = Array(bignum.serialize())
97 | (buffer.baseAddress! + 1)
98 | .assign(from: serialized, count: serialized.count)
| |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
| `- note: use 'update(from:count:)' instead
99 |
100 | if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
[872/879] Compiling Citadel DH-Helpers.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
96 | let serialized = Array(bignum.serialize())
97 | (buffer.baseAddress! + 1)
98 | .assign(from: serialized, count: serialized.count)
| |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
| `- note: use 'update(from:count:)' instead
99 |
100 | if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
[873/879] Compiling Citadel DiffieHellmanGroup14Sha1.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
96 | let serialized = Array(bignum.serialize())
97 | (buffer.baseAddress! + 1)
98 | .assign(from: serialized, count: serialized.count)
| |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
| `- note: use 'update(from:count:)' instead
99 |
100 | if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
[874/879] Compiling Citadel DiffieHellmanGroup14Sha256.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
96 | let serialized = Array(bignum.serialize())
97 | (buffer.baseAddress! + 1)
98 | .assign(from: serialized, count: serialized.count)
| |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
| `- note: use 'update(from:count:)' instead
99 |
100 | if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
[875/879] Compiling Citadel RSA.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DH-Helpers.swift:98:18: warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
96 | let serialized = Array(bignum.serialize())
97 | (buffer.baseAddress! + 1)
98 | .assign(from: serialized, count: serialized.count)
| |- warning: 'assign(from:count:)' is deprecated: renamed to 'update(from:count:)'
| `- note: use 'update(from:count:)' instead
99 |
100 | if buffer[1] & 0x80 != 0 {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
17 | private var sharedSecret: Data?
18 | public let ourKey: Insecure.RSA.PrivateKey
19 | public static var ourKey: Insecure.RSA.PrivateKey?
| |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
20 |
21 | private struct _KeyExchangeResult {
[876/880] Wrapping AST for Citadel for debugging
[878/887] Compiling CitadelServerExample Extensions.swift
[879/887] Emitting module CitadelServerExample
[880/887] Compiling CitadelServerExample HostKeyFile.swift
[881/887] Compiling CitadelServerExample Terminal.swift
[882/887] Compiling CitadelServerExample Server.swift
/host/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,
/host/spi-builder-workspace/Sources/Citadel/Server.swift:186:20: note: class 'SSHServer' does not conform to the 'Sendable' protocol
184 | /// The server can be closed using the `close()` method.
185 | /// - Note: This class is not thread safe.
186 | public final class SSHServer {
| `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
187 | let channel: Channel
188 | let delegate: CitadelServerDelegate
/host/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
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:52:36: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
50 | ) {
51 | if case .password(.init(password: password)) = request.request, request.username == username {
52 | return responsePromise.succeed(.success)
| `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
53 | }
54 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
| `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 | case success
213 | case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
/host/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 {
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:55:32: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
53 | }
54 |
55 | return responsePromise.succeed(.failure)
| `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
56 | }
57 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
| `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 | case success
213 | case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
[883/887] Compiling CitadelServerExample EchoShell.swift
[884/887] Compiling CitadelServerExample BasicCommands.swift
[885/888] Wrapping AST for CitadelServerExample for debugging
[886/888] Write Objects.LinkFileList
[887/888] Linking CitadelServerExample
Build complete! (107.15s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-nio-ssh",
"requirement" : {
"range" : [
{
"lower_bound" : "0.3.2",
"upper_bound" : "0.4.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Joannis/swift-nio-ssh.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" : "1.0.0",
"upper_bound" : "2.1.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" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "ios",
"version" : "14.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"
],
"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",
"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",
"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",
"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.5"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.