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