https://bugs.winehq.org/show_bug.cgi?id=35831
--- Comment #23 from Bruno Jesus 00cpxxx@gmail.com --- Currently there are no news about fixing this bug, it's practically impossible for a single developer to reproduce since it requires 3 game licences installed on 3 computers (VM may not work due to graphics driver).
I spent some more time reading the logs after reading comment 21. It looks like the 3 IP involved are:
192.168.13.11 192.168.13.12 192.168.13.14
The game tries to bind UDP sockets to the specific interfaces and read the address back before sending to clients, so we can see (in no particular computer order):
Computer #1 trace:winsock:WS_bind socket 01dc, ptr 0x5320108 { family AF_INET, address 192.168.13.12, port 2300 }, length 16 trace:winsock:interface_bind Socket 01dc bound to interface index 2 trace:winsock:WS_getsockname socket: 01dc, ptr 0x5320108, len 00000010 trace:winsock:WS_getsockname => { family AF_INET, address 0.0.0.0, port 2300 }
Computer #2 trace:winsock:WS_bind socket 01b8, ptr 0x47a9108 { family AF_INET, address 192.168.13.14, port 2300 }, length 16 trace:winsock:interface_bind Socket 01b8 bound to interface index 2 trace:winsock:WS_getsockname socket: 01b8, ptr 0x47a9108, len 00000010 trace:winsock:WS_getsockname => { family AF_INET, address 0.0.0.0, port 2300 }
Computer #3 trace:winsock:WS_bind socket 01d8, ptr 0x556c158 { family AF_INET, address 192.168.13.11, port 2300 }, length 16 trace:winsock:interface_bind Socket 01d8 bound to interface index 2 trace:winsock:WS_getsockname socket: 01d8, ptr 0x556c158, len 00000010 trace:winsock:WS_getsockname => { family AF_INET, address 0.0.0.0, port 2300 }
None of the computers is able to read the correct address back, as far as I remember that is by design inside our code.
But, is that really important? Why does it work for 2 computers when the very same operation is done:
trace:winsock:WS_bind socket 01b4, ptr 0x5b0c478 { family AF_INET, address 192.168.13.12, port 2300 }, length 16 trace:winsock:interface_bind Socket 01b4 bound to interface index 2 trace:winsock:WS_getsockname socket: 01b4, ptr 0x5b0c478, len 00000010 trace:winsock:WS_getsockname => { family AF_INET, address 0.0.0.0, port 2300 }
Maybe the game uses different code paths for 2 or more players?