fix: invert reuseport feature #430
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.
Address issue #428 .
Problem:
The reuseport feature added in #414 introduced a backward compatibility issue.
Users who depend on this crate with
default_features = falsewould silently lose theSO_REUSEPORTsocket option. This could cause socket bind failures on systems where SO_REUSEPORT is required for multicast port sharing (e.g., macOS/BSD).Fix:
This PR inverts the feature tono_reuseport: instead of opting in toSO_REUSEPORTvia a default feature, users on old kernels opt out by enablingno_reuseport. This ensuresdefault_features = falseusers retain the same behavior as before #414.This PR removes the feature
reuseport. Whenset_reuseportfails, we log it and move on. If this causes any other problems, we will catch them down the road (very quickly I think).Migration
If you need to disable SO_REUSEPORT (e.g., old Linux kernels before 3.9):
use. Remove the use of the feature, and it will be handled.features = ["no_reuseport"].