DragonsFire — File Browser
DragonsFirev1.7 / DragonsFirev1.7 / dragonfire / flood.txt
flood.txt — 4.02 KB — Download this file
*New flood control method* A server usually disconnects you for sending too much data to it in a certain period of time, *or* if you try to send it data when it hasn't finished processing your previous data. Usually a server has a buffer for your commands of between 512 and 1024 bytes (varies with each server). mIRC therefore counts the number of bytes you've sent to a server and if this exceeds a certain number, mIRC sends a PING to the server and waits for a PONG. Once it has recieved a PONG, it continues sending the data. All data to be sent is buffered until the PONG reply is received. Once the pong is received, mIRC continues to send the buffered data. Each line of data also stores with it the nick and address of the user to which it is being sent. mIRC also lets you specify the maximum number of buffered messages, so it will store up to a maximum of say 15 messages, and will discard any others. mIRC will also let you specify the maximum number of messages for an individual user. So you can tell it to buffer a maximum of 3 messages for any single user, and any new ones are discarded. mIRC goes one step further: it tries to perform intelligent buffering in an attempt to satisfy the maximum number of users possible as quickly as possible. This is best illustrated with an example. TWO messages are queued for MADGOAT: PRIVMSG madgoat :hi there whats up? PRIVMSG madgoat :I just heard about this new feature ONE message is queued for KREJT: PRIVMSG madgoat :hi there whats up? PRIVMSG krejt :Hallooo there PRIVMSG madgoat :I just heard about this new feature ONE message is queued for MADGOAT: PRIVMSG madgoat :hi there whats up? PRIVMSG krejt :Hallooo there PRIVMSG madgoat :I just heard about this new feature PRIVMSG madgoat :so tell me about it! THREE messages are queued for KREJT: PRIVMSG madgoat :hi there whats up? PRIVMSG krejt :Hallooo there PRIVMSG madgoat :I just heard about this new feature PRIVMSG krejt :Hmmm, is anyone there? PRIVMSG madgoat :so tell me about it! PRIVMSG krejt :okay, I give up! PRIVMSG krejt :See you later... ONE message is queued for NEEP PRIVMSG madgoat :hi there whats up? PRIVMSG krejt :Hallooo there PRIVMSG neep :neep neep! PRIVMSG madgoat :I just heard about this new feature PRIVMSG krejt :Hmmm, is anyone there? PRIVMSG madgoat :so tell me about it! PRIVMSG krejt :okay, I give up! PRIVMSG krejt :See you later... mIRC spreads the messages so that no single user can hog the queue. If the queue reaches the maximum number of lines, then users who already have more than one line in the queue will have one of their lines removed in order to accomodate new users. There are a few other quirks to the way the flood protection works but in general the above is a good description. You can change the settings with the /flood command. /flood [on|off|clear] <triggerbytes> <maxqueuesize> <maxusermessages> triggerbytes - the number of bytes at which mIRC should check if it might be flooding the server or not. Setting this greater than 500 bytes isn't too helpful since that might be the maximum amount a server allows. The lower the number, the more sensitive mIRC will be, and the slower it will reply. Default 400. maxqueuesize - maximum number of lines mIRC will buffer. maxusermessages - maximum number of lines a user can have have in the buffer. Typing /flood with no parameters gives you the current status. For example: /flood 200 10 2 mIRC will check for flooding if it has sent 200 or more characters to the server. mIRC will buffer a maximum of 10 lines and ignore the rest. mIRC will only allow each user 2 buffered lines. Other Comments. It probably needs tweaking etc. beta-testing required. This flood control method *only* works for messages being sent from remote definitions (ie. triggered by other users). So you can still flood *yourself* off the server. It works in the background so you can't see it turn on and off like the old flood protection method.