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