Skip to content

Commit 14ad355

Browse files
samuel-williams-shopifyioquatix
authored andcommitted
Fix defer_stop usage in HTTP1::Server.
1 parent 71f4b15 commit 14ad355

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

lib/async/http/protocol/http1/server.rb

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,22 @@ def each(task: Task.current)
6464
task.annotate("Reading #{self.version} requests for #{self.class}.")
6565

6666
while request = next_request
67-
if body = request.body
68-
finishable = Finishable.new(body)
69-
request.body = finishable
70-
end
71-
72-
response = yield(request, self)
73-
version = request.version
74-
body = response&.body
75-
76-
if hijacked?
77-
body&.close
78-
return
79-
end
80-
67+
# We have received complete request (line + headers), so defer stop until the response is generated.
8168
task.defer_stop do
69+
if body = request.body
70+
finishable = Finishable.new(body)
71+
request.body = finishable
72+
end
73+
74+
response = yield(request, self)
75+
version = request.version
76+
body = response&.body
77+
78+
if hijacked?
79+
body&.close
80+
return
81+
end
82+
8283
# If a response was generated, send it:
8384
if response
8485
trailer = response.headers.trailer!

0 commit comments

Comments
 (0)