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