Message152696
| Author |
neologix |
| Recipients |
BreamoreBoy, gearb0x, jnoller, neologix, news1234, pitrou, python-dev |
| Date |
2012年02月05日.16:55:01 |
| SpamBayes Score |
2.612714e-06 |
| Marked as misclassified |
No |
| Message-id |
<CAH_1eM3eq87=BtaLTr02xh8JnOGt-WThMvd9tRfFt_K8yMPq7A@mail.gmail.com> |
| In-reply-to |
<1325610269.85.0.498899743552.issue8184@psf.upfronthosting.co.za> |
| Content |
> However, let me point out the following sentence:
> "Ports without SO_EXCLUSIVEADDRUSE set may be reused as soon as the socket on which bind was previously called is closed."
>
> ...which seems to suggest we shouldn't use SO_REUSEADDR under Windows, since Windows sockets appear to have the Unix SO_REUSEADDR semantics by default.
Actually, it seems that even though the documentation doesn't mention
sockets in TIME_WAIT state, SO_REUSEADDR is actually required on
Windows:
http://twistedmatrix.com/trac/ticket/1151#comment:18
So the proper solution is the one adopted by support.bind_port(),
SO_REUSEADDR + SO_EXCLUSIVEADDRUSE.
Since Windows semantics is different (I'd rather say broken) and
SO_REUSEADDR is currently mis-used throughout the stdlib, what do you
think of adding a set_reuse() method to socket that would do the right
thing? |
|