well they lag because the client's packet handler works like shit. the packet handler processes ONE packet each time it is called, instead of the usual while(there is a packet) process it;
it's not that they lag, injection just doesn't handle the recv queue well.
now, 4.0.4x clients... ooh boy aint they the most screwed up bitch ever... although OSI cleaned up the code, the client is somehow laggier... it closes sockets all the time and reopens them on the slightest winsock error.
for a deeper insight, a piece of IRW's code:
Code:
/*
* 400c> fix: transfer ONE packet from the full buffer to the client.
* for some reason osi screwed up their packet handler, the client
* can only process one packet at a time.
* so if you throw more than one full packet (built) the client processes
* only one and kinda hangs till the packet builder is called again (by recv)
*/