On Sun, Jul 01, 2001 at 10:14:26PM -0400, Mark-Jason Dominus wrote:
>
> The program at
>
> http://www.plover.com/~mjd/misc/err.pl
>
> demonstrates this. It is a P::C::I application which logs into #mjd
> and does two things: it echoes back all convesation on the channel,
> and it emits a HOUSEKEEPING message every second.
>
> The console output gets very far ahead of the IRC output; the program
> has executed the 'housekeeping' function for the 40th time before the
> 20th 'HOUSEKEEPING; message appears on the IRC channel. The program
> gets similarly behind in processing public conversation. The
> irc_public function is called in timely fashion, as soon as anyone
> says anything, but delay before the appearanace of the message from
> the server echoing what was said gets longer and longer.
tcpdump on a modified version of err.pl seems to indicate that the
slowdown is in ircd. Packets are being sest timely, but ircd's
response time increases forever and the bot finally floods off.
IRC session dump. Responses are observed becoming more and more
delayed as time passes.
(R12348:#mjd) HOUSEKEEPING Mon Jul 2 13:15:00 2001
## Join #mjd: R12348 ([EMAIL PROTECTED])
<R12348> HOUSEKEEPING Mon Jul 2 13:15:01 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:02 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:03 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:04 2001
<dngnot> one lag check
<R12348> HOUSEKEEPING Mon Jul 2 13:15:05 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:06 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:07 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:08 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:09 2001
<R12348> dngnot says "one lag check"
<R12348> HOUSEKEEPING Mon Jul 2 13:15:10 2001
<dngnot> two lag check
<R12348> HOUSEKEEPING Mon Jul 2 13:15:11 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:12 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:13 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:14 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:15 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:16 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:17 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:18 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:19 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:20 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:21 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:22 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:23 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:24 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:25 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:26 2001
<R12348> dngnot says "two lag check"
<R12348> HOUSEKEEPING Mon Jul 2 13:15:28 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:29 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:30 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:31 2001
<R12348> HOUSEKEEPING Mon Jul 2 13:15:32 2001
## Signoff #mjd: R12348 (Read error: 0 (Success))
This is a packet dump of the same IRC session.
The bot sends a housekeeping ping. The timestamp in the message
matches the TCP header's timestamp (first field on first line):
13:15:00.712004 206.251.198.172.2627 > 199.245.105.172.6667: [...]
[...]
0x0070 0d0a 5052 4956 4d53 4720 236d 6a64 203a ..PRIVMSG.#mjd.:
0x0080 484f 5553 454b 4545 5049 4e47 204d 6f6e HOUSEKEEPING.Mon
0x0090 204a 756c 2020 3220 3133 3a31 353a 3030 .Jul..2.13:15:00
0x00a0 2032 3030 310d 0a0d 0a .2001....
My client receives the housekeeping ping after maybe 7/10 seconds
delay, which isn't that bad considering I'm on a modem:
13:15:01.302017 195.82.114.160.6667 > 206.251.198.172.elan: [...]
[...]
0x0060 7275 732e 6e65 7420 5052 4956 4d53 4720 rus.net.PRIVMSG.
0x0070 236d 6a64 203a 484f 5553 454b 4545 5049 #mjd.:HOUSEKEEPI
0x0080 4e47 204d 6f6e 204a 756c 2020 3220 3133 NG.Mon.Jul..2.13
0x0090 3a31 353a 3030 2032 3030 310d 0a :15:00.2001..
Time passes, and I send a lag check message:
13:15:08.960569 206.251.198.172.elan > 195.82.114.160.6667: [...]
[...]
0x0030 219e 2053 5052 4956 4d53 4720 236d 6a64 !..SPRIVMSG.#mjd
0x0040 203a 6f6e 6520 6c61 6720 6368 6563 6b0d .:one.lag.check.
The bot receives it after about a second:
13:15:09.842492 199.245.105.172.6667 > 206.251.198.172.2627: [...]
[...]
0x0060 7573 2e6e 6574 2050 5249 564d 5347 2023 us.net.PRIVMSG.#
0x0070 6d6a 6420 3a6f 6e65 206c 6167 2063 6865 mjd.:one.lag.che
0x0080 636b 0a ck.
The bot echoes me in about 1/10 of a second. That's time spent inside
POE itself.
13:15:09.942227 206.251.198.172.2627 > 199.245.105.172.6667: [...]
[...]
0x0030 45e0 10b4 5052 4956 4d53 4720 236d 6a64 E...PRIVMSG.#mjd
0x0040 203a 646e 676e 6f74 2073 6179 7320 226f .:dngnot.says."o
0x0050 6e65 206c 6167 2063 6865 636b 220d 0a0d ne.lag.check"...
0x0060 0a
My client receives it ten seconds later!
13:15:19.442703 195.82.114.160.6667 > 206.251.198.172.elan: [...]
[...]
0x0060 7275 732e 6e65 7420 5052 4956 4d53 4720 rus.net.PRIVMSG.
0x0070 236d 6a64 203a 646e 676e 6f74 2073 6179 #mjd.:dngnot.say
0x0080 7320 226f 6e65 206c 6167 2063 6865 636b s."one.lag.check
0x0090 220d 0a "..
Here's a housekeeping ping later on in the bot's session. The
timestamp inside the packet matches the time it was transmitted.
13:15:26.989748 206.251.198.172.2627 > 199.245.105.172.6667: [...]
[...]
0x0030 45e0 171c 5052 4956 4d53 4720 236d 6a64 E...PRIVMSG.#mjd
0x0040 203a 484f 5553 454b 4545 5049 4e47 204d .:HOUSEKEEPING.M
0x0050 6f6e 204a 756c 2020 3220 3133 3a31 353a on.Jul..2.13:15:
0x0060 3236 2032 3030 310d 0a0d 0a 26.2001....
But it takes almost half a minute to return!
13:15:53.384472 195.82.114.160.6667 > 206.251.198.172.elan: [...]
[...]
0x0050 616d 692d 464c 2d32 2d31 3732 2e6e 6574 ami-FL-2-172.net
0x0060 7275 732e 6e65 7420 5052 4956 4d53 4720 rus.net.PRIVMSG.
0x0070 236d 6a64 203a 484f 5553 454b 4545 5049 #mjd.:HOUSEKEEPI
0x0080 4e47 204d 6f6e 204a 756c 2020 3220 3133 NG.Mon.Jul..2.13
0x0090 3a31 353a 3236 2032 3030 310d 0a :15:26.2001..
So it looks like POE's ok. Yay!
-- Rocco Caputo / [EMAIL PROTECTED] / poe.perl.org / poe.sourceforge.net