summaryrefslogtreecommitdiff
path: root/docs/ChangeLog
blob: 2067db8682014767f48fbcd8079ea3f902d44582 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
1.0 Final

    * Optimized WriteServ - why use %s!%s@%s when we have the more optimal userrec::GetFullHost() ?
    * Added new event into m_spanningtree, event id send_metadata, which allows arbitary posting of metadata outside of the netburst, see line 529 of m_ssl_gnutls for an example of how to use it.
    * Added check that forbids configuration as root >:-)
    * Major updates to CBANs...like they're reasonably functional
    * Added support for TYPE_OTHER metadata, where void* target will be NULL, e.g. its not bound to a user or a nick
    * Fix to send 403 on invalid channel name
    * Moved Write() call so that it can send the NICK message properly and force the client to change
    * Allow ulines to still notice the channel regardless of +T
    * Created OnPostOper that can be gauranteed to be called *after* opering (by ALL modules) is done
    * "Oper of unknown type" -> "313 %s %s :is an IRC operator"
    * Auto-assume "+" on the start of opermode block if not included
    * Removed example commands that never actually existed
    * OpenSSL detection and cert generation in ./configure
    * Changed length of password field to 64, giving us a maximum password length of 63 plus null terminator
    * Fixed uninitialized ExtMode::list
    * Added some extra debug
    * Make m_services use InsertMode (are we done yet?)
    * Changed On005Numeric to use InsertMode (we left one out?)
    * Deleted the semicolon that had half the dev team wondering...
    * Incorporated Craig's friendlier SQL class (documentation to come later)
    * m_sqlauth: Fix small memory leaks in some cases (bad password, bad query, lost mysql server connection etc..)
    * Correctly initialize userrec::password (should fix a few m_sql issues)
    * Add m_conn_waitpong, require clients to reply with a correct PONG to a server PING before they can connect
    * Remove unused includes and rename classes from ModuleSSL to ModuleSSLGnuTLS so we can be consistent across multiple SSL modules
    * Added warnings to opers when session limits are exceeded
    * Improved IP handling. Now uses in_addr to store client ip, not char[16]!, Added global and local session limits
    * Problems removing +t due to wrong bit-value being used in comparison
    * Altered so that if running in -debug mode, will not erase its .so files from /tmp to allow a clean backtrace
    * Removed unneccessary strlcpy
    * Removed a load of unneeded includes (poll.h etc)
    * Added <ident:timeout> example so that people remember to set this when using m_ident.so
    * Default ident timeout to 1 sec if not defined (a bit low, but better than 0!)
    * Updated m_ident to use inspsocket, should be more reliable
    * Added missing modules (newer ones)
    * Removed excessive debug for something thats now fixed
    * Merged Andy Church's isnick() and isident() patches - faster, more efficient, and doesnt accidentally allow "-" as the first character of a nickname, Also adapted to iterate over a char* pointer rather than using unsigned int for the for() loops
    * Added m_opersha256 module created by Special
    * Add module for anti-autorejoin channel mode +J
    * Changes to INVEX and EXCEPTS 005 tokens
    * Changed +l to drop the mode if the limit is same as current., Optimized check on numeric chars
    * Remove last relic of last goto in inspircd (an unused label)
    * Fixed to not have ohv in CHANMODES type A,, Added proper MAXMODES output in 005 instead of hard coded '13'
    * One goto is now no gotos.
    * Change m_redirect, m_joinflood and m_messageflood to put their modes in the correct section and to use InsertMode()
    * Add InsertMode function to helperfuncs.(cpp|h) for easily adding modes to the CHANMODES section of the 005 numeric
    * Added patch from Andy Church re spaces in SETNAME
    * Fixed line endings when skipping ssl cert generation
    * Documented some functions that were missing comments
    * Properly check that existing key resides in conf/ and not current dir
    * Added PRIORITY_BEFORE and PRIORITY_AFTER (see src/modules/m_hostchange.cpp for how it works, function Prioritize())
    * Added -modupdate to regenerate modules makefile, Added SSL option, as well as a 'Build Certificate' section (If avaliable)
    * Adding the +e and +I modules m_banexception and m_inviteexception, also adding their shared utility header
    * Added trick to allow local server to unset -r only in one specific condition (the nickchange)
    * Added joinflood +j
    * Made bans check both real and fake host
    * Patched to allow FTOPIC from users (so that chanserv can update the settime and the topic still come from chanserv)
    * Added <link:hidden> to docs
    * Optional IP-Hiding for servers
    * Use libgnutls-config --libs to configure linker options
    * Make relative paths in the config file tags be relative to the insp config directory
    * Change 974 numeric to 490 to avoid collision with Insp's failed to load module error
    * Make m_sslmodes messages appear in the channel window
    * Updated with new docs for maxtargets
    * Updated 005 to show changeable MAXTARGETS
    * Allowed for configuration of maxtargets in <options:maxtargets>
    * Wrong nicklen is shown in the 005 numeric, fixed (noticed by ThaPrince)
    * Initial commit of m_sslmodes, supplying chanmode +z
    * Allow for <bind> tags with no or empty type, as well as 'clients' ones
    * Set vendor and static module flags...even though the booms from trying to unload it would be fun sad.gif
    * Make errors loading certificates DEFAULT level
    * Inital commit of the first SSL module \o/ \o/ \o/ Also Ommeh's first official svn commit \o/
    * Added MakeWildHost to userrec (*!*@dhost), Added ban stuff to messageflood
    * Fixes to server kick (i hope)
    * And yae, the compiler sayeth to brain, fix thine warning. and thou warning art fixeth.
    * Made '*' ban-specifier work
    * Added OnChannelDelete() method (called on KICK, PART or QUIT where a channel is deleted for cleanup of metadata), Added m_messageflood.so
    * Tweaks for openssl compatibility
    * Stopped lines longer than 512b from being killed, instead, warning sent and dropped.
    * Fix to m_redirect to prevent circular link to self
    * Added <allowchannel:name> to allow specific channels
    * Test-fix for crazy's bug (/who 0 * as oper while on no channels)
    * Tony hart stars in a new show, to replace hart attack. YES, ITS CRAQ ATTACK! Now starring the cmd_invite 401 numeric fuckup! grin.gif
    * Umode +R was broken (only worked for channels) -- fixed
    * Removed all strncpy() calls and replaced with strlcpy()
    * strncpy sucks ass! -- Old code was using strncpy which doesnt null terminate a string if the string fills a buffer (!!!) - our strlcpy implementation fixes this.
    * Added unlink() to tidy up /tmp after each dlopen()
    * Added support for part messages in the module API (and therefore between servers too)
    * Fixed bug with {} -> [] etc in NICK where nick == newnick apart from irc-case:, [15:41] --- Brain is now known as [Brain], [15:41] --- {Brain} is now known as {Brain}, Now correct:, [15:41] --- Brain is now known as [Brain], [15:41] --- [Brain] is now known as {Brain}, Was just a strlcpy BEFORE the NICK output instead of AFTER.
    * Fixed so that ONLY ports of type "" or type "clients" are bound by the core, *everything else* is passed over now, not just "servers" type.
    * Changed lots of icky #define's to enums
    * Made <disabled> non-manditory, added check for when singular tags arent defined at all
    * Fixed SIGHUP rehash to actually send rehash event to modules
    * Added checks to forbid declaring certain config tags twice (ones which should only exist once like <server> and <admin>)
    * Added m_vhost, authenticated vhosts from the conf similar to unrealircd's way, requested by PinkFreud
    * Changed some .cpp to .so in the this->source field
    * Removed deprecated default= for bind tags
    * Removed deprecated LocalOp type
    * Added support for <options customversion> to customize the second part of VERSION
    * Bug found by PinkFreud - If an oper deopers themselves by removing the +o mode, their userrec::oper field isnt cleared. Clear it forcibly before DeleteOper.
    * Updated copyrights in headers etc using perl inplace edit
    * Made inspircd close and reopen its log on rehash
    * Removed some redundant (and commented out) functions
    * Made InspSocket::Read return an empty but non-NULL string when it receives EAGAIN (this method didnt know how to cope with EAGAIN before, may be causing random splits?)
    * Extra m_sql field checking
    * Fixed 'stops responding after server pingout, while using select' bug as found by merwin
    * Added RemoveSocket as a test fix for merwins bug
    * Replaced some 'n' with '*n' that was breaking userrec::MakeHost
    * Added extra safety check for a condition that should NOT happen (in theory, but still)
    * xline tweaks
    * Replaced sprintf's with some char* voodoo
    * Changed channel user lists from vector to map
    * Changed makefile to use 'install'


1.0 Final - RC2 (KingArthur)

    *  Added 'a' flag to STATS c which indicates autoconnect state
    * Removed tab characters from example conf
    * Added oper-only-stats option
    * Added 005 stuff after VERSION
    * m_park.cpp fixes (and anything else using UserToPseudo and PesudoToUser)
    * Used mkstemp trick similar to anope and unreal which copies the .so's to temp names under /tmp before loading them, using the current process's PID. This allows for module developers to *safely* rebuild a module (NOT the core) without a segfault while the ircd is up.
    * Aligned % fields in map
    * Changed printf specifiers in map to right-align digits
    * Added User Counts to /map
    * Nicer mode character loop
    * Revise some serious craq++ in AddBan
    * Fixed to not crash on /PARK (still more to test)
    * Added CASEMAPPING and CHARSET to ISUPPORT (005)
    * GCC 4.1 is more strict about extra qualification on members
    * Updated example configuration file
    * Fixes to typos and change to return by reference on GetClass
    * Changes to how classes are looked up (connects slightly faster) and fix for case sensitive passwords
    * Removed cvsignores, set svn:ignore property using -F .cvsignore
    * Added specific errors relating to invalid link tags (requested by Strike)
    * Tidyup of K&R style indenting, comments in silly places, and pointless curly braces around non-blocks
    * Changed to QueryType rather than short int for query types
    * Removed crappy linked list stuff and replaced with faster std::map
    * Improving niceness of DNS code, i WILL make this readable!, Changed a ton of ugly firedns #define's to enums
    * Minor cosmetic fault pointed out by Trystan
    * Blockcolor now blocks reverse and other mirc sillies
    * Ommitting \r and \n from debug display of outbound lines
    * Now uses two AES contexts, an 'in' context and an 'out' context
    * CBC encryption type in AES rather than ECB
    * Changed background stuff to occur more often
    * Made socket.cpp flush its write buffer more often (fixes odd lag on server to server connections)
    * Fixed broken checks to allow overriding
    * Optimized out some more redundant va_args voodoo
    * Double copies due to bad chop()
    * More removal of formatting where its not neccessary x("%s",str) == bad!
    * Attempt to cut out unneccessary printf() va_args voodoo (ugleh)
    * Cached ISUPPORT
    * Added output of error if file descriptor given to AddFd is > MAX_DESCRIPTORS
    * Changed to MAX_DESCRIPTORS
    * Changed 65535 to MAX_DESCRIPTORS calculated at configure-time
    * *FIX* 'No more connections allowed' was comparing against the network-wide limit rather than the local limit (ICK!)
    * Added extra checking to socketengine to refuse connections after we reach the max
    * Added counters for MAX_DESCRIPTORS etc which allows the socket engine to refuse new fd's once you hit the OS limit
    * Initial revision of /devoice.
    * Removed an unused OnUserConnect() method
    * Changed some little bits and bobs here
    * Fixed an extremely n00bish mistake involving referencing a global copy of ServerEngine when we now use one local to class InspIRCd, (everyone point and laugh at Brain)
    * Optimizing to not use so much cpu with high user loads
    * Made 'fake direction' less loud, removed 'invalid source'
    * Added SetSignals()
    * Signal handlers were not being set when -nofork was enabled
    * Changed some other stuff that used the old vector/deque style commandlist
    * Changed from std::map to hash_map
    * Command search function now uses std::map, should be faster (i hope)
    * Removed useless isnick() checks in Give* and Take*, in the name of tidiness
    * Tidyups to mainloop, why were we using isnick() to check if a user was registered?
    * New system for client exits using CullList seems stable, needs testing
    * Changes to the way clients are exited during mainloop - MAY BE UNSTABLE USE WITH CAUTION
    * Check on upper bounds of base64 decode
    * Added checking for bad base64 decodes
    * Updated chanfilter to use irc::string
    * Modified to omit unimplemented module methods
    * Fixed and implemented /modules debug <glob>
    * Added /modules debug
    * Added global_implementation array, bypasses calls which *NO* modules are currently implementing
    * Fixed missing I_On005Numeric
    * New 'Implements' system
    * Added support for implementation hooks
    * Adding hook type checking to event calls to speed them up
    * Allow halfop to dehalfop themselves`


1.0 Final - RC1

    *  Improved efficiency of chanrec constructor (removed strcpys)
    * Changed two fields in ConnectClass to strings, moved constructor stuff to init-list
    * Added 'build complete' message
    * Somehow, the examples had gotten into the conf/ dir, they belong in docs/
    * Improved m_alias to only capture complete commands and rewrite them (bug #92 as reported by strike)
    * Added more verbose error output during link
    * Added CAPAB checking to prevent some obvious n00biness that may occur
    * Initial revision of CBAN. It doesn't do anything useful just yet.
    * LD_LIBRARY_PATH setting is no longer required by core or m_sql.so
    * Changed $CompileFlags to seperate $CompileFlags and $LinkerFlags
    * Added -Wl,--rpath -Wl,LIBDIR to linking parameters to allow users to directly start the binary without the launcher, if they wish
    * Improved makefile dependency lists
    * Removed some redundant code that was commented out
    * Added extra sanity check in squit to make sure REMOTE Servers dont try and squit a server from itself!
    * Added Socket = NULL for local server class to prevent it being 'selectable' by squit
    * Made linking more nazi, will drop connections that send bad commands
    * Fixed to not allow :Abc NICK Abc, where the case of the old and new nick are *identical*
    * Added extra diagnostic messages during connect, if connect fails
    * Added stricter checking for encryption on connect, if enabled
    * Fixed case-change nicks not being propogated
    * Allow case changes in nick w00t -> w00T
    * Added extra key length checks, documented encryption in example conf
    * Added AES encryption to spanningtree links
    * Added IOHookModule stuff to allow for different modules to hook different ports
    * Fixed spanningtree to not allow malformed conf tags (missing/empty values), Added m_spanningtree, m_swhois and some clarifications to example conf
    * Split all commands into seperate files and redid command system to take classes, not function pointers (function pointers suck ass)
    * Moved serverstats* stats to InspIRCd class
    * Moved SocketEngine* SE into InspIRCd class
    * Moved mode stuff into modeparser
    * Moved command_parse functions into class CommandParser
    * Optimized away a memset made it potentially 10x faster
    * Fixed BUG, If an opers SendQ exceeded, it would bring down the server!
    * Added 'local users' vector
    * Full removal of inspircd_util.h
    * Improved pointer voodoo in chanmodes(), many less strlcats
    * Made apply_lines apply perm lines again
    * Added documentation for CullItem and CullList
    * Updated so that netsplits use the cull_list.
    * Added CullList class
    * Added Server::GetVersion()
    * Added new docs for class InspIRCd and globals.h etc
    * Removed depreciated docs
    * moved declarations of typedefs for user_hash and chan_hash etc to typedefs.h
    * Fixed a couple of missing \n's at request of Special
    * optimized a ton of strcmps down to an integer comparison!
    * Optimized accept() stuff to eliminate loop, idea while talking to w00t
    * Got rid of the evil loopy horrid mess in dnsqueue.cpp (singlethreaded dns lookups)
    * Made dnsqueue clean up its sockets from the socketengine properly
    * Prevented zlines from being allowed with a username/ident in them
    * Modified chlist() and whois to allow output of multi line channel membership list (!)
    * Made MAXCHANS growable for opers/ulines
    * Removed some logging that can cause excessively huge logs when select() is being used
    * Removed some remnants from mesh linking
    * Moved some stuff out to userprocess.cpp
    * Efficiency suggestion by w00t, faster processing of module sockets at the expense of a bit of ram
    * New version doesnt yield() any more
    * Made socket loop flush a users buffer if they still remain after processing each line
    * Changed how background processing works, now once per second repeating until nothing left to do
    * Tied in DNS to SocketEngine


1.0 Beta 6

    *  Added SPANNING TREE LINKING support, allowing for STABLE FAST and EFFICIENT linking of InspIRCd servers (m_spanningtree.so)
    * Added m_swhois module, allows setting of arbitary descriptions on users
    * Added a 'Base' installation path to allow installing of the launcher (handy)
    * Added support for the new <include:file> system.
    * Fixed Bug causing the base directory to always overwrite the other dirs
    * Added Base Directory Path to the Path list at the end of ./configure
    * Added Library Path to the path list at the end of ./configure
    * Improved layout
    * Added -lstdc++ for GCC 4 support
    * Removed connection.cpp and servers.cpp
    * Removed static meshed linking from core
    * Fixed code so that it will still work with kernel 2.8, 3.0, 3.2... whoops.
    * Added a chomp() just to be sure on kernel 2.6 check
    * Fix for bug #72 reported by Hal9000
    * Configuration errors now go to the error log
    * Updated to allow users to specify their compiler by hand
    * Added warning about gcc2
    * A lot more of the core consts are now configurable at compile time
    * Fixed removal of mesh linking from core
    * Added cvsignores
    * Added Metadata API (for transferring extensibles over a network transparent to the protocol)
    * GCC4.0 warning fixes
    * Added BoolSet utility class
    * Removed cross-server mesh stuff
    * Fixed missing constructor on class connection
    * Tons of DNS debugging and stability fixes
    * Added experimental multi-threaded DNS using pthreads!
    * Added notice-to-servermask
    * Added ability to output 'is an oper but i dont know what type' in WHOIS
    * Added clever code to propogate module's special commands (SAJOIN, KNOCK etc) transparently!
    * Added opaque protocol functions
    * Highly optimized userrec saving 1.5k per user
    * Added tons of extra documentation to Module class
    * Added OnCleanup function
    * Added OnChangeHost
    * Added OnChangeName
    * Added OnWallops
    * Removed old OnUserSync and OnChannelSync
    * Added Server::RehashServer
    * Added onrehash parameter
    * Added OnGetServerDescription (mainly for link modules)
    * Added OnPostLocalTopic
    * Added OnUserInvite
    * Added remote kill
    * Added opertype to OnOper and added OnMode function
    * Added reason to OnUserQuit
    * Added OnUserMessage and OnUserNotice (why have these been missing so long?)
    * Removed mesh module functions
    * Added OnLoadModule and OnUnloadModule (OnLoadModule was not triggering)
    * Tidied up socket engine code, moved into a specialized header full of #defines
    * Fixed to compensate for ~ in ident length
    * Optimized xline system (much faster, more efficient, less cpu usage)
    * Added insane tag (prevents wide gline etc)
    * Now shows remote quits differently
    * Fixed RFC-non-complaince of TOPIC and NAMES with +s channel (As reported by Ghost)
    * Fixed LUSERS and MAP to display 'dummy' data when no linking module is loaded
    * Changed behaviour of module API to pass Server* to the constructor, rather than have to create one (makes more sense)
    * DNS safety and logging
    * Fixed 'fake direction' messages being put out by user->registered = 7 being set too early
    * Removed the MESHED 005 numeric token
    * Changed epoll delay
    * Allowed ulined servers to by pass all oper permissions checking
    * Added stricter checking for listening sockets
    * Fixed compile time glitches in new code, removed obselete variables
    * Added ability for ulined servers to set any arbitary channel mode (even from outside the channel)
    * Added ability to put command named * into a class to make it cover all
    * Fixed Case sensitivity Bug (BugTrack #88) in m_chanfilter.cpp
    * Changed m_chghost.cpp to silently set hosts if uline sets it


1.0 Beta 5

    *  Added windows comments to module section. Added m_denychans. -katsklaw
    * Added 557 numeric (from MS Exchange chat server) to indicate too many results from /WHO
    * RPL_WHOLIMEXCEEDED changed to 523 to match bahamut
    * Added .cvsignore files
    * Added a ton of missing prompts wink.gif
    * Added cvsignore
    * Changed representation of MAXNICK in isnick() to allow for a non-incremented size
    * Fix for bug #70 (only first item working properly)
    * Fixed max channel length
    * Added ability to update the helpop file on rehash (Bug #69)
    * Added denychans module, allows blocking of channels
    * Added parameters to comments
    * Changed so that when the first in the channel gets founder, the +q mode change is sent to keep the client synched (requested by katsklaw)
    * Fixed nicklength perpetually increasing on each run (reported by katsklaw)
    * Fixed to never append double sums
    * Fixed to preserve epoll/select/kqueue choices
    * Operhosts are now optional (in the type tag)
    * Added check to not flush disconnected buffers
    * Added code to not try and increment buffer if wrote 0 chars
    * Added extra code to notify mainloop when the iterator has been mangled (e.g. by netsplit quits)
    * Added more immediate disconnect when a server isnt routable any more
    * Added ping checks for server links (experimental)
    * Added stuff for /map improvements
    * Autoconnection of servers added
    * Changed to not show remote quits (we don't show remote connects after all)
    * Fixed compile glitch on 3.4
    * Fixed inbound server errors
    * Fixed to erase .so and binaries before trying to overwrite them so mmap doesnt mess up and segfault any running copy (thanks jilles)
    * Fixed to flush buffers when connection closed
    * Fixed to not autoconnect servers we already have!
    * Nonblocking connect() for outbound server links (why was this blocking anyway)
    * Changed /map to show authenticating servers with a * similar to hybrid
    * Now clears the autoconns map on rehash
    * Sum not being propogated properly fix
    * Example conf update from katsklaw
    * Buffer size limits (hard coded to 1mb for now, will allow to raise in config later)
    * Fixed bug where when a server split all other servers would stop responding
    * Fixed the server names reported in /stats l
    * Output buffering on server connections
    * Removed m_globops setting +g automatically on oper, m_opermodes.so can do this now
    * Tidied up some socket stuff into userrec
    * Changed revision id's to std::string
    * Added m_opermodes.cpp, allows addition and removal of modes on oper up
    * Added COMMANDS command (yes, really)
    * Added detail to /COMMANDS
    * Changed cygwin warning
    * Changed to fix minor typo in dynamic-build makefile
    * Edited to properly detect strlcpy on netbsd (different declaration in string.h didn't match regexp)
    * Fixed /COMMANDS
    * Fixed case-sensitivity typo in module name for Addcommand
    * Fixed crappy const stuff
    * Modified to detect kqueue on netbsd
    * Removed stupid consts
    * Updated helpop docs
    * Added eg++ stuff
    * CC fixes
    * Changed to use gmake on ALL bsd variants
    * Kill fixes
    * Warning message for openbsd users that try and use gcc
    * Added -lresolv for solaris
    * Added -lrt for solaris
    * Bzero removed for compatibility with solaris 10
    * Fix to minor typo in solaris stuff
    * Fixes for solaris
    * Fixes to bad filehandle
    * Removed unncessary sched_yield calls
    * Updated for solaris -lsocket / -lnsl
    * Added configurable SOMAXCONN size
    * Changed epoll_wait timeout
    * Default epoll/kqueue to yes
    * Added: Epoll support
    * Kqueue and epoll default to enabled now
    * Made prompts clearer
    * Mass-connect speedups, also now uses less processor time
    * Moved a load of servers-only stuff into serverrec out of the way of userrec
    * Shrunk some datatypes
    * Removed __single_client_alloc again because gcc devs were smoking crack and removed it
    * Added hashcomp.cpp, seperates out the stl hash_map stuff
    * Added a few simple output lines (similar to gnu autoconf so people know what's happening)
    * Added better detection of strlcpy that doesn't involve compiling a test program (faster)
    * Added detection for kqueue, so if your BSD system doesn't have it, the configure doesnt ask you smile.gif
    * Added docs for hashcomp
    * Added idea from ircu: /invite with too few params shows the channels youve been invited to but have not yet joined
    * Added irc::string
    * Specified namespace std in *all* files
    * Fixed typo in die tag
    * GCC 3.4/4.0 fixes
    * Made 'make clean' make cleaner :-P
    * Made modules use irc::string where they were using strcasecmp()
    * Moved StrHashComp and InAddr_HashComp into the irc:: namespace
    * Moved a ton of functions into helperfuncs.h to speed up recompiles
    * Updated strhashcomp to use irc::string internally rather than a combination of strlower and strcasecmp
    * Updated to keep lowermap const within hashcomp.cpp
    * Added 'uniqueness sums': http://www.inspircd.org/wiki/InspIRCd_Serv...Uniqueness_Sums
    * Added RFCs
    * Updated example conf to list all non-extra modules with a description of what they do.
    * Modules now commented out by default, admin must uncomment them to use them. Suggested by lag``
    * Added Server::GetServerDescription() at request of Craig
    * Re-added the dot graphs again
    * Added docs for new smaller memory footprint classes
    * Changed the type of struct whowas records are stored in (no need to waste a big heavy userrec)
    * Customizable by-byte-size recvq stuff
    * Documented new recvq and sendq stuff
    * Fixed wrong number being shown when sendq exceeded
    * Honking great memory leak fixed that's been there since the early alphas :/
    * Optimized some static structs
    * Structure optimizations, changed a lot of bools into binary bitmasks
    * Updated default sendq size to 256k
    * Added sendq stuff, see example config
    * Fixed weird bug where on mass join/part flood, the channel would be purged before it was actually empty due to its counters being screwed up
    * Added Cache support for the KQueue Question
    * Fixed Optimisations not being set.
    * Added ability to accept() more pending sockets at once
    * Added socket engine to version response
    * Fixed crash when socket reads 0 whilst in kqueue mode
    * Fixed kqueue setting not being changed
    * Made ping check loop less regular in kqueue version
    * Changed pool size from 64 to 1024
    * Fixed some of Brains bastardization of configure biggrin.gif
    * Fixed Craig's buggy configure tongue.gif
    * Fixes to way allocations are handled
    * Hit dns with spork. Repeat until crispy.
    * Modified to rm the .o files from the modules dir
    * Modified to use -pipe
    * New way of building modules, this is supposedly more portable
    * Now secures binaries with 0700 perms as theyre installed
    * Optimised strlower (much faster, uses a lookup table)
    * Optimized userlist() (a lot faster with many users online)
    * Fixed bug where another users buffer could end up in the buffer of an exiting client before they quit
    * /WHOIS as oper now shows real ip as well as real host
    * Added USERIP numeric 005 output
    * Added m_userip.cpp requested by Selphie
    * Changed the final bunch of udp_* vars to server_*/tcp_*
    * Fixed ircservices sending PING
    * Changed to fully dynamic core (should be faster compile times)
    * Fix naming glitches
    * Fixed remote kills to display the correct source (spotted while talking to aquanight)
    * Fixed to use numeric 340-
    * Renamed core files to all be libIRCD*


1.0 Beta 4

    * Fixed configure bug resulting in osflags being called BEFORE getcache (Making it redundant.)
    * Fixed output of src/modules/Makefile saying it was made by Craig.net tongue.gif
    * Updated for test gcc4 compatibility
    * Added support back for ./inspircd
    * Added a line to automatically chmod ./inspircd to 0744 ('Last Second Save!')
    * configure now supports any future .file.inc includes (Yes, i can see into the future)
    * Updated makefile
    * New Perl ./configure
    * Added -Woverloaded-virtual to catch annoying module typos
    * Fixed to always look for the ircd.log within the bin/ dir
    * Fixed to not spool the error log after ./inspircd debug
    * Sanity checks for fd_ref in addclient
    * Fixed 'server ignores me forever if i throttle the server with connections' bug
    * Debugging now allowed from ./inspircd (./inspircd debug)
    * Added LD_LIBRARY_PATH hacks/kludges to the .inspircd.inc file to make it find libmysql in funny situations
    * Added final documentation for inspircd Beta 4
    * Added important note relating to ip addresses in <link:ipaddr>
    * Added schema for m_sqllog.so
    * Added m_sqloper, allows storage of opers within a mysql database
    * Commented new functions
    * Major *MAJOR* optimizations by double-referencing channels to users (never need to scan the entire user hash again except in very rare circumstances)
    * Added channel 'counter', increases speed of quits, parts, kicks
    * commented some users and connections code
    * added remote @* notice
    * Added remote versioning
    * Fixed dicky buffer (due to cleanup the wrong variable was being used)
    * Services speedups for stupid buffered i/o uplinks
    * Added server input buffers (for systems that decide buffering is fun)
    * Major code tidyup (-W)
    * Fixed some flood checking
    * added noticeall
    * Added a Server:: method to send server notices to channels
    * Added explicit oper tracking in a vector of userrec* pointers, optimizes sending out oper notices
    * Fixed: +s and +p channels wouldn't be synched correctly
    * Fixed: +s and +p never show in whois even when you're a member of them
    * Fixed: +s and +p never show in list even if you're a member of them
    * Added Server::FindDescriptor
    * Added and tested fd crossreference table - improves speed a lot, and fixes one of the /STATS chars which has been broken a while
    * Added OnAddBan and OnDelBan module api calls, and fixed glitch which required them in m_timedbans module
    * Added OnOperCompare function to override strcmp in password check for /oper
    * Added module message passing architecture
    * Added a few anti-flood features
    * Updated buffering, faster and more sensible (old code sucks)
    * Added password field
    * Removed some debug output
    * Added /stats T
    * Empty but non-null string passed to is_uline now returns true
    * Added numeric 318 to /WHOIS when nick is not found (end of whois should still be there as its a list response)
    * Added numeric 412 "no text to send"
    * Changed to handle : as a NOP token so that 'assuming' inspircd knows RFC commands wont cause tons of errors
    * Fix to a mode parsing bug (eating wrong version of parameter?)
    * fixed warning of redefinition of RUSAGE_SELF
    * Fix annoying off-by-one error in connection::RecvPacket
    * Added more fault tolerance to server links
    * Added new /stats z
    * Fixes to /who output
    * Added mode 'compression', stops abuse with modes like: +s-s+s-s+s-s
    * Test fixes for /version strings not being set in burst
    * Fixed a reversed strcmp
    * Added 901 numeric - end of modules list
    * Added support for /SQUIT <mask> and checks against /SQUIT *
    * Changed remote kill reason text
    * Fixed strange leading ":" on remote Z/K/G lines
    * Fixed so that quitprefixes are shown in client exit notices
    * Added global oper monitoring through modules and global connect monitoring through modules
    * Fixed weird issues when anope sends large amounts of text at once to the uplink
    * Fixed dodgy poll()
    * Added new and improved GetBuffer function based on research on crappy redhat 7.3
    * Fixed park crash bug #63 reported by ViaraiX
    * Reordered some on-connect network stuff to stop services being so confused
    * Extra safety checks to avoid trying to write() remote users
    * Optimized WriteCommon and WriteCommonExcept
    * Fixed weird line wrapping bug with extremely long lines
    * Made xline notices neater when notifying of unknown connections
    * Fixed WriteCommon not writing to the source user when not on any channels
    * Changed "is now running" message to AFTER port bind checks
    * Added PID reporting and testing before daemonize
    * Changed startup ascii to green. Elphaba would be so proud tongue.gif
    * Fix to prevent empty umodes
    * Fixed empty modes from nickserv
    * Optimized modes (removed strlens etc)
    * Fixed empty modes issue that emerged after dodgy code was corrected
    * Fixed services not being informed of force joins
    * Fix to prevent quits being sent onto the network for nonexistent users
    * Added faster wildcard checking routines
    * Fix for bug #62 (replaces only occur once per line in m_censor)
    * m_chanfilter now works on gcc 2.95.x again.
    * m_chanprotect fixed to remove privilages upon kick
    * Fixed WriteChannelWithServ
    * Added module which provides MD5 encryption for oper passwords plus /mkpasswd
    * Added another check for 'NoServerUline' type thing in m_services.
    * Added Check for 'NoServer' when +r ing a channel in m_services.
    * Added m_timedbans (timed bans module for channel ops/halfops)
    * Added m_sql, module to provide sql db access to other modules
    * Added m_sqlauth - allows authorizing of connections via an arbitary mysql table with a username and password field
    * Added m_sqllog - allows you to log your irc information to an sql database
    * Added m_sqloper, allows storage of opers within a mysql database

1.0 Beta 3

Added rm -rf src/modules/*.so to make modclean
Added module message passing architecture
added Module::OnMeshToken
added Server::MeshSendAll
added Server::MeshSendCommon
added Server::MeshSendAllAlive
added Server::MeshSendUnicast
added Server::MeshSendAllExcept
added Server::MeshCheckChan
added Server::MeshCheckCommon
added Server::FindModule
added New docs for API
added Module::OnRawMode
added Module::OnCheckInvite
added Module::OnCheckKey
added Module::OnCheckLimit
added Module::OnCheckBan
added Module::OnStats
added Module::OnChangeLocalUserHost
added Module::OnChangeLocalUserGECOS
added Module::OnLocalTopicChange
Added Server::AddGLine
Added Server::AddKLine
Added Server::AddZLine
Added Server::AddQLine
Added Server::AddELine
Added Server::DelGLine
Added Server::DelKLine
Added Server::DelZLine
Added Server::DelQLine
Added Server::DelELine
Added Server::Duration
Fixed /LUSERS server count
Updated documentation of <connect> tags at request of Strike
Fixed somebody putting double closing tags, nullifying the effect of allowhalfop in the example conf
Removed deprecated class 'packet'
Fixed Dns free() errors
Added ability for modules to hold users in a 'holding pattern' while they do stuff on connect
Added OnUserDisconnect method to modules.* to fix fd leak in m_ident.cpp
Added the m_chanfilter module, implements chanmode +g which allows channel specific badwords (YAY)
Added Module::OnSendList
Added m_conn_lusers.so: Sends /LUSERS on connect
Added m_ident.so: nonblocking ident lookup module
Fixed /kill bug in m_operlevels (couldnt kill non-opers)
Changed m_override: Fine-grained control over what can be overridden by whom
Added m_park, user parking to keep ops during a ping timeout (suggested by Ib3N)
Fixed limit checking in core and m_redirect.so
Added m_setidle, allows opers to set their idle times
Added Module::OnBackgroundTimer method, ticks approximately every 5 seconds
Yet more optimizations!
Added 'server already exists' check for u-type links
Fixed bug when ordering a bot to leave using anope services
Fixed anope module sending L tokens with 2 instead of 3 params (made code more tolerant instead of changing module)
Fixed broken server/server handshake for U-type server links (services)
Fixed strhashcomp to forbid matching scandanvian nicks properly eg. [Brain] and {Brain}
Fixed lingering (SO_REUSEADDR was being set to 0?)
Added Module::OnCheckReady and Module::OnUserRegister
Updated /INFO
Fixed to allow server to server traffic again (DOH)
Added PID reporting and testing before daemonize
Changed "is now running" message to AFTER port bind checks
Fixed strange join behavior reported by w00t (mirc requesting MODE immediately after JOIN)
Fixed bug #47 reported (and suggested fix) by Om
Fixed bug where if channel limit was lower than the user count users could still join, but not if it was equal
Added Module::OnUserKick and Module::OnUserPreKick
Added Server::PseudoToUser and Server::UserToPseudo
Made setrlimit a commandline option
Removed some old uneeded code
Made cmode and chanmode more safe
Fixed a double free in dnsqueue.cpp
Fixed a resolver issue (weird segfault on gentoo?) in server linking
Double 367 numeric glitch fixed
Added Server::IsValidHostMask
Added getrlimit/setrlimit to set process limits to allow a core dump
Removed some logging from wildcard.cpp

1.0 Beta 2

* Added a lot of small fixes based on feedback of beta 1
* Fixed compile issues on freebsd due to an icky shellscript expression that failed to detect strlcat
* Added more advanced m_override.cpp module due to user request (thanks Rob)

1.0 Beta 1

* Enough optimizations to shake a very big stick at
* Added asyncronous DNS
* Changed /MODULES to allow simplified output for non-opers
* Added module flags to /MODULES for opers
* Added /UNLOADMODULE
* Added /LOADMODULE
* Added resource tracking for modules
* Added extra log output for oper success and failure
* Added hostname checking for opers (someone left it out *looks around nonchalantly*)
* Added module API OnUserPostNick method
* Added E:Lines and /ELINE (ban exceptions)
* Security fixes to /MODE and /TOPIC
* Fixed a cosmetic bug in /WHO
* Fixed random crashes when user connecting
* Fixed 'unlikely' crash if nick was changed before dns lookup completed
* Fixed to actually check the password of linking servers (someone left this out too!)
* Added error checking to make sure opertypes exist before opering a user!
* Added 005 handling for modules
* Added onKill event for modules
* Added OnModuleLoad event for modules (notified of all module loading)
* Added <disabled:commands> tag
* Added ability to disable any command for non-opers
* Added customizable ping frequency to <connect:allow>
* Added optional module path to the configuration file
* Added support for Rehashing to allow adding and removal of modules
* Added module VersionFlags support
* Fixed a resolver issue (weird segfault on gentoo?) in server linking
* Changed the loglevel of some startup failure messages to DEFAULT (were DEBUG)
* Optimized connects - motd is sent faster
* InspIRCd now logs value of <die> to the logfile on failure
* Added new <banlist> tags, allows dynamic banlist sizes on a per channel basis rather than hard coded or network wide
* Fix for bug #39, m_redirect returning invalid/random value for OnUserPreJoin method of the module class
* Added code to shutdown listening sockets on exit
* Added pid file support, and documentation for it
* Fixed string format vunerability, thanks again to the #ratbox people for helping find it
* Fixed 005 numeric to only output 13 tokens per line (thanks anfl)
* Replaced some 005 constants with their configured values
* Fixed "error in free()" and other bugs going to open sockets
* Config files read by the ircd are now chmod'ed 0600
* Fixed parsing error with comments that have tabs before them
* Added implementation of strlcpy and strlcat for systems that dont have it
* Fixes to crash when setting the key of a channel youre not a member of
* Fixed issue where failing modules would bail by calling exit (deprecated) -- modules should now just disable their functionality if they are missing data
* Added GetVersion() to m_showwhois.cpp
* m_chanprotect.so fixed to take away +q and +a when the user parts the channel (double DOH)
* Added 005 numeric handling to most of the modules
* Added m_hostchange module, our own homebrew implementation of the unreal pay module!
* Added m_nicklock module, a module which allows opers to lock a user to a nickname until they quit
* Added m_operlevels, prevents opers designated as above other opers from being killed
* Fixed Crash bug cause by multiple declarations of 'Srv' in m_randquote.so (Bug #35)
* Added m_remove by om, uses a force part to replace a kick to thwart auto rejoin
* Added module to restrict channel creation to opers only (requested by [ed])
* Added a module at request of [ed] which stops anyone messaging all but opers
* Added m_silence.so - implementation of /SILENCE command
* Added ./inspircd (start|stop|restart|rehash|status|cron|Cheese-Sandwich) (Happy luigiman?)
* Made a slightly nicer method for .Makefile.inc
* Updated ./configure to reflect the above changes.
* Removed reference to depricated ./makeconf and updated command to exec to build the daemon.
* Added dynamic src/modules/Makefile generation, during ./configure the script will search modules for /* $CompileFlags: */ and append any given flags to its g++ line.
* Startup script modified to kill -9 if a kill -TERM fails.
* Makefile will ignore if cp fails to copy the binaries.
* Added <disabled:commands> to the example config (commented out by default!)
* Documented /LOADMODULE and /UNLOADMODULE plus new /MODULES behaviour
* New docs to match extra module Version class stuff, etc
* Added new documentation for ELine class and OnUserPostNick method
* Added DNS class to documentation

1.0 alpha 12

* Updated ./configure to detect GCC 3.4.x
* Added m_showwhois.so - lets opers see when theyre WHOISed
* Added m_opermotd.so - Gives opers an opermotd on oper-up
* Added m_operjoin.so - Forces opers to join a given channel when they oper
* Security audit resulting in more secure and stable code
* Added lots of error checking to the configuration parser
* InspIRCd now works with BOPM, please see the tutorial on our forums
* UMODE issues with SVSMODE finally addressed, working fine again
* Services issues addressed and fixed
* Added generic error output to the ConfigReader class (ConfigReader::DumpErrors())
* Fixed sys/socket.h error on earlier versions of GCC (2.95.x)
* Redone documentation
* Fixed mode changes (they actually work now!)
* Module passes service names to its uplink now
* ChanServ actually sets channel modes rather than the server!
* NickServ actually sets umodes rather than the server!
* Double-mode-changes no longer occur
* User nickname registration tracking with +r works properly again

1.0 Alpha 11

* Added lots of bugfixes
* Optimised, works faster, and smoother
* Added support for non-mesh servers
* Added services support
* Implemented example ircservices module (working with ircservices 5)
* Added m_services module
* Added m_antibottler module
* Added m_alias module
* Added glines (local and global)
* Added klines
* Added qlines (local and global)
* Added zlines (local and global)

1.0 Alpha 10

*  Added server linking support (tcp based mesh link)
* Lots of stability fixes
* Speed improvements
* Optimisations, no longer eats cpu so much
* GCC3 and GCC2 support
* Even bigger module API
* More documentation
* m_antibottler, labels bottler bots
* m_chghost, gives you a /chghost command
* m_cloaking, gives you hostname cloaking and mode +x
* m_filter, filters glob patterns on channels and private
* m_globops, provides /GLOBOPS and mode +g support
* m_helpop, gives /HELPOP and mode +h support
* m_sajoin, force-join a user to a channel
* m_sapart, force-part a user from a channel
* m_samode, force a mode change on a user or channel
* m_saquit, force a quit of a client without /kill
* m_sethost, allows opers to change their hostmasks
* m_setname, allows users to change their name
* HELPOP documentation accessible with the helpop module loaded
* Split the ircd into many smaller files for faster compiling
* Improved configure and makefile phase
* Added all oper commands (CONNECT, SQUIT etc)
* Added remaining server->server commands such as /MAP
* Connection pooling, uses less CPU for the same tasks as before
* High-powered server to server link protocol unlike any other ircd

1.0 alpha 9.5

* Added support for /connect (no sync yet!)
* Added extra module support and improved api
* Improved developer docs, see http://www.inspircd.org/docs/
* FINALLY fixed crash-on-disconnect bug
* Fixed many stability bugs
* Fixed length and buffer overrun issues that caused user records to become corrupted without crashes (!)

1.0 alpha 9

* Added /WHOWAS
* Made ircd cache message of the day in a vector (faster!)
* Added support for multiple lines of /NAMES on large channels
* Added hostname/ip caching to speed up connects
* Added '/stats z'
* Added Server class
* Added more code to example module demonstrating use of Server class
* Added Admin class (holds /admin info for modules)
* Added methods to Server class
* Added m_cloaking.so module, provides host masking
* Added /AWAY
* added /ISON command (for mIRC etc basic notify)
* Added /USERS stub
* Added /SUMMON stub
* attemted to fix weird crash on /kill
* added pause= value to /die and /restart in config
* Attempted to fix closed client sessions not being detected
* Added wildcard support
* Added channel bans
* Changed user and channel structs to classes (finally)
* Fixed parameter error in QUIT code (was showing junk chars on BSD)
* fixed some ugly pointer bugs (thanks dblack and a|KK|y!)
* Added /INVITE command and relevent structures
* Added CONNECT ALLOW and CONNECT DENY config tags
* Added PASS command
* Fixed: /LUSERS cant count :P
* added /TRACE command
* Implemented channel mode +m
* Added channel modes, +k, +l, +i, +m etc
* Added user and channel modes +i, +p, +s
* Implemented usermode +s
* Fixed dodgy mode glitches (the ones Craig loves to play with, awww)
* Added code to tidy up bans (e.g. max nick length) - i blame mIRC!
* fixed multiple /MODE +l bugs (thanks to akky and BOFH bugging meh!)
* Fixed ident max length to 10
* fixed random crash on kill_link (AGAIN) - was /stats
* improved speed 10x (because i can...)
* optimisations galore!
* Added FileReader file-caching class
* Changed m_randquote to use FileReader class
* Neater source tree (binaries in bin, source in src, headers in include, etc)
* Added /WHOWAS
* Tidied up makefiles
* Much nicer configure program
* makeconf program (very nice config maker by Craig)


1.0 alpha 8

* Added Admin class (holds /admin info for modules)  
* Added methods to Server class  
* Added m_cloaking.so module, provides host masking  
* Added Server class  
* Added more code to example module demonstrating use of Server class  
* ./configure improved by Craig (better prompts, dir creation)  
* /stats z added detail  
* Added '/stats z'  
* Added hostname/ip caching to speed up connects  
* Made ircd cache message of the day in a vector (faster!)  
* Added support for multiple lines of /NAMES on large channels

1.0 alpha 7

* Added /USERHOST command 
* Added '/STATS O' 
* removed random debug output 
* Fixed random crash on nickchange  
* Fine tuned ability to handle >300 users 
* added '/stats L' (connect-info) 
* '/stats u' support added (server uptime) 
* added '/stats M' command 
* Added extra dynamic module support, new methods to Module class

1.0 alpha 6

* Changed command table to a vector of command_t types 
* Dynamix module support, preliminary release 
* Fixes random crash on nickchange 
* Fixed wallops and command parameter counting bugs 
* fixed "user lingering" problem in kill_link 
* updated example config 
* developed a simple sample module (m_foobar.so)

1.0 alpha 5

* Changed channel array to a hash_map similar to the one used for users, faster and more efficient
* Changed ./configure, no longer asks for hard channel limit (depreciated)
* Added support for users to be disconnected once MAXUSERS is reached
* Changed code a lot, major overhauls for C++ and STL use for added stability and speed
* Changed entire user system to use the hash_map container type instead of an array
* Added /TIME command
* Added /INFO command
* Added restart and die passwords
* Partially implemented /RESTART command
* Fixed amusing bug which allowed partially connected clients to issue commands under the context of other users! *gulp!* (reported again by Craig)
* Fixed SegFault caused when doing a /who 0 or /who * whilst not in channels (Reported by Craig, Fixed by Craig :p)
* Added /who 0 o to display online Opers (Craigs First Scratch of Code :p)
* Fixed Typo in LUSERS (Reported by MrBOFH and CC)
* Fixed Joining Channels withough a # bug. (Reported by MrBOFH)


1.0 alpha 4

* Fixed parameters bug discovered by Allan
* Fixed /NICK repeating bug found by piggles.
* Added /REHASH command
* Added /LUSERS command
* Added ability to kill -HUP to rehash
* Fixed lock up after ping timeout
* Added system to /VERSION
* Added DNS lookups on connect (*FIXME* this needs to be asyncronous!)
* Fixed IRCop status shown on wrong users
* Fixed socket linger option via setsockopt (can restart faster as sockets arent in use after shutdown!)
* Added operators can now see real userhost in WHOIS
* Added oper-up failed msg to online opers
* Changed layout of /motd command start numeric
* Fixed empty channels are now purged upon user quit
* Changed: support for WHO * as well as WHO 0 (do the same thing)
* Fixed ability to kick users when you arent on the channel :)
* Fixed grammatical error when halfop tries to kick an op, "You must be at least a half-operator"


1.0 alpha 3

* Fixed problem where nicks containing control codes were allowed
* Added support so that ircd honours channel mode +n
* Added support so that ircd honours channel mode +t
* Fixed linefeeds in middle of line bug (reported by Craig)
* Fixed buffer overflow in channel names (reported by Allan)
* Fixed close() on nonblocking sockets problem
* Added /KILL command >:)
* Added /KICK command

1.0 alpha 2

* addition of /oper and several Channel Modes.
* new config file format