/ puma Public
[close #1327] Fix double port bind in Rails #1383
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.
:portis sent from Rails along with an empty
user_supplied_optionsthen the port is treated as a "default". This is merged in with the system defaults, and then later converted into a "binds" via calling
The bug comes due to the "level" of the configuration. Since both are being set on the same "level" the
portcall 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.