]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - docs/ChangeLog
Made MasterSocket static
[user/henk/code/inspircd.git] / docs / ChangeLog
1 1.0.3
2
3  *  Obscure bug of the week: InspIRCd crashes when given more than 64 client ports to bind in the config file (yes, *REALLY*.)
4  * Removal of ancient TRUE/FALSE #defines (C-ish stuff)
5  * Removed lowercasing of servername on validation
6  * Case insensitive server names
7  * Commented a lot of stuff that hasnt been commented since 1.0.2
8  * Const refs (this is about the last of them in the core api)
9  * Fixed a missing reference to chanrec::modes
10  * Renamed to chanrec::modes, Renamed IsCustomModeSet to IsModeSet, GetModeParameter will now return the channel limit (as a string) for a request for mode 'l' and the channel key for a request for mode 'k'.
11  * changed binarymodes to use the custom_modes entries
12  * Adding to the buffer was clearing it first, reverting the buffering to a pre-alpha-6 kind of way of doing stuff (erk)
13  * Removal of shellscript kludge :)
14  * Work out revision id without src/svn-rev.sh!
15  * Complete removal of all stl stuff here
16  * Completely removed the deque
17  * Put some error checking back in here
18  * Temporarily removed output buffering as an experiment
19  * Changes to ./inspircd to hopefully work on freebsd as well as linux..
20  * Different way of using substr
21  * Deque doing some reallllly odd stuff
22  * deprecated covariant return type flux capacitor flopcircuit removal with reference pointer.
23  * Removed lots of claptrap debug in a well tested old section of code
24  * Start of conversion to const refs for std::strings in module api - A LOT OF STUFF WONT WORK YET
25  * Tidyup by making some thing sprintf only once rather than n times (where n is number of targets), String reference stuff for one function
26  * Only calculate the names list when a local user joins (this was being calculated for remote user joins, then thrown into the bit bucket)
27  * Doh @ null chars in an sprintf!
28  * Tweaked to use the same system as nenolod's NAMES patch for FJOIN
29  * MUCH FASTER squit! (and a TON more stable, too)
30  * Check if we're running -svnupdate on an svn version
31  * added added "./configure -svnupdate rebuild"
32  * Added ./configure -svnupdate
33  * Removed 8-space indents
34  * Commented all the new config stuff
35  * Now requires inspircd.h for ConvToStr templated function
36  * Tidyup and move ConvToStr to a publically accessible place
37  * Moved more stuff into right places
38  * Tidyup of commented out reminder code
39  * Mass tidyup of ServerConfig::Read and stuff
40  * Another const reference conversion, and remove redundant declaration of userrec* Find() from globals.h
41  * Test stuff for improved multi-tags in core
42  * Added MultiConfig for multiple-occurance config items
43  * patch <inspircd-userlist-ptr-safety.diff (Thanks nenolod)
44  * Missing a changeover
45  * Revert to string but return a reference, should be about the same speed
46  * Faster CullItem/CullList using strdup rather than copying a std::string
47  * Update docs to indicate hostname can be used in <bind> tag
48  * Support for hostnames in <bind> tag (so long as the hostname resolves to a locally bindable ip)
49  * Tidyup of config reader lowlevel reading
50  * Set bitfields on servermode
51  * Align names that are output on startup using \t htabs
52  * Moved typedefs etc into the header where they belong
53  * Tidyup of ServerConf::Read about half done (works)
54  * More const references, this is nearly it apart from the module API..
55  * Remove unused variable giving compile warning
56  * Convert more by-values to const references, optimise ConfigReader a bit
57  * Changing by-value parameters to const references
58  * Mostly formatting cleanup, rename a 'Ptr' to a more meaningful 'chan', remove some pointless nested if()s checking the same thing at each other
59  * Tidyup to pass some stuff by reference (much faster, no copy involved)
60  * Improved to avoid strlen
61  * Changed to unsigned char to get rid of warnings
62  * Improved strhashcomp with no allocations
63  * Typical. 0 and 1 to choose from, and i pick the wrong one. (back to front binary)
64  * UM_WALLOPS had value 3 which was a combination of UM_SERVERNOTICE and UM_INVISIBLE :/
65  * Added userrec::modebits - fast way of checking if user has +swi rather than an icky strchr
66  * Fix printf format to get rid of compile warning (using %d for a long, change to %ld)
67  * Correctly use iterators and pointer to ucrec
68  * Better calculation of LUSERS
69  * Changed LUSERS to show global current to not include unregistered connections
70  * Don't show channels where all users are invisible and therefore usercount is 0
71  * Add 'you are a nub' messages to /squit and /connect stubs
72  * Update to Start() credits, now refers users to /info output
73  * More cleanup, moved Om and myself to core team
74  * Calling a method of a null object due to refactoring and HasUser - fixed, (Thanks Douglas)
75  * Reformat according to coding guidelines.
76  * These modules were using deprecated Server::IsOnChannel. They arent any more smile.gif
77  * Removed deprecated Server::IsOnChannel (was a C++-ish wrapper to the C-ish has_channel, no longer needed)
78  * Removed has_channel(userrec*,chanrec*), the new preferred way of doing it is channel->HasUser(userrec), Yeah its the other way around to the old way, but somehow, seems less backwards to me (its also faster)
79  * Removed declarations of ancient and misspelled functions :/
80  * cmode was declared here too - declaration removed.
81  * cmode now returns const char* as it returns a pointer to a literal string and shouldnt be messed with
82  * Got rid of all that ugly char* cast crap (todo: change docs to reflect change)
83  * Fixed #defines to be enums (tidier), Removed UCMODE_PROTECT/UCMODE_FOUNDER
84  * Allow for fallback of older ircds without TS in BURST command
85  * Actually, 64., (256-64-128) = 64 chars printable alphabet (roughly)
86  * chanrec::custom_modes only needs 96 values not 190, (256 - 32 - 128)
87  * Stupid, retarded, idiotic bug here where any PONG after the first one gets you kicked. Never picked it up cause with Xchat's lag meter the server never actually PINGed me :"
88  * Changed m_sqlauth to allow more advanced encryption types
89  * Checks for timestamps, boot server off and abort if time delay > 10 mins (the safe value used by inspircd)
90  * Removed unneccessary temporary casts to char* when casting a userrec, Expanded on comment re. WriteOpers
91  * It's neat. It's tidy. It has no spaces, and almost matches our guidelines...
92  * More optimisations, memory saving, use the char* loop everywhere else seems to love so much, use short rather than int to save a little more ram
93  * Made this readable, removed spacing, etc.
94  * Avoid some ugly casts and save (well..system dependant..) about...3 bytes of ram! tongue.gif
95  * Speed up and deuglify the second part of CompressModes(), stop it searching for a character three times when it only needs to once, stop it allocating an ugly static char[2] it didn't need, and stop it creating a std::string it didn't need either
96  * Server::DumpText - Dump a *stringstream* to a user with a std::string prefix, splitting at 512 boundaries., Much more useful than cannibalizing a specialized function
97  * For the record, it's 17 lines - not 5.
98  * Made split_chlist available for external use from commands.h
99  * What MUPPET made stdin, stdout and stderr FILE* pointers rather than ints?!
100  * close stdin, stderr and stdout rather than freopen to /dev/null
101  * Took out space in version identifier that might break stuff
102  * Safety checking (a really really clever trick btw) in CullList, to make sure that the user we're removing IS the user that was marked for deletion X seconds ago, even if the user has since quit, to be replaced by another unfortunate wretch who was given the same pointer address (eeep)
103  * Buffer flush time now under 0.5 secs
104  * Flush user buffers more often (every 30 iterations), Run whowas hash maintainance every hour
105  * Tweaks to socket engine, faster buffer flush and hopefully more stable
106  * true and false transposed in new code
107  * Check for write errors in inspsocket (this is probably causing excessive cpu use when we have a large buffer to flush but a write error has occured (which we missed))
108  * Fixed timedbans (new mode parser didnt like being passed const char* elements as it likes to change them inplace)
109  * Improved userlist to avoid strlen
110  * Tidying, strlen, strcasecmp where not needed.
111  * TOPIC optimizations, fixes to mode setting with new custom_modes system
112  * Checking of user/nick/pass without strncmp! (compare object pointers in the command map!)
113  * Fixed to work properly with new refactoring
114  * Faster custom mode set/unset
115  * Added a 'max depth' to stop recursive issue
116  * Fixed issue with parameterless module modes
117  * Optimisation of optimisation tongue.gif ty w00tie
118  * Different way of displaying squit server group
119  * More work on /check.. now gives basic information on a user, no channel list yet - and port number doesn't display.
120  * No need to be inline in the include
121  * Fixed wtf-ery of Modules::SendTo - did i write this before WriteServ???
122  * Initial revision of /check - doesn't do anything yet
123  * Improved ProcessParameters (removed strlen)
124  * Changed return to break in mainloop for better efficiency
125  * Tidied (and COMMENTED) CommandHandler::LoopCall() -- commit so that i can test on brainbox
126  * Tidied GetMaxBans to leave the ConfigReader subsystem alone
127  * Removed unneccessary backticks from a copy/paste
128  * Added the beginnings of some function documentation
129  * Sorted out some silly indenting left over from an if() that died a death years ago
130  * I dont think there are any more non-essential strlcpy's left in here.
131  * Removed another strlcpy -- a lot of copying stuff that doesnt need to be copied if we're careful., Obviously in the past, we werent so careful and mucked up/polluted params as we dealt with them! :p
132  * Mode-code rewrite. Might act weird, needs proper testing (that is what svn builds are for, after all)
133  * Tidied up ProcessLine, instead of a ton of strlens use a tiny bit of char* voodoo
134  * Fixed to not show real server name if you have hiding of servernames in WHOIS
135  * Put it in alphabetical order and hope nobody noticed
136  * Add m_blockcaps to example config
137  * Add block caps module, I'm kinda between the extremes of 'Brain' and 'normal' here. Aka it compiles but I have nfi if it works tongue.gif
138  * Hopefully speed this up, it was strlcpy()ing every line even when +c wasnt set, and copying wasn't neccessary anyway
139  * Make install depends on make as requested by ol (also means i can build and install insp in one step again if i want)
140  * Colon before the reasons in STATS, so that it doesnt munge up the reason in certain clients
141  * Sped up introduction of nicks using vector::resize() rather than the craq++ loop (wtf was i thinking doing it that way?), Removed 'client connecting notices dont show locally during burst' -- this is silly as it doesnt work remotely and is pretty much pointless
142  * Fix for bug first noticed by zephyrus where you could send -j+ntr to a channel which has +ntrj, and see the mode change "-j+" - now strips off any trailing + or - chars
143  * More verbose when setting g/z/k/q/e lines from other servers. With the new system which prevents lag during bursts this won't flood opers quite so much to the point where they quit (i hope) :p
144  * Unknown command error now tells the opposite server WHICH command is bad so that people dont have to go sleuthing to find it
145  * Tidyup of m_hostchange to not use configreader on each connection!
146  * Tidied up m_override to avoid use of configreader during free-running
147  * Changed m_censor to avoid reading config several times for each pm
148  * Fix for MODE #chan +o- nick or +o-- nick, etc
149  * Fix to prevent recursive call to DoBackgroundTimer
150  * Added IS_SINGLE, see comment in include/inspircd.h
151  * Added a sleep on startup to stop it mucking up the display
152  * Changed output on startup
153  * Strdup's to stop corruption of oper classes
154  * speed up HasPermission by factor of hundreds, avoid using EnumConf and ConfValue outside of rehash *AT ALL*
155  * is_uline was an inefficient piece of crap - fixed.
156  * More efficient AddClient, initializes two identical buffers at once ;)
157  * Added stuff to log() to make it recalculate the time using asctime() less often
158  * Made host fields more correct 64 in length with 63 copies
159  * Improvements to TreeSocket::Split
160  * Made extensive use of charlcat to cut down on strlcat usage
161  * Added charlcat which appends a single char to a char* string (range checked)
162  * Changed definition of CallHandler and CallCommandHandler for the ability to return false on bad command., This allows us to terminate server links that send commands we dont know (e.g. admin loads module A after linking, we dont have module A, when it sends module A's command, abort)
163  * Extra checks that should prevent desyncs if you stuff up your type/class tags between servers
164  * Make ./inspircd ignore SIGPIPE and start running without the user having to type 'run' / 'r'
165  * Changed to require seperate 'make install' step
166
167 1.0.2
168
169  * Clarify an error message on KICK
170  * Allow removal of mode with new check
171  * Dont allow +J 0 or +J < 0
172  * Removed regexp check on epoll
173  * Fix for missing 'end of list' numeric
174  * Changed encryption to work with yield system
175  * Added checking for +sp channels to safelist that someone left out *nonchalant whistle*
176  * Documented cloak keys and prefix
177  * Changed to throw exception when theres no cloak key
178  * Changed loglevel of cloak key errors to SPARSE
179  * Added configurable cloakkey and cloakprefix
180  * Extra error output when fails to bind a port
181  * When quitting large amounts of users, use InspIRCd::DoOneIteration to prevent too much lag
182  * Add comment stressing the importance of certain elements of this file
183  * Changed some stuff to give a more accurate revision id
184  * With small sendq's, this can still exceed the sendq, so now we've reduced the amount it fills
185  * Extra output during sync to know if we're receving the other end's netburst or not
186  * Improved speed (not using strlen, take loop count)
187  * Made this safer, dont try and yield back when sending channel list or user list (our iterator may become invalid while we're using it!)
188  * Yields back to user processing to give users a chance to issue commands during heavy server congestion
189  * Moved the contents of the mainloop into a function called InspIRCd::DoOneIteration()., We can then use this to 'yield' if incoming server text is taking too long to process
190  * Moved to irc::string for commands in server-server so that whiney newbs can get os raw to work and fuck their networks over
191  * Whoops, overriding EVERY command!
192  * Added m_operwho, allows opers to list everyone
193  * Fixed Server* Srv stuff in these too, although by default these arent available to win32 builds
194  * How did this random stray '1' get in here before the brace?
195  * Server* Srv marked static or moved to private member of module class in all modules, paves way for removal of static-build-munging-regexp that breaks +eI
196  * Fix for segfault if name of file left off commandline
197  * Added ability to provide -logfile parameter on commandline
198  * Lowercase the servername automatically
199  * Auto-lowercase all server names read in from <link> tags so that people cant get the case of servernames confused (passwords are STILL case sensitive)
200  * Added m_safelist (yes om, i kept alpha order)
201  * Now sends out warning when oper on a remote server tries to execute a command that the local class tags say they shouldnt be able to access. Helps detect desyncs caused by muppeted configs, or just plain nefarious goings on.
202  * One character brain-wave fix (had idea at work)
203  * Nothing to see here, nothing, at all.
204  * Wrong address being bound by InspSocket when binding to a specific ip
205  * Decide that it wasn't quite appropriate :(
206  * Add entirely pointful smiley to comment
207  * Look-behind for missed timers up to 2 minutes (if your ircd has hung for 2 minutes, or your clock drift is > 2 mins, you have bigger fish to fry, like dead network or TS split)
208  * Removed bit of logging that said the timer was ticking -- we know it works now :)
209  * listusers has to be global now (ugh)
210  * Moved timer stuff from OnBackgroundTimer to InspTimer derivative
211  * Use ::AddTimer not AddTimer, or it calls this->AddTimer and loops
212  * Now copies libIRCDtimer.so
213  * Added timers.cpp/.h to makefile generation
214  * First revision of new timer code, not in the makefile yet (so it wont build till im done)
215  * Force burst to end if a remote server pings us, or answers a pong, if this is the case it just "forgot" to send an ENDBURST!
216  * Improved calculation to account for server name on start of numeric, plus spacing
217  * Perm elines (<exception> tag) not being applied - fixed
218  * SAFELIST 005 token is now part of m_safelist not the core 005
219  * Cleanups on module unload or user /QUIT
220  * Added m_safelist. This was originally w00t's code, but i bastardized it (just a little), WARNING: It's not finished yet and shouldnt be used, it might crash at this point in time if a user /quit's while listing., YOU HAVE BEEN WARNED! WITH A SPORK!
221  * Changed triggering time of OnBackgroundTimer to 5 secs (from 8)
222  * Added m_safelist helper functions GetChannelCount and GetChannelIndex
223  * Oh yae, Oh Yae, back in old days of yore, Ye Brain doth set the nick buffer as NICKLEN+1 to ease understanding by newbs who didnt know what thou null terminator was., And yae, at a date later hence, Ye Brain then setteth ye buffer back to NICKLEN again., Alas, neither Ye Brain nor Ye trusty followers hath then setteth back the rest of the core to NICKLEN-1, and verily, chaos ensued. :p
224  * Added which word is blocked to the numeric
225  * Added 'is a registered nick' to whois
226  * Made error more understandable on 'file not found'
227  * MAXMODES wasn't being enforced
228  * Enforce 64 char dns limits
229  * Added second form of find() taking const char*, which is faster in the core where char* is used more often
230  * Improved speed of Find() by passing reference to std::string instead of std::string itself
231  * It didn't, there was more strlcpy
232  * Fix to stop new code treating all KICK messages as server KICKs
233  * Fix for hide-ulines in /links
234  * Configure no longer allows gcc 2.x compilers AT ALL >:)
235  * AIEEE fucking overloaded operators
236  * Added + and == operators between std::string and irc::string., Its too late at night to wrestle with the = operator, this can wait for another time.
237  * Removed the 'one of' check for <dns>
238  * <dns:server> is now optional
239  * Throws exception on failed GetIOHook()
240  * Added check for if the servername contains a '.', if not append one on rehash, Added retrieval of nameserver from /etc/resolv.conf if <dns:server> is not defined.
241
242 1.0.1
243
244  * Server::AddExtendedMode and Server::AddCommand will now throw exceptions when adding a bad mode or already existing command. If the module constructor does not handle this exception, this will abort the module's constructor, forbidding loading of modules which are unable to function (smart eh)
245  * Added exception handling for module loading
246  * Fixed case sensitivity issue in m_censor
247  * Don't allow invalid channel names in /mode #chan +L #chan
248  * Added MAXPARA=32 to 005 (no other ircd has this, or allows a larger MAXPARA but its worth advertising this feature in case a client chooses to support it in the future)
249  * Update mode lists, fix mode lists, and alphabeticalise mode lists (:/!)
250  * Experimental speed improvement to sending encrypted lines
251  * Extra logging to log bad opertypes coming in from remotes
252  * Checking to prevent dodgy opertypes (opertypes must follow the same syntax as nicks now)
253  * Extra checking and exception handling in InspSocket::Write
254  * Fix for bug reported by TDC
255  * Moved custom_mode_params to per-channel
256  * Sped up disabled commands check
257  * Removed a whole lot of strchr's looking for mode +o where we can do if *user->oper
258  * All the messing with these files someone did and they  didnt notice we listed gcc2 as supported :p
259  * - More formatting changes
260  * - Made some notes about potentially restructuring things a bit
261  * - Useless loop removed, - Intenting cleaned up, - command_parse stuff (really) needs proper going over and at least commenting what stuff does.
262  * - Fixed some HORRIBLE indenting. Tabs, please., - Fixed channel keys being case insensetive., - Added a 'XXX' fixme.
263  * - Moved example configuration from docs/ to conf/.. Why did we have two example confs?
264  * - Docs update, b4 was a LONG time ago.
265  * - Minor documentation updates here, someone really needs to sit down and rework it a bit ;p
266  * - Manually bump revision ID, apparantly it's stopped doing it itself...
267  * - Oops, missed two includes
268  * - Check for +K before bothing to assemble knock message
269  * - Nazi stylistic changes.
270  * - Incorrect
271  * - Anal tidy of some comments
272  * - Let's stop using that nasty strchr() in a loop
273  * - Made note of some potential improvements in m_part. Brain, please review when you get a chance.
274  * - And in SAPART
275  * - Use IsValidChannelName() in SAJOIn
276  * Fix to compare against signed/unsigned warning
277  * Force initialization of fd to -1
278  * Error checking for out of range buffer reads (this shouldnt happen, read is being passed a max buffer size of 65536 but returning 6 million?! We check for it now.)
279  * Tidied up formatting of %f's
280  * Added RPL_MAPTOTL at request of Whitewolf
281  * Guess origin where server is lazy with PING/PONG and doesnt specify one, prepend the command's source :p
282  * remote ping added
283  * Remove code duplication by using core function. Remove global Server*..one step on the road to losing the bloody regexp :<
284  * s/No such channel/Invalid channel name
285  * Make use of IsValidChannelName() - as a side note, we perhaps shouldn't be returning 403 in CBAN...
286  * m_join: Use IsValidChannelName()
287  * Added bool IsValidChannelName(const char *) - it doesn't seem to blow things up...
288  * Add m_blockamsg to example config
289  * Initial commit of the /amsg blocker module
290  * Correct copying of confs (may generate some nonfatal errors)
291  * Renamed inspire.* inspircd.*, Removed obsolete server_tokens.txt
292  * Added anti-n00b warning to stop direct inclusion of the file with <include>
293  * Instantly apply lines when not synching
294  * Tweak to allow @%+ to all exist on a user at once during burst
295  * Extra checks to not set the ssl marker twice on re-handshake (nonfatal but wasteful)
296  * Check for >8 params in NICK
297  * Altered SVSNICK to echo back NICK message, grrrr, sodding ircservices-based services packages.
298  * Fixed 'eggy complains when not included' bug that causes segfault in brain
299  * Newline stripping for asctime()
300  * Added remote TIME
301  * Added PUSH command
302  * Added anti-retard check to prevent retarded flood settings
303  * Added a sanity check that was left out, prevents crash on invalid fd (e.g. via excess flood on oper or connect)
304  * Typo in some code that should usually be #ifdef'ed out anyway, but we still want this to work sometimes, maybe.
305  * Fix crashbug, copying MAXLEN into a MAXGECOS+1 field != cunning
306  * Added comment about the craqness of ServerConfig::Read()
307  * Checks to not propogate invalid or already-existing Xlines
308  * Increased how often socket timeout checks occur which will mean flushing write buffers more often
309  * Updated block numeric to read COLOUR >:)
310  * Finally FIXED ALL THE CRAQPIPE INDENTING (and lack of), *MESS THIS UP SO BAD AGAIN, AND I MOLEST YOU WITH A SPORK*
311  * Fixed cosmetic 'need to be halfop to change modes' when kicking
312  * Match bans against user::ip4 in add_channel
313  * Potential fix for CS Testnet bug, thanks to Special for helping with this one.
314  * Properly count remote opers in /LUSERS
315  * 005 update, removed duplicate WALLCHOPS reported by ThaPrince, added VBANLIST
316  * Avoiding assignment of std::strings unless neccessary to speed up bursts
317  * Faster ADDLINE code
318  * Slightly more efficient write buffers
319  * Tidying of snotices (adding '***' to start of WriteOpers texts)
320  * Fixed WHOIS to respect +i channels, optimized in case where source == target by hortcircuiting operators
321  * Added max and current local/global usercounts to /lusers same way as most other ircds
322  * Now errors when sent SERVER on a non-server port
323  * Modified ./configure to symlink ssl modules instead of cp'ing them, this makes updating easier in the future
324  * Force initialize host to "" just in case it isnt (it should be however, as its constructor is called, but we know what ass-u-me did)
325  * Allow remote bans from servers to be represented as servers in the banlist
326  * Removed some debug notices that were mistakenly in the DEFAULT loglevel
327  * Fixed /LINKS to show flat even in tricky mIRC.
328  * Make ulines /swhois silently
329  * Documented <options:tempdir>
330  * Added support for  changing tempdir via <options:tempdir>
331  * Yeah, this thing only uses 1 param, but requires 2? :p
332  * Made devoice not oper-only (Congrats to the original coder!)
333  * Fixed missing speech marks and stuff (vim and syntax highlight for the win)
334  * Added more up to date helpop.conf from Custodis <tballen@bhcnetworks.com>
335  * Fixed two unneccessary strlcpy's in the wildcard matching that just were there to lowercase it... we can do this inplace
336  * Fix to allow empty but defined away message (yes, really)
337  * Bugfix to cmd_modules, we've added some event types since it was written, could potentially overflow if issued when new ones used, Made cmd_away compile again
338  * Propogation of away messages across network (we dont bounce the numeric back for every privmsg like other ircds, we burst them and keep them synched by broadcasting AWAY)
339  * Fixes for (unlikely and theoretical) desync in TOPIC, Fix to not bother trying to write away response if user is not local
340  * Fix to prevent use of aliases before reigstering connection
341  * Add .c_str()'s to m_sqloper in call to OneOfMatches(), and change prototype of OneOfMatches to take const char* instead of char*. Either that or case all the .c_str()'s to lose the const :"
342  * Bug in code for syncing cbans
343  * Commented on new return value of OnUserPreKick for explicitly allowing kicks
344  * Re-organized order of cmd_kick stuff (OnUserPreKick) to make override kicks work nicer
345  * First-revision UNINVITE
346  * Allow remote users to INVITE regardless of channel membership or op status, to prevent desync possibility
347  * Make the alternative hosts be in alphabetical order sad.gif
348  * Update example <oper> to demonstrate multiple hostnames
349  * Allow space seperated hostlist in <oper:host> e.g. <oper host="foo@bar baz@qux blarp@flerble" name="blah">
350  * Added "char status" parameter to OnUserPreNotice and OnUserPreMessage for NOTICE @#chan etc., Tidied up craq++ in modules (copy and pasting OnUserPreNotice into OnUserPreMessage?! why not just call one from the other!)
351  * Stop trying to set an empty swhois if the <type> doesn't specify one
352  * When rehashing by sighup and adding/removing modules, don't attempt to write a user because there isnt one :p
353  * Added gnutls_rpath.pl. This works out the lib dir and does:, -Wl,--rpath -Wl,/lib/dir  and outputs it, the $LinkerFlags of gnutls, ssl module use it in backticks during link, so you dont get missing lib error
354  * Only send 320 numeric if the SSL user is on our port
355  * Add support for configured swhois lines
356  * Add operators >> and << for irc::string and i/ostreams. m_cban utilises this
357  * Optimized: strchr(x->modes,'o') has the same effect as (*x->oper) but *x->oper is potentially hundreds of times faster :p
358  * Learnt how to speel Optimization, Removed redundant referance to value not in use.., Fixed 'First Build' Optimization flag not being set.
359  * Fixed Brain's bug, showing 'Using SSL Module' regardless of if you say yes or no.
360  * I R SECURE CONNECTION! (fix)
361  * Check for time going BACKWARDS (yes. really.)
362  * Added "FNC WALLVOICES WALLCHOPS" to 005 numeric,, WALLVOICES and WALLCHOPS are actually specified by STATUSMSG but this is, specified here to make it work with more clients. FNC = forced nick changes possible
363  * Added '%' to STATUSMSG
364  * Bugfix #69
365  * Tidyup op/halfop/voice list on part/quit
366  * Tweak module help for m_conn_waitpong
367  * Stop uncloaked hosts showing to non-opers
368  * Altered format of OnUserMessage
369  * Allow for NOTICE and PRIVMSG from outside chan with a remote client
370  * Added extra 'looking up your hostname lollerskates' output :p
371  * Why are we using the users hostname to connect back to port 113? we can use ip here, and save ourselves a lookup
372  * Added remote routing notices for RCONNECT
373  * Added RCONNECT
374  * Added <options:hideulines>
375  * Added <options:flatlinks>
376  * Added ircu-like hidewhois feature that allows hiding of server name in whois with arbitary string like '*.network.net'
377  * Added m_globalload.so to module list
378  * Added hidesplits to example conf
379  * <options:hidesplits> ircu-style quit munging for netsplits
380  * Removed steeeenking dll message, attempted to hide 'target is same' with launcher install
381  * Added numeric 396 ("x :is now your hidden host") from hybrid/ircu
382  * Removed bool return of DoBackgroundUserStuff()
383  * Extra comments re. nonblocking DNS and use of IP addresses in constructor to speed up connect time
384  * When socket fails to construct, we now check the GetState() of the socket object to detect this condition., If we dont, we can end up leaking fd's and RAM on failure. We dont use exceptions here as these operations can, occur very often.
385  * More nonblocking dns stuffs
386  * Fixes to set correct resolver address before looking up host
387  * Nonblocking dns for InspSocket class (used by server to server)
388  * Broadcast SPYLIST and SPYNAMES usage to all opers
389  * Document m_spy here (yes Om, i kept alphabetical order!)
390  * Users are gonna erupt in flamewars over this... and google will love us >:)
391  * Major update, reordering and adding missing modules
392  * Tidied up a kill message
393  * Clean up ghosts on nick collision
394  * *TEST* nick collision code for NICK change in server link
395  * Only access-check local user kicks
396  * Should always allow remote modechanges (FJOIN not effected as its not sent as a MODE)
397  * Allow async dns to compile -- but its still experimental and should not be used on a production network!
398  * Excempt ops kicking themselves from +J
399
400 1.0 Final
401
402  * Optimized WriteServ - why use %s!%s@%s when we have the more optimal userrec::GetFullHost() ?
403  * 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.
404  * Added check that forbids configuration as root >:-)
405  * Major updates to CBANs...like they're reasonably functional
406  * Added support for TYPE_OTHER metadata, where void* target will be NULL, e.g. its not bound to a user or a nick
407  * Fix to send 403 on invalid channel name
408  * Moved Write() call so that it can send the NICK message properly and force the client to change
409  * Allow ulines to still notice the channel regardless of +T
410  * Created OnPostOper that can be gauranteed to be called *after* opering (by ALL modules) is done
411  * "Oper of unknown type" -> "313 %s %s :is an IRC operator"
412  * Auto-assume "+" on the start of opermode block if not included
413  * Removed example commands that never actually existed
414  * OpenSSL detection and cert generation in ./configure
415  * Changed length of password field to 64, giving us a maximum password length of 63 plus null terminator
416  * Fixed uninitialized ExtMode::list
417  * Added some extra debug
418  * Make m_services use InsertMode (are we done yet?)
419  * Changed On005Numeric to use InsertMode (we left one out?)
420  * Deleted the semicolon that had half the dev team wondering...
421  * Incorporated Craig's friendlier SQL class (documentation to come later)
422  * m_sqlauth: Fix small memory leaks in some cases (bad password, bad query, lost mysql server connection etc..)
423  * Correctly initialize userrec::password (should fix a few m_sql issues)
424  * Add m_conn_waitpong, require clients to reply with a correct PONG to a server PING before they can connect
425  * Remove unused includes and rename classes from ModuleSSL to ModuleSSLGnuTLS so we can be consistent across multiple SSL modules
426  * Added warnings to opers when session limits are exceeded
427  * Improved IP handling. Now uses in_addr to store client ip, not char[16]!, Added global and local session limits
428  * Problems removing +t due to wrong bit-value being used in comparison
429  * Altered so that if running in -debug mode, will not erase its .so files from /tmp to allow a clean backtrace
430  * Removed unneccessary strlcpy
431  * Removed a load of unneeded includes (poll.h etc)
432  * Added <ident:timeout> example so that people remember to set this when using m_ident.so
433  * Default ident timeout to 1 sec if not defined (a bit low, but better than 0!)
434  * Updated m_ident to use inspsocket, should be more reliable
435  * Added missing modules (newer ones)
436  * Removed excessive debug for something thats now fixed
437  * 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
438  * Added m_opersha256 module created by Special
439  * Add module for anti-autorejoin channel mode +J
440  * Changes to INVEX and EXCEPTS 005 tokens
441  * Changed +l to drop the mode if the limit is same as current., Optimized check on numeric chars
442  * Remove last relic of last goto in inspircd (an unused label)
443  * Fixed to not have ohv in CHANMODES type A,, Added proper MAXMODES output in 005 instead of hard coded '13'
444  * One goto is now no gotos.
445  * Change m_redirect, m_joinflood and m_messageflood to put their modes in the correct section and to use InsertMode()
446  * Add InsertMode function to helperfuncs.(cpp|h) for easily adding modes to the CHANMODES section of the 005 numeric
447  * Added patch from Andy Church re spaces in SETNAME
448  * Fixed line endings when skipping ssl cert generation
449  * Documented some functions that were missing comments
450  * Properly check that existing key resides in conf/ and not current dir
451  * Added PRIORITY_BEFORE and PRIORITY_AFTER (see src/modules/m_hostchange.cpp for how it works, function Prioritize())
452  * Added -modupdate to regenerate modules makefile, Added SSL option, as well as a 'Build Certificate' section (If avaliable)
453  * Adding the +e and +I modules m_banexception and m_inviteexception, also adding their shared utility header
454  * Added trick to allow local server to unset -r only in one specific condition (the nickchange)
455  * Added joinflood +j
456  * Made bans check both real and fake host
457  * Patched to allow FTOPIC from users (so that chanserv can update the settime and the topic still come from chanserv)
458  * Added <link:hidden> to docs
459  * Optional IP-Hiding for servers
460  * Use libgnutls-config --libs to configure linker options
461  * Make relative paths in the config file tags be relative to the insp config directory
462  * Change 974 numeric to 490 to avoid collision with Insp's failed to load module error
463  * Make m_sslmodes messages appear in the channel window
464  * Updated with new docs for maxtargets
465  * Updated 005 to show changeable MAXTARGETS
466  * Allowed for configuration of maxtargets in <options:maxtargets>
467  * Wrong nicklen is shown in the 005 numeric, fixed (noticed by ThaPrince)
468  * Initial commit of m_sslmodes, supplying chanmode +z
469  * Allow for <bind> tags with no or empty type, as well as 'clients' ones
470  * Set vendor and static module flags...even though the booms from trying to unload it would be fun sad.gif
471  * Make errors loading certificates DEFAULT level
472  * Inital commit of the first SSL module \o/ \o/ \o/ Also Ommeh's first official svn commit \o/
473  * Added MakeWildHost to userrec (*!*@dhost), Added ban stuff to messageflood
474  * Fixes to server kick (i hope)
475  * And yae, the compiler sayeth to brain, fix thine warning. and thou warning art fixeth.
476  * Made '*' ban-specifier work
477  * Added OnChannelDelete() method (called on KICK, PART or QUIT where a channel is deleted for cleanup of metadata), Added m_messageflood.so
478  * Tweaks for openssl compatibility
479  * Stopped lines longer than 512b from being killed, instead, warning sent and dropped.
480  * Fix to m_redirect to prevent circular link to self
481  * Added <allowchannel:name> to allow specific channels
482  * Test-fix for crazy's bug (/who 0 * as oper while on no channels)
483  * 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
484  * Umode +R was broken (only worked for channels) -- fixed
485  * Removed all strncpy() calls and replaced with strlcpy()
486  * 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.
487  * Added unlink() to tidy up /tmp after each dlopen()
488  * Added support for part messages in the module API (and therefore between servers too)
489  * 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.
490  * 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.
491  * Changed lots of icky #define's to enums
492  * Made <disabled> non-manditory, added check for when singular tags arent defined at all
493  * Fixed SIGHUP rehash to actually send rehash event to modules
494  * Added checks to forbid declaring certain config tags twice (ones which should only exist once like <server> and <admin>)
495  * Added m_vhost, authenticated vhosts from the conf similar to unrealircd's way, requested by PinkFreud
496  * Changed some .cpp to .so in the this->source field
497  * Removed deprecated default= for bind tags
498  * Removed deprecated LocalOp type
499  * Added support for <options customversion> to customize the second part of VERSION
500  * 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.
501  * Updated copyrights in headers etc using perl inplace edit
502  * Made inspircd close and reopen its log on rehash
503  * Removed some redundant (and commented out) functions
504  * 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?)
505  * Extra m_sql field checking
506  * Fixed 'stops responding after server pingout, while using select' bug as found by merwin
507  * Added RemoveSocket as a test fix for merwins bug
508  * Replaced some 'n' with '*n' that was breaking userrec::MakeHost
509  * Added extra safety check for a condition that should NOT happen (in theory, but still)
510  * xline tweaks
511  * Replaced sprintf's with some char* voodoo
512  * Changed channel user lists from vector to map
513  * Changed makefile to use 'install'
514
515
516 1.0 Final - RC2 (KingArthur)
517
518  *  Added 'a' flag to STATS c which indicates autoconnect state
519  * Removed tab characters from example conf
520  * Added oper-only-stats option
521  * Added 005 stuff after VERSION
522  * m_park.cpp fixes (and anything else using UserToPseudo and PesudoToUser)
523  * 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.
524  * Aligned % fields in map
525  * Changed printf specifiers in map to right-align digits
526  * Added User Counts to /map
527  * Nicer mode character loop
528  * Revise some serious craq++ in AddBan
529  * Fixed to not crash on /PARK (still more to test)
530  * Added CASEMAPPING and CHARSET to ISUPPORT (005)
531  * GCC 4.1 is more strict about extra qualification on members
532  * Updated example configuration file
533  * Fixes to typos and change to return by reference on GetClass
534  * Changes to how classes are looked up (connects slightly faster) and fix for case sensitive passwords
535  * Removed cvsignores, set svn:ignore property using -F .cvsignore
536  * Added specific errors relating to invalid link tags (requested by Strike)
537  * Tidyup of K&R style indenting, comments in silly places, and pointless curly braces around non-blocks
538  * Changed to QueryType rather than short int for query types
539  * Removed crappy linked list stuff and replaced with faster std::map
540  * Improving niceness of DNS code, i WILL make this readable!, Changed a ton of ugly firedns #define's to enums
541  * Minor cosmetic fault pointed out by Trystan
542  * Blockcolor now blocks reverse and other mirc sillies
543  * Ommitting \r and \n from debug display of outbound lines
544  * Now uses two AES contexts, an 'in' context and an 'out' context
545  * CBC encryption type in AES rather than ECB
546  * Changed background stuff to occur more often
547  * Made socket.cpp flush its write buffer more often (fixes odd lag on server to server connections)
548  * Fixed broken checks to allow overriding
549  * Optimized out some more redundant va_args voodoo
550  * Double copies due to bad chop()
551  * More removal of formatting where its not neccessary x("%s",str) == bad!
552  * Attempt to cut out unneccessary printf() va_args voodoo (ugleh)
553  * Cached ISUPPORT
554  * Added output of error if file descriptor given to AddFd is > MAX_DESCRIPTORS
555  * Changed to MAX_DESCRIPTORS
556  * Changed 65535 to MAX_DESCRIPTORS calculated at configure-time
557  * *FIX* 'No more connections allowed' was comparing against the network-wide limit rather than the local limit (ICK!)
558  * Added extra checking to socketengine to refuse connections after we reach the max
559  * Added counters for MAX_DESCRIPTORS etc which allows the socket engine to refuse new fd's once you hit the OS limit
560  * Initial revision of /devoice.
561  * Removed an unused OnUserConnect() method
562  * Changed some little bits and bobs here
563  * 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)
564  * Optimizing to not use so much cpu with high user loads
565  * Made 'fake direction' less loud, removed 'invalid source'
566  * Added SetSignals()
567  * Signal handlers were not being set when -nofork was enabled
568  * Changed some other stuff that used the old vector/deque style commandlist
569  * Changed from std::map to hash_map
570  * Command search function now uses std::map, should be faster (i hope)
571  * Removed useless isnick() checks in Give* and Take*, in the name of tidiness
572  * Tidyups to mainloop, why were we using isnick() to check if a user was registered?
573  * New system for client exits using CullList seems stable, needs testing
574  * Changes to the way clients are exited during mainloop - MAY BE UNSTABLE USE WITH CAUTION
575  * Check on upper bounds of base64 decode
576  * Added checking for bad base64 decodes
577  * Updated chanfilter to use irc::string
578  * Modified to omit unimplemented module methods
579  * Fixed and implemented /modules debug <glob>
580  * Added /modules debug
581  * Added global_implementation array, bypasses calls which *NO* modules are currently implementing
582  * Fixed missing I_On005Numeric
583  * New 'Implements' system
584  * Added support for implementation hooks
585  * Adding hook type checking to event calls to speed them up
586  * Allow halfop to dehalfop themselves`
587
588
589 1.0 Final - RC1
590
591  *  Improved efficiency of chanrec constructor (removed strcpys)
592  * Changed two fields in ConnectClass to strings, moved constructor stuff to init-list
593  * Added 'build complete' message
594  * Somehow, the examples had gotten into the conf/ dir, they belong in docs/
595  * Improved m_alias to only capture complete commands and rewrite them (bug #92 as reported by strike)
596  * Added more verbose error output during link
597  * Added CAPAB checking to prevent some obvious n00biness that may occur
598  * Initial revision of CBAN. It doesn't do anything useful just yet.
599  * LD_LIBRARY_PATH setting is no longer required by core or m_sql.so
600  * Changed $CompileFlags to seperate $CompileFlags and $LinkerFlags
601  * Added -Wl,--rpath -Wl,LIBDIR to linking parameters to allow users to directly start the binary without the launcher, if they wish
602  * Improved makefile dependency lists
603  * Removed some redundant code that was commented out
604  * Added extra sanity check in squit to make sure REMOTE Servers dont try and squit a server from itself!
605  * Added Socket = NULL for local server class to prevent it being 'selectable' by squit
606  * Made linking more nazi, will drop connections that send bad commands
607  * Fixed to not allow :Abc NICK Abc, where the case of the old and new nick are *identical*
608  * Added extra diagnostic messages during connect, if connect fails
609  * Added stricter checking for encryption on connect, if enabled
610  * Fixed case-change nicks not being propogated
611  * Allow case changes in nick w00t -> w00T
612  * Added extra key length checks, documented encryption in example conf
613  * Added AES encryption to spanningtree links
614  * Added IOHookModule stuff to allow for different modules to hook different ports
615  * Fixed spanningtree to not allow malformed conf tags (missing/empty values), Added m_spanningtree, m_swhois and some clarifications to example conf
616  * Split all commands into seperate files and redid command system to take classes, not function pointers (function pointers suck ass)
617  * Moved serverstats* stats to InspIRCd class
618  * Moved SocketEngine* SE into InspIRCd class
619  * Moved mode stuff into modeparser
620  * Moved command_parse functions into class CommandParser
621  * Optimized away a memset made it potentially 10x faster
622  * Fixed BUG, If an opers SendQ exceeded, it would bring down the server!
623  * Added 'local users' vector
624  * Full removal of inspircd_util.h
625  * Improved pointer voodoo in chanmodes(), many less strlcats
626  * Made apply_lines apply perm lines again
627  * Added documentation for CullItem and CullList
628  * Updated so that netsplits use the cull_list.
629  * Added CullList class
630  * Added Server::GetVersion()
631  * Added new docs for class InspIRCd and globals.h etc
632  * Removed depreciated docs
633  * moved declarations of typedefs for user_hash and chan_hash etc to typedefs.h
634  * Fixed a couple of missing \n's at request of Special
635  * optimized a ton of strcmps down to an integer comparison!
636  * Optimized accept() stuff to eliminate loop, idea while talking to w00t
637  * Got rid of the evil loopy horrid mess in dnsqueue.cpp (singlethreaded dns lookups)
638  * Made dnsqueue clean up its sockets from the socketengine properly
639  * Prevented zlines from being allowed with a username/ident in them
640  * Modified chlist() and whois to allow output of multi line channel membership list (!)
641  * Made MAXCHANS growable for opers/ulines
642  * Removed some logging that can cause excessively huge logs when select() is being used
643  * Removed some remnants from mesh linking
644  * Moved some stuff out to userprocess.cpp
645  * Efficiency suggestion by w00t, faster processing of module sockets at the expense of a bit of ram
646  * New version doesnt yield() any more
647  * Made socket loop flush a users buffer if they still remain after processing each line
648  * Changed how background processing works, now once per second repeating until nothing left to do
649  * Tied in DNS to SocketEngine
650
651
652 1.0 Beta 6
653
654  *  Added SPANNING TREE LINKING support, allowing for STABLE FAST and EFFICIENT linking of InspIRCd servers (m_spanningtree.so)
655  * Added m_swhois module, allows setting of arbitary descriptions on users
656  * Added a 'Base' installation path to allow installing of the launcher (handy)
657  * Added support for the new <include:file> system.
658  * Fixed Bug causing the base directory to always overwrite the other dirs
659  * Added Base Directory Path to the Path list at the end of ./configure
660  * Added Library Path to the path list at the end of ./configure
661  * Improved layout
662  * Added -lstdc++ for GCC 4 support
663  * Removed connection.cpp and servers.cpp
664  * Removed static meshed linking from core
665  * Fixed code so that it will still work with kernel 2.8, 3.0, 3.2... whoops.
666  * Added a chomp() just to be sure on kernel 2.6 check
667  * Fix for bug #72 reported by Hal9000
668  * Configuration errors now go to the error log
669  * Updated to allow users to specify their compiler by hand
670  * Added warning about gcc2
671  * A lot more of the core consts are now configurable at compile time
672  * Fixed removal of mesh linking from core
673  * Added cvsignores
674  * Added Metadata API (for transferring extensibles over a network transparent to the protocol)
675  * GCC4.0 warning fixes
676  * Added BoolSet utility class
677  * Removed cross-server mesh stuff
678  * Fixed missing constructor on class connection
679  * Tons of DNS debugging and stability fixes
680  * Added experimental multi-threaded DNS using pthreads!
681  * Added notice-to-servermask
682  * Added ability to output 'is an oper but i dont know what type' in WHOIS
683  * Added clever code to propogate module's special commands (SAJOIN, KNOCK etc) transparently!
684  * Added opaque protocol functions
685  * Highly optimized userrec saving 1.5k per user
686  * Added tons of extra documentation to Module class
687  * Added OnCleanup function
688  * Added OnChangeHost
689  * Added OnChangeName
690  * Added OnWallops
691  * Removed old OnUserSync and OnChannelSync
692  * Added Server::RehashServer
693  * Added onrehash parameter
694  * Added OnGetServerDescription (mainly for link modules)
695  * Added OnPostLocalTopic
696  * Added OnUserInvite
697  * Added remote kill
698  * Added opertype to OnOper and added OnMode function
699  * Added reason to OnUserQuit
700  * Added OnUserMessage and OnUserNotice (why have these been missing so long?)
701  * Removed mesh module functions
702  * Added OnLoadModule and OnUnloadModule (OnLoadModule was not triggering)
703  * Tidied up socket engine code, moved into a specialized header full of #defines
704  * Fixed to compensate for ~ in ident length
705  * Optimized xline system (much faster, more efficient, less cpu usage)
706  * Added insane tag (prevents wide gline etc)
707  * Now shows remote quits differently
708  * Fixed RFC-non-complaince of TOPIC and NAMES with +s channel (As reported by Ghost)
709  * Fixed LUSERS and MAP to display 'dummy' data when no linking module is loaded
710  * Changed behaviour of module API to pass Server* to the constructor, rather than have to create one (makes more sense)
711  * DNS safety and logging
712  * Fixed 'fake direction' messages being put out by user->registered = 7 being set too early
713  * Removed the MESHED 005 numeric token
714  * Changed epoll delay
715  * Allowed ulined servers to by pass all oper permissions checking
716  * Added stricter checking for listening sockets
717  * Fixed compile time glitches in new code, removed obselete variables
718  * Added ability for ulined servers to set any arbitary channel mode (even from outside the channel)
719  * Added ability to put command named * into a class to make it cover all
720  * Fixed Case sensitivity Bug (BugTrack #88) in m_chanfilter.cpp
721  * Changed m_chghost.cpp to silently set hosts if uline sets it
722
723
724 1.0 Beta 5
725
726  *  Added windows comments to module section. Added m_denychans. -katsklaw
727  * Added 557 numeric (from MS Exchange chat server) to indicate too many results from /WHO
728  * RPL_WHOLIMEXCEEDED changed to 523 to match bahamut
729  * Added .cvsignore files
730  * Added a ton of missing prompts wink.gif
731  * Added cvsignore
732  * Changed representation of MAXNICK in isnick() to allow for a non-incremented size
733  * Fix for bug #70 (only first item working properly)
734  * Fixed max channel length
735  * Added ability to update the helpop file on rehash (Bug #69)
736  * Added denychans module, allows blocking of channels
737  * Added parameters to comments
738  * 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)
739  * Fixed nicklength perpetually increasing on each run (reported by katsklaw)
740  * Fixed to never append double sums
741  * Fixed to preserve epoll/select/kqueue choices
742  * Operhosts are now optional (in the type tag)
743  * Added check to not flush disconnected buffers
744  * Added code to not try and increment buffer if wrote 0 chars
745  * Added extra code to notify mainloop when the iterator has been mangled (e.g. by netsplit quits)
746  * Added more immediate disconnect when a server isnt routable any more
747  * Added ping checks for server links (experimental)
748  * Added stuff for /map improvements
749  * Autoconnection of servers added
750  * Changed to not show remote quits (we don't show remote connects after all)
751  * Fixed compile glitch on 3.4
752  * Fixed inbound server errors
753  * Fixed to erase .so and binaries before trying to overwrite them so mmap doesnt mess up and segfault any running copy (thanks jilles)
754  * Fixed to flush buffers when connection closed
755  * Fixed to not autoconnect servers we already have!
756  * Nonblocking connect() for outbound server links (why was this blocking anyway)
757  * Changed /map to show authenticating servers with a * similar to hybrid
758  * Now clears the autoconns map on rehash
759  * Sum not being propogated properly fix
760  * Example conf update from katsklaw
761  * Buffer size limits (hard coded to 1mb for now, will allow to raise in config later)
762  * Fixed bug where when a server split all other servers would stop responding
763  * Fixed the server names reported in /stats l
764  * Output buffering on server connections
765  * Removed m_globops setting +g automatically on oper, m_opermodes.so can do this now
766  * Tidied up some socket stuff into userrec
767  * Changed revision id's to std::string
768  * Added m_opermodes.cpp, allows addition and removal of modes on oper up
769  * Added COMMANDS command (yes, really)
770  * Added detail to /COMMANDS
771  * Changed cygwin warning
772  * Changed to fix minor typo in dynamic-build makefile
773  * Edited to properly detect strlcpy on netbsd (different declaration in string.h didn't match regexp)
774  * Fixed /COMMANDS
775  * Fixed case-sensitivity typo in module name for Addcommand
776  * Fixed crappy const stuff
777  * Modified to detect kqueue on netbsd
778  * Removed stupid consts
779  * Updated helpop docs
780  * Added eg++ stuff
781  * CC fixes
782  * Changed to use gmake on ALL bsd variants
783  * Kill fixes
784  * Warning message for openbsd users that try and use gcc
785  * Added -lresolv for solaris
786  * Added -lrt for solaris
787  * Bzero removed for compatibility with solaris 10
788  * Fix to minor typo in solaris stuff
789  * Fixes for solaris
790  * Fixes to bad filehandle
791  * Removed unncessary sched_yield calls
792  * Updated for solaris -lsocket / -lnsl
793  * Added configurable SOMAXCONN size
794  * Changed epoll_wait timeout
795  * Default epoll/kqueue to yes
796  * Added: Epoll support
797  * Kqueue and epoll default to enabled now
798  * Made prompts clearer
799  * Mass-connect speedups, also now uses less processor time
800  * Moved a load of servers-only stuff into serverrec out of the way of userrec
801  * Shrunk some datatypes
802  * Removed __single_client_alloc again because gcc devs were smoking crack and removed it
803  * Added hashcomp.cpp, seperates out the stl hash_map stuff
804  * Added a few simple output lines (similar to gnu autoconf so people know what's happening)
805  * Added better detection of strlcpy that doesn't involve compiling a test program (faster)
806  * Added detection for kqueue, so if your BSD system doesn't have it, the configure doesnt ask you smile.gif
807  * Added docs for hashcomp
808  * Added idea from ircu: /invite with too few params shows the channels youve been invited to but have not yet joined
809  * Added irc::string
810  * Specified namespace std in *all* files
811  * Fixed typo in die tag
812  * GCC 3.4/4.0 fixes
813  * Made 'make clean' make cleaner :-P
814  * Made modules use irc::string where they were using strcasecmp()
815  * Moved StrHashComp and InAddr_HashComp into the irc:: namespace
816  * Moved a ton of functions into helperfuncs.h to speed up recompiles
817  * Updated strhashcomp to use irc::string internally rather than a combination of strlower and strcasecmp
818  * Updated to keep lowermap const within hashcomp.cpp
819  * Added 'uniqueness sums': http://www.inspircd.org/wiki/InspIRCd_Serv...Uniqueness_Sums
820  * Added RFCs
821  * Updated example conf to list all non-extra modules with a description of what they do.
822  * Modules now commented out by default, admin must uncomment them to use them. Suggested by lag``
823  * Added Server::GetServerDescription() at request of Craig
824  * Re-added the dot graphs again
825  * Added docs for new smaller memory footprint classes
826  * Changed the type of struct whowas records are stored in (no need to waste a big heavy userrec)
827  * Customizable by-byte-size recvq stuff
828  * Documented new recvq and sendq stuff
829  * Fixed wrong number being shown when sendq exceeded
830  * Honking great memory leak fixed that's been there since the early alphas :/
831  * Optimized some static structs
832  * Structure optimizations, changed a lot of bools into binary bitmasks
833  * Updated default sendq size to 256k
834  * Added sendq stuff, see example config
835  * 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
836  * Added Cache support for the KQueue Question
837  * Fixed Optimisations not being set.
838  * Added ability to accept() more pending sockets at once
839  * Added socket engine to version response
840  * Fixed crash when socket reads 0 whilst in kqueue mode
841  * Fixed kqueue setting not being changed
842  * Made ping check loop less regular in kqueue version
843  * Changed pool size from 64 to 1024
844  * Fixed some of Brains bastardization of configure biggrin.gif
845  * Fixed Craig's buggy configure tongue.gif
846  * Fixes to way allocations are handled
847  * Hit dns with spork. Repeat until crispy.
848  * Modified to rm the .o files from the modules dir
849  * Modified to use -pipe
850  * New way of building modules, this is supposedly more portable
851  * Now secures binaries with 0700 perms as theyre installed
852  * Optimised strlower (much faster, uses a lookup table)
853  * Optimized userlist() (a lot faster with many users online)
854  * Fixed bug where another users buffer could end up in the buffer of an exiting client before they quit
855  * /WHOIS as oper now shows real ip as well as real host
856  * Added USERIP numeric 005 output
857  * Added m_userip.cpp requested by Selphie
858  * Changed the final bunch of udp_* vars to server_*/tcp_*
859  * Fixed ircservices sending PING
860  * Changed to fully dynamic core (should be faster compile times)
861  * Fix naming glitches
862  * Fixed remote kills to display the correct source (spotted while talking to aquanight)
863  * Fixed to use numeric 340-
864  * Renamed core files to all be libIRCD*
865
866
867 1.0 Beta 4
868
869  * Fixed configure bug resulting in osflags being called BEFORE getcache (Making it redundant.)
870  * Fixed output of src/modules/Makefile saying it was made by Craig.net tongue.gif
871  * Updated for test gcc4 compatibility
872  * Added support back for ./inspircd
873  * Added a line to automatically chmod ./inspircd to 0744 ('Last Second Save!')
874  * configure now supports any future .file.inc includes (Yes, i can see into the future)
875  * Updated makefile
876  * New Perl ./configure
877  * Added -Woverloaded-virtual to catch annoying module typos
878  * Fixed to always look for the ircd.log within the bin/ dir
879  * Fixed to not spool the error log after ./inspircd debug
880  * Sanity checks for fd_ref in addclient
881  * Fixed 'server ignores me forever if i throttle the server with connections' bug
882  * Debugging now allowed from ./inspircd (./inspircd debug)
883  * Added LD_LIBRARY_PATH hacks/kludges to the .inspircd.inc file to make it find libmysql in funny situations
884  * Added final documentation for inspircd Beta 4
885  * Added important note relating to ip addresses in <link:ipaddr>
886  * Added schema for m_sqllog.so
887  * Added m_sqloper, allows storage of opers within a mysql database
888  * Commented new functions
889  * Major *MAJOR* optimizations by double-referencing channels to users (never need to scan the entire user hash again except in very rare circumstances)
890  * Added channel 'counter', increases speed of quits, parts, kicks
891  * commented some users and connections code
892  * added remote @* notice
893  * Added remote versioning
894  * Fixed dicky buffer (due to cleanup the wrong variable was being used)
895  * Services speedups for stupid buffered i/o uplinks
896  * Added server input buffers (for systems that decide buffering is fun)
897  * Major code tidyup (-W)
898  * Fixed some flood checking
899  * added noticeall
900  * Added a Server:: method to send server notices to channels
901  * Added explicit oper tracking in a vector of userrec* pointers, optimizes sending out oper notices
902  * Fixed: +s and +p channels wouldn't be synched correctly
903  * Fixed: +s and +p never show in whois even when you're a member of them
904  * Fixed: +s and +p never show in list even if you're a member of them
905  * Added Server::FindDescriptor
906  * Added and tested fd crossreference table - improves speed a lot, and fixes one of the /STATS chars which has been broken a while
907  * Added OnAddBan and OnDelBan module api calls, and fixed glitch which required them in m_timedbans module
908  * Added OnOperCompare function to override strcmp in password check for /oper
909  * Added module message passing architecture
910  * Added a few anti-flood features
911  * Updated buffering, faster and more sensible (old code sucks)
912  * Added password field
913  * Removed some debug output
914  * Added /stats T
915  * Empty but non-null string passed to is_uline now returns true
916  * Added numeric 318 to /WHOIS when nick is not found (end of whois should still be there as its a list response)
917  * Added numeric 412 "no text to send"
918  * Changed to handle : as a NOP token so that 'assuming' inspircd knows RFC commands wont cause tons of errors
919  * Fix to a mode parsing bug (eating wrong version of parameter?)
920  * fixed warning of redefinition of RUSAGE_SELF
921  * Fix annoying off-by-one error in connection::RecvPacket
922  * Added more fault tolerance to server links
923  * Added new /stats z
924  * Fixes to /who output
925  * Added mode 'compression', stops abuse with modes like: +s-s+s-s+s-s
926  * Test fixes for /version strings not being set in burst
927  * Fixed a reversed strcmp
928  * Added 901 numeric - end of modules list
929  * Added support for /SQUIT <mask> and checks against /SQUIT *
930  * Changed remote kill reason text
931  * Fixed strange leading ":" on remote Z/K/G lines
932  * Fixed so that quitprefixes are shown in client exit notices
933  * Added global oper monitoring through modules and global connect monitoring through modules
934  * Fixed weird issues when anope sends large amounts of text at once to the uplink
935  * Fixed dodgy poll()
936  * Added new and improved GetBuffer function based on research on crappy redhat 7.3
937  * Fixed park crash bug #63 reported by ViaraiX
938  * Reordered some on-connect network stuff to stop services being so confused
939  * Extra safety checks to avoid trying to write() remote users
940  * Optimized WriteCommon and WriteCommonExcept
941  * Fixed weird line wrapping bug with extremely long lines
942  * Made xline notices neater when notifying of unknown connections
943  * Fixed WriteCommon not writing to the source user when not on any channels
944  * Changed "is now running" message to AFTER port bind checks
945  * Added PID reporting and testing before daemonize
946  * Changed startup ascii to green. Elphaba would be so proud tongue.gif
947  * Fix to prevent empty umodes
948  * Fixed empty modes from nickserv
949  * Optimized modes (removed strlens etc)
950  * Fixed empty modes issue that emerged after dodgy code was corrected
951  * Fixed services not being informed of force joins
952  * Fix to prevent quits being sent onto the network for nonexistent users
953  * Added faster wildcard checking routines
954  * Fix for bug #62 (replaces only occur once per line in m_censor)
955  * m_chanfilter now works on gcc 2.95.x again.
956  * m_chanprotect fixed to remove privilages upon kick
957  * Fixed WriteChannelWithServ
958  * Added module which provides MD5 encryption for oper passwords plus /mkpasswd
959  * Added another check for 'NoServerUline' type thing in m_services.
960  * Added Check for 'NoServer' when +r ing a channel in m_services.
961  * Added m_timedbans (timed bans module for channel ops/halfops)
962  * Added m_sql, module to provide sql db access to other modules
963  * Added m_sqlauth - allows authorizing of connections via an arbitary mysql table with a username and password field
964  * Added m_sqllog - allows you to log your irc information to an sql database
965  * Added m_sqloper, allows storage of opers within a mysql database
966
967 1.0 Beta 3
968
969 Added rm -rf src/modules/*.so to make modclean
970 Added module message passing architecture
971 added Module::OnMeshToken
972 added Server::MeshSendAll
973 added Server::MeshSendCommon
974 added Server::MeshSendAllAlive
975 added Server::MeshSendUnicast
976 added Server::MeshSendAllExcept
977 added Server::MeshCheckChan
978 added Server::MeshCheckCommon
979 added Server::FindModule
980 added New docs for API
981 added Module::OnRawMode
982 added Module::OnCheckInvite
983 added Module::OnCheckKey
984 added Module::OnCheckLimit
985 added Module::OnCheckBan
986 added Module::OnStats
987 added Module::OnChangeLocalUserHost
988 added Module::OnChangeLocalUserGECOS
989 added Module::OnLocalTopicChange
990 Added Server::AddGLine
991 Added Server::AddKLine
992 Added Server::AddZLine
993 Added Server::AddQLine
994 Added Server::AddELine
995 Added Server::DelGLine
996 Added Server::DelKLine
997 Added Server::DelZLine
998 Added Server::DelQLine
999 Added Server::DelELine
1000 Added Server::Duration
1001 Fixed /LUSERS server count
1002 Updated documentation of <connect> tags at request of Strike
1003 Fixed somebody putting double closing tags, nullifying the effect of allowhalfop in the example conf
1004 Removed deprecated class 'packet'
1005 Fixed Dns free() errors
1006 Added ability for modules to hold users in a 'holding pattern' while they do stuff on connect
1007 Added OnUserDisconnect method to modules.* to fix fd leak in m_ident.cpp
1008 Added the m_chanfilter module, implements chanmode +g which allows channel specific badwords (YAY)
1009 Added Module::OnSendList
1010 Added m_conn_lusers.so: Sends /LUSERS on connect
1011 Added m_ident.so: nonblocking ident lookup module
1012 Fixed /kill bug in m_operlevels (couldnt kill non-opers)
1013 Changed m_override: Fine-grained control over what can be overridden by whom
1014 Added m_park, user parking to keep ops during a ping timeout (suggested by Ib3N)
1015 Fixed limit checking in core and m_redirect.so
1016 Added m_setidle, allows opers to set their idle times
1017 Added Module::OnBackgroundTimer method, ticks approximately every 5 seconds
1018 Yet more optimizations!
1019 Added 'server already exists' check for u-type links
1020 Fixed bug when ordering a bot to leave using anope services
1021 Fixed anope module sending L tokens with 2 instead of 3 params (made code more tolerant instead of changing module)
1022 Fixed broken server/server handshake for U-type server links (services)
1023 Fixed strhashcomp to forbid matching scandanvian nicks properly eg. [Brain] and {Brain}
1024 Fixed lingering (SO_REUSEADDR was being set to 0?)
1025 Added Module::OnCheckReady and Module::OnUserRegister
1026 Updated /INFO
1027 Fixed to allow server to server traffic again (DOH)
1028 Added PID reporting and testing before daemonize
1029 Changed "is now running" message to AFTER port bind checks
1030 Fixed strange join behavior reported by w00t (mirc requesting MODE immediately after JOIN)
1031 Fixed bug #47 reported (and suggested fix) by Om
1032 Fixed bug where if channel limit was lower than the user count users could still join, but not if it was equal
1033 Added Module::OnUserKick and Module::OnUserPreKick
1034 Added Server::PseudoToUser and Server::UserToPseudo
1035 Made setrlimit a commandline option
1036 Removed some old uneeded code
1037 Made cmode and chanmode more safe
1038 Fixed a double free in dnsqueue.cpp
1039 Fixed a resolver issue (weird segfault on gentoo?) in server linking
1040 Double 367 numeric glitch fixed
1041 Added Server::IsValidHostMask
1042 Added getrlimit/setrlimit to set process limits to allow a core dump
1043 Removed some logging from wildcard.cpp
1044
1045 1.0 Beta 2
1046
1047 * Added a lot of small fixes based on feedback of beta 1
1048 * Fixed compile issues on freebsd due to an icky shellscript expression that failed to detect strlcat
1049 * Added more advanced m_override.cpp module due to user request (thanks Rob)
1050
1051 1.0 Beta 1
1052
1053 * Enough optimizations to shake a very big stick at
1054 * Added asyncronous DNS
1055 * Changed /MODULES to allow simplified output for non-opers
1056 * Added module flags to /MODULES for opers
1057 * Added /UNLOADMODULE
1058 * Added /LOADMODULE
1059 * Added resource tracking for modules
1060 * Added extra log output for oper success and failure
1061 * Added hostname checking for opers (someone left it out *looks around nonchalantly*)
1062 * Added module API OnUserPostNick method
1063 * Added E:Lines and /ELINE (ban exceptions)
1064 * Security fixes to /MODE and /TOPIC
1065 * Fixed a cosmetic bug in /WHO
1066 * Fixed random crashes when user connecting
1067 * Fixed 'unlikely' crash if nick was changed before dns lookup completed
1068 * Fixed to actually check the password of linking servers (someone left this out too!)
1069 * Added error checking to make sure opertypes exist before opering a user!
1070 * Added 005 handling for modules
1071 * Added onKill event for modules
1072 * Added OnModuleLoad event for modules (notified of all module loading)
1073 * Added <disabled:commands> tag
1074 * Added ability to disable any command for non-opers
1075 * Added customizable ping frequency to <connect:allow>
1076 * Added optional module path to the configuration file
1077 * Added support for Rehashing to allow adding and removal of modules
1078 * Added module VersionFlags support
1079 * Fixed a resolver issue (weird segfault on gentoo?) in server linking
1080 * Changed the loglevel of some startup failure messages to DEFAULT (were DEBUG)
1081 * Optimized connects - motd is sent faster
1082 * InspIRCd now logs value of <die> to the logfile on failure
1083 * Added new <banlist> tags, allows dynamic banlist sizes on a per channel basis rather than hard coded or network wide
1084 * Fix for bug #39, m_redirect returning invalid/random value for OnUserPreJoin method of the module class
1085 * Added code to shutdown listening sockets on exit
1086 * Added pid file support, and documentation for it
1087 * Fixed string format vunerability, thanks again to the #ratbox people for helping find it
1088 * Fixed 005 numeric to only output 13 tokens per line (thanks anfl)
1089 * Replaced some 005 constants with their configured values
1090 * Fixed "error in free()" and other bugs going to open sockets
1091 * Config files read by the ircd are now chmod'ed 0600
1092 * Fixed parsing error with comments that have tabs before them
1093 * Added implementation of strlcpy and strlcat for systems that dont have it
1094 * Fixes to crash when setting the key of a channel youre not a member of
1095 * Fixed issue where failing modules would bail by calling exit (deprecated) -- modules should now just disable their functionality if they are missing data
1096 * Added GetVersion() to m_showwhois.cpp
1097 * m_chanprotect.so fixed to take away +q and +a when the user parts the channel (double DOH)
1098 * Added 005 numeric handling to most of the modules
1099 * Added m_hostchange module, our own homebrew implementation of the unreal pay module!
1100 * Added m_nicklock module, a module which allows opers to lock a user to a nickname until they quit
1101 * Added m_operlevels, prevents opers designated as above other opers from being killed
1102 * Fixed Crash bug cause by multiple declarations of 'Srv' in m_randquote.so (Bug #35)
1103 * Added m_remove by om, uses a force part to replace a kick to thwart auto rejoin
1104 * Added module to restrict channel creation to opers only (requested by [ed])
1105 * Added a module at request of [ed] which stops anyone messaging all but opers
1106 * Added m_silence.so - implementation of /SILENCE command
1107 * Added ./inspircd (start|stop|restart|rehash|status|cron|Cheese-Sandwich) (Happy luigiman?)
1108 * Made a slightly nicer method for .Makefile.inc
1109 * Updated ./configure to reflect the above changes.
1110 * Removed reference to depricated ./makeconf and updated command to exec to build the daemon.
1111 * Added dynamic src/modules/Makefile generation, during ./configure the script will search modules for /* $CompileFlags: */ and append any given flags to its g++ line.
1112 * Startup script modified to kill -9 if a kill -TERM fails.
1113 * Makefile will ignore if cp fails to copy the binaries.
1114 * Added <disabled:commands> to the example config (commented out by default!)
1115 * Documented /LOADMODULE and /UNLOADMODULE plus new /MODULES behaviour
1116 * New docs to match extra module Version class stuff, etc
1117 * Added new documentation for ELine class and OnUserPostNick method
1118 * Added DNS class to documentation
1119
1120 1.0 alpha 12
1121
1122 * Updated ./configure to detect GCC 3.4.x
1123 * Added m_showwhois.so - lets opers see when theyre WHOISed
1124 * Added m_opermotd.so - Gives opers an opermotd on oper-up
1125 * Added m_operjoin.so - Forces opers to join a given channel when they oper
1126 * Security audit resulting in more secure and stable code
1127 * Added lots of error checking to the configuration parser
1128 * InspIRCd now works with BOPM, please see the tutorial on our forums
1129 * UMODE issues with SVSMODE finally addressed, working fine again
1130 * Services issues addressed and fixed
1131 * Added generic error output to the ConfigReader class (ConfigReader::DumpErrors())
1132 * Fixed sys/socket.h error on earlier versions of GCC (2.95.x)
1133 * Redone documentation
1134 * Fixed mode changes (they actually work now!)
1135 * Module passes service names to its uplink now
1136 * ChanServ actually sets channel modes rather than the server!
1137 * NickServ actually sets umodes rather than the server!
1138 * Double-mode-changes no longer occur
1139 * User nickname registration tracking with +r works properly again
1140
1141 1.0 Alpha 11
1142
1143 * Added lots of bugfixes
1144 * Optimised, works faster, and smoother
1145 * Added support for non-mesh servers
1146 * Added services support
1147 * Implemented example ircservices module (working with ircservices 5)
1148 * Added m_services module
1149 * Added m_antibottler module
1150 * Added m_alias module
1151 * Added glines (local and global)
1152 * Added klines
1153 * Added qlines (local and global)
1154 * Added zlines (local and global)
1155
1156 1.0 Alpha 10
1157
1158 *  Added server linking support (tcp based mesh link)
1159 * Lots of stability fixes
1160 * Speed improvements
1161 * Optimisations, no longer eats cpu so much
1162 * GCC3 and GCC2 support
1163 * Even bigger module API
1164 * More documentation
1165 * m_antibottler, labels bottler bots
1166 * m_chghost, gives you a /chghost command
1167 * m_cloaking, gives you hostname cloaking and mode +x
1168 * m_filter, filters glob patterns on channels and private
1169 * m_globops, provides /GLOBOPS and mode +g support
1170 * m_helpop, gives /HELPOP and mode +h support
1171 * m_sajoin, force-join a user to a channel
1172 * m_sapart, force-part a user from a channel
1173 * m_samode, force a mode change on a user or channel
1174 * m_saquit, force a quit of a client without /kill
1175 * m_sethost, allows opers to change their hostmasks
1176 * m_setname, allows users to change their name
1177 * HELPOP documentation accessible with the helpop module loaded
1178 * Split the ircd into many smaller files for faster compiling
1179 * Improved configure and makefile phase
1180 * Added all oper commands (CONNECT, SQUIT etc)
1181 * Added remaining server->server commands such as /MAP
1182 * Connection pooling, uses less CPU for the same tasks as before
1183 * High-powered server to server link protocol unlike any other ircd
1184
1185 1.0 alpha 9.5
1186
1187 * Added support for /connect (no sync yet!)
1188 * Added extra module support and improved api
1189 * Improved developer docs, see http://www.inspircd.org/docs/
1190 * FINALLY fixed crash-on-disconnect bug
1191 * Fixed many stability bugs
1192 * Fixed length and buffer overrun issues that caused user records to become corrupted without crashes (!)
1193
1194 1.0 alpha 9
1195
1196 * Added /WHOWAS
1197 * Made ircd cache message of the day in a vector (faster!)
1198 * Added support for multiple lines of /NAMES on large channels
1199 * Added hostname/ip caching to speed up connects
1200 * Added '/stats z'
1201 * Added Server class
1202 * Added more code to example module demonstrating use of Server class
1203 * Added Admin class (holds /admin info for modules)
1204 * Added methods to Server class
1205 * Added m_cloaking.so module, provides host masking
1206 * Added /AWAY
1207 * added /ISON command (for mIRC etc basic notify)
1208 * Added /USERS stub
1209 * Added /SUMMON stub
1210 * attemted to fix weird crash on /kill
1211 * added pause= value to /die and /restart in config
1212 * Attempted to fix closed client sessions not being detected
1213 * Added wildcard support
1214 * Added channel bans
1215 * Changed user and channel structs to classes (finally)
1216 * Fixed parameter error in QUIT code (was showing junk chars on BSD)
1217 * fixed some ugly pointer bugs (thanks dblack and a|KK|y!)
1218 * Added /INVITE command and relevent structures
1219 * Added CONNECT ALLOW and CONNECT DENY config tags
1220 * Added PASS command
1221 * Fixed: /LUSERS cant count :P
1222 * added /TRACE command
1223 * Implemented channel mode +m
1224 * Added channel modes, +k, +l, +i, +m etc
1225 * Added user and channel modes +i, +p, +s
1226 * Implemented usermode +s
1227 * Fixed dodgy mode glitches (the ones Craig loves to play with, awww)
1228 * Added code to tidy up bans (e.g. max nick length) - i blame mIRC!
1229 * fixed multiple /MODE +l bugs (thanks to akky and BOFH bugging meh!)
1230 * Fixed ident max length to 10
1231 * fixed random crash on kill_link (AGAIN) - was /stats
1232 * improved speed 10x (because i can...)
1233 * optimisations galore!
1234 * Added FileReader file-caching class
1235 * Changed m_randquote to use FileReader class
1236 * Neater source tree (binaries in bin, source in src, headers in include, etc)
1237 * Added /WHOWAS
1238 * Tidied up makefiles
1239 * Much nicer configure program
1240 * makeconf program (very nice config maker by Craig)
1241
1242
1243 1.0 alpha 8
1244
1245 * Added Admin class (holds /admin info for modules)  
1246 * Added methods to Server class  
1247 * Added m_cloaking.so module, provides host masking  
1248 * Added Server class  
1249 * Added more code to example module demonstrating use of Server class  
1250 * ./configure improved by Craig (better prompts, dir creation)  
1251 * /stats z added detail  
1252 * Added '/stats z'  
1253 * Added hostname/ip caching to speed up connects  
1254 * Made ircd cache message of the day in a vector (faster!)  
1255 * Added support for multiple lines of /NAMES on large channels
1256
1257 1.0 alpha 7
1258
1259 * Added /USERHOST command 
1260 * Added '/STATS O' 
1261 * removed random debug output 
1262 * Fixed random crash on nickchange  
1263 * Fine tuned ability to handle >300 users 
1264 * added '/stats L' (connect-info) 
1265 * '/stats u' support added (server uptime) 
1266 * added '/stats M' command 
1267 * Added extra dynamic module support, new methods to Module class
1268
1269 1.0 alpha 6
1270
1271 * Changed command table to a vector of command_t types 
1272 * Dynamix module support, preliminary release 
1273 * Fixes random crash on nickchange 
1274 * Fixed wallops and command parameter counting bugs 
1275 * fixed "user lingering" problem in kill_link 
1276 * updated example config 
1277 * developed a simple sample module (m_foobar.so)
1278
1279 1.0 alpha 5
1280
1281 * Changed channel array to a hash_map similar to the one used for users, faster and more efficient
1282 * Changed ./configure, no longer asks for hard channel limit (depreciated)
1283 * Added support for users to be disconnected once MAXUSERS is reached
1284 * Changed code a lot, major overhauls for C++ and STL use for added stability and speed
1285 * Changed entire user system to use the hash_map container type instead of an array
1286 * Added /TIME command
1287 * Added /INFO command
1288 * Added restart and die passwords
1289 * Partially implemented /RESTART command
1290 * Fixed amusing bug which allowed partially connected clients to issue commands under the context of other users! *gulp!* (reported again by Craig)
1291 * Fixed SegFault caused when doing a /who 0 or /who * whilst not in channels (Reported by Craig, Fixed by Craig :p)
1292 * Added /who 0 o to display online Opers (Craigs First Scratch of Code :p)
1293 * Fixed Typo in LUSERS (Reported by MrBOFH and CC)
1294 * Fixed Joining Channels withough a # bug. (Reported by MrBOFH)
1295
1296
1297 1.0 alpha 4
1298
1299 * Fixed parameters bug discovered by Allan
1300 * Fixed /NICK repeating bug found by piggles.
1301 * Added /REHASH command
1302 * Added /LUSERS command
1303 * Added ability to kill -HUP to rehash
1304 * Fixed lock up after ping timeout
1305 * Added system to /VERSION
1306 * Added DNS lookups on connect (*FIXME* this needs to be asyncronous!)
1307 * Fixed IRCop status shown on wrong users
1308 * Fixed socket linger option via setsockopt (can restart faster as sockets arent in use after shutdown!)
1309 * Added operators can now see real userhost in WHOIS
1310 * Added oper-up failed msg to online opers
1311 * Changed layout of /motd command start numeric
1312 * Fixed empty channels are now purged upon user quit
1313 * Changed: support for WHO * as well as WHO 0 (do the same thing)
1314 * Fixed ability to kick users when you arent on the channel :)
1315 * Fixed grammatical error when halfop tries to kick an op, "You must be at least a half-operator"
1316
1317
1318 1.0 alpha 3
1319
1320 * Fixed problem where nicks containing control codes were allowed
1321 * Added support so that ircd honours channel mode +n
1322 * Added support so that ircd honours channel mode +t
1323 * Fixed linefeeds in middle of line bug (reported by Craig)
1324 * Fixed buffer overflow in channel names (reported by Allan)
1325 * Fixed close() on nonblocking sockets problem
1326 * Added /KILL command >:)
1327 * Added /KICK command
1328
1329 1.0 alpha 2
1330
1331 * addition of /oper and several Channel Modes.
1332 * new config file format
1333