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