[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ping timeout?



>>>>> "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