294e412f6030ec56d439929d3f1c2f59d81feb89
[ircu2.10.12-pk.git] / ChangeLog
1 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
2
3         * ircd/s_conf.c: change "s_addr" element accesses to "address"
4         element accesses
5
6         * include/s_conf.h: on some systems, "s_addr" is a macro; use
7         "address" instead
8
9 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
10
11         * ircd/m_settime.c: include ircd_snprintf.h
12
13         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
14         parens around a construct that had both || and &&
15
16         * ircd/chkconf.c: #include "config.h" to get some important
17         definitions
18
19         * ircd/Makefile.in: revamp ircd makefile for new build system
20
21         * doc/Makefile.in: revamp doc makefile for new build system
22
23         * config/*: Removed old build system files
24
25         * stamp-h.in: a stamp file
26
27         * install-sh: install-sh for new build system
28
29         * configure.in: configure.in for new build system
30
31         * configure: configure script for new build system (built by
32         autoconf)
33
34         * config.sub: config.sub for new build system
35
36         * config.h.in: config.h.in for new build system (built by
37         autoheader)
38
39         * config.guess: config.guess for new build system
40
41         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
42         1.4)
43
44         * acinclude.m4: aclocal.m4 macros for new build system
45
46         * acconfig.h: config.h skeleton for new build system
47
48         * Makefile.in: modify for new build system
49
50 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
51
52         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
53
54         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
55
56         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
57
58 2001-05-01  Perry Lorier       <Isomer@coders.net>
59         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
60         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
61                 when you have far far too many sockets in use.
62         * {include,ircd}/iauth.c: A start on iauth support.
63
64 2001-05-01  Perry Lorier       <Isomer@coders.net>
65         * ircd/s_err.c: Suggested wording change.
66         * ircd/s_user.c: Users aren't target limited against +k users.
67         * ircd/chkconf.c: Made it compile again, who knows if it works, but
68                 now I can at least make install
69         * various: Cleanups on m_*.c files.
70
71
72 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
73
74         * ircd/s_misc.c (exit_client): make netsplit server notice say the
75         right thing
76
77         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
78         change to make Khaled happy...
79
80         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
81         (do_whois): duh...
82
83 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
84
85         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
86         turned up no more bugs
87
88         * ircd/ircd.c: use /* */ comments instead of // comments--all the
89         world's not gcc :(
90
91         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
92         // comments--all the world's not gcc :(
93
94         * ircd/runmalloc.c: finally garbage-collect unused file
95
96         * include/runmalloc.h: finally garbage-collect unused file
97
98         * ircd/<multiple files>: addition of '#include "config.h"' before
99         all other includes in most .c files
100
101         * include/<multiple files>: remove includes of config.h, which are
102         now going into the raw .c files
103
104 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
105
106         * ircd/m_whois.c (do_whois): display proper server name if the
107         user is looking up himself
108
109         * ircd/m_who.c (m_who): disable match by servername or display of
110         server names by non-opers
111
112         * include/ircd_policy.h: add define for
113         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
114         of CFV 165
115
116 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
117
118         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
119         when we do a /stats k
120
121         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
122         users from turning on +s and +g
123
124         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
125         net.split notice
126
127         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
128         /map for users
129
130         * ircd/m_whois.c (do_whois): pull-up of server name masking for
131         /whois
132
133         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
134         functions, pull-up
135
136         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
137
138         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
139
140         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
141
142         * ircd/channel.c (channel_modes): pull-up of channel key display
143         as *
144
145         * include/ircd_policy.h: pull-up of ircd_policy.h
146
147         * include/client.h: pull-up of Set/ClearServNotice()
148
149         * ircd/gline.c (do_gline): report client name in G-line message
150         (pull-up)
151
152         * ircd/s_user.c (register_user): pull-up--show IP address in some
153         server notices dealing only with users; report which connection
154         class has filled up
155
156         * ircd/s_stats.c (report_deny_list): use conf->flags &
157         DENY_FLAGS_IP insteaf of conf->ip_kill
158
159         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
160         insteaf of conf->ip_kill
161
162         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
163         K-line by real name
164
165         * include/s_conf.h: use a flags field in struct DenyConf; define
166         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
167         pull-up of K-line by real name
168
169         * ircd/m_trace.c: pull-up of IP show for user connections
170
171         * doc/example.conf: pull-up of the realname K-line documentation
172
173         * ircd/ircd.c: forward port of pid file advisory locking mechanism
174
175 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
176
177         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
178         all servers, rather than to only servers that have +w/+g/whatever
179         users on them; among other things, this removes that atrocity
180         known as sentalong[] from this function
181
182         * ircd/m_admin.c: must include ircd.h to declare "me"; must
183         include hash.h to declare FindUser()
184
185         * ircd/m_wallusers.c: implementation of WALLUSERS
186
187         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
188
189         * ircd/m_wallops.c: only send WALLOPS to opers
190
191         * ircd/parse.c: add WALLUSERS command to parser table
192
193         * include/handlers.h: declare wallusers handlers
194
195         * include/msg.h: add WALLUSERS command
196
197         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
198         flag, send only to appropriate opers
199
200 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
201         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
202         
203 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
204
205         * config/configure.in: Add check for OpenBSD
206
207         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
208         differs from generic BSD, particularly in its handling of
209         _XOPEN_SOURCE.
210         
211 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
212
213         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
214         have been added by a U-lined server, rather than going through the
215         activate/deactivate logic; propagate G-line removals by U-lined
216         servers as well
217
218         * ircd/gline.c: rename propagate_gline() to gline_propagate();
219         make gline_propagate() return an int 0 (convenience return); only
220         update lastmod in gline_activate() and gline_deactivate() if the
221         current lastmod is non-zero, since 0 lastmod is our flag of a
222         U-lined server having added a G-line
223
224         * include/gline.h (gline_propagate): exporting the G-line
225         propagation function
226
227         * ircd/m_list.c (m_list): duh; permit explicit channel name
228         specification only when /list gets two arguments ("Kev
229         #wasteland") rather than when /list gets more than two
230         arguments--nice braino
231
232 2001-01-29  Thomas Helvey <twhelvey1@home.com>
233
234         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
235         unregistered clients to spam opers with protocol violation
236         messages. Note: the bugfix may have eliminated some useful
237         protocol violation messages.
238         Please send protocol violation messages explicitly from the
239         functions they are discovered in, you have much better context
240         for the error there and it helps to document the behavior of the
241         server. This was also a design bug in that it violated the
242         "A function should do one thing" heuristic. Patching this one
243         would have resulted in a continuous spawning of other bugs over
244         the next 3 years, so I killed it. Check around for stuff this
245         broke and readd the calls to protocol_violation in the functions
246         that need to send the message.
247
248 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
249
250         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
251         already existed, then the logic would (attempt to) skip it, but
252         would not free the ban string; now the ban string is free'd and
253         the ban count is decremented, releasing the ban for use
254
255         * ircd/s_user.c: make send_umode_out() take a prop argument
256         instead of testing for the PRIV_PROPAGATE privilege itself; fix
257         set_umode() to use this new argument, calculating it before
258         calculating the new privileges for a -o'd user
259
260         * ircd/m_oper.c (m_oper): pass the new prop argument to
261         send_umode_out()
262
263         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
264         that we're not actually going to add because they already exist;
265         test that particular bit before adding to the linked list
266
267         * include/s_user.h: add a prop argument to send_umode_out() to
268         indicate whether or not to propagate the user mode
269
270 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
271
272         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
273         it would have written; upper-bound the number to prevent overflows
274         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
275         into account the fact that ircd_vsnprintf() already takes the
276         terminal \0 into account
277
278 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
279
280         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
281         down an apparent buffer overflow; remove msgq_map(), since it's no
282         longer used anywhere; slight tweaks to prevent off-by-one errors,
283         but these can't explain the problems we've seen
284
285         * include/msgq.h: remove msgq_map(), since it's no longer used
286         anywhere
287
288 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
289
290         * ircd/s_user.c (set_nick_name): call client_set_privs() after
291         parsing user modes
292
293 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
294
295         * ircd/s_bsd.c (read_message): fix a typo in the select version of
296         read_message()
297
298         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
299         its argument to be an lvalue, which means we can't use
300         whowas_clean()'s handy-dandy "return ww" feature
301
302         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
303
304 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
305
306         * ircd/client.c: fixed feattab; basically, when I changed features
307         to use small integers specifying bit positions, instead of the
308         bits themselves, I forgot to update feattab to not | these
309         privileges together; also fixed a bug in the antiprivs masking
310         loop in client_set_privs()--last index wouldn't get parsed
311
312 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
313
314         * ircd/whowas.c: Completely re-did the old allocation scheme by
315         turning it into a linked list, permitting the
316         NICKNAMEHISTORYLENGTH feature to be changed on the fly
317
318         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
319         feature instead of old #define
320
321         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
322         integer feature with a notify callback (whowas_realloc)
323
324         * ircd/client.c (client_set_privs): second memset was supposed to
325         be over antiprivs, not privs; thanks, Chris Behrens
326         <cbehrens@xo.com> for pointing that out...
327
328         * include/whowas.h: new elements for an extra linked list in
329         struct Whowas; a notify function for feature value changes
330
331         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
332
333         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
334
335 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
336
337         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
338         compile-time option--now in features subsystem
339
340         * ircd/motd.c (motd_init): rework motd_init() to be called as the
341         notify function for MPATH and RPATH features (should probably
342         split it up a bit, though...)
343
344         * ircd/m_privs.c (mo_privs): if called with no parameters, return
345         privs of the caller, rather than an error
346
347         * ircd/m_list.c: pull usage message into its own function; pull
348         list parameter processing into its own function that does not
349         modify the contents of the parameter; add list_set_default() to
350         set the default list parameter (uses the notify hook); rework
351         m_list() to make use of these functions; removed dead code
352
353         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
354         we have no notify handler
355
356         * ircd/ircd_features.c: add notify callback for notification of
357         value changes; give mark callback an int return value to indicate
358         whether or not to call the notify callback; fix up feature macros
359         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
360         string handling in feature_set() to deal with def_str being a null
361         pointer; wrote feature_init() to set up all defaults appropriately
362
363         * ircd/ircd.c (main): call feature_init() instead of
364         feature_mark(), to avoid calling notify functions while setting up
365         defaults
366
367         * ircd/client.c: updated to deal with new privileges structure
368
369         * ircd/class.c: updated so init_class() can be called should one
370         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
371         DEFAULTMAXSENDQLENGTH be changed
372
373         * include/ircd_log.h: log_feature_mark() updated to fit with new
374         API changes
375
376         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
377         feature_init() function (found necessary since adding the notify
378         stuff and notifying motd.c during start-up...before we defined
379         RPATH!)
380
381         * include/client.h: move privs around to enable addition of more
382         bits if necessary; based on the FD_* macros
383
384         * include/channel.h: declare list_set_default (actually located in
385         m_list.c *blanche*)
386
387         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
388         AVBANLEN*MAXSILES) from features subsystem
389
390         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
391         anything anymore
392
393         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
394         the features subsystem
395
396         * ircd/s_auth.c (start_auth): NODNS migrated to the features
397         subsystem
398
399         * ircd/random.c: created random_seed_set() function to set seed
400         value, along with some stuff to make ircrandom() a little more
401         random--state preserving, xor of time instead of direct usage,
402         etc.; it's still a pseudo-random number generator, though, and
403         hopefully I haven't broken the randomness
404
405         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
406
407         * ircd/m_join.c: use features interface to retrieve
408         MAXCHANNELSPERUSER
409
410         * ircd/ircd_features.c: add NODISP flag for super-secret features;
411         add a whole bunch of new features migrated over from make config
412
413         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
414         CONNECTTIMEOUT, and TIMESEC
415
416         * ircd/client.c (client_get_ping): use features interface to
417         retrieve PINGFREQUENCY
418
419         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
420         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
421
422         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
423         features subsystem, we have to add something explicit
424
425         * ircd/channel.c: use features interface to retrieve
426         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
427         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
428         and AVBANLEN
429
430         * ircd/Makefile.in: run make depend
431
432         * include/supported.h (FEATURESVALUES): update to reference
433         feature settings
434
435         * include/random.h: add prototype for random_seed_set
436
437         * include/ircd_features.h: add several more features
438
439         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
440         subsystem
441
442         * config/config-sh.in: feature-ized some more stuff
443
444         * include/motd.h: some new elements in motd.h for motd.c changes
445
446         * ircd/motd.c: motd_cache() now searches a list of already cached
447         MOTD files; saves us from having duplicate caches in memory if
448         there are two identical T-lines for two different sites...
449
450 2001-01-02  Perry Lorier <isomer@coders.net>
451         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
452         Amarande.
453
454 2001-01-02  Perry Lorier <isomer@coders.net>
455         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
456         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
457                 to guppy for noticing, and hektik for providing the fix.
458         * misc others: Minor cleanups, added more protocol_violations, ripped
459                 out more P09 stuffs, bit more protocol neg stuff.
460
461 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
462
463         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
464         space (*sigh* stupid clients...)
465
466         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
467         ircd_features.[ch]
468
469         * ircd/s_err.c: get rid of GODMODE conditionals
470
471         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
472         calls into the features subsystem for various serveropts
473         characters
474
475         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
476
477         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
478         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
479         NOFLOWCONTROL conditional
480
481         * ircd/s_auth.c: use features subsystem to determine value of
482         KILL_IPMISMATCH
483
484         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
485         features subsystem to determine the setting of IDLE_FROM_MSG
486
487         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
488
489         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
490         use features subsystem to get motd file names
491
492         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
493         subsystem
494
495         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
496         us no good; use features subsystem to figure out if we need to do
497         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
498         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
499         features subsystem
500
501         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
502
503         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
504         subsystem
505
506         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
507
508         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
509         from getting marked if they were already set to something...
510
511         * ircd/ircd_features.c: add a flag to indicates read-only access;
512         add several new features that used to be compile-time selected
513
514         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
515         access to motd files (what the heck?); make sure to initialize the
516         feature subsystem before trying to write the config file
517
518         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
519         use feature_bool() to figure out if we're using the FERGUSON
520         flusher
521
522         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
523         remove the clause that creates empty files of that name; also ran
524         make depend
525
526         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
527         there is no easy way to bounds-check it at present
528
529         * include/querycmds.h: make sure ircd_features.h is included; use
530         feature_str(FEAT_DOMAINNAME) in calls to match()
531
532         * include/ircd_features.h: many new features that used to be
533         compile-time selected
534
535         * config/config-sh.in: add * to DOMAINNAME; try also using first
536         argument to search in /etc/resolv.conf; removed many compile-time
537         options that now can be configured through the features system
538
539 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
540
541         * doc/api/log.txt: how to use the logging API
542
543         * doc/api/features.txt: how to use the features API
544
545         * doc/api/api.txt: how to write API documentation
546
547         * include/ircd_features.h: rearranged a couple of features for
548         neatness purposes
549
550         * ircd/ircd_features.c: cleaned up the macros some; rearranged
551         some code to all go into the switch; rearranged a couple of
552         features for neatness purposes
553
554 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
555         * ircd/os_bsd.c: Added os_set_tos for BSD users.
556
557 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
558
559         * ircd/ircd_features.c: Isomer almost got it right; you need to
560         use F_I(), since it's an integer value, not a boolean value.  The
561         asserts in feature_int would catch you out...  Also made the F_*
562         macros take flags
563
564         * ircd/s_err.c: define RPL_PRIVS reply
565
566         * ircd/parse.c: put new PRIVS command into command table
567
568         * ircd/m_privs.c (mo_privs): message handler to report operator
569         privileges
570
571         * ircd/ircd_features.c: declare new features OPER_SET and
572         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
573         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
574
575         * ircd/client.c: simplify client_set_privs() with a table that
576         defines what features to test for; add new client_report_privs()
577
578         * ircd/Makefile.in: compile new m_privs.c; run make depend
579
580         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
581         an operator's privileges
582
583         * include/msg.h: define new command: PRIVS
584
585         * include/ircd_features.h: create new features OPER_SET and
586         LOCOP_SET for controlling access to /set
587
588         * include/handlers.h (mo_privs): declare message handler for
589         reporting oper privileges
590
591         * include/client.h (client_report_privs): declare function to
592         report what privileges an oper has
593
594         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
595         report that a user is an oper if the oper doing the /whois had
596         PRIV_SEE_OPERS
597
598 2000-12-17  Isomer <Isomer@coders.net>
599         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
600
601 2000-12-17  Isomer <Isomer@coders.net>
602         * ircd/os_linux.c: add TOS stuffs
603
604         * ircd/listener.c: add TOS stuffs
605
606 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
607
608         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
609         to indicate a user is an oper
610
611         * ircd/s_user.c: clear privileges setting when deopping; don't
612         propagate +o unless user has PRIV_PROPAGATE privilege
613
614         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
615         function and replaced how the server option string is generated
616
617         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
618
619         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
620         not to indicate the user is an operator
621
622         * ircd/m_who.c: use HasPriv to determine whether or not a user
623         should be displayed in the list of opers
624
625         * ircd/m_version.c: call debug_serveropts() to get server option
626         string
627
628         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
629         whether or not to show oper status
630
631         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
632         whether or not to show oper status
633
634         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
635         checks with HasPriv check; remove dead code
636
637         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
638         checks with HasPriv check
639
640         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
641         use feature_bool to check if disabled
642
643         * ircd/m_oper.c (m_oper): set oper priviliges
644
645         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
646         check
647
648         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
649         can kill
650
651         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
652         check
653
654         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
655         use feature_bool to check if disabled
656
657         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
658         #ifdef conditional with a HasPriv check
659
660         * ircd/m_gline.c (mo_gline): rework permissions checking
661         structure; use feature_bool to check if any part is disabled
662
663         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
664         check; remove dead code
665
666         * ircd/m_clearmode.c: use feature_bool() to detect if we're
667         disabled; use HasPriv to figure out what we're permitted to do;
668         only allow clearmode on moded channels
669
670         * ircd/ircd_features.c: define various features; use HasPriv to
671         verify permissions to set/reset
672
673         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
674         conditionals
675
676         * ircd/client.c (client_set_privs): function to set an oper's
677         privileges
678
679         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
680
681         * include/whocmds.h: deconditionalize several macros and
682         substitute appropriate calls to HasPriv()
683
684         * include/s_debug.h: get rid of global serveropts[]; define new
685         function debug_serveropts() to build that string on the fly
686
687         * include/ircd_features.h: define some features
688
689         * include/client.h: add privs member to struct Connection; define
690         various priviledges
691
692         * include/channel.h: no longer using IsOperOnLocalChannel; remove
693         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
694
695         * doc/Configure.help: remove help information for deprecated
696         options
697
698         * config/config-sh.in: remove certain deprecated options having to
699         do with what opers can and cannot do--first stage in moving
700         compile-time constants into the .conf
701
702 2000-12-16  Isomer <Isomer@coders.net>
703         * ircd/parse.c: detect if the prefix is missing and try and recover
704         instead of coring.
705
706 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
707
708         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
709         code that would sometimes result in the log file not being
710         reopened--which meant that a user could connect and get the
711         logging output--oops
712
713         * ircd/Makefile.in: run make depend...
714
715         * ircd/s_stats.c: get rid of report_feature_list()
716
717         * ircd/s_err.c: add the 'bad value' error message, shift error
718         messages over somewhat
719
720         * ircd/s_debug.c (debug_init): call log_debug_init with the
721         use_tty flag
722
723         * ircd/s_conf.c (read_configuration_file): unmark features before
724         reading the config file, then reset unmarked features after
725         reading the config file
726
727         * ircd/m_stats.c: use feature_report() instead of
728         report_feature_list()
729
730         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
731         special 'mark' flags and use them; add the stuff needed by the
732         features API
733
734         * ircd/ircd_features.c: rework the features API and add gobs of
735         comments to try to explain what some of these complex functions
736         are actually doing
737
738         * include/s_stats.h: get rid of report_feature_list(); use
739         feature_report() instead
740
741         * include/numeric.h: added a new error message and shifted old
742         values over some--this is, after all, an alpha
743
744         * include/ircd_log.h: log_debug_init now takes an integer to tell
745         it if it should be using the tty; added a couple of functions
746         required by the features API
747
748         * include/ircd_features.h: add an enum and some more functions to
749         flesh out the feature API--it should now be possible to put all
750         those compile-time constants in the config file!
751
752         * ircd/send.c: got the direction of the assert incorrect...
753
754         * ircd/send.c: implement the efficiency of flush_connections by
755         creating a linked list of struct Connection's with queued data;
756         also get rid of flush_sendq_except and make sure to yank
757         connections out of the list when their sendQs become empty (notice
758         the assertion in flush_connections!)
759
760         * ircd/s_bsd.c (close_connection): must yank the Connection out of
761         the sendq list
762
763         * ircd/list.c (dealloc_connection): must yank the Connection out
764         of the sendq list
765
766         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
767         deprecated flush_sendq_except
768
769         * ircd/client.c: define a couple new helper functions for sendq
770         threading--this will make the flush_connections function in send.c
771         considerably more efficient by creating a linked list of
772         Connections that have queued data to send
773
774         * include/send.h: remove flush_sendq_except, as it's not used
775         anymore
776
777         * include/client.h: declare a couple new helper functions for the
778         sendq threading system
779
780 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
781
782         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
783         parse all arguments
784
785         * ircd/s_debug.c (count_memory): modify to report for clients and
786         connections, not local clients and remote clients
787
788         * ircd/list.c: fiddle with the client-fiddling functions to take
789         into account the divorce of struct Connection from struct Client
790
791         * ircd/ircd.c: define a struct Connection for me, initialize it,
792         and link it into the right place (ewww, globals!)
793
794         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
795         struct Client into struct Client and struct Connection; redefine
796         local-portion accessor macros to go through struct Client to the
797         struct Connection; define struct Connection accessor macros
798
799 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
800
801         * ircd/whowas.c: missed a couple of accesses to a struct Client
802
803         * ircd/uping.c: missed a couple of accesses to a struct Client
804
805         * ircd/send.c: missed a couple of accesses to a struct Client
806
807         * ircd/s_user.c: missed a couple of accesses to a struct Client
808
809         * ircd/s_misc.c: missed a couple of accesses to a struct Client
810
811         * ircd/s_conf.c: missed a couple of accesses to a struct Client
812
813         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
814
815         * ircd/s_auth.c: missed a couple of accesses to a struct Client
816
817         * ircd/res.c: missed a couple of accesses to a struct Client
818
819         * ircd/parse.c: missed a couple of accesses to a struct Client
820
821         * ircd/m_whois.c: use new accessor macros for struct Client
822
823         * ircd/m_who.c: use new accessor macros for struct Client
824
825         * ircd/m_wallchops.c: use new accessor macros for struct Client
826
827         * ircd/m_version.c: use new accessor macros for struct Client
828
829         * ircd/m_userip.c: use new accessor macros for struct Client
830
831         * ircd/m_userhost.c: use new accessor macros for struct Client
832
833         * ircd/m_user.c: use new accessor macros for struct Client
834
835         * ircd/m_uping.c: use new accessor macros for struct Client
836
837         * ircd/m_trace.c: use new accessor macros for struct Client
838
839         * ircd/m_topic.c: use new accessor macros for struct Client
840
841         * ircd/m_time.c: use new accessor macros for struct Client
842
843         * ircd/m_stats.c: use new accessor macros for struct Client
844
845         * ircd/m_squit.c: use new accessor macros for struct Client
846
847         * ircd/m_silence.c: use new accessor macros for struct Client
848
849         * ircd/m_server.c: use new accessor macros for struct Client;
850         remove dead code
851
852         * ircd/m_rpong.c: use new accessor macros for struct Client
853
854         * ircd/m_rping.c: use new accessor macros for struct Client
855
856         * ircd/m_quit.c: use new accessor macros for struct Client
857
858         * ircd/m_privmsg.c: use new accessor macros for struct Client
859
860         * ircd/m_pong.c: use new accessor macros for struct Client; remove
861         dead code
862
863         * ircd/m_ping.c: use new accessor macros for struct Client
864
865         * ircd/m_pass.c: use new accessor macros for struct Client
866
867         * ircd/m_part.c: use new accessor macros for struct Client
868
869         * ircd/m_oper.c: use new accessor macros for struct Client
870
871         * ircd/m_notice.c: use new accessor macros for struct Client
872
873         * ircd/m_nick.c: use new accessor macros for struct Client
874
875         * ircd/m_names.c: use new accessor macros for struct Client
876
877         * ircd/m_mode.c: use new accessor macros for struct Client
878
879         * ircd/m_map.c: use new accessor macros for struct Client
880
881         * ircd/m_list.c: use new accessor macros for struct Client
882
883         * ircd/m_links.c: use new accessor macros for struct Client;
884         remove some dead code
885
886         * ircd/m_kill.c: use new accessor macros for struct Client; remove
887         some dead code
888
889         * ircd/m_kick.c: use new accessor macros for struct Client
890
891         * ircd/m_join.c: use new accessor macros for struct Client; remove
892         some dead code
893
894         * ircd/m_ison.c: use new accessor macros for struct Client
895
896         * ircd/m_invite.c: use new accessor macros for struct Client
897
898         * ircd/m_info.c: use new accessor macros for struct Client
899
900         * ircd/m_gline.c: use new accessor macros for struct Client
901
902         * ircd/m_error.c: use new accessor macros for struct Client
903
904         * ircd/m_create.c: use new accessor macros for struct Client
905
906         * ircd/m_connect.c: use new accessor macros for struct Client;
907         removed some dead code
908
909         * ircd/m_burst.c: use new accessor macros for struct Client
910
911         * ircd/m_away.c: use new accessor macros for struct Client
912
913         * ircd/m_admin.c: use new accessor macros for struct Client
914
915         * ircd/hash.c: missed a couple of accesses to a struct Client
916
917         * ircd/gline.c: missed a couple of accesses to a struct Client
918
919         * ircd/crule.c: missed a couple of accesses to a struct Client
920
921         * ircd/class.c: missed an access to a struct Client
922
923         * ircd/channel.c: missed a couple of accesses to a struct Client
924
925         * ircd/IPcheck.c: missed an access to a struct Client
926
927         * include/querycmds.h: fix a couple of stats macros to use
928         structure accessor macros
929
930         * include/client.h: change structure member names to highlight any
931         places in the code I've missed
932
933 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
934
935         * ircd/whowas.c: use new struct Client accessor macros
936
937         * ircd/whocmds.c: use new struct Client accessor macros
938
939         * ircd/send.c: use new struct Client accessor macros
940
941         * ircd/s_user.c: use new struct Client accessor macros; removed
942         some dead code
943
944         * ircd/s_serv.c: use new struct Client accessor macros; removed
945         some dead code
946
947         * ircd/s_numeric.c: use new struct Client accessor macros
948
949         * ircd/s_misc.c: use new struct Client accessor macros
950
951         * ircd/s_debug.c: use new struct Client accessor macros
952
953         * ircd/s_conf.c: use new struct Client accessor macros
954
955         * ircd/s_bsd.c: use new struct Client accessor macros
956
957         * ircd/s_auth.c: use new struct Client accessor macros
958
959         * ircd/parse.c: use new struct Client accessor macros
960
961         * ircd/packet.c: use new struct Client accessor macros
962
963         * ircd/numnicks.c: use new struct Client accessor macros
964
965         * ircd/motd.c: use new struct Client accessor macros
966
967         * ircd/listener.c: use new struct Client accessor macros
968
969         * ircd/list.c: use new struct Client accessor macros
970
971         * ircd/jupe.c: use new struct Client accessor macros
972
973         * ircd/ircd_snprintf.c: use new struct Client accessor macros
974
975         * ircd/ircd_reply.c: use new struct Client accessor macros
976
977         * ircd/ircd_relay.c: use new struct Client accessor macros
978
979         * ircd/ircd.c: use new struct Client accessor macros
980
981         * ircd/gline.c: catch some instances of me.<stuff> I missed
982         previously
983
984         * ircd/client.c: use cli_ instead of con_
985
986         * ircd/class.c: use cli_ instead of con_
987
988         * ircd/channel.c: use cli_ instead of con_
989
990         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
991         of me.<stuff> I missed previously
992
993         * include/client.h: use cli_ instead of con_...seemed like a good
994         idea at the time *shrug*
995
996 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
997
998         * ircd/hash.c: use struct Client accessor macros
999
1000         * ircd/gline.c: use struct Client accessor macros
1001
1002         * ircd/crule.c: use struct Client accessor macros
1003
1004         * ircd/client.c: use struct Client accessor macros; remove some
1005         dead code
1006
1007         * ircd/class.c: use struct Client accessor macros
1008
1009         * ircd/channel.c: use struct Client accessor macros; remove some
1010         dead code
1011
1012         * ircd/IPcheck.c: use struct Client accessor macros
1013
1014         * include/numnicks.h: use struct Client accessor macros
1015
1016         * include/client.h: first step to divorcing struct Client and
1017         struct Connection--define accessor macros and use them
1018
1019         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
1020         uplink would remove them.  This is because the removal protocol
1021         message wasn't being sent to the uplinks.  This is fixed by fixing
1022         propagate_gline() to send the proper number of arguments depending
1023         on whether or not we're adding or deleting the Uworld gline, and
1024         by having gline_deactivate() make sure to turn off the active bit
1025         and call propagate_gline() if it's a Uworld gline
1026
1027 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
1028
1029         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
1030
1031         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
1032         anywhere intelligent...
1033
1034 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
1035
1036         * ircd/send.c (send_queued): call deliver_it with appropriate
1037         arguments
1038
1039         * ircd/s_serv.c: reorder a couple of headers--cosmetic
1040
1041         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
1042         MsgQ
1043
1044         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
1045         with appropriate iovec
1046
1047         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
1048         with appropriate iovec
1049
1050         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
1051         with appropriate iovec
1052
1053         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
1054         appropriate iovec
1055
1056         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
1057         exactly how much we're trying to write out to the fd
1058
1059         * include/s_bsd.h: make deliver_it take a struct MsgQ
1060
1061         * include/msgq.h: add a len_p argument to msgq_mapiov to help
1062         detect short writes that indicate possible socket blocking
1063
1064         * include/ircd_osdep.h: declare os_sendv_nonb()
1065
1066         * ircd/channel.c (modebuf_mode): don't add empty modes...
1067
1068 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
1069
1070         * include/send.h: add prio argument to send_buffer to select
1071         between normal and priority queues
1072
1073         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
1074         call
1075
1076         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
1077
1078         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
1079         call
1080
1081         * ircd/channel.c (send_channel_modes): add prio argument to
1082         send_buffer call
1083
1084         * ircd/send.c (send_buffer): add a prio argument to select the
1085         priority queue; update send.c functions to use it
1086
1087         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
1088         msgq_add; add a prio argument to msgq_add to select the priority
1089         queue
1090
1091         * include/msgq.h: remove msgq_prio; add a prio argument to
1092         msgq_add
1093
1094         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
1095         using msgq functions instead of dbuf functions; remove old, dead
1096         sendto_* functions; redo send_buffer to take a struct MsgBuf;
1097         rework sendcmdto_* functions to make use of the new struct MsgBuf
1098
1099         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
1100         make appropriate use of struct MsgBuf
1101
1102         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
1103         system and report it
1104
1105         * ircd/s_conf.c (read_configuration_file): use
1106         sendto_opmask_butone instead of the now dead sendto_op_mask
1107
1108         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
1109         calls on sendQ
1110
1111         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
1112
1113         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
1114         msgq_clean
1115
1116         * ircd/m_version.c: fix spelling in comments marking dead code
1117
1118         * ircd/m_userip.c (userip_formatter): restructure to make use of
1119         struct MsgBuf
1120
1121         * ircd/m_userhost.c (userhost_formatter): restructure to make use
1122         of struct MsgBuf
1123
1124         * ircd/m_stats.c: use MsgQLength on a sendQ
1125
1126         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
1127         sendQ; mark a piece of dead code
1128
1129         * ircd/m_names.c: use send_reply instead of sendto_one
1130
1131         * ircd/m_mode.c: use new mode; remove old dead code
1132
1133         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
1134
1135         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
1136         dead code
1137
1138         * ircd/listener.c (accept_connection): use sendto_opmask_butone
1139         instead of sendto_op_mask
1140
1141         * ircd/list.c (free_client): use MsgQClear to clear sendQ
1142
1143         * ircd/ircd_reply.c: remove send_error_to_client; restructure
1144         send_reply to make use of struct MsgBuf
1145
1146         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
1147         since its no longer used (at least currently)
1148
1149         * ircd/channel.c: restructure send_channel_modes to make use of
1150         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
1151         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
1152
1153         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
1154
1155         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
1156
1157         * include/send.h: send_buffer now takes a struct MsgBuf * instead
1158         of a char *; flush_sendq_except now takes no arguments, as sendq
1159         flushing currently only happens in dbuf.h and sendQ is a struct
1160         MsgQ; remove prototypes for a lot of old sendto_* functions that
1161         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
1162         no longer needed, and the latter is identical to BUFSIZE in
1163         ircd_defs.h
1164
1165         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
1166         instead of a char *; also make it return void, instead of char *
1167
1168         * include/msgq.h: add msgq_append and msgq_bufleft functions
1169
1170         * include/client.h: use a struct MsgQ instead of a struct DBuf for
1171         sendq
1172
1173         * doc/Configure.help: Remove help for compile-time options that
1174         have gone away
1175
1176         * config/config-sh.in: remove CONFIG_NEWMODE
1177
1178         * ircd/m_server.c (mr_server): don't send server IPs in any server
1179         notices
1180
1181         * ircd/msgq.c (msgq_vmake): add \r\n to messages
1182
1183 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
1184
1185         * include/msgq.h: declare the MsgQ API
1186
1187         * ircd/msgq.c: implementation of new MsgQ system
1188
1189 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
1190
1191         * ircd/ircd_features.c: #include was supposed to be for
1192           ircd_features.h, not features.h--missed when I had to do a
1193           rename because of namespace collision
1194
1195 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1196         * ircd/m_topic.c: Added missing braces that caused all remote
1197           topics to be ignored.
1198
1199 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
1200
1201         * ircd/m_create.c: I'm tired of the exit_client warning :)
1202         (ms_create): discovered that exit_client() was being called with
1203         too few arguments
1204
1205         * ircd/s_misc.c (exit_client): remove all dependance on
1206         FNAME_USERLOG, since that's now gone; log only to LS_USER
1207
1208         * ircd/s_debug.c: USE_SYSLOG no longer means anything
1209
1210         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
1211         log to LS_OPER
1212
1213         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
1214
1215         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
1216
1217         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
1218         the same purpose as LS_USER and LS_OPER
1219
1220         * config/config-sh.in: remove no longer relevant log config
1221         variables
1222
1223         * ircd/uping.c (uping_init): use log_write instead of ircd_log
1224
1225         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
1226
1227         * ircd/s_conf.c: use log_write instead of ircd_log
1228
1229         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
1230
1231         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
1232         ircd_log
1233
1234         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
1235
1236         * ircd/m_who.c: use log_write instead of write_log; no longer
1237         conditionalize on WPATH; mark dead ircd_log calls
1238
1239         * ircd/m_uping.c: mark dead ircd_log call
1240
1241         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
1242
1243         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
1244         ircd_log calls
1245
1246         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
1247
1248         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
1249         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
1250
1251         * ircd/m_kill.c: mark dead ircd_log calls
1252
1253         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
1254         ircd_log
1255
1256         * ircd/m_clearmode.c: use log_write instead of write_log; no
1257         longer conditionalize on OPATH
1258
1259         * ircd/jupe.c: use log_write instead of write_log; no longer
1260         conditionalize on JPATH
1261
1262         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
1263         function; fix a couple of bugs
1264
1265         * ircd/ircd_alloc.c: fixed a comment
1266
1267         * ircd/ircd.c: use log_write instead of ircd_log; fold server
1268         notice generation in a couple of cases
1269
1270         * ircd/gline.c: use log_write instead of write_log; no longer
1271         conditionalize on GPATH
1272
1273         * ircd/channel.c (modebuf_flush_int): use log_write instead of
1274         write_log; no longer conditionalize on OPATH
1275
1276         * ircd/Makefile.in: run make depend, since dependencies have
1277         changed
1278
1279         * doc/example.conf: add system USER to documentation
1280
1281         * include/ircd_log.h: add system USER; remove old ircd_log()
1282         declarations
1283
1284 2000-12-04  Isomer <isomer@coders.net>
1285         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
1286         'end_of_names' reply when done.
1287         * ircd/m_join.c: use NAMES_EON as mentioned above
1288
1289 2000-12-01  net  <simms@LUCIDA.QC.CA>
1290
1291         * ircd/motd.c: add a freelist for struct Motds
1292
1293 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
1294
1295         * ircd/s_stats.c (report_feature_list): report features--only
1296         local opers can see logging configuration, since it doesn't really
1297         mean anything to users
1298
1299         * ircd/s_err.c: add reply messages for new feature subsystem
1300
1301         * ircd/s_conf.c: add F lines to .conf
1302
1303         * ircd/parse.c: add the message descriptions for /set, /reset, and
1304         /get
1305
1306         * ircd/m_stats.c: add /stats f
1307
1308         * ircd/m_set.c (mo_set): implement /set
1309
1310         * ircd/m_reset.c (mo_reset): implement /reset
1311
1312         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
1313         reopens log files (for log file rotation)
1314
1315         * ircd/m_get.c (mo_get): implement /get
1316
1317         * ircd/ircd_log.c: use int instead of void return value; add
1318         log_report_features() and log_canon(); fix a function that
1319         disappears if DEBUGMODE not #define'd
1320
1321         * ircd/ircd_features.c: functions to manipulate feature settings
1322         either from the config file or with the new /set, /reset, and /get
1323         commands
1324
1325         * ircd/Makefile.in: add new .c files, run make depend
1326
1327         * include/s_stats.h: declare report_feature_list() (/stats f
1328         handler)
1329
1330         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
1331         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
1332         reply numerics
1333
1334         * include/msg.h: add defines for SET, RESET, and GET
1335
1336         * include/ircd_log.h: add a function to canonicalize subsystem
1337         names; change some void return values to int
1338
1339         * include/ircd_features.h: new features subsystem handles all the
1340         manipulation of special features, like log files
1341
1342         * include/handlers.h: declare new mo_{s,res,g}et message handlers
1343         for fiddling with features run-time
1344
1345         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
1346         seemed like a good idea at the time...
1347
1348         * doc/example.conf: document new F lines
1349
1350 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
1351
1352         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
1353         new logging functions, which have special support for the debug
1354         log; added loop detection to vdebug(), so that I can
1355         sendto_opmask_butone() from log_vwrite() without incurring another
1356         call to vdebug()
1357
1358         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
1359         this allows log file rotations
1360
1361         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
1362
1363         * ircd/ircd_log.c: much more work fleshing out the interface;
1364         removed old interface; included backwards-compat ircd_log()
1365         function that logs to subsystem LS_OLDLOG
1366
1367         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
1368         functions
1369
1370         * include/ircd_log.h: include stdarg.h for va_list; move ordering
1371         warning to top of file; fill out LogSys enum; declare new
1372         log_debug_init(), log_vwrite(), log_write_kill(), and
1373         log_[sg]et_*() functions; add flags argument to log_write();
1374         defined flags to inhibit various logging actions
1375
1376         * include/client.h: added support for new SNO_DEBUG, enabled only
1377         if DEBUGMODE is defined
1378
1379 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
1380
1381         * ircd/ircd_log.c: make sure the various LOG_* constants are
1382         defined (probably not needed, since #include <syslog.h> isn't
1383         conditional); various static data needed for the new logging
1384         functions; definitions of new logging functions
1385
1386         * include/ircd_log.h: new LogSys enum, declarations for part of
1387         new logging API
1388
1389         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
1390         which was of course stupid; switched to using switch/case in
1391         initialization in motd_create(); zero the MotdList.other pointer
1392         from motd_clear()
1393
1394         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
1395         or we overwrite init_conf()'s hard work with respect to T-lines
1396
1397 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
1398
1399         * ircd/s_stats.c: comment out report_motd_list and include a
1400         reference to motd_report()
1401
1402         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
1403         motd_add() from the conf parser; call motd_clear() from the rehash
1404         routine; remove the no longer needed memory clearing and reloading
1405         stuff from the rehash service routine
1406
1407         * ircd/motd.c: loads new API, including static internal functions
1408         to do allocation/deallocation, etc.
1409
1410         * ircd/m_stats.c: use new motd_report() instead of
1411         report_motd_list()
1412
1413         * ircd/m_motd.c: use new syntax for motd_send()
1414
1415         * ircd/ircd.c: use new motd_init() function
1416
1417         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
1418         Makefile.(in); also ran make depend
1419
1420         * include/motd.h: don't need config.h, but now do need time.h;
1421         define new structures and constants; redefine old API and define
1422         new functions
1423
1424 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
1425
1426         * ircd/s_user.c (register_user): use motd_signon() instead of
1427         calling m_motd; much cleaner this way
1428
1429         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
1430         less of a crock
1431
1432         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
1433         functions
1434
1435         * include/motd.h: define new MOTD API stuff
1436
1437 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
1438
1439         * ircd/ircd_reply.c (protocol_violation): rewrite
1440         protocol_violation so it'll actually work
1441
1442         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
1443         the client's real name in there.
1444
1445         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
1446         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
1447         gets called from register_user with a NULL sptr.  This is probably
1448         a design problem, but this bandaid will do for now...
1449
1450 2000-11-19  Isomer <isomer@coders.net>
1451         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
1452         to problems in the server<->server protocol.
1453
1454         * ircd/m_connect.c: allow remote connects with a port of '0'
1455         meaning to use the port in the config file.
1456
1457         * ircd/m_create.c: Enable hacking protection, lets see how far we
1458         get.
1459
1460         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
1461         clients, so we don't any more.
1462
1463         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
1464         and the user@host is displayed of the victim.
1465
1466         * ircd/m_map.c: reloaded 'dump_map'.
1467
1468         * ircd/m_trace.c: allow per class T:
1469
1470         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
1471
1472 2000-11-17  Isomer <isomer@coders.net>
1473
1474         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
1475         that were the *same* instead of different.  Oh the embarrasment!
1476
1477         * ircd/IPcheck.c: Merged net's fix.
1478
1479 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
1480
1481         * ircd/m_whois.c: remove compiler warning by adding a newline to
1482         end of file
1483
1484         * ircd/m_names.c: moved the flags up to s_user.h
1485
1486         * ircd/m_join.c: call do_names instead of m_names; restructure
1487         ms_join to never transmute a JOIN into a CREATE, but use the TS in
1488         the JOIN (if present) to timestamp the channel
1489
1490         * ircd/channel.c: send JOINs individually, instead of grouping
1491         them, so that we can send the channel's creation time
1492
1493         * include/s_user.h: declare do_names()
1494
1495 2000-10-30  Isomer <isomer@coders.net>
1496         * ircd/m_oper.c: Fixed warning
1497
1498 2000-10-30  Isomer <isomer@coders.net>
1499         * ircd/m_oper.c: Fixed over agressive cut and no paste
1500
1501 2000-10-30  Isomer <isomer@coders.net>
1502
1503         * ircd/m_topic.c: Restructured, fixed bug where topics on local
1504         channels are propergated (I forget who pointed this out to me, but
1505         thanks anyway).  Also to save bandwidth don't send the topic to
1506         users if the topic is already the same on the server (but still
1507         propergate to other servers).  X/W's "autotopic" feature must
1508         chew a lot of bandwidth, hopefully this will help reduce this.
1509
1510         * doc/rfc1459.rfc: Updated documentation on /topic.
1511
1512         * ircd/listener.c: snotice warnings about failed accept()'s
1513         potentially warning admins that they're running out of fd's.
1514
1515         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
1516         people in a class in /stats y
1517
1518         * ircd/m_create.c: Checks for timewarp hacking and squit's
1519         evil servers. (currently disabled)
1520         
1521
1522 2000-10-30  net <simms@lucida.qc.ca>
1523         
1524         * ircd/gline.c: Fixed various bugs Isomer left behind.
1525
1526 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
1527
1528         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
1529         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
1530
1531 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
1532
1533         * ircd/channel.c: ok, now last mode rules; mode +ps will always
1534         result in +s (and won't send a mode if the channel is already +s);
1535         mode +sp will always result in +p; -n+n on a +n channel results in
1536         no mode change; -n+n on a -n channel results in a +n mode change;
1537         etc.
1538
1539 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
1540
1541         * ircd/channel.c: add "add" and "del" elements to ParseState to
1542         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
1543         mode_parse_limit that caused it to clear all channel modes
1544         prematurely; restructure mode_parse_mode to avoid calling
1545         modebuf_mode too early (ties in with first mentioned change);
1546         better logic for +p/+s mutual exclusivity; initialize "add" and
1547         "del" elements in mode_parse; send simple modes down to
1548         modebuf_mode after the loop in mode_parse
1549
1550 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1551         * ircd/m_names.c: Fixed a non-lethal logic error that 
1552         triggers an assert() in find_member_link while debugging.
1553         (Spotted by Maniac-).
1554 2000-09-19  Thomas Helvey <helveytw@home.com>
1555         * ircd/s_conf.c: move K:lines to their own list and data
1556         structures, add supporting code.
1557         * ircd/m_stats.c: cleanup stats processing a bit move
1558         kline listing code to a new function, haven't figured
1559         out where it goes yet tho'
1560         * ircd/s_stats.c: added K:line bulk lister
1561         * include/s_conf.h: added new DenyConf struct
1562         * *[ch]: fixeup code that depended on changes
1563
1564 2000-09-17  Thomas Helvey <helveytw@home.com>
1565         * ircd/class.c: encapsulate class list
1566         * include/class.h: clean up classes
1567         * * fixup code that depended on changes
1568
1569 2000-09-17  Thomas Helvey <helveytw@home.com>
1570         * ircd/s_conf.c: add me to local conf
1571         * include/s_conf.h: move CONF_ME macro to chkconf.c
1572         * ircd/s_bsd.c: cleanup initialization, allow virtual host
1573         to be changed by rehash
1574
1575 2000-09-17  Thomas Helvey <helveytw@home.com>
1576         * include/class.h: add missing prototype
1577         * ircd/class.c: make argument to get_conf_class const
1578
1579 2000-09-17  Thomas Helvey <helveytw@home.com>
1580         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
1581         merge conflicts.
1582         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
1583         merge conflicts
1584
1585 2000-09-16  Thomas Helvey <helveytw@home.com>
1586         * ircd/s_conf.c: add code for server struct
1587         * ircd/client.c: copy of class.c sort of, new file for client
1588         specific operations, will move things here as appropriate,
1589         currently only one function is exported from here.
1590         * ircd/*.c: general logic cleanups, convert negatives to
1591         positives in places.
1592
1593 2000-09-16  Thomas Helvey <helveytw@home.com>
1594         * ircd/s_conf.c: add code for new crule data structs, strip quotes
1595         * ircd/crule.c: clean up scary casting a bit, type safety stuff
1596         * include/s_conf.h: add CRuleConf struct and support, remove
1597         unused constants
1598         * include/crule.h: type safety cleanups
1599         * ircd/*.c: fixup code that depended on stuff I changed
1600
1601 2000-09-15  Thomas Helvey <helveytw@home.com>
1602         * ircd/s_conf.c: start adding code for new conf data structs, changed
1603         listeners, admin line, motd lines, class lines. Move validate_hostent
1604         to resolver. General mayhem.
1605         * include/s_conf.h: new data structs and accessors
1606         * ircd/res.c: move validate_hostent here, rewrite, use regular
1607         expression for validation.
1608         * doc/example.conf: update docs for port
1609
1610 2000-09-14  Thomas Helvey <helveytw@home.com>
1611         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
1612         up conf_init into managable chunks.
1613         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
1614         * include/s_conf.h: add new data struct for local info (unwinding the mess).
1615
1616 2000-09-13  Thomas Helvey <helveytw@home.com>
1617         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
1618         local clients.
1619         * ircd/list.c: put SLinks in free lists
1620         * ircd/channel.c: put Memberships in free lists
1621         * ircd/ircd.c: rearrange initializations a bit in main
1622         Note: With these changes, ircd NEVER frees Clients, SLinks or
1623         Memberships. It will also rarely need to allocate new
1624         ones during net bursts and other disruptions. This should
1625         cut down on memory fragmentation a bit as well.
1626
1627 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
1628
1629         * ircd/m_names.c (do_names): pull-up from do_names fix in
1630         u2.10.10.pl11
1631
1632 2000-07-15  Perry Lorier       <Isomer@coders.net>
1633         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
1634                  match()'s.  Major Major cpu savings.  Also speed up the
1635                  other case slightly.  As a side effect you can now
1636                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
1637                  3am.
1638
1639 2000-07-15  Perry Lorier       <Isomer@coders.net>
1640         * various: Fixed warnings after compiling on an alpha.
1641 2000-07-09  Perry Lorier       <Isomer@coders.net>
1642         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
1643                       changes suggested by various other people.
1644         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
1645                         that it gets a corrupt entry somehow.
1646 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1647         * ircd/m_oper.c: Clean up compiler warning.
1648
1649 2000-07-08  Perry Lorier       <Isomer@coders.net>
1650         * doc/ircd.8: Updated the documentation, it was slightly out of date
1651                       being updated around 1989.
1652         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
1653                           fixed a few minor glitches.
1654         * doc/rfc1459.unet: Updated.
1655         * ircd/IPcheck.c: Fixed more bugs.
1656         * ircd/s_bsd.c: We now keep track of servers we've conected.
1657
1658 2000-07-02  Perry Lorier       <Isomer@coders.net>
1659         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
1660                         me.  Thanks to Hektik, thanks thanks thanks thanks
1661                         thanks thanks thanks thanks thank thanks thank thanks
1662
1663 2000-07-01  Perry Lorier       <Isomer@coders.net>
1664         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
1665         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
1666
1667 2000-06-22  Perry Lorier       <Isomer@coders.net>
1668         * ircd/IPcheck.c: Large chunks redone.
1669         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
1670                         single AND double digit limits are allowed now.
1671         * misc other: Changes to IPcheck.
1672
1673 2000-06-30  Perry Lorier       <Isomer@coders.net>
1674         * ircd/ircd.c: Fix command line parameter bugs.
1675
1676 2000-06-30  Perry Lorier       <Isomer@coders.net>
1677         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
1678         * ircd/m_nick.c: Tidied things up.
1679
1680 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
1681         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
1682         
1683 2000-05-29  Perry Lorier       <Isomer@coders.net>
1684         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
1685         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
1686                         you think it'll get bored and fix itself?
1687
1688 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1689
1690         * ircd/m_names.c: Clean up compiler warnings.
1691
1692 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
1693
1694         * ircd/channel.c (mode_parse_client): don't send warning if
1695         there's not enough arguments for a +/-o/v; means the habit of
1696         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
1697         error messages
1698
1699 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1700
1701         * ircd/m_names.c: Re-factor code to remove unneccessary
1702         GlobalChannelList iteration every time someone joins a channel.
1703
1704 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
1705
1706         * ircd/s_user.c: add struct Gline * argument to register_user;
1707         look up global glines and repropagate them if necessary; send
1708         acknowledgement of gline to remote servers when registering users
1709
1710         * ircd/s_serv.c (server_estab): don't send acknowledgement of
1711         local glines to remote servers; do send gline acknowledgement of
1712         bursted users
1713
1714         * ircd/m_user.c (m_user): pass new struct Gline * argument to
1715         register_user
1716
1717         * ircd/m_pong.c: pass new struct Gline * argument to register_user
1718
1719         * ircd/m_nick.c (ms_nick): document protocol change
1720
1721         * ircd/gline.c: support GLINE_LASTMOD
1722
1723         * include/s_user.h: add struct Gline * argument to register_user
1724
1725         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
1726
1727         * ircd/s_conf.c (find_kill): add unsigned int argument to
1728         gline_lookup()
1729
1730         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
1731         glines; add unsigned int argument to gline_lookup()
1732
1733         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
1734         argument to gline_lookup()
1735
1736         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
1737         parameter, or when it falls out of bounds: see comments prior to
1738         call to jupe_resend(); call server_estab with struct Jupe
1739         parameter, so that we place the appropriate %<lastmod> in the
1740         appropriate place.
1741
1742         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
1743         server, as well as for servers when we're sending the BURST
1744
1745         * include/s_serv.h: add a struct Jupe * to the arguments for
1746         server_estab() so that we can send the appropriate lastmod
1747         parameter
1748
1749         * ircd/m_gline.c (ms_gline): actually, this should be the
1750         slightest bit more efficient...
1751
1752         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
1753         bit more efficient...
1754
1755         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
1756         during netburst
1757
1758         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
1759         netburst
1760
1761         * ircd/channel.c (joinbuf_join): really remove user from local
1762         channels
1763
1764 2000-05-29  Perry Lorier       <Isomer@coders.net>
1765         * ircd/m_names.c: Removed redundant space. 
1766         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
1767
1768 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
1769
1770         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
1771         a " "
1772
1773 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
1774
1775         * ircd/channel.c: replace bogus assertions with returns, which is
1776         logically correct; only wipe out limit/key if they were originally
1777         set in the first place; remove user from channel when doing a
1778         PARTALL; only send MODE +o for user CREATEing channel if user is
1779         not MyUser--CREATE will only be used if the channel did not
1780         originally exist, therefore we can assume no one local is on the
1781         channel anyway, and we don't exactly need for the user to see an
1782         explicit +o for themselves
1783
1784         * doc/readme.gline: describe the syntax of the GLINE command
1785
1786         * doc/readme.jupe: update to reflect a couple of changes to JUPE
1787
1788         * ircd/gline.c: don't propagate local changes
1789
1790         * ircd/jupe.c: don't propagate local changes
1791
1792         * ircd/m_gline.c (mo_gline): force local flag when deactivating
1793         glines with 0 lastmod
1794
1795         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
1796         are now removed instead of being deactivated
1797
1798         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
1799         -<mask>" be accepted
1800
1801         * ircd/channel.c (send_channel_modes): deal with one of the last
1802         vestiges of sendbuf
1803
1804         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
1805         debugging hooks
1806
1807         * ircd/channel.c (modebuf_extract): remove debugging
1808         sendto_opmask_butone calls
1809
1810 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
1811
1812         * ircd/channel.c: support a couple of new flags to support using
1813         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
1814         of modebuf_extract to extract added flags for use by ms_burst
1815
1816         * include/channel.h: a couple of new flags to support using
1817         mode_parse inside ms_burst
1818
1819         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
1820
1821         * ircd/m_endburst.c: add loop to processing of end_of_burst to
1822         free empty channels after the BURST is over.
1823
1824         * ircd/m_server.c: convert to use new send.c functions--I wanted
1825         to rewrite it from scratch, but the logic's pretty complex; I may
1826         still rewrite it, though...
1827
1828 2000-05-02  Thomas Helvey <tomh@inxpress.net>
1829
1830         * ircd/ircd.c: fix broken header include ordering
1831
1832 2000-05-02  Thomas Helvey <tomh@inxpress.net>
1833         
1834         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
1835         review emailed privately
1836
1837         * include/IPcheck.h: removed unneeded include
1838
1839 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
1840
1841         * ircd/s_user.c (hunt_server): throw in a comment so I know what
1842         the sendto_one is for
1843
1844         * include/querycmds.h (Count_unknownbecomesclient): convert to
1845         sendto_opmask_butone
1846
1847         * ircd/send.c: start removing dead code
1848
1849         * include/send.h: start removing dead code
1850
1851         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
1852         hunt_server_cmd
1853
1854         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
1855
1856 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
1857
1858         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
1859
1860         * ircd/m_kick.c: Completely reimplement m_kick
1861
1862         * ircd/channel.c: send_user_joins removed; it was dead code,
1863         anyway...
1864
1865 2000-05-01  Perry Lorier <isomer@coders.net>
1866         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
1867         * ircd/channels.c: My fix for the part problem.  Untested, probably
1868                 won't work.  Can't be much worse than the current problem.
1869                 it'll either work or core, take your pick.
1870
1871
1872 2000-04-30  Perry Lorier <isomer@coders.net>
1873         * config/config-sh.in: Fix for CONNEXIT
1874         * ircd/s_{user,misc}.c: Fix for CONNEXIT
1875         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
1876                         (Kev: Want to come talk to me about this?)
1877
1878 2000-04-30  Steven M. Doyle <steven@doyle.net>
1879         * ircd/ircd.c
1880           - general cleanups and readability enhancements
1881           - rewrite of setuid/chroot code.
1882           - server will no longer run as root
1883           - -DPROFIL compile option removed
1884           - Fixed IPcheck API calls
1885  
1886         * config/config-sh.in
1887           - Fixed up chroot compile options
1888           - Added options for debug and profile compiles
1889  
1890         * config/gen.ircd.Makefile
1891           - Support for new debug/profile options
1892  
1893         * ircd/Makefile.in
1894           - Support for new debug/profile options
1895  
1896         * ircd/ircd_signal.c
1897           - Removed -DPROFIL
1898
1899         * include/IPcheck.h
1900           - Removed old API prototypes, added new ones
1901         
1902         * ircd/IPcheck.c
1903           - Readability cleanups (well, I -think-...)
1904           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
1905             used unsigned short was probably causing interesting things after
1906             a client had been connected longer than about 65,535 seconds...
1907           - Removed old API functions.
1908
1909         * ircd/whocmds.c
1910           - Removed IPcheck.h include
1911         
1912         * Additionally modified IPcheck API calls in:
1913           - ircd/m_nick.c
1914           - ircd/m_auth.c
1915           - ircd/s_bsd.c
1916           - ircd/s_conf.c
1917           - ircd/s_misc.c
1918           - ircd/s_serv.c
1919           - ircd/s_user.c
1920         
1921         
1922 2000-04-30  Perry Lorier <isomer@coders.net>
1923         * ircd/s_bsd.c: Sigh. :)
1924         * ircd/m_mode.c: fix for modeless channels by poptix.
1925
1926 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
1927
1928         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
1929
1930         * ircd/channel.c (clean_channelname): make clean_channelname also
1931         truncate long channel names
1932
1933 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
1934
1935         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
1936
1937         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
1938         joinbuf_flush
1939
1940         * include/channel.h: definitions and declarations for the struct
1941         JoinBuf abstraction
1942
1943 2000-04-29  Perry Lorier <isomer@coders.net>
1944         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
1945
1946 2000-04-29  Perry Lorier <isomer@coders.net>
1947         * ircd/s_bsd.c: Add debugging code to IPcheck
1948
1949 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
1950
1951         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
1952
1953         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
1954         RPL_EXPLICIT
1955
1956         * ircd/m_userhost.c (m_userhost): add a dead code comment
1957
1958         * ircd/m_desynch.c: forgot one...
1959
1960         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
1961
1962         * ircd/m_proto.c (proto_send_supported): just change a comment so
1963         it doesn't show up in my scans
1964
1965         * ircd/ircd_reply.c (send_reply): fix a slight bug...
1966
1967         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
1968         kinda hackish...
1969
1970         * ircd/parse.c (parse_server): argument wrangling to make
1971         processing in do_numeric a little easier to deal with
1972
1973         * ircd/s_serv.c (server_estab): SERVER should come from
1974         acptr->serv->up, not &me
1975
1976         * ircd/m_lusers.c: accidentally left out sptr for a %C
1977
1978         * ircd/send.c: hack to support doing wallchops...
1979
1980         * ircd/m_whowas.c: convert to new send functions
1981
1982         * ircd/m_whois.c: convert to new send functions
1983
1984         * ircd/m_who.c: convert to new send functions
1985
1986         * ircd/m_wallops.c: convert to new send functions
1987
1988         * ircd/m_wallchops.c: convert to new send functions
1989
1990         * ircd/m_version.c: convert to new send functions
1991
1992         * ircd/m_userip.c: convert to new send functions
1993
1994         * ircd/m_userhost.c: convert to new send functions
1995
1996         * ircd/m_uping.c: convert to new send functions
1997
1998         * ircd/m_trace.c: convert to new send functions
1999
2000         * ircd/m_topic.c: convert to new send functions
2001
2002         * ircd/m_time.c: convert to new send functions
2003
2004         * ircd/m_squit.c: convert to new send functions
2005
2006         * ircd/m_silence.c: convert to new send functions
2007
2008         * ircd/m_settime.c: convert to new send functions
2009
2010         * ircd/m_restart.c: convert to new send functions
2011
2012         * ircd/m_rehash.c: convert to new send functions
2013
2014         * ircd/m_privmsg.c: convert to new send functions
2015
2016         * ircd/m_pong.c: convert to new send functions
2017
2018         * ircd/m_ping.c: convert to new send functions
2019
2020         * ircd/m_pass.c: convert to new send functions
2021
2022         * ircd/m_opmode.c: convert to new send functions
2023
2024         * ircd/m_oper.c: convert to new send functions
2025
2026         * ircd/m_notice.c: convert to new send functions
2027
2028         * ircd/m_nick.c: convert to new send functions
2029
2030         * ircd/m_names.c: convert to new send functions
2031
2032         * ircd/m_motd.c: convert to new send functions
2033
2034         * ircd/m_mode.c: convert to new send functions
2035
2036         * ircd/m_map.c: convert to new send functions
2037
2038         * ircd/m_lusers.c: convert to new send functions
2039
2040         * ircd/m_list.c: convert to new send functions
2041
2042         * ircd/m_links.c: convert to new send functions
2043
2044         * ircd/m_kill.c: convert to new send functions
2045
2046         * ircd/m_jupe.c: convert to new send functions
2047
2048         * ircd/m_invite.c: convert to new send functions
2049
2050         * ircd/m_info.c: convert to new send functions
2051
2052         * ircd/m_help.c: convert to new send functions
2053
2054         * ircd/m_gline.c: convert to new send functions
2055
2056         * ircd/m_error.c: convert to new send functions
2057
2058         * ircd/m_endburst.c: convert to new send functions
2059
2060         * ircd/m_die.c: convert to new send functions
2061
2062         * ircd/m_destruct.c: convert to new send functions
2063
2064         * ircd/m_defaults.c: convert to new send functions
2065
2066         * ircd/m_connect.c: convert to new send functions
2067
2068 2000-04-28  Perry Lorier <isomer@coders.net>
2069         * RELEASE.NOTES: Describe a few more undocumented features.
2070         * config/config-sh.in: change the default paths for logging
2071         and the recommended number of channels.
2072         * include/supported.h: Rearrange slightly, added CHANTYPE's
2073
2074 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
2075
2076         * ircd/m_close.c: convert to send_reply
2077
2078         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
2079
2080         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
2081
2082         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
2083
2084         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
2085         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
2086         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
2087         carefully rethought...
2088
2089         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
2090
2091         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
2092
2093         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
2094         numeric nick; therefore, we have to use the server name
2095
2096         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
2097
2098         * ircd/send.c: fix minor bugs
2099
2100         * ircd/s_user.c (check_target_limit): mark dead code so I filter
2101         it when I grep
2102
2103         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
2104         when I grep
2105
2106         * ircd/parse.c: mark dead code so I filter it when I grep
2107
2108         * ircd/map.c: mark dead code so I filter it when I grep
2109
2110         * ircd/ircd.c: mark dead code so I filter it when I grep
2111
2112         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
2113         functions
2114
2115         * ircd/channel.c: mark dead code so I filter it when I grep
2116
2117         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
2118         hope I'm not stepping on toes...
2119
2120         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
2121         conversions; use ircd_snprintf in a couple of cases to negate the
2122         possibility of buffer overflow
2123
2124 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
2125
2126         * ircd/channel.c: convert as much as possible to new send
2127         semantics
2128
2129         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
2130         test member->user->from->fd, not from->fd
2131
2132         * ircd/gline.c (gline_add): go ahead and add badchans; we just
2133         won't look for them in m_gline; this way, they always work...
2134
2135         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
2136
2137         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
2138         ircd_vsnprintf conversion specifiers
2139
2140         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
2141         I have my conversion specifiers
2142
2143         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
2144
2145         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
2146         local users
2147
2148         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
2149         little less brain-dead
2150
2151         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
2152
2153         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
2154         RPL_STATSDEBUG
2155
2156         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
2157         RPL_STATSDEBUG
2158
2159         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
2160         for RPL_STATSDEBUG
2161
2162         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
2163
2164         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
2165
2166         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
2167         ERR_INVALIDUSERNAME
2168
2169         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
2170
2171         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
2172         a numeric as needing to use an explicit pattern, which will be the
2173         first argument in the variable argument list
2174
2175         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
2176         non-prefixed nospoof PING
2177
2178         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
2179         non-prefixed SERVER login
2180
2181         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
2182         a numeric usage further up)
2183
2184         * include/send.h: declare sendrawto_one
2185
2186         * ircd/send.c (sendrawto_one): new function to use ONLY for
2187         non-prefixed commands, like PING to client, or PASS/SERVER on
2188         server registration
2189
2190 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
2191
2192         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
2193         future expansion (channel numerics?)
2194
2195         * include/ircd_snprintf.h: added documentation to # to explain use
2196         with %C; added documentation for : to explain use with %C; added
2197         documentation for %H for channels
2198
2199         * ircd/whocmds.c: use send_reply
2200
2201         * ircd/userload.c: use sendcmdto_one
2202
2203         * ircd/uping.c: use sendcmdto_one
2204
2205         * ircd/send.c: use new flags to %C format string; ':' prefixes
2206         client name with a colon for local connects, '#' uses
2207         nick!user@host form for local connects
2208
2209         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
2210         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
2211
2212         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
2213
2214         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
2215         sendcmdto_one
2216
2217         * ircd/s_auth.c: use sendto_opmask_butone
2218
2219         * ircd/res.c: use sendcmdto_one
2220
2221         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
2222         debugging assertions
2223
2224 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
2225
2226         * ircd/support.c: dumpcore is no longer used, so get rid of it
2227
2228         * ircd/parse.c: use send_reply, sendcmdto_one
2229
2230         * ircd/map.c: use send_reply
2231
2232         * ircd/listener.c: use send_reply
2233
2234         * ircd/jupe.c: use sendto_opmask_butone, send_reply
2235
2236         * ircd/ircd_reply.c: use send_reply
2237
2238         * ircd/ircd.c: use sendto_opmask_butone
2239
2240         * ircd/gline.c: use sendto_opmask_butone, send_reply
2241
2242         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
2243         registered clients; make FLAG_ALT print nick!user@host; make
2244         FLAG_COLON print :blah
2245
2246         * ircd/class.c (report_classes): use send_reply instead of
2247         sendto_one
2248
2249         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
2250
2251         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
2252         sendto_one with sendcmdto_one
2253
2254 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
2255
2256         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
2257         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
2258         sendcmdto_match_butone
2259
2260         * include/send.h: declare sendcmdto_match_butone
2261
2262 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
2263
2264         * ircd/jupe.c: update to use send_reply()
2265
2266         * ircd/gline.c: update to use send_reply()
2267
2268         * include/ircd_reply.h: declare send_reply
2269
2270         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
2271         replies; uses ircd_snprintf
2272
2273         * ircd/send.c: added comments to redirect searchers to appropriate
2274         sendcmdto_* function; moved new functions to end of file; added
2275         explanatory comments; reordered arguments; defined new functions
2276         mentioned below
2277
2278         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
2279
2280         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
2281
2282         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
2283
2284         * ircd/gline.c: reorder arguments to sendcmdto_* functions
2285
2286         * include/send.h: reorder arguments, add explanatory comments,
2287         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
2288         and vsendto_opmask_butone
2289
2290 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
2291
2292         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
2293         vsendto_op_mask that uses '*' instead of the receiving client
2294         nickname
2295
2296         * include/send.h: declare sendcmdto_channel_butone; takes a skip
2297         argument that allows you to skip (or not to skip) deaf users,
2298         users behind bursting servers, and non channel operators
2299
2300 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
2301
2302         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
2303         sendto_channel_butserv has a subtle bug; also wrote
2304         sendcmdto_common_channels.
2305
2306         * include/send.h: declare new sendcmdto_* functions
2307
2308         * ircd/jupe.c: support local deactivations of jupes
2309
2310         * ircd/gline.c: support local deactivations of glines
2311
2312         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
2313         deactivated; if they aren't locally deactivated, then it slaves to
2314         the net-wide activation status; JupeIsRemActive() tests only
2315         whether the jupe is active everywhere else
2316
2317         * include/gline.h: GLINE_LDEACT allows glines to be locally
2318         deactivated; if they aren't locally deactivated, then it slaves to
2319         the net-wide activation status; GlineIsRemActive() tests only
2320         whether the gline is active everywhere else
2321
2322         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
2323         gline expires after the new one will, we drop the new one,
2324         otherwise we add the G-line after that one (so the wide one will
2325         apply first); if the new one contains an existing G-line and if it
2326         will expire after the existing one, we drop the existing one to
2327         save memory
2328
2329         * ircd/m_gline.c (mo_gline): opers could issue remote local
2330         glines when CONFIG_OPERCMDS was off; fixed
2331
2332 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
2333
2334         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
2335         this is a local JUPE
2336
2337         * ircd/gline.c: add flags argument to gline_activate and
2338         gline_deactivate for future expansion
2339
2340         * ircd/m_gline.c: pass flags to gline_activate and
2341         gline_deactivate
2342
2343         * include/gline.h: add flags argument to gline_activate and
2344         gline_deactivate
2345
2346         * ircd/jupe.c: add flags argument to jupe_activate and
2347         jupe_deactivate for future expansion
2348
2349         * include/jupe.h: add flags argument to jupe_activate and
2350         jupe_deactivate
2351
2352         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
2353         local, active; pass flags to jupe_activate and jupe_deactivate
2354
2355         * include/gline.h: remove dead code
2356
2357         * ircd/gline.c: make gline expire times relative to CurrentTime,
2358         since that should be monotonically increasing, instead of
2359         TStime(), which can be set backwards, and which can therefore
2360         cause an expire time to increase; make local glines be removed
2361         instead of just deactivated; don't let gline_find() look for
2362         user@host glines if the mask being looked up is a channel mask
2363
2364         * ircd/send.c (vsendcmdto_one): forgot to account for the case
2365         where origin is a server and destination is a user
2366
2367         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
2368         since that should be monotonically increasing, instead of
2369         TStime(), which can be set backwards, and which can therefore
2370         cause an expire time to increase; make local jupes be removed
2371         instead of just deactivated
2372
2373         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
2374         limit is fine.  any other warnings I should know about?
2375
2376 2000-04-15  Thomas Helvey <tomh@inxpress.net>
2377
2378         * ircd/*.c: const correctness and type safety cleanups to
2379         get code to compile with C++ compiler. Still has
2380         signed/unsigned comparison warnings.
2381
2382 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2383
2384         * ircd/userload.c: change <sys/time.h> include to <time.h> for
2385           portability.
2386
2387 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
2388
2389         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
2390         and convert acptr...
2391
2392         * ircd/s_user.c: move gline_lookup function call into
2393         register_user, where it'll have a username to lookup!
2394
2395         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
2396         functions; also stuff send_error_to_client into return clauses
2397
2398         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
2399         functions; also use send_error_to_client where that makes sense
2400
2401         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
2402         functions; also use send_error_to_client where that makes sense
2403
2404         * ircd/gline.c: modify to utilize new sendcmdto_* series of
2405         functions; also fix gline_lookup() to deal properly with remote
2406         clients--boy, do struct Client and struct User need to be cleaned
2407         up!
2408
2409         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
2410         too...
2411
2412         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
2413         sendcmdto_serv_butone(), all utilizing the %v conversion of
2414         ircd_snprintf()
2415
2416         * include/send.h: define IRC_BUFSIZE, max size of a message;
2417         declare sendcmdto_one(), vsendcmdto_one(), and
2418         sendcmdto_serv_butone()
2419
2420         * include/msg.h: define all the CMD_* constants needed to utilize
2421         the new sendcmdto_* series of functions
2422
2423         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
2424
2425         * ircd/gline.c: remove old, dead code.
2426
2427         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
2428         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
2429         (don't advertise proxies); remove dead code
2430
2431         * ircd/parse.c: oper handler for JUPE only lists jupes unless
2432         CONFIG_OPERCMDS is enabled
2433
2434         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
2435         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
2436
2437         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
2438         always return ERR_DISABLED
2439
2440         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
2441         enabled, always return ERR_DISABLED
2442
2443         * ircd/s_err.c: add error message to indicate disabled commands
2444
2445         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
2446
2447         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
2448
2449         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
2450         CONFIG_NEW_MODE to 'y' for now
2451
2452         * ircd/gline.c (gline_list): fix a minor formatting bogon
2453
2454         * BUGS: since I fixed that bug, might as well mark it fixed.
2455
2456         * ircd/m_join.c: look up badchans with GLINE_EXACT
2457
2458         * ircd/m_gline.c: fix parc count problems; look up existing
2459         G-lines with GLINE_EXACT; only set new lastmod when
2460         activating/deactivating existing glines if old lastmod was not 0
2461
2462         * ircd/gline.c: forgot to copy the gline reason over; don't
2463         propagate a gline with 0 lastmod if origin is user; add
2464         GLINE_EXACT to force exact matching of gline mask
2465
2466         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
2467         flag properly
2468
2469         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
2470         but gline_lookup() actually takes a client--d'oh.
2471
2472 2000-04-13  Thomas Helvey <tomh@inxpress.net>
2473         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
2474
2475 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2476
2477         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
2478           "/who * x"
2479           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
2480           (Found by Plexus).
2481
2482         * ircd/whocmds.c: Change idle time calc from socket idle to user
2483           idle.
2484
2485 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
2486
2487         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
2488         too, for ircd_snprintf.c
2489
2490         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
2491         comments; mostly descended from the Linux manpage for printf, but
2492         also documenting the extensions.
2493
2494         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
2495         client; make 'q' be the same as 'L'; remove __inline__; only
2496         define EXTENSION if HAVE_LONG_LONG is defined
2497
2498         * include/handlers.h: declare m_gline()
2499
2500         * ircd/parse.c: gline can be called by users, but it only lists
2501         the glines.
2502
2503         * ircd/s_user.c (set_nick_name): resend gline if a remote server
2504         introduces a glined client
2505
2506         * ircd/s_serv.c (server_estab): burst glines, too
2507
2508         * ircd/gline.c: fix up all the expire times to be offsets;
2509         simplify gline_resend()
2510
2511         * ircd/m_gline.c: begin coding replacements for ms_gline(),
2512         mo_gline(), and m_gline()
2513
2514         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
2515         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
2516
2517 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2518
2519         * tools/Bouncer/*: Add comments/documentation/tags.
2520         * tools/Bouncer/*: Add debug defines, make task fork().
2521
2522 2000-04-12  Thomas Helvey <tomh@inxpress.net>
2523         * ircd/s_err.c: Cleanup s_err.c make one table so we
2524         don't have to do anything tricky to get an error string.
2525
2526 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2527         * Add port bouncer for http (x/w)
2528
2529 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
2530
2531         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
2532         call to gline_find(); also used GlineReason() instead of direct
2533         reference to structure member
2534
2535         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
2536         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
2537         is active
2538
2539         * ircd/channel.c: nothing seems to be called anywhere...
2540
2541         * ircd/s_err.c: update a couple of replies to dovetail with new
2542         semantics
2543
2544         * ircd/gline.c: begin complete re-implementation of gline.c along
2545         the lines of the final design of jupe.c
2546
2547         * include/gline.h: begin complete re-implementation of gline.c
2548         along the lines of the final design of jupe.c
2549
2550         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
2551         %s by %s" message...
2552
2553         * ircd/ircd_snprintf.c: my new snprintf()-like functions
2554
2555         * include/ircd_snprintf.h: my new snprintf()-like functions
2556
2557 2000-04-11  Thomas Helvey <tomh@inxpress.net>
2558         * ircd/IPcheck.c: removed old dead code
2559         * ircd/s_user.c (send_user_info): removed non-standard
2560           user not found message for userhost/userip
2561
2562 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2563
2564         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
2565         * doc/p10.html: Work on chapter 4.
2566
2567 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
2568
2569         * ircd/channel.c (mode_parse_client): fix coredump on /mode
2570         #foobar +o nosuchnick
2571
2572 2000-04-10  Perry Lorier  <Isomer@coders.net>
2573         * BUGS: Added bug.
2574
2575 2000-04-09  Thomas Helvey <tomh@inxpress.net>
2576         * include/IPcheck.h: fix prototype
2577         * ircd/s_user.c: fix usage of IPcheck_remote_connect
2578         * ircd/IPcheck.c: removed unused args
2579
2580 2000-04-09  Thomas Helvey <tomh@inxpress.net>
2581         * include/IPcheck.h: add proto for IPcheck_expire
2582
2583         * ircd/IPcheck.c: Rewrote
2584
2585         * ircd/ircd.c: Add IPcheck_expire to main message loop
2586
2587         * ircd/s_user.c: Redo target hashing, refactor target code
2588
2589         * include/numeric.h: Cleaned up numerics, added which ones are
2590         in use by other networks and what they are in use for.
2591
2592         * ircd/channel.c: cleaned can_join(), allow anyone through anything
2593         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
2594         will get a message explaining to them not to cheat.
2595
2596         * ircd/m_join.c: cleaned up the various join functions, should be
2597         a lot more efficient.  Still needs work.  Now assumes that s<->s
2598         won't send it a JOIN 0.  Service coders - note this and tread with
2599         care.
2600
2601         * ircd/m_stats.c: added Gte-'s stats doc patch.
2602
2603         * ircd/m_version.c: /version now returns the 005 numeric as well.
2604         as requested by Liandrin.
2605
2606
2607 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
2608
2609         * ircd/m_clearmode.c: add include for support.h for write_log()
2610
2611         * configure: move ircd/crypt/* to tools/*
2612
2613 2000-04-06  Thomas Helvey <tomh@inxpress.net>
2614         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
2615           set client host to server alias if connection from localhost
2616
2617 2000-04-06  Perry Lorier <isomer@coders.net>
2618         * ircd/ircd.c: Fix core during pinging (oops)
2619         
2620 2000-04-06  Perry Lorier <isomer@coders.net>
2621         * ircd/send.c: fixed wrong ident being sent to channels bug.
2622         * include/numerics.h: Updated some of the numerics from other
2623         networks.  Flagged some as 'unused' by undernet.
2624
2625 2000-03-30  Perry Lorier <isomer@coders.net>
2626         * ircd/ircd.c: Lets see if this helps the ping problem at all.
2627         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
2628         time for local clients. (as requested), extended who now returns all
2629         the flags (@+!) so you can tell the complete state of a client.
2630
2631 2000-03-30  Thomas Helvey <tomh@inxpress.net>
2632         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
2633
2634 2000-03-30  Perry Lorier <isomer@coders.net>
2635         * ircd/parse.c: oops, missed opers.
2636
2637 2000-03-30  Perry Lorier <isomer@coders.net>
2638         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
2639         for so long.  Remember: m_ping MUST be in the parse array. :)
2640
2641 2000-03-30  Perry Lorier <isomer@coders.net>
2642         * ircd/ircd.c: test in check_pings was wrong.  I move that we
2643         disallow cvs commit after 10pm localtime....
2644
2645 2000-03-30  Perry Lorier <isomer@coders.net>
2646         * ircd/m_pong.c: Fix it for servers too.
2647
2648 2000-03-30  Perry Lorier <isomer@coders.net>
2649         * ircd/m_pong.c: Fix ping timeout bugs
2650
2651 2000-03-30  Perry Lorier <isomer@coders.net>
2652         * ircd/channel.c: Bans had CurrentTime in their when field instead
2653         of TStime()
2654
2655 2000-03-31  Thomas Helvey <tomh@ixpress.net>
2656         * ircd/numnicks.c (SetXYYCapacity): fix for extended
2657         numerics.
2658
2659 2000-03-30  Perry Lorier <isomer@coders.net>
2660         * ircd/m_nick.c: send kills both ways so when we add nick change
2661         on collision we don't desync the network.
2662
2663         * ircd/map.c: Fixup the map a bit more.
2664
2665 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
2666
2667         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
2668
2669         * ircd/m_opmode.c: Log the mode changes to OPATH
2670
2671         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
2672         OPATH
2673
2674         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
2675         OPATH
2676
2677         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
2678
2679         * config/config-sh.in: added OPATH for opmode log file
2680
2681         * ircd/m_clearmode.c (do_clearmode): updated uses of
2682         modebuf_mode_string() for the new usage
2683
2684         * ircd/channel.c: added flag MODE_FREE and an int argument to
2685         modebuf_mode_string() to indicate that the string must be free'd;
2686         updated calls to modebuf_mode_string() for the new usage; called
2687         collapse(pretty_mask()) on the ban string and use allocated memory
2688         for it; added ban list length accounting; fixed a number of small
2689         bugs in ban processing
2690
2691         * include/channel.h: added flag MODE_FREE and an int argument to
2692         modebuf_mode_string() to indicate that the string must be free'd
2693
2694         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
2695         keys and limits that are set
2696
2697 2000-03-30  Perry Lorier <isomer@coders.net>
2698         * ircd/ircd.c: rewrote check_pings() for maintainability
2699         and speed.  Also changed quit msg's so they don't have
2700         redundant nick[host] info in them.
2701
2702         * ircd/send.c: Changed write errors to report what error
2703         occured (if possible).
2704
2705         * ircd/gline.c: added gline comment to the quit.
2706
2707         * ircd/m_server.c: Added suggestions to server quits mentioning
2708         what went wrong so the admin can fix it earlier instead of asking
2709         questions...
2710
2711         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
2712         servers that aren't fully burst yet.  And show '(--s)' for servers
2713         where its not sure.
2714
2715         * doc/example.conf: Fixed wrapped U:
2716
2717 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
2718
2719         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
2720         mode_parse() (version selectable at compile time)
2721
2722         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
2723
2724         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
2725
2726         * config/config-sh.in: add new config option to enable new m_mode
2727         implementation
2728
2729         * doc/Configure.help: add documentation for new config option
2730         CONFIG_NEW_MODE
2731
2732         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
2733         MODE -v : Not enough parameters
2734
2735         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
2736         +k and +l even if they weren't set...
2737
2738         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
2739
2740         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
2741         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
2742         for; test the 0-th member, not the i-th member, of the client
2743         change state stuff
2744
2745         * ircd/m_clearmode.c (do_clearmode): use the new
2746         mode_invite_clear() function
2747
2748         * ircd/channel.c: cleared up all the compile-time warnings and
2749         errors
2750
2751         * include/channel.h: added declarations for mode_ban_invalidate()
2752         and mode_invite_clear()
2753
2754         * ircd/channel.c: finished mode_parse(), then broke it up into a
2755         dozen or so helper functions to make the code easier to read
2756
2757 2000-03-29  Thomas Helvey <tomh@inxpress.net>
2758         * ircd/ircd.c: refactor server initialization a bit, use
2759         getopt for parsing command line, refactor init_sys, main,
2760         and other bits.
2761
2762         * ircd/s_bsd.c: add functions for initialization to clean
2763         up logic a bit and remove duplicated code.
2764
2765         * include/ircd.h: add struct for server process related
2766         variables.
2767
2768 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
2769
2770         * ircd/channel.c: initial definition of mode_parse(); flags to
2771         prevent doing the same thing multiple times; helper method
2772         send_notoper() to send a "Not oper"/"Not on channel" notice
2773
2774         * include/channel.h: declare mode_parse() and helper flags
2775
2776         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
2777         sending to match the current action of set_mode() closely enough
2778         that hopefully there won't be major conflicts
2779
2780         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
2781         building logic, reversed the order of the arguments to mode
2782         commands to have '-' preceed '+'
2783
2784 2000-03-29  Thomas Helvey <tomh@inxpress.net>
2785         * ircd/s_bsd.c (add_connection): don't disable socket options
2786         let OS tune itself and allow important performance tweaks to 
2787         work.
2788
2789 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
2790
2791         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
2792         confused by set_mode, which is doing some really weird logic;
2793         guess what I'm going to rewrite next?  ;)
2794
2795 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
2796
2797         * include/channel.h: added MODE_SAVE for the bounds checking stuff
2798         in modebuf_flush
2799
2800         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
2801         make it do bounds checking on the buffer; all modes are sent only
2802         if the all parameter is 1; modebuf_flush is the exported wrapper
2803
2804         * include/channel.h: add BOUNCE, renumber flags to get a little
2805         more space
2806
2807         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
2808         BOUNCE; send DESYNCH message
2809
2810 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
2811
2812         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
2813         channel actually has in effect for deletion
2814
2815         * ircd/channel.c: added explanatory comments to all added
2816         functions; made flushing take place at the correct place even if
2817         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
2818         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
2819         is empty, fixed the apparent source, removed some bogus string
2820         termination code, properly terminate the mode strings, add support
2821         for HACK2 and HACK3, made limit strings not be sent if the limit
2822         is being removed, changed where '+' and '-' come from in sent
2823         strings, added support for DEOP flag, set up bouncing code for
2824         HACK2
2825
2826         * ircd/Makefile.in: ran make depend
2827
2828         * include/channel.h: added new defines for future functionality,
2829         made modebuf_flush() return int so I can use tail recursion
2830
2831         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
2832         to make it all compile
2833
2834         * ircd/m_opmode.c: add msg.h to includes...
2835
2836         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
2837
2838         * ircd/channel.c (modebuf_flush): realized I forgot to
2839         nul-terminate addbuf/rembuf properly...
2840
2841         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
2842
2843         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
2844         sendto_serv_butone--blah^2
2845
2846         * ircd/send.c (sendto_serv_butone): stupid comments confused me
2847
2848         * ircd/channel.c (modebuf_flush): if there are no mode changes to
2849         propagate, we're done...
2850
2851         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
2852         not sendto_all_butone
2853
2854         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
2855
2856         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
2857
2858         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
2859         the list
2860
2861         * ircd/parse.c: added messages for opmode and clearmode
2862
2863         * include/handlers.h: added declarations for mo_opmode(),
2864         ms_opmode(), mo_clearmode(), and ms_clearmode()
2865
2866         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
2867         TOK_CLEARMODE
2868
2869         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
2870         MODEBUF_DEST_OPMODE flag
2871
2872         * ircd/channel.c (modebuf_flush): added new flag,
2873         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
2874         to originate from source's server (or source itself, if
2875         IsServer(source)); also causes a server-level MODE to be sent as
2876         OPMODE instead
2877
2878         * include/channel.h: defined MODEBUF_DEST_SERVER,
2879         MODEBUF_DEST_HACK4
2880
2881         * ircd/channel.c: Add another argument to build_string() to handle
2882         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
2883         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
2884         to be sent out
2885
2886 2000-03-27  Perry Lorier <isomer@coders.net>
2887
2888         * ircd/s_bsd.c: fixed missing 'u' typo.
2889
2890 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
2891
2892         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
2893         _mode_string(), _mode_client(), _flush(); also implemented a
2894         simple build_string()
2895
2896         * include/channel.h: added definition of ModeBuf, modebuf_*
2897         manipulation functions, and a couple of helper macros
2898
2899 2000-03-24 Thomas Helvey <tomh@inxpress.net>
2900   * numicks.c: convert extended numerics to use original mask version
2901   * numnicks.h: ""
2902   * s_user.c:
2903 2000-03-23 Thomas Helvey <tomh@inxpress.net>
2904   * Merge in changes from production
2905 2000-03-22 Thomas Helvey <tomh@inxpress.net>
2906   * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
2907   * rfc1459.unet: Add Maniac's documentation for /names 0
2908 * Fix misc. jupe bugs that somehow made it into the tree
2909 * Escape /names 0 to mean /names --Maniac
2910 * Don't core when server asks for info --Maniac 
2911 * Add Kev's jupe patch --Bleep
2912 * Add Maniacs squit patch --Bleep
2913 * Merge in u2_10_10_beta07 changes --Bleep
2914 * Merge in u2_10_10_beta06 changes --Bleep
2915 * Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
2916 #-----------------------------------------------------------------------------