Commit b284e889 authored by Thong Kuah's avatar Thong Kuah

Merge branch 'puma-5-3-2' into 'master'

Bump Puma to 5.3.2

See merge request gitlab-org/gitlab!62607
parents a4770fe1 57e6295b
...@@ -188,7 +188,7 @@ group :unicorn do ...@@ -188,7 +188,7 @@ group :unicorn do
end end
group :puma do group :puma do
gem 'puma', '~> 5.1.1', require: false gem 'puma', '~> 5.3.1', require: false
gem 'puma_worker_killer', '~> 0.3.1', require: false gem 'puma_worker_killer', '~> 0.3.1', require: false
end end
......
...@@ -935,7 +935,7 @@ GEM ...@@ -935,7 +935,7 @@ GEM
tty-markdown tty-markdown
tty-prompt tty-prompt
public_suffix (4.0.6) public_suffix (4.0.6)
puma (5.1.1) puma (5.3.2)
nio4r (~> 2.0) nio4r (~> 2.0)
puma_worker_killer (0.3.1) puma_worker_killer (0.3.1)
get_process_mem (~> 0.2) get_process_mem (~> 0.2)
...@@ -1577,7 +1577,7 @@ DEPENDENCIES ...@@ -1577,7 +1577,7 @@ DEPENDENCIES
pry-byebug pry-byebug
pry-rails (~> 0.3.9) pry-rails (~> 0.3.9)
pry-shell (~> 0.4.0) pry-shell (~> 0.4.0)
puma (~> 5.1.1) puma (~> 5.3.1)
puma_worker_killer (~> 0.3.1) puma_worker_killer (~> 0.3.1)
rack (~> 2.2.3) rack (~> 2.2.3)
rack-attack (~> 6.3.0) rack-attack (~> 6.3.0)
......
# frozen_string_literal: true
if Gitlab::Runtime.puma?
# This patch represents https://github.com/puma/puma/pull/2613. If
# this PR is accepted in the next Puma release, we can remove this
# entire file.
#
# The patch itself is quite large because the tempfile creation in
# Puma is inside these fairly long methods. The actual changes are
# just two lines, commented with 'GitLab' to make them easier to find.
raise "Remove this monkey patch: #{__FILE__}" unless Puma::Const::VERSION == '5.1.1'
module Puma
class Client
private
def setup_body
@body_read_start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
if @env[HTTP_EXPECT] == CONTINUE
# TODO allow a hook here to check the headers before
# going forward
@io << HTTP_11_100
@io.flush
end
@read_header = false
body = @parser.body
te = @env[TRANSFER_ENCODING2]
if te
if te.include?(",")
te.split(",").each do |part|
if CHUNKED.casecmp(part.strip) == 0 # rubocop:disable Metrics/BlockNesting
return setup_chunked_body(body)
end
end
elsif CHUNKED.casecmp(te) == 0
return setup_chunked_body(body)
end
end
@chunked_body = false
cl = @env[CONTENT_LENGTH]
unless cl
@buffer = body.empty? ? nil : body
@body = EmptyBody
set_ready
return true
end
remain = cl.to_i - body.bytesize
if remain <= 0
@body = StringIO.new(body)
@buffer = nil
set_ready
return true
end
if remain > MAX_BODY
@body = Tempfile.new(Const::PUMA_TMP_BASE)
@body.binmode
@body.unlink # GitLab: this is the changed part
@tempfile = @body
else
# The body[0,0] trick is to get an empty string in the same
# encoding as body.
@body = StringIO.new body[0,0] # rubocop:disable Layout/SpaceAfterComma
end
@body.write body
@body_remain = remain
return false # rubocop:disable Style/RedundantReturn
end
def setup_chunked_body(body)
@chunked_body = true
@partial_part_left = 0
@prev_chunk = ""
@body = Tempfile.new(Const::PUMA_TMP_BASE)
@body.binmode
@body.unlink # GitLab: this is the changed part
@tempfile = @body
@chunked_content_length = 0
if decode_chunk(body)
@env[CONTENT_LENGTH] = @chunked_content_length
return true # rubocop:disable Style/RedundantReturn
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment