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