Re: binding UDP port 0 with SO_REUSEADDR
From: Tobias S. Josefowitz <hidden>
Date: 2012-08-01 19:38:54
On Wed, Aug 1, 2012 at 9:02 PM, Eric Dumazet [off-list ref] wrote:
And why are you using SO_REUSEADDR on UDP unicast sockets ?
Simple. This happens in a "scripting" language. The wrapper code assumes that it is better to set SO_REUSEADDR than not (which might be argued, but backwards-compat can be nice) and at the time the code was written the author must have assumed that even if the 'user' aka programmer wants to bind to port 0, SO_REUSEADDR doesn't hurt, because port 0 implicitly meant "please, a free one".
I mean, this is exactly saying " By using this REUSEADDR, I am allowing this port being used by another process, even from another user"
I know. Still, while binding port 0 means "give me any port", I'm quite sure most people would assume they get a free one. And maybe, for whatever reasons, you want to share your random port later and need SO_REUSEADDR because of that. A usecase where someone wants a randomly chosen free or used port does not come to my mind, though. Of course, I'm not relying on the kernel to revert back, I adapted the wrapper code I mentioned above. I still felt like mentioning that it was kind of unexpected, that's all. Best, Tobi