diff --git a/config/boot.rb b/config/boot.rb index 72ea699a5..e7d68c4ad 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,14 +1,19 @@ # frozen_string_literal: true -# Rack 3.1.14 or later limits query parameters to 4096 by default, which -# prevents saving workflows with many statuses. -# Setting RACK_QUERY_PARSER_PARAMS_LIMIT to 65536 allows handling up to -# approximately 100 statuses. +# Rack 3.1.14 or later sets default limits of 4MB for query string bytesize +# and 4096 for the number of query parameters. These limits are too low +# for Redmine and can cause the following issues: +# +# - The low bytesize limit prevents the mail handler from processing incoming +# emails larger than 4MB (https://www.redmine.org/issues/42962) +# - The low parameter limit prevents saving workflows with many statuses +# (https://www.redmine.org/issues/42875) # # See also: -# - https://www.redmine.org/issues/42875 # - https://github.com/rack/rack/blob/v3.1.16/README.md#configuration +# - https://github.com/rack/rack/blob/v3.1.16/lib/rack/query_parser.rb#L54 # - https://github.com/rack/rack/blob/v3.1.16/lib/rack/query_parser.rb#L57 +ENV['RACK_QUERY_PARSER_BYTESIZE_LIMIT'] ||= '33554432' ENV['RACK_QUERY_PARSER_PARAMS_LIMIT'] ||= '65536' # Set up gems listed in the Gemfile.