http://bugs.winehq.org/show_bug.cgi?id=18454
--- Comment #6 from Hans Leidekker hans@meelstraat.net --- (In reply to Bruno Jesus from comment #5)
This application requires binding twice in the same port, it uses the real meaning of SO_REUSEADDR in Windows, if we use SO_REUSEPORT to map SO_REUSEADDR it would work (this is already done for OSX).
Note that SO_REUSEPORT is set in addition to SO_REUSEADDR, so we're actually mapping Windows SO_REUSEADDR to the combination. It's still not correct because on Windows SO_REUSEADDR doesn't have to be set on the first socket while SO_REUSEPORT must be set on all sockets on OSX and Linux.
So the app has to set SO_REUSEADDR on all sockets, which might be the case if it was written with portability in mind, for example.
Linux introduced SO_REUSEPORT in 3.9 with slightly different semantics but it looks like it can be used to improve compatibility in the same way as on OSX.