Wed 13 Feb 2008 05:59:55 AM UTC, comment #1:
Looks like we got packet polution again. Or maybe to be more percise, we just moved the packet polution over.
This is not the fault of dpid being wrong, but when we are decoding packets, we never check if that is the correct packet to decode with! That is why it currently crashes.
Right now, in the lobby, with this patch applied, you will see a few things.
1) it will start spamming errors in the console about what the host/client is sending via the setMultiStats() call. Just shows dpid, #games played & #game wins.
2) if will also start spamming errors in the console about the main cause of the current crash issue we are having. And that is, we are hitting the recvMultiStats() routine with the wrong packet type. It tells you the type. In my tests, it showed
MSG_PLAYER_INFO (1 time) & NET_PING for all remaining iterations.
the actual packet type is NET_PING = 8 & MSG_PLAYER_INFO = 92.
In NETprocessSystemMessage(), pMsg->type = 12 though, for BOTH of them.
3) it will NOT crash now in the lobby, it will just keep spamming the above messages
over & over.
4)netplay.log is expanded to include all known packet types we send, and the output is a bit easier to read IMO.
5) this is NOT a final patch of anything except for netlog.c
This is just meant to show the problem more clearly.
The fix will take some more thinking on how we want to handle this, since I believe in r3759 they used the static NETMSG message; To handle the packets with the MSG* prefix.
Now, we are handling both MSG* & NET* which is screwing us up it looks like it.
But I could be wrong, and it is a simple fix. :)
|