Allow HTTPServerRequest creation on the current EventLoop only #215
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An
HTTPServerRequest
abstracts a received HTTP request. Though anHTTPServerRequest
must be strictly associated with an HTTP connection,Kitura-NIO allowed creation of HTTPServerRequests from anywhere. Consequently,
to build the
URL
for theurlURL
property, when we need to accessChannelHandlerContext
properties likelocalAddress
orremoteAddress
, thatcode needs to be dispatched to the EventLoop. Because the computation of
urlURL
is synchronous, we also need to wait() for the EventLoop to return. IfurlURL
were invoked on an EventLoop, like we do inKitura-WebSocket-NIO
, wefail with a SwiftNIO assertion that doesn't permit wait() to be invoked on an
EventLoop
.The best possible solution to this issue is to restrict the HTTPServerRequest
creation on the EventLoop associated with the underlying HTTP connection only.
The
ChannelHandlerContext
properties could then be accessed in theinitializer.