fix(s2n-quic-platform): disable REUSEADDR by default #2110
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.
Suggestion cannot be applied right now. Please check back later.
Description of changes:
The socket creation code currently defaults to setting
SO_REUSEADDR
. This isn't ideal as the OS can decide to reassign the socket's port. It also is basically non-portable and behaves differently across platforms (see https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ).This change defaults to disabling the option, with a configuration method to opt-in if an application needs it.
Callouts:
The
perf
scripts were leaving as2n-quic-qns
process around after execution, which was hidden by the use of REUSEADDR. I've fixed those scripts to useexec
which now cleans them up properly.Testing:
All of the existing end-to-end tests should continue to function just fine, since we were never utilizing the REUSEADDR functionality in the first place.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.