@@ -124,8 +124,6 @@ public class HTTPServer: Server {
124
124
/// The event loop group on which the HTTP handler runs
125
125
private let eventLoopGroup : MultiThreadedEventLoopGroup
126
126
127
- private var ctx : ChannelHandlerContext ?
128
-
129
127
/**
130
128
Creates an HTTP server object.
131
129
@@ -193,19 +191,18 @@ public class HTTPServer: Server {
193
191
}
194
192
195
193
/// Creates upgrade request and adds WebSocket handler to pipeline
196
- private func upgradeHandler( webSocketHandlerFactory: ProtocolHandlerFactory , request: HTTPRequestHead ) -> EventLoopFuture < Void > {
197
- guard let ctx = self . ctx else { fatalError ( " The channel was probably closed during a protocol upgrade. " ) }
198
- return ctx. eventLoop. submit {
199
- let request = HTTPServerRequest ( ctx: ctx, requestHead: request, enableSSL: false )
194
+ private func upgradeHandler( channel: Channel , webSocketHandlerFactory: ProtocolHandlerFactory , request: HTTPRequestHead ) -> EventLoopFuture < Void > {
195
+ return channel. eventLoop. submit {
196
+ let request = HTTPServerRequest ( channel: channel, requestHead: request, enableSSL: false )
200
197
return webSocketHandlerFactory. handler ( for: request)
201
198
} . flatMap { ( handler: ChannelHandler ) -> EventLoopFuture < Void > in
202
- return ctx . channel. pipeline. addHandler ( handler) . flatMap {
199
+ return channel. pipeline. addHandler ( handler) . flatMap {
203
200
if let _extensions = request. headers [ " Sec-WebSocket-Extensions " ] . first {
204
201
let handlers = webSocketHandlerFactory. extensionHandlers ( header: _extensions)
205
- return ctx . channel. pipeline. addHandlers ( handlers, position: . before( handler) )
202
+ return channel. pipeline. addHandlers ( handlers, position: . before( handler) )
206
203
} else {
207
204
// No extensions. We must return success.
208
- return ctx . channel. eventLoop. makeSucceededFuture ( ( ) )
205
+ return channel. eventLoop. makeSucceededFuture ( ( ) )
209
206
}
210
207
}
211
208
}
@@ -222,7 +219,7 @@ public class HTTPServer: Server {
222
219
223
220
private func generateUpgradePipelineHandler( _ webSocketHandlerFactory: ProtocolHandlerFactory ) -> UpgradePipelineHandlerFunction {
224
221
return { ( channel: Channel , request: HTTPRequestHead ) in
225
- return self . upgradeHandler ( webSocketHandlerFactory: webSocketHandlerFactory, request: request)
222
+ return self . upgradeHandler ( channel : channel , webSocketHandlerFactory: webSocketHandlerFactory, request: request)
226
223
}
227
224
}
228
225
@@ -304,8 +301,7 @@ public class HTTPServer: Server {
304
301
. serverChannelOption ( ChannelOptions . socket ( SocketOptionLevel ( SOL_SOCKET) , SO_REUSEPORT) , value: allowPortReuse ? 1 : 0 )
305
302
. childChannelInitializer { channel in
306
303
let httpHandler = HTTPRequestHandler ( for: self )
307
- let config : NIOHTTPServerUpgradeConfiguration = ( upgraders: upgraders, completionHandler: { ctx in
308
- self . ctx = ctx
304
+ let config : NIOHTTPServerUpgradeConfiguration = ( upgraders: upgraders, completionHandler: { _ in
309
305
_ = channel. pipeline. removeHandler ( httpHandler)
310
306
} )
311
307
return channel. pipeline. configureHTTPServerPipeline ( withServerUpgrade: config, withErrorHandling: true ) . flatMap {
0 commit comments