The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download | Blog | Stats
Personal tools

Stress Testing

From the makers of InspIRCd.

Jump to: navigation, search

Contents

Introduction

This page documents our current efforts to stress test and verify InspIRCd's reliability.

WARNING: Although stress testing can be fun, it can also take down a machine, or even an entire network (A few days ago, i took down my Windows and FreeBSD machines hammering InspIRCd with 3500 bots (it wasn't pretty, One machine hit its FD limit, another ran out of ram). So please use extreme caution if you wish to conduct the same sort of experiments.

Test One

This test performed at deltechlabs.com ircd by Vincent, running InspIRCd 1.0 Beta 5:

InspIRCd-1.0(Beta5)+CVS Rev. 1.421 motoko.deltechlabs.com :FreeBSD motoko 5.4-RELEASE (O=0) [SE=kqueue]

Sample channel output (2005 users on channel)

Image:Stress2.png

Misc stats

Image:Stress1.png

Test Two

This test performed by GeniusDex on an AMD K6-2 450mhz with 153mb free RAM, Running Linux (Debian Testing). The execution times of four different types of IRCds were compared. Each ircd had 500 test connections from the same script which created the connections, introduced users, then made all the users quit. The execution time (according to ps(1)) measured. For purposes of this test InspIRCd was using its default poll/select engine. The results were as follows:

  • Bahamut (1.8.4): 0:11s
  • InspIRCd (1.0 Beta 4 [1.400]): 0:18s
  • Ultimate3 (3.0.1): 0:19s
  • Unreal (3.2.3): 0:32s

From these tests we can summarize that InspIRCd is approximately 44% faster than UnrealIRCd, and 6% faster than ultimate 3, but approximately 39% slower than Bahamut, on identical hardware and operating systems.

Test Three

This test performed by Brain, using InspIRCd 1.0 RC3+SVN on a network consisting of a Pentium-III 750mhz rackmount server with 320mb RAM, running FreeBSD 5.4, and an AMD Athlon XP 2400+ with 1.5GB of RAM, running Gentoo Linux. This test is designed to test the memory consumption and performance. Once the network is bought up, the first server has 1050 users connected to it, and a third (simulated) server connects and introduces a further 10000 users.

The FreeBSD machine was using the kqueue engine, while the Gentoo machine was using the epoll engine. Both were using single threaded DNS lookups.

All of the connections complete after two of minutes, and after the connections are complete, lag on both servers is still under 0.1 seconds (According to xchat's lag meter), and the statistics are as follows:

[17:15] --- InspIRCd-1.0(RC3)+SVN Rev. 2780 test.chatspike.net :FreeBSD neuron.brainbox.winbot.co.uk 5.4-RELEASE [FLAGS=0,kqueue,singlethread]
[17:15] --- WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=20 MAXBANS=60 NICKLEN=32 CASEMAPPING=rfc1459 STATUSMSG=@+ CHARSET=ascii TOPICLEN=307 :are supported by this server
[17:15] --- KICKLEN=255 MAXTARGETS=20 AWAYLEN=200 CHANMODES=qagohvb,Lk,l,psmntiOrRMcKCQTNVGS NETWORK=InspIRCd-Testnet PARK KNOCK WATCH=999 :are supported by this server
[17:15] --- Server up 0 days, 20:19:48
[17:15] --- u :End of /STATS report
[17:40] --- test.chatspike.net                        1052 [ 9.52%]
[17:40] --- |-test2.chatspike.net                        1 [ 0.01%]
[17:40] --- `-services-dev.chatspike.net             10000 [90.47%]
[17:40] --- End of /MAP
[17:46] --- Users(HASH_MAP) 11053 (16314228 bytes, 12289 buckets)
[17:46] --- Channels(HASH_MAP) 52 (38896 bytes, 193 buckets)
[17:46] --- Commands(VECTOR) 71 (1988 bytes)
[17:46] --- MOTD(VECTOR) 29, RULES(VECTOR) 3
[17:46] --- Modules(VECTOR) 255 (2040)
[17:46] --- ClassFactories(VECTOR) 255 (5100)
[17:46] --- Total allocation: 39016K (0x9868)
[17:46] --- Signals:          0  (0x0)
[17:46] --- Page faults:      5  (0x5)
[17:46] --- Swaps:            0  (0x0)
[17:46] --- Context Switches: 6939103  (0x69e1df)
[17:46] --- z :End of /STATS report
[17:46] --- test2.chatspike.net test.chatspike.net :1 Second server
[17:46] --- services-dev.chatspike.net test.chatspike.net :1 Mass user simulator
[17:46] --- test.chatspike.net test.chatspike.net :0 ChatSpike InspIRCd test server
[17:46] --- * :End of /LINKS list.
[17:48] --- Server up 0 days, 20:52:18
[17:48] --- u :End of /STATS report

Sample channel output (1000 users on channel)

Screenshot of one of the 52 channels:

Image:Stress.png

Test Four

How does InspIRCd cope when spammed and flooded by kiddiots?

Something like this:

[20:06] --> WickedKlown (~WS@CEO.hellswinter.net) has joined #a
[20:06] --- HellsWintera]` is now known as HellsWinter][a
[20:06] --- HellsWinter_]Z is now known as HellsWinter\__
[20:06] --- HellsWinter`a` is now known as HellsWintera`Z
[20:06] --- HellsWintera^] is now known as HellsWinter^Z\
[20:06] --- HellsWinter]`\ is now known as HellsWinter`^`
[20:06] --- HellsWinter``a is now known as HellsWintera^^
[20:06] --- HellsWinter^\[ is now known as HellsWinter`[a
[20:06] --- HellsWinter]Z` is now known as HellsWinter_^\
[20:06] --- HellsWinter^[\ is now known as HellsWinter_\[
[20:06] --- HellsWinter_\` is now known as HellsWinter\[[
[20:06] --- HellsWinteraa` is now known as HellsWinter\_`
[20:06] <-- HellsWinter[]_ has quit (Excess flood)
[20:06] <-- i[a[_] has quit (Excess flood)
[20:06] --- HellsWinter^Z[ is now known as HellsWinter_`]
[20:06] --- HellsWinter^[` is now known as HellsWinter][Z
[20:07] <-- HellsWinter]a[ has quit (Excess flood)
[20:07] <-- s[]`^] has quit (Excess flood)
[20:07] <-- c[ZZ`] has quit (Excess flood)
[20:07] <-- v[^_`] has quit (Excess flood)
[20:07] --- HellsWinter][a is now known as HellsWinter\^a
[20:07] --- HellsWinter^Z\ is now known as HellsWinter[`[
[20:07] --- HellsWinter`[a is now known as HellsWinter][`
[20:07] --- HellsWinter`^` is now known as HellsWinter^Z^
[20:07] --- HellsWinter_^\ is now known as HellsWinterZa`
[20:07] --- HellsWinter`a\ is now known as HellsWintera^Z
[20:07] --- HellsWinter\[[ is now known as HellsWinter^]Z
[20:07] --- HellsWinter_\[ is now known as HellsWinter[]`
[20:07] --- HellsWinter\_` is now known as HellsWinter[_^
[20:07] --- HellsWinter_`] is now known as HellsWinterZ\a
[20:07] <-- HellsWintera`Z has quit (Excess flood)
[20:07] --- HellsWinter][Z is now known as HellsWinterZ\]
[20:07] *** Auto response sent to HellsWinter[`[
[20:07] --- Received a CTCP ping from HellsWinter[`[
[20:07] *** Auto response sent to HellsWinter\^a
[20:07] --- Received a CTCP ping from HellsWinter\^a
[20:07] *** Auto response sent to HellsWinterZ\Z
[20:07] --- Received a CTCP ping from HellsWinterZ\Z
[20:07] *** Auto response sent to a[ZZ\]
[20:07] You are being CTCP flooded from a[ZZ\], ignoring *!*@765CF3D441895531.HellsWinter.cloak
[20:07] *** Auto response sent to HellsWinter][`
[20:07] --- Received a CTCP ping from HellsWinter][`
[20:07] *** Auto response sent to v[^^`]
[20:07] --- Received a CTCP ping from v[^^`]
[20:07] *** Auto response sent to HellsWinter^Z^
[20:07] --- Received a CTCP ping from HellsWinter^Z^
[20:07] *** Auto response sent to b[`\Z]
[20:07] --- Received a CTCP ping from b[`\Z]
[20:07] *** Auto response sent to HellsWinter[_^
[20:07] You are being CTCP flooded from HellsWinter[_^, ignoring *!*@E3403E122C043F7D.HellsWinter.cloak
[20:07] *** Auto response sent to HellsWinterZa`
[20:07] --- Received a CTCP ping from HellsWinterZa`
[20:07] *** Auto response sent to z\aZ
[20:07] --- Received a CTCP ping from z\aZ
[20:07] *** Auto response sent to s[a_\]
[20:07] --- Received a CTCP ping from s[a_\]
[20:07] *** Auto response sent to s[[_`]
[20:07] --- Received a CTCP ping from s[[_`]
[20:07] *** Auto response sent to HellsWinter^]Z
[20:07] You are being CTCP flooded from HellsWinter^]Z, ignoring *!*@76E80366908A4618.HellsWinter.cloak
[20:07] *** Auto response sent to j[Z]_]
[20:07] --- Received a CTCP ping from j[Z]_]
[20:07] *** Auto response sent to HellsWinter[]`
[20:07] --- Received a CTCP ping from HellsWinter[]`
[20:07] *** Auto response sent to x[[`^]
[20:07] --- Received a CTCP ping from x[[`^]
[20:07] *** Auto response sent to d[][^]
[20:07] --- Received a CTCP ping from d[][^]
[20:07] *** Auto response sent to c[`aa]
[20:07] You are being CTCP flooded from c[`aa], ignoring *!*@9607F60EE8C911B4.HellsWinter.cloak
[20:07] *** Auto response sent to HellsWinterZ\a
[20:07] --- Received a CTCP ping from HellsWinterZ\a
[20:07] --- Received a CTCP ping from HellsWinter[`[
[20:07] *** Auto response sent to o[\Z^]
[20:07] --- Received a CTCP ping from o[\Z^]
[20:07] You are being CTCP flooded from HellsWinter][`, ignoring *!*@0D08A6C1EF6BE7EB.HellsWinter.cloak
[20:07] *** Auto response sent to HellsWintera^Z
[20:07] --- Received a CTCP ping from HellsWintera^Z
[20:07] --- Received a CTCP ping from b[`\Z]
[20:07] --- Received a CTCP ping from v[^^`]
[20:07] --- Received a CTCP ping from HellsWinter^Z^
[20:07] You are being CTCP flooded from HellsWinter^]Z, ignoring *!*@76E80366908A4618.HellsWinter.cloak
[20:07] --- Received a CTCP ping from j[Z]_]
[20:07] --- Received a CTCP ping from HellsWinterZa`
[20:07] --- Received a CTCP ping from HellsWinter\^a
[20:07] --- Received a CTCP ping from s[a_\]
[20:07] You are being CTCP flooded from x[[`^], ignoring *!*@D255DC5149B9A04F.HellsWinter.cloak
[20:07] --- Received a CTCP ping from HellsWinterZ\Z
[20:07] --- Received a CTCP ping from o[\Z^]
[20:07] --- Received a CTCP ping from s[[_`]
[20:07] You are being CTCP flooded from z\aZ, ignoring *!*@89743EECE680B29D.HellsWinter.cloak
[20:07] --- Received a CTCP ping from d[][^]
[20:07] --- Received a CTCP ping from HellsWintera^Z
[20:07] --- Received a CTCP ping from HellsWinter[]`
[20:07] You are being CTCP flooded from HellsWinterZ\a, ignoring *!*@2D37520F7602B1D8.HellsWinter.cloak
[20:07] --- HellsWinter\__ is now known as HellsWinter^a[
[20:07] <-- HellsWinter^a[ has quit (Excess flood)
[20:07] *** Auto response sent to HellsWinterZ\]
[20:07] --- Received a CTCP ping from HellsWinterZ\]
[20:07] *** Auto response sent to HellsWintera^^
[20:07] --- Received a CTCP ping from HellsWintera^^
[20:07] <-- f[[^_] has quit (Excess flood)
[20:07] --- HellsWinteraZ` is now known as HellsWinter\\_
[20:07] <-- HellsWinter\\_ has quit (Excess flood)
[20:07] <-- d[][^] has quit (Client exited)
[20:07] --- HellsWinter\^a is now known as HellsWinter[\Z
[20:07] --- HellsWinter[`[ is now known as HellsWinter^^[
[20:07] --- HellsWinter][` is now known as HellsWinter^a\
[20:07] --- HellsWinterZ\a is now known as HellsWinter]Z[
[20:07] --- HellsWinter[_^ is now known as HellsWintera\`
[20:07] --- HellsWintera^^ is now known as HellsWinter```
[20:07] --- HellsWinterZa` is now known as HellsWinter^Z]
[20:07] --- HellsWintera^Z is now known as HellsWintera[]
[20:07] --- HellsWinter[]` is now known as HellsWinter\Z[
[20:07] --- HellsWinter^]Z is now known as HellsWinter\\Z
[20:07] --- HellsWinterZ\] is now known as HellsWinter\Z]
[20:07] <-- HellsWintera[] has quit (Client exited)
[20:07] --> HellsWinter]]] (~d]_z@02F93A4873840759.HellsWinter.cloak) has joined #a
[20:07] --> k[]]\] (~w[_^`]@9B07F4E53C2699ED.HellsWinter.cloak) has joined #a
[20:07] --> iZ`` (~h^a`@F1544AB179FCF341.HellsWinter.cloak) has joined #a
[20:08] <-- HellsWinter[\Z (~m[z[^]@02F93A4873840759.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter]]] (~d]_z@02F93A4873840759.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^^[ (~t[aa]]@B9622483ADA90B34.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- s[[_`] (~g[a[[]@HellsWinter-916D26AFC6400F95.hsd1.or.comcast.net) has left #a (FLooD)
[20:08] <-- a[ZZ\] (~w[z_[]@765CF3D441895531.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- z\aZ (~jaz\@89743EECE680B29D.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- c[`aa] (~q[\][]@9607F60EE8C911B4.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^a\ (~c[[^`]@0D08A6C1EF6BE7EB.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- o[\Z^] (~e[`aa]@F2DDD17165709CCB.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- v[^^`] (~c[[\z]@A1C50E8F51B4F220.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- b[`\Z] (~i[`]\]@F1544AB179FCF341.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter]Z[ (~k[\a]]@2D37520F7602B1D8.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^Z^ (~k[\\^]@46C3DDD540559F36.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- k[]]\] (~w[_^`]@9B07F4E53C2699ED.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- iZ`` (~h^a`@F1544AB179FCF341.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- j[Z]_] (~t[_z\]@D79A4429FB0452DF.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter\\Z (~z[_[[]@76E80366908A4618.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^Z] (~e[]z\]@BDE30727CA134634.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- x[[`^] (~n[[[a]@D255DC5149B9A04F.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- s[a_\] (~x[^\[]@EBD1D717C5A65392.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter``` (~u[^_[]@5EDC8C390F91F673.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter\Z[ (~f[``[]@F11BC723FAB401EA.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWintera\` (~a[[\[]@E3403E122C043F7D.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter\Z] (~q[_^`]@2416A1928D91E1C7.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- tarta_man (~meuemailehm@810680E0400211D8.HellsWinter.cloak) has left #a ([CyberScript])
[20:08] <-- a[a\a] has quit (Excess flood)
[20:08] --- whowas: tarta_man: There was no such nickname
[20:08] --> HellsWinter^^[ (~t[aa]]@B9622483ADA90B34.HellsWinter.cloak) has joined #a
[20:08] --> s[[_`] (~g[a[[]@HellsWinter-916D26AFC6400F95.hsd1.or.comcast.net) has joined #a
[20:08] --> z\aZ (~jaz\@89743EECE680B29D.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter]Z[ (~k[\a]]@2D37520F7602B1D8.HellsWinter.cloak) has joined #a
[20:08] --> a[ZZ\] (~w[z_[]@765CF3D441895531.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter^a\ (~c[[^`]@0D08A6C1EF6BE7EB.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter[\Z (~m[z[^]@02F93A4873840759.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter]]] (~d]_z@02F93A4873840759.HellsWinter.cloak) has joined #a
[20:08] --> v[^^`] (~c[[\z]@A1C50E8F51B4F220.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter^Z^ (~k[\\^]@46C3DDD540559F36.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter\\Z (~z[_[[]@76E80366908A4618.HellsWinter.cloak) has joined #a
[20:08] --> k[]]\] (~w[_^`]@9B07F4E53C2699ED.HellsWinter.cloak) has joined #a
[20:08] --> HellsWintera\` (~a[[\[]@E3403E122C043F7D.HellsWinter.cloak) has joined #a
[20:08] --> j[Z]_] (~t[_z\]@D79A4429FB0452DF.HellsWinter.cloak) has joined #a
[20:08] --> iZ`` (~h^a`@F1544AB179FCF341.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter^Z] (~e[]z\]@BDE30727CA134634.HellsWinter.cloak) has joined #a
[20:08] --> x[[`^] (~n[[[a]@D255DC5149B9A04F.HellsWinter.cloak) has joined #a
[20:08] --> s[a_\] (~x[^\[]@EBD1D717C5A65392.HellsWinter.cloak) has joined #a
[20:08] --> b[`\Z] (~i[`]\]@F1544AB179FCF341.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter\Z[ (~f[``[]@F11BC723FAB401EA.HellsWinter.cloak) has joined #a
[20:08] --> o[\Z^] (~e[`aa]@F2DDD17165709CCB.HellsWinter.cloak) has joined #a
[20:08] --> c[`aa] (~q[\][]@9607F60EE8C911B4.HellsWinter.cloak) has joined #a
[20:08] --> HellsWinter``` (~u[^_[]@5EDC8C390F91F673.HellsWinter.cloak) has joined #a
[20:08] <-- HellsWinter[\Z (~m[z[^]@02F93A4873840759.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter]]] (~d]_z@02F93A4873840759.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^^[ (~t[aa]]@B9622483ADA90B34.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- a[ZZ\] (~w[z_[]@765CF3D441895531.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^a\ (~c[[^`]@0D08A6C1EF6BE7EB.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- s[[_`] (~g[a[[]@HellsWinter-916D26AFC6400F95.hsd1.or.comcast.net) has left #a (FLooD)
[20:08] <-- z\aZ (~jaz\@89743EECE680B29D.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- b[`\Z] (~i[`]\]@F1544AB179FCF341.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- v[^^`] (~c[[\z]@A1C50E8F51B4F220.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter]Z[ (~k[\a]]@2D37520F7602B1D8.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^Z^ (~k[\\^]@46C3DDD540559F36.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- k[]]\] (~w[_^`]@9B07F4E53C2699ED.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- iZ`` (~h^a`@F1544AB179FCF341.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter\\Z (~z[_[[]@76E80366908A4618.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- j[Z]_] (~t[_z\]@D79A4429FB0452DF.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter^Z] (~e[]z\]@BDE30727CA134634.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter\Z[ (~f[``[]@F11BC723FAB401EA.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- o[\Z^] (~e[`aa]@F2DDD17165709CCB.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- s[a_\] (~x[^\[]@EBD1D717C5A65392.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWintera\` (~a[[\[]@E3403E122C043F7D.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- x[[`^] (~n[[[a]@D255DC5149B9A04F.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- HellsWinter``` (~u[^_[]@5EDC8C390F91F673.HellsWinter.cloak) has left #a (FLooD)
[20:08] <-- c[`aa] (~q[\][]@9607F60EE8C911B4.HellsWinter.cloak) has left #a (FLooD)
[20:08] --> kZ\\ (~i`]^@HellsWinter-96D89E5A40B4AFB5.ruh.isu.net.sa) has joined #a
[20:08] <-- kZ\\ (~i`]^@HellsWinter-96D89E5A40B4AFB5.ruh.isu.net.sa) has left #a (FLooD)
[20:09] <-- v[]]_] has quit (Ping timeout)
[20:10] *** Auto response sent to HellsWinter[\Z
[20:10] --- Received a CTCP version from HellsWinter[\Z
[20:10] *** Auto response sent to HellsWinter\`a
[20:10] --- Received a CTCP version from HellsWinter\`a
[20:10] *** Auto response sent to HellsWinter^_Z
[20:10] *** Auto response sent to n[`\
[20:10] --- Received a CTCP version from n[`\
[20:10] *** Auto response sent to HellsWinter_\_
[20:10] --- Received a CTCP version from v[^^`]
[20:10] *** Auto response sent to HellsWinter_]_
[20:10] --- Received a CTCP version from HellsWinter_]_
[20:10] *** Auto response sent to HellsWinter_[[
[20:10] --- Received a CTCP version from HellsWinter_[[
[20:10] *** Auto response sent to k[]]\]
[20:10] --- Received a CTCP version from k[]]\]
[20:10] --- Received a CTCP version from b[`\Z]
[20:10] *** Auto response sent to HellsWinter^a[
[20:10] *** Auto response sent to v`a^
[20:10] *** Auto response sent to HellsWinter[][
[20:10] --- Received a CTCP version from HellsWinter[][
[20:10] --- Received a CTCP version from j[Z]_]
[20:10] *** Auto response sent to HellsWinterZa_
[20:10] --- Received a CTCP version from HellsWinterZa_
[20:10] *** Auto response sent to HellsWinterZa^
[20:10] --- Received a CTCP version from HellsWinterZa^
[20:10] *** Auto response sent to HellsWinteraZ^
[20:10] *** Auto response sent to v[\[
[20:10] --- Received a CTCP version from v[\[
[20:10] *** Auto response sent to HellsWinter[[Z
[20:10] --- Received a CTCP ping from HellsWinter[\Z
[20:10] --- Received a CTCP ping from HellsWinter\`a
[20:10] --- Received a CTCP ping from n[`\
[20:10] *** Auto response sent to sa]\
[20:10] --- Received a CTCP version from sa]\
[20:10] --- Received a CTCP ping from HellsWinter_]_
[20:10] --- Received a CTCP ping from v[^^`]
[20:10] --- Received a CTCP ping from b[`\Z]
[20:10] --- Received a CTCP ping from HellsWinter_[[
[20:10] *** Auto response sent to r^_[
[20:10] --- Received a CTCP version from r^_[
[20:10] --- Received a CTCP version from o[\Z^]
[20:10] --- Received a CTCP ping from k[]]\]
[20:10] --- Received a CTCP ping from HellsWinter[][
[20:10] --- Received a CTCP ping from j[Z]_]
[20:10] --- Received a CTCP ping from HellsWinterZa^
[20:10] --- Received a CTCP ping from HellsWinterZa_
[20:10] --- Received a CTCP ping from v[\[
[20:10] --- Received a CTCP ping from o[\Z^]
[20:10] --- Received a CTCP ping from r^_[
[20:10] --- Received a CTCP ping from sa]\
[20:10] *** Auto response sent to HellsWinter\]Z
[20:10] --- Received a CTCP ping from HellsWinter\]Z
[20:10] *** Auto response sent to HellsWinterZ_]
[20:10] --- Received a CTCP ping from HellsWinterZ_]
[20:10] --- Received a CTCP ping from n[`\
[20:10] *** Auto response sent to HellsWinter[Z\
[20:10] *** Auto response sent to HellsWinter_^Z
[20:10] *** Auto response sent to HellsWinterZ``
[20:10] --- Received a CTCP ping from HellsWinterZ``
[20:10] --- Received a CTCP ping from v[^^`]
[20:10] --- Received a CTCP ping from b[`\Z]
[20:10] *** Auto response sent to HellsWinter[]\
[20:10] --- Received a CTCP ping from HellsWinter[]\
[20:10] *** Auto response sent to z_]^
[20:10] --- Received a CTCP version from z_]^
[20:10] --- Received a CTCP ping from k[]]\]
[20:10] *** Auto response sent to HellsWinter[^[
[20:10] *** Auto response sent to HellsWinter]_]
[20:10] --- Received a CTCP ping from HellsWinter]_]
[20:10] --- Received a CTCP ping from j[Z]_]
[20:10] *** Auto response sent to HellsWintera\^
[20:10] --- Received a CTCP ping from HellsWintera\^
[20:10] *** Auto response sent to HellsWinterZZ]
[20:10] *** Auto response sent to HellsWinter^]a
[20:10] --- Received a CTCP ping from HellsWinter^]a
[20:10] --- Received a CTCP version from HellsWinter\]Z
[20:10] --- Received a CTCP version from HellsWinterZ_]
[20:10] --- Received a CTCP ping from v[\[
[20:10] --- Received a CTCP version from n[`\
[20:10] *** Auto response sent to n]^_
[20:10] --- Received a CTCP version from n]^_
[20:10] --- Received a CTCP ping from n]^_
[20:10] *** Auto response sent to HellsWinter[Z`
[20:10] --- Received a CTCP ping from HellsWinter[Z`
[20:10] --- Received a CTCP version from HellsWinterZ``
[20:10] --- Received a CTCP version from HellsWinter[Z`
[20:10] *** Auto response sent to HellsWinter^a]
[20:10] --- Received a CTCP version from v[^^`]
[20:10] --- Received a CTCP version from HellsWinter[]\
[20:10] --- Received a CTCP version from k[]]\]
[20:10] --- Received a CTCP version from HellsWinter]_]
[20:10] --- Received a CTCP version from j[Z]_]
[20:10] --- Received a CTCP version from HellsWinter^]a
[20:10] --- Received a CTCP version from HellsWintera\^
[20:10] --- Received a CTCP version from b[`\Z]
[20:10] *** Auto response sent to HellsWinterZ[[
[20:10] --- Received a CTCP ping from HellsWinterZ[[
[20:10] --- Received a CTCP version from v[\[
[20:10] --- Received a CTCP ping from o[\Z^]
[20:10] *** Auto response sent to HellsWinter_[`
[20:10] --- Received a CTCP ping from HellsWinter_[`
[20:10] --- Received a CTCP version from HellsWinter_[`
[20:10] *** Auto response sent to HellsWinter\[a
[20:10] --- Received a CTCP version from HellsWinter\[a
[20:10] *** Auto response sent to HellsWinter\][
[20:10] --- Received a CTCP version from HellsWinter\][
[20:10] *** Auto response sent to HellsWinter_Z`
[20:10] *** Auto response sent to HellsWinter[`_
[20:10] --- Received a CTCP version from n[`\
[20:10] *** Auto response sent to HellsWinter_\\
[20:10] --- Received a CTCP version from HellsWinter_\\
[20:10] --- Received a CTCP version from b[`\Z]
[20:10] --- Received a CTCP version from v[^^`]

...I'm sure you get the idea, it doesnt crash Image:Tongue.gif