http://bugs.winehq.org/show_bug.cgi?id=26031
--- Comment #32 from Artem S. Tashkinov t.artem@mailcity.com 2012-08-08 09:24:49 CDT --- (In reply to comment #31)
Well, as I said before it may be a TCP implementation characteristic. You can look for what TCP TIME_WAIT state means. http://www.unixguide.net/network/socketfaq/2.7.shtml http://serverfault.com/questions/329845/how-to-forcibly-close-a-socket-in-ti...
IMO uTorrent should be smarter and try to bind from time to time, maybe it does that in newer versions.
I'll dig further in the next week. The question is why SO_REUSEADDR is failing when it's supposed to jump the TIME_WAIT.
It surely works in all NT versions of Windows (win 9x uses a different TCP/IP stack/implementation, besides I doubt uTorrent is compatible with the latter), I see no reason why it shouldn't work in Linux.
The kernel can easily track dead previously opened connections (after all the TCP/IP connection has all the required features for that, i.e. the unique sequence, source address and destination address) at the same time allowing to reuse the socket. This whole issue smells more like it's unwillingness on the part of kernel developers than the issue which requires to rework/reimplement something.