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