@@ -111,8 +111,10 @@ public final actor MongoConnection: Sendable {
111
111
112
112
/// Registers MongoKitten's handlers on the channel
113
113
public static func addHandlers( to channel: Channel , context: MongoClientContext ) -> EventLoopFuture < Void > {
114
- let parser = ClientConnectionParser ( context: context)
115
- return channel. pipeline. addHandler ( ByteToMessageHandler ( parser) )
114
+ channel. eventLoop. makeCompletedFuture {
115
+ let parser = ClientConnectionParser ( context: context)
116
+ return try channel. pipeline. syncOperations. addHandler ( ByteToMessageHandler ( parser) )
117
+ }
116
118
}
117
119
118
120
public func ping( ) async throws {
@@ -137,7 +139,7 @@ public final actor MongoConnection: Sendable {
137
139
public static func connect(
138
140
settings: ConnectionSettings ,
139
141
logger: Logger = Logger ( label: " org.orlandos-nl.mongokitten.connection " ) ,
140
- resolver: Resolver ? = nil ,
142
+ resolver: ( Resolver & Sendable ) ? = nil ,
141
143
clientDetails: MongoClientDetails ? = nil
142
144
) async throws -> MongoConnection {
143
145
#if canImport(NIOTransportServices) && os(iOS)
@@ -151,7 +153,7 @@ public final actor MongoConnection: Sendable {
151
153
settings: ConnectionSettings ,
152
154
logger: Logger = Logger ( label: " org.orlandos-nl.mongokitten.connection " ) ,
153
155
onGroup group: _MongoPlatformEventLoopGroup ,
154
- resolver: Resolver ? = nil ,
156
+ resolver: ( Resolver & Sendable ) ? = nil ,
155
157
clientDetails: MongoClientDetails ? = nil ,
156
158
sessionManager: MongoSessionManager = . init( )
157
159
) async throws -> MongoConnection {
@@ -187,21 +189,19 @@ public final actor MongoConnection: Sendable {
187
189
#if canImport(NIOTransportServices) && os(iOS)
188
190
#else
189
191
if settings. useSSL {
190
- do {
191
- var configuration = TLSConfiguration . clientDefault
192
+ var configuration = TLSConfiguration . clientDefault
192
193
193
- if let caCert = settings. sslCaCertificate {
194
- configuration. trustRoots = NIOSSLTrustRoots . certificates ( [ caCert] )
195
- } else if let caCertPath = settings. sslCaCertificatePath {
196
- configuration. trustRoots = NIOSSLTrustRoots . file ( caCertPath)
197
- }
194
+ if let caCert = settings. sslCaCertificate {
195
+ configuration. trustRoots = NIOSSLTrustRoots . certificates ( [ caCert] )
196
+ } else if let caCertPath = settings. sslCaCertificatePath {
197
+ configuration. trustRoots = NIOSSLTrustRoots . file ( caCertPath)
198
+ }
198
199
200
+ return channel. eventLoop. makeCompletedFuture {
199
201
let handler = try NIOSSLClientHandler ( context: NIOSSLContext ( configuration: configuration) , serverHostname: host. hostname)
200
- return channel. pipeline. addHandler ( handler) . flatMap {
201
- return MongoConnection . addHandlers ( to: channel, context: context)
202
- }
203
- } catch {
204
- return channel. eventLoop. makeFailedFuture ( error)
202
+ try channel. pipeline. syncOperations. addHandler ( handler)
203
+ } . flatMap {
204
+ return MongoConnection . addHandlers ( to: channel, context: context)
205
205
}
206
206
}
207
207
#endif
0 commit comments