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