Random thought: what is the maximum total length of a BlobChunkEvent? I was assuming it to be 450 byte in total, but it obviously isn't based on what I'm seeing in the netgraph while loading. In fact it seems to be about 30 byte longer. So 1024+480 byte will still overflow the packet.
This could explain why people are only getting completely stuck loading while others are chatting on the server. Loading on it's own sends 1440 byte packets, + >60 byte chat message = fail.
You should probably change it to 400 instead. This will fix the problem of netevents getting stuck completely!
But this is only half the issue - fast packets can still break the connection while loading
I've noticed a pattern, it might help with debugging the load freezing. While frozen, dnetsetlogging(1); always looks like this:
There will always be one or more "not recv" between the large batches of packets. It's frozen until this missing packet finally arrives (or forever)
You might be able to fix this by just disabling fast packets if a client can't keep up (check distance between missing packet and current sequence number)
Unless it is already fixed by the patch above (maybe overflowing the packet corrupts sequence number somehow?)
Noone got stuck on my server all day so far.