>>>>> "James" == James Waldrop <sulam@xxxxxxxxxxxxx> writes:
James> You can cause this to happen very easily. Login to IRC and
James> send yourself a line of text repeatedly (30-40) times. You
James> have to have the flooding tuned very high for this to work.
James> The first 10 or so messages come back relatively quickly, but
James> after that you can continue to send them and not get anything
James> back from the server. Eventually you may or may not see a
James> PING, and even if you PONG back you still get timed out.
James> Because we're getting timed out I've been assuming the
James> problem is due to a delay in handling the input queue, so I'm
James> focusing my time there right now. But I'd love some advice on
James> where else to look, or if someone knows what the problem is
James> and how to fix it off the top of their head that'd be great
James> too.
This sounds like a side-effect of the penalty code kicking
in. Basically everything you send to the server has a penalty
associated with it. From http://www.stealth.net/~kalt/irc/faq.html#misc-4:
4.What is ``penalty''?
This feature appeared in 2.9.1 in replacement of some old
less flexible equivalent mechanism. Each command of the
server has a penalty which will be applied to the client
running this command.
The penalty is defined in seconds. If a user's penalty
exceeds 10 seconds, any incoming data is delayed, and only
processed when the penalty goes under 10 seconds again.
Many people would like a list of penalties, unfortunately,
it is quite difficult to make one. The only way to know is
to RTFS. Most of the time, commands which affect the net
have a high penalty. (For example, doing a remote WHOIS is
more penalized than doing a WHOIS locally).
Basically I think you're sending so much that your penalty exceeds the
ping timeout for your connection class. Hence your incoming PONG
response isn't processed in time.
- Andrew
--
#!/usr/bin/env python
print(lambda s:s+"("+`s`+")")\
('#!/usr/bin/env python\012print(lambda s:s+"("+`s`+")")\\\012')
print(lambda x:x%`x`)('print(lambda x:x%%`x`)(%s)')
Attachment:
pgp00013.pgp
Description: PGP signature