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