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