mirror of
https://github.com/apple/swift-nio-extras.git
synced 2025-05-28 09:23:41 +08:00
Strict concurrency for NIOSOCKS (#256)
This commit is contained in:
parent
0447b0359e
commit
dc6987e77e
@ -95,7 +95,8 @@ var targets: [PackageDescription.Target] = [
|
||||
dependencies: [
|
||||
.product(name: "NIO", package: "swift-nio"),
|
||||
.product(name: "NIOCore", package: "swift-nio"),
|
||||
]
|
||||
],
|
||||
swiftSettings: strictConcurrencySettings
|
||||
),
|
||||
.executableTarget(
|
||||
name: "NIOSOCKSClient",
|
||||
@ -142,7 +143,8 @@ var targets: [PackageDescription.Target] = [
|
||||
"NIOSOCKS",
|
||||
.product(name: "NIOCore", package: "swift-nio"),
|
||||
.product(name: "NIOEmbedded", package: "swift-nio"),
|
||||
]
|
||||
],
|
||||
swiftSettings: strictConcurrencySettings
|
||||
),
|
||||
.target(
|
||||
name: "NIONFS3",
|
||||
|
@ -12,8 +12,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// Wrapper for SOCKS protcol error.
|
||||
public enum SOCKSError {
|
||||
/// Wrapper for SOCKS protocol error.
|
||||
public enum SOCKSError: Sendable {
|
||||
|
||||
/// The SOCKS client was in a different state to that required.
|
||||
public struct InvalidClientState: Error, Hashable {
|
||||
|
@ -139,7 +139,7 @@ class SOCKSServerHandlerTests: XCTestCase {
|
||||
expectedRequest: expectedRequest,
|
||||
expectedData: expectedData
|
||||
)
|
||||
XCTAssertNoThrow(try self.channel.pipeline.addHandler(testHandler).wait())
|
||||
XCTAssertNoThrow(try self.channel.pipeline.syncOperations.addHandler(testHandler))
|
||||
|
||||
// wait for the greeting
|
||||
XCTAssertFalse(testHandler.hadGreeting)
|
||||
@ -184,7 +184,7 @@ class SOCKSServerHandlerTests: XCTestCase {
|
||||
expectedRequest: expectedRequest,
|
||||
expectedData: expectedData
|
||||
)
|
||||
XCTAssertNoThrow(try self.channel.pipeline.addHandler(testHandler).wait())
|
||||
XCTAssertNoThrow(try self.channel.pipeline.syncOperations.addHandler(testHandler))
|
||||
|
||||
// wait for the greeting
|
||||
XCTAssertFalse(testHandler.hadGreeting)
|
||||
|
@ -173,7 +173,7 @@ class SocksClientHandlerTests: XCTestCase {
|
||||
|
||||
// server requests an auth method we don't support
|
||||
let promise = self.channel.eventLoop.makePromise(of: Void.self)
|
||||
try! self.channel.pipeline.addHandler(ErrorHandler(promise: promise), position: .last).wait()
|
||||
try! self.channel.pipeline.syncOperations.addHandler(ErrorHandler(promise: promise), position: .last)
|
||||
self.writeInbound([0x05, 0x01])
|
||||
XCTAssertThrowsError(try promise.futureResult.wait()) { e in
|
||||
XCTAssertTrue(e is SOCKSError.InvalidAuthenticationSelection)
|
||||
@ -204,7 +204,7 @@ class SocksClientHandlerTests: XCTestCase {
|
||||
|
||||
// server replies with an error
|
||||
let promise = self.channel.eventLoop.makePromise(of: Void.self)
|
||||
try! self.channel.pipeline.addHandler(ErrorHandler(promise: promise), position: .last).wait()
|
||||
try! self.channel.pipeline.syncOperations.addHandler(ErrorHandler(promise: promise), position: .last)
|
||||
self.writeInbound([0x05, 0x01, 0x00, 0x01, 192, 168, 1, 1, 0x00, 0x50])
|
||||
XCTAssertThrowsError(try promise.futureResult.wait()) { e in
|
||||
XCTAssertEqual(e as? SOCKSError.ConnectionFailed, .init(reply: .serverFailure))
|
||||
@ -262,12 +262,12 @@ class SocksClientHandlerTests: XCTestCase {
|
||||
|
||||
let establishPromise = self.channel.eventLoop.makePromise(of: Void.self)
|
||||
let removalPromise = self.channel.eventLoop.makePromise(of: Void.self)
|
||||
establishPromise.futureResult.whenSuccess { _ in
|
||||
establishPromise.futureResult.assumeIsolated().whenSuccess { _ in
|
||||
self.channel.pipeline.syncOperations.removeHandler(self.handler).cascade(to: removalPromise)
|
||||
}
|
||||
|
||||
XCTAssertNoThrow(
|
||||
try self.channel.pipeline.addHandler(SOCKSEventHandler(establishedPromise: establishPromise)).wait()
|
||||
try self.channel.pipeline.syncOperations.addHandler(SOCKSEventHandler(establishedPromise: establishPromise))
|
||||
)
|
||||
|
||||
self.connect()
|
||||
|
Loading…
x
Reference in New Issue
Block a user