[close #1327] Fix double port bind in Rails #1383
Merged
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.
The "default" configuration puma level is initialized with a "binds" of
tcp://0.0.0.0:9292
. Puma is designed to be able to bind to multiple ports.When a
:port
is sent from Rails along with an emptyuser_supplied_options
then the port is treated as a "default". This is merged in with the system defaults, and then later converted into a "binds" via callingconfig.port
in theset_host_port_to_config
method.The bug comes due to the "level" of the configuration. Since both are being set on the same "level" the
port
call does not over-write the existing binds but instead prepends to the array. We can fix by ensuring that any binds in a given "level" are empty before setting it.