ecce833ea533a29289ad0cdf1e1b5ef47afc9813
[ircu2.10.12-pk.git] / ChangeLog
1 2001-07-09  Kevin L. Mitchell  <klmitch@mit.edu>
2
3         * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd
4         sections so that if neither is used, the declaration of buf will
5         not elicit an "unused variable" warning under NetBSD
6
7         * ircd/m_map.c: include string.h to declare strcpy (fix warnings
8         on alpha)
9
10         * ircd/m_away.c: include string.h to declare strcpy/strlen (fix
11         warnings on alpha)
12
13         * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix
14         warnings on alpha)
15
16         * ircd/client.c: include string.h to declare memset (fix warnings
17         on alpha)
18
19         * ircd/channel.c: remove unused functions next_overlapped_ban,
20         del_banid, and is_deopped (fix warnings under -O1)
21
22         * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix
23         warnings on alpha)
24
25 2001-06-29  Kevin L. Mitchell  <klmitch@mit.edu>
26
27         * ircd/s_user.c (set_user_mode): clear the snomask if the user
28         isn't supposed to receive server notices anymore
29
30         * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE
31
32         * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking
33         installation prefix; default devpoll and kqueue to on (they get
34         turned off if the required headers aren't present)
35
36         * ircd/whocmds.c (do_who): use ircd_snprintf() instead of
37         sprintf_irc(); it's a bit hackish, but it'll do for now
38
39         * ircd/support.c: remove unused #include
40
41         * ircd/send.c: remove unused #include
42
43         * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc()
44
45         * ircd/s_serv.c: remove unused #include
46
47         * ircd/s_misc.c: use ircd_snprintf() and friends instead of
48         sprintf_irc() and friends
49
50         * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to
51         ircd/s_err.c, which is the only other file to refer to it
52
53         * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of
54         sprintf_irc()
55
56         * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of
57         sprintf_irc()
58
59         * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc()
60
61         * ircd/res.c: use ircd_snprintf() instead of sprintf_irc()
62
63         * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc()
64
65         * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc()
66
67         * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc()
68
69         * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc()
70
71         * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf()
72         instead of sprintf_irc()
73
74         * ircd/Makefile.in: remove sprintf_irc.c from sources list; run
75         make depend
76
77         * include/ircd_string.h: remove declaration of sprintf_irc() (what
78         was it doing here anyway?)
79
80         * include/sprintf_irc.h: removed unneeded source file
81
82         * ircd/sprintf_irc.c: removed unneeded source file
83
84         * ircd/s_debug.c (count_memory): remove some dead code
85
86         * ircd/s_auth.c: remove some dead code
87
88         * ircd/res.c (update_list): remove some dead code
89
90         * ircd/m_whowas.c: remove some dead code
91
92         * ircd/m_whois.c: remove some dead code
93
94         * ircd/m_who.c: remove some dead code
95
96         * ircd/m_wallusers.c: remove some dead code
97
98         * ircd/m_wallops.c: remove some dead code
99
100         * ircd/m_wallchops.c: remove some dead code
101
102         * ircd/m_version.c: remove some dead code
103
104         * ircd/m_userip.c: remove some dead code
105
106         * ircd/m_userhost.c: remove some dead code
107
108         * ircd/m_uping.c: remove some dead code
109
110         * ircd/m_trace.c: remove some dead code
111
112         * ircd/m_topic.c: remove some dead code
113
114         * ircd/m_tmpl.c: remove some dead code
115
116         * ircd/m_time.c: remove some dead code
117
118         * ircd/m_squit.c: remove some dead code
119
120         * ircd/m_silence.c: remove some dead code
121
122         * ircd/m_settime.c: remove some dead code
123
124         * ircd/m_set.c: remove some dead code
125
126         * ircd/m_server.c: remove some dead code
127
128         * ircd/m_rpong.c: remove some dead code
129
130         * ircd/m_rping.c: remove some dead code
131
132         * ircd/m_restart.c: remove some dead code
133
134         * ircd/m_reset.c: remove some dead code
135
136         * ircd/m_rehash.c: remove some dead code
137
138         * ircd/m_quit.c: remove some dead code
139
140         * ircd/m_proto.c: remove some dead code
141
142         * ircd/m_privs.c: remove some dead code
143
144         * ircd/m_privmsg.c: remove some dead code
145
146         * ircd/m_pong.c: remove some dead code
147
148         * ircd/m_ping.c: remove some dead code
149
150         * ircd/m_pass.c: remove some dead code
151
152         * ircd/m_part.c: remove some dead code
153
154         * ircd/m_opmode.c: remove some dead code
155
156         * ircd/m_oper.c: remove some dead code
157
158         * ircd/m_notice.c: remove some dead code
159
160         * ircd/m_nick.c: remove some dead code
161
162         * ircd/m_map.c: remove some dead code
163
164         * ircd/m_lusers.c: remove some dead code
165
166         * ircd/m_list.c: remove some dead code
167
168         * ircd/m_links.c: remove some dead code
169
170         * ircd/m_kill.c: remove some dead code
171
172         * ircd/m_kick.c: remove some dead code
173
174         * ircd/m_jupe.c: remove some dead code
175
176         * ircd/m_join.c: remove some dead code
177
178         * ircd/m_ison.c: remove some dead code
179
180         * ircd/m_invite.c: remove some dead code
181
182         * ircd/m_info.c: remove some dead code
183
184         * ircd/m_help.c: remove some dead code
185
186         * ircd/m_gline.c: remove some dead code
187
188         * ircd/m_get.c: remove some dead code
189
190         * ircd/m_error.c: remove some dead code
191
192         * ircd/m_endburst.c: remove some dead code
193
194         * ircd/m_die.c: remove some dead code
195
196         * ircd/m_desynch.c: remove some dead code
197
198         * ircd/m_destruct.c: remove some dead code
199
200         * ircd/m_defaults.c: remove some dead code
201
202         * ircd/m_create.c: remove some dead code, along with an #if 1
203
204         * ircd/m_cprivmsg.c: remove some dead code
205
206         * ircd/m_connect.c: remove some dead code
207
208         * ircd/m_close.c: remove some dead code
209
210         * ircd/m_clearmode.c: remove some dead code
211
212         * ircd/m_burst.c: remove some dead code
213
214         * ircd/m_away.c: remove some dead code
215
216         * ircd/m_admin.c: remove some dead code
217
218         * ircd/listener.c (accept_connection): remove some dead code
219
220         * ircd/ircd_reply.c (need_more_params): remove some dead code
221
222         * ircd/channel.c (add_banid): remove some dead code
223
224         * include/support.h: remove some dead code
225
226         * include/querycmds.h: remove some dead code
227
228         * doc/readme.chroot: document how to do chroot operation
229
230 2001-06-28  Kevin L. Mitchell  <klmitch@mit.edu>
231
232         * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to
233         force bin directory to be created if necessary prior to
234         installation; run make depend
235
236         * doc/Makefile.in (install): tune for VPATH installs by cd'ing to
237         the ${srcdir}
238
239         * Makefile.in: tune to detect Makefile.in changes in
240         subdirectories and to create installation directory indicated by
241         ${prefix}
242
243         * ircd/whocmds.c (count_users): routine to count the number of
244         users matching a given user@host mask
245
246         * ircd/s_err.c: add error messages for ERR_LONGMASK,
247         ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE
248
249         * ircd/m_gline.c: look for and advance past '!' flag on G-lines
250         from operators; only set GLINE_OPERFORCE flag if oper has the
251         PRIV_WIDE_GLINE privilege
252
253         * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the
254         maximum number of users a G-line can impact before it has to be
255         forced; OPER_WIDE_GLINE, to allow operators to use ! to force a
256         wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local
257         operators to use ! to force a wide G-line to be set
258
259         * ircd/gline.c: make make_gline() be called with separate user and
260         host arguments, and not call canon_userhost() directly; implement
261         gline_checkmask() to verify that a host mask is acceptable; move
262         BADCHAN check up in gline_add(), and check passed-in mask under
263         certain circumstances for acceptability; fix call to
264         sendto_opmask_butone() to handle separation of userhost into user
265         and host in gline_add(); update call to make_gline()
266
267         * ircd/client.c: use FEAT_OPER_WIDE_GLINE and
268         FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add
269         PRIV_WIDE_GLINE to privtab[] for client_report_privs()
270
271         * include/whocmds.h (count_users): declare routine to count users
272         matching a given user@host mask
273
274         * include/numeric.h: added three new error returns: ERR_LONGMASK
275         -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too
276         many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask
277         contains wildcards in the wrong places
278
279         * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT,
280         FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE
281
282         * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline()
283         to signal to gline_add() that the operator attempted to force the
284         G-line to be set
285
286         * include/client.h (PRIV_WIDE_GLINE): new privilege for operators
287
288         * doc/readme.gline: update to document new "!" prefix to a G-line
289         user@host mask
290
291         * doc/readme.features: document GLINEMAXUSERCOUNT,
292         OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE
293
294         * doc/example.conf: update to mention new features along with
295         their defaults
296
297 2001-06-27  Kevin L. Mitchell  <klmitch@mit.edu>
298
299         * doc/example.conf: updated example.conf from Braden
300         <dbtem@yahoo.com>
301
302         * include/supported.h: forward-port from pl15
303
304 2001-06-25  Kevin L. Mitchell  <klmitch@mit.edu>
305
306         * ircd/whocmds.c: include ircd_policy.h and implement
307         HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15
308
309         * ircd/m_whois.c: forward-port of the idle-time hiding code from
310         pl15; this also required passing parc into do_whois(), which also
311         meant passing parc into do_wilds()--*sigh*
312
313         * include/ircd_policy.h: add a couple more HEAD_IN_SAND
314         #define's--WHOIS_IDLETIME and WHO_HOPCOUNT
315
316 2001-06-22  Kevin L. Mitchell  <klmitch@mit.edu>
317
318         * tools/wrapper.c: add a wrapper program that can be used to
319         adjust file descriptor limits and root directories; program must
320         be run as root--NOT SETUID!--and given appropriate -u arguments
321
322         * doc/readme.log: documentation of how to configure logging
323
324         * doc/readme.features: documentation of each feature (except for
325         logging)
326
327 2001-06-21  Kevin L. Mitchell  <klmitch@mit.edu>
328
329         * Makefile.in (config): add a deprecation notice with a pointer to
330         tools/transition
331
332         * tools/transition: shell script to convert old compile-time
333         options into new compile-time options and appropriate F-lines
334
335         * tools/mkchroot: shell-script to prepare the chroot area by
336         copying over all the necessary libraries so they can be found
337
338 2001-06-20  Kevin L. Mitchell  <klmitch@mit.edu>
339
340         * INSTALL: partial update of INSTALL for u2.10.11 release...
341
342 2001-06-14  Kevin L. Mitchell  <klmitch@mit.edu>
343
344         * ircd/table_gen.c (makeTables): finally got tired of the
345         "overflow in implicit conversion" warning, so just got rid of it
346         by explicitly casting UCHAR_MAX to a (default) char; diffs show no
347         differences in the tables generated
348
349 2001-06-11  Kevin L. Mitchell  <klmitch@mit.edu>
350
351         * ircd/send.c (sendcmdto_match_butone): don't let the server crash
352         if a client is in the STAT_CONNECTING status
353
354 2001-06-10  Kevin L. Mitchell  <klmitch@mit.edu>
355
356         * ircd/send.c: remove unused vsendcmdto_one(), consolidating it
357         into sendcmdto_one(); define new sendcmdto_prio_one(), which
358         places the message into the priority queue
359
360         * ircd/s_user.c (hunt_server_prio_cmd): definition of
361         hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one()
362         instead of sendcmdto_one()
363
364         * ircd/m_settime.c: use sendcmdto_prio_one() and
365         hunt_server_prio_cmd() to send SETTIME
366
367         * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME
368
369         * include/send.h: removed declaration for unused vsendcmdto_one();
370         added a declaration for sendcmdto_prio_one()
371
372         * include/s_user.h: declare hunt_server_prio_cmd(), which calls
373         sendcmdto_prio_one()
374
375         * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be
376         put in the server's priority queue, too...
377
378         * ircd/ircd.c: don't check LPATH for accessibility at all
379
380 2001-06-08  Kevin L. Mitchell  <klmitch@mit.edu>
381
382         * ircd/s_serv.c (server_estab): send a +h flag in our SERVER
383         command if we're configured as a hub; send individual server flags
384         in SERVER commands
385
386         * ircd/s_bsd.c (completed_connection): send a +h flag in our
387         SERVER command if we're configured as a hub
388
389         * ircd/m_server.c: implement parv[7] as a mode-like string; +h
390         sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE
391         flag for a server; +hs sets both flags; also modify CMD_SERVER
392         format string to send the flags
393
394         * include/client.h: define two new flags, FLAGS_HUB and
395         FLAGS_SERVICE to mark services and hubs as such; define testing
396         macros, setting macros
397
398         * ircd/s_user.c: remove deprecated struct Gline* argument to
399         register_user(); remove GLINE rebroadcast; do not send GLINE
400         acknowledgement parameter to NICK; do not look for GLINE
401         acknowledgement parameter to NICK while parsing
402
403         * ircd/s_serv.c (server_estab): remove deprecated struct Jupe*
404         argument to server_estab(); do not send JUPE/GLINE acknowledgement
405         parameters for SERVER or NICK
406
407         * ircd/m_user.c (m_user): remove deprecated argument to
408         register_user()
409
410         * ircd/m_server.c: remove deprecated argument to server_estab();
411         remove documentation comment regarding JUPE acknowledgement
412         parameter to SERVER; remove JUPE rebroadcast
413
414         * ircd/m_pong.c (mr_pong): remove deprecated argument to
415         register_user()
416
417         * ircd/m_nick.c: remove documentation comment regarding GLINE
418         acknowledgement parameter to NICK
419
420         * ircd/jupe.c: use user's real name in JUPE server notices if
421         HEAD_IN_SAND_SNOTICES is defined
422
423         * ircd/ircd.c: remove deprecated chroot() code; remove deprecated
424         setuid code; correct ancient DEBUG vs DEBUGMODE typo
425
426         * ircd/gline.c: use user's real name in GLINE server notices if
427         HEAD_IN_SAND_SNOTICES is defined
428
429         * ircd/channel.c (modebuf_flush_int): make apparent source be
430         local server, not oper's server; use user's real name in hack
431         notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined
432
433         * include/s_user.h: remove struct Gline pre-declaration; remove
434         deprecated struct Gline argument from register_user()
435
436         * include/s_serv.h: remove struct Jupe pre-declaration; remove
437         deprecated struct Jupe argument from server_estab()
438
439 2001-06-07  Kevin L. Mitchell  <klmitch@mit.edu>
440
441         * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the
442         changes required to control remote stats
443
444         * ircd/s_numeric.c (do_numeric): rewrite numeric origins if
445         recipient is not an operator and HEAD_IN_SAND_REWRITE is defined
446         [forward-port from pl15]
447
448         * ircd/m_whowas.c (m_whowas): report server name only if requester
449         is an operator [forward-port from pl15]
450
451         * ircd/m_whois.c (do_whois): /whois <mynick> now correctly reports
452         my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument
453         and obtain the report from the user's server [forward-port from
454         pl15]
455
456         * ircd/m_who.c: add missing include for ircd_policy.h
457         [forward-port from pl15]
458
459         * ircd/m_version.c (m_version): require oper access for remote
460         /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
461
462         * ircd/m_time.c (m_time): require oper access for remote /time if
463         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
464
465         * ircd/m_stats.c: pass extra argument to hunt_stats(); correct
466         missing semicolon [forward-port from pl15]
467
468         * ircd/m_nick.c (ms_nick): hide the origin of certain collision
469         kills [forward-port from pl15]
470
471         * ircd/m_motd.c (m_motd): require oper access for remote /motd if
472         HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
473
474         * ircd/m_lusers.c (m_lusers): require oper access for remote
475         /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
476
477         * ircd/m_burst.c (ms_burst): server-added bans are stored using
478         local server name, to hide remote server names; modes also are to
479         originate from the local server [forward-port from pl15]
480
481         * ircd/m_admin.c (m_admin): require oper access for remote /admin
482         if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15]
483
484         * ircd/channel.c (add_banid): if a server is adding a ban, use my
485         server name to hide the remote server's name [forward-port from
486         pl15]
487
488         * ircd/Makefile.in: ran make depend
489
490         * include/s_stats.h: hunt_stats() has to have an extra argument to
491         support the forward-port from pl15
492
493         * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add
494         HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15]
495
496         * ircd/engine_poll.c (engine_loop): remove bogus assert that I
497         forgot to check in the events branch
498
499 2001-06-06  Kevin L. Mitchell  <klmitch@mit.edu>
500
501         * ircd/res.c (init_resolver): don't start DNS expires with a 0
502         relative timeout--if the server starts slow, timeouts could be
503         messy...there's probably a better solution, but this'll do for now
504
505         * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris
506         headers very well; include stropts.h; define an os_set_tos()
507
508         * ircd/os_generic.c (os_set_tos): added an os_set_tos() for
509         os_generic.c
510
511         * ircd/ircd.c: if there are no C-lines, we don't want to have a
512         timer that expires at the absolute time of 0--it kinda blocks all
513         the other timers!
514
515         * ircd/engine_devpoll.c: some includes for open(); declare errcode
516         and codesize in engine_loop()
517
518         * ircd/list.c (free_client): remove bogus check on timer active
519         flag
520
521         * ircd/s_auth.c: pull out destruction code in
522         auth_timeout_request() into an externally-visible
523         destroy_auth_request(); manage cli_auth pointer in client
524         structure; use it for an extra assertion check
525
526         * ircd/list.c: include s_auth.h for destroy_auth_request(); add
527         debugging notices to show flow when deallocating
528         connections/clients; call destroy_auth_request() when free'ing a
529         client that has an auth outstanding; don't free the connection if
530         the process timer is unmarked but still active
531
532         * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator
533         and reset it before calling the event handler for an ET_DESTROY
534         event
535
536         * include/s_auth.h (destroy_auth_request): declare
537         destroy_auth_request(), which can be used to destroy an
538         outstanding auth request if a client socket goes away before the
539         auth exchange is completed
540
541         * include/ircd_events.h: add an active flag to keep track of
542         whether or not particular generators are active, for the
543         convenience of functions using the API
544
545         * include/client.h: add a pointer for auth requests to struct
546         Connection so we can kill outstanding auth requests if a client
547         socket closes unexpectedly
548
549         * ircd/s_bsd.c: cli_connect() could become 0 during the course of
550         the sock or timer callback; take that into account in the assert
551
552         * ircd/list.c: add magic number checking and setting--magic
553         numbers are zero'd on frees to detect double-frees; add back
554         setting of cli_from() to 0 to break the back-link from the struct
555         Connection (duh)
556
557         * ircd/ircd.c: set me's magic number correctly
558
559         * include/client.h: define magic numbers and accessor/verifier
560         macros
561
562         * ircd/list.c: assert that dealloc_client() is called with
563         cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling
564         dealloc_client(); don't mess with cli_from(cptr)
565
566         * ircd/s_bsd.c: only attempt to dealloc a connection if the
567         associated client has already been destroyed, or at least delinked
568
569 2001-06-05  Kevin L. Mitchell  <klmitch@mit.edu>
570
571         * ircd/list.c (free_client): only try to delete the socket when
572         the fd hasn't already been closed, avoiding a double-free
573
574         * ircd/list.c (free_connection): make sure the client is really
575         gone before doing away with the connection
576
577         * ircd/s_bsd.c: record that socket has been added in con_freeflag
578         field; queue a socket_del() as soon as the socket is close()'d;
579         use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear
580         FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(),
581         then dealloc the connection if safe; mark socket as dead when
582         there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry
583         to client_timer_callback(); dealloc connection if safe upon
584         ET_DESTROY event in client_timer_callback()
585
586         * ircd/list.c: use con_freeflag instead of con_timer; only dealloc
587         the connection if both socket and timer have been destroyed;
588         destroy both socket and timer explicitly and carefully
589
590         * include/client.h: replace the con_timer field with a
591         con_freeflag field, to indicate what still needs freeing; define
592         the freeflags
593
594         * ircd/engine_select.c (engine_loop): duh...sockList[i] could
595         become 0
596
597         * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could
598         become 0
599
600         * ircd/s_bsd.c: add some extra assertions to try to track down a
601         corruption problem
602
603         * ircd/engine_select.c (engine_loop): add an extra assert to try
604         to track down a corruption problem
605
606         * ircd/engine_poll.c (engine_loop): add an extra assert to try to
607         track down a corruption problem
608
609         * ircd/engine_kqueue.c (engine_loop): add an extra assert to try
610         to track down a corruption problem
611
612         * ircd/engine_devpoll.c (engine_loop): skip slots that have become
613         empty during processing; add an extra assert to try to track down
614         a corruption problem
615
616         * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted
617         entries
618
619 2001-06-04  Kevin L. Mitchell  <klmitch@mit.edu>
620
621         * ircd/s_bsd.c (client_sock_callback): client is no longer
622         blocked, so we must mark it as unblocked
623
624         * ircd/engine_select.c: add Debug() calls galore; add handling for
625         SS_NOTSOCK; use a dummy sock variable to keep things from
626         disappearing on us; correct timeout calculation; update nfds for
627         efficiency
628
629         * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE);
630         remove a spurious "if (sock)" which will always be true; update
631         nfds for efficiency
632
633         * ircd/engine_kqueue.c: add Debug() calls galore; add handling for
634         SS_NOTSOCK (just in case); correct timeout calculation
635
636         * ircd/engine_devpoll.c: add Debug() calls galore; add handling
637         for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling
638
639         * include/s_debug.h (DEBUG_ENGINE): add new debugging level;
640         pretty-indent numbers
641
642         * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK
643         case--it's not a socket; the check for writability is most likely
644         not needed, but present for completeness
645
646 2001-05-24  Kevin L. Mitchell  <klmitch@mit.edu>
647
648         * ircd/s_bsd.c: add Debug messages; call read_packet() even if the
649         no newline flag is set; call read_packet() when the timer expires,
650         regardless of what's in the buffer--read_packet() should be able
651         to deal properly
652
653         * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE
654         sent to clients to include the client nickname (duh)
655
656         * ircd/ircd_events.c: don't destroy a timer if it's already marked
657         for destruction; replace a missing ! in socket_del()
658
659         * ircd/engine_poll.c (engine_loop): reference a temporary variable
660         so we don't have to worry about sockList[i] going away
661
662         * ircd/s_bsd.c (client_sock_callback): add Debug messages
663
664         * ircd/s_auth.c: add Debug messages all over the place
665
666         * ircd/ircd_events.c: add and edit some Debug messages; add a list
667         of routines to convert some of the enums and flags from numbers
668         into human-readable strings for the Debug messages
669
670         * ircd/engine_poll.c: hack some Debug messages to use the new name
671         conversion routines in ircd_events.c; add an extra assert for a
672         condition that shouldn't ever happen; apparently recv() can return
673         EAGAIN when poll() returns readable--I wonder why...
674
675         * include/ircd_events.h: declare some helper routines under
676         DEBUGMODE
677
678 2001-05-23  Kevin L. Mitchell  <klmitch@mit.edu>
679
680         * ircd/s_bsd.c (client_sock_callback): add an extra assertion
681         check
682
683         * ircd/s_auth.c: add more Debug messages
684
685         * ircd/list.c (make_client): add an extra assertion check
686
687         * ircd/ircd_events.c (socket_events): don't call the engine events
688         changer if we haven't actually made any changes to the event mask
689
690         * ircd/uping.c: add some Debug messages
691
692         * ircd/s_stats.c: document new /STATS e
693
694         * ircd/s_err.c: add RPL_STATSENGINE to report the engine name
695
696         * ircd/s_bsd.c: remove static client_timer variable; in
697         read_packet(), if there's still data in the client's recvQ after
698         parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case
699         of client_sock_callback to handle destroying the timer properly;
700         rewrote client_timer_callback from scratch to be called on an
701         individual client
702
703         * ircd/m_stats.c: add /STATS e to report the engine name
704
705         * ircd/list.c: deal with con_timer field in struct Connection
706         properly; correct a core-level bug in remove_client_from_list--if
707         the client is the only one in the list, we try to update
708         GlobalClientList's cli_prev pointer--not good
709
710         * ircd/ircd.c: remove call to init_client_timer()
711
712         * ircd/engine_poll.c: made Debug messages more uniform by
713         prepending "poll:" to them all; corrected an off-by-one error that
714         caused poll_count to be 1 less than the actual count and removed
715         my work-around; added Debug messages to indicate which socket is
716         being checked and what the results are
717
718         * ircd/Makefile.in: ran a make depend
719
720         * include/s_bsd.h: remove init_client_timer(), since we're doing
721         it differently now
722
723         * include/numeric.h (RPL_STATSENGINE): a stats reply to report the
724         engine name
725
726         * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e
727         reports for non-opers
728
729         * include/client.h: add con_timer and con_proc fields to struct
730         Connection and define accessor macros--con_timer marks that
731         con_proc contains a valid timer, and con_proc is used to pace user
732         data
733
734         * ircd/s_bsd.c (close_connection): let free_client() destroy the
735         socket
736
737         * ircd/s_auth.c (start_auth): add a Debug call to indicate when
738         auth has begun on a client
739
740         * ircd/ircd_events.c: ensure that event_execute() is called with a
741         non-NULL event; modify event_add() macro to properly zero list
742         bits; modify gen_dequeue() to not try to clip it out of a list
743         it's already been clipped out of; change signal socket
744         initialization to use state SS_NOTSOCK; permit timeout values of
745         0 in add_timer(); add many Debug calls; change socket_del() and
746         timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in
747         timer_run() instead of GEN_DESTROY so that event_generate() will
748         pass on the events; remove the switch and replace with a simpler
749         if-then-else tree in timer_run(); don't allow destroyed sockets to
750         be destroyed again, nor their states or event masks to be changed
751
752         * ircd/ircd.c: initialize "running" to 1
753
754         * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug
755         messages all over the place; fix a counting problem in
756         engine_add(); turn wait into a signed integer and set it to -1
757         only if timer_next() returns 0; adjust wait time to be relative;
758         don't call gen_ref_dec() if socket disappeared while we were
759         processing it
760
761         * include/ircd_events.h: the pipe for signals is not a socket, so
762         we must mark it as such--added SS_NOTSOCK for that special socket;
763         events won't be generated if GEN_DESTROY is on, so add GEN_MARKED
764         for the benefit of timer_run()
765
766         * configure.in: add --enable-pedantic and --enable-warnings to
767         turn on (and off) -Wall -pedantic in CFLAGS
768
769 2001-05-21  Kevin L. Mitchell  <klmitch@mit.edu>
770
771         * ircd/s_conf.c: change "s_addr" element accesses to "address"
772         element accesses
773
774         * include/s_conf.h: on some systems, "s_addr" is a macro; use
775         "address" instead
776
777 2001-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
778
779         * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns
780         void in this file; add a missing semi-colon; declare errcode,
781         codesize
782
783         * ircd/uping.c (uping_sender_callback): it's pptr, not uping
784
785         * ircd/s_user.c (register_user): comment out spurious reference to
786         nextping
787
788         * ircd/s_serv.c (server_estab): comment out spurious reference to
789         nextping
790
791         * ircd/s_conf.c (read_configuration_file): comment out spurious
792         reference to nextping and nextconnect
793
794         * ircd/s_bsd.c: comment out some spurious references to formerly
795         global (now non-existant) variables; correct a couple of typos
796
797         * ircd/s_auth.c: pre-declare some functions referenced in the
798         callback; correct a typo
799
800         * ircd/res.c (start_resolver): pass errno value of ENFILE
801
802         * ircd/listener.c (accept_connection): you know your API is messed
803         up when...variables that shouldn't have been global crop up in
804         other files
805
806         * ircd/list.c (free_client): substitution of == for =
807
808         * ircd/ircd_signal.c: include assert.h for assertion checking;
809         check ev_data() to find out what signal generated event
810
811         * ircd/ircd_events.c: some references to the variable "timer"
812         should have been references to the variable "ptr"
813
814         * ircd/engine_select.c: it's struct fd_set, not struct fdset;
815         ev_timer(ev) is already a timer pointer; declare codesize as a
816         size_t to correct signedness issue; use timer_next(), not
817         time_next()
818
819         * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer;
820         select fd out of struct pollfd in assertion checking; declare
821         errcode and codesize; use timer_next(), not time_next()
822
823         * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer;
824         use function timer_next(), not time_next()
825
826         * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer;
827         use function timer_next(), not time_next()
828
829         * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of
830         compiled sources; do make depend
831
832         * include/list.h: pre-declare struct Connection
833
834         * include/ircd_events.h (gen_ref_inc): cast to the right structure
835         name
836
837         * include/s_auth.h: duh; missing */
838
839 2001-05-10  Kevin L. Mitchell  <klmitch@mit.edu>
840
841         * ircd/send.c: update write events status after sending data or
842         accumulating data to be sent
843
844         * ircd/m_list.c (m_list): update write events status after
845         canceling a running /list
846
847         * ircd/channel.c (list_next_channels): update write events status
848         after listing a few channels
849
850         * ircd/s_bsd.c: extensive changes to update to new events model;
851         remove on_write_unblocked() and the two implementations of
852         read_message(), which have been deprecated by this change
853
854         * ircd/s_auth.c: set the socket events we're interested in for
855         clients; simplify some logic that does the connect_nonb followed
856         by the socket_add
857
858         * ircd/list.c: define free_connection() to free a connection
859         that's become freeable once the struct Socket has been
860         deallocated; fix up free_client() to take this new behavior into
861         account
862
863         * ircd/ircd.c: call init_client_timer()
864
865         * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable
866         to register connect-in-progress with events system; declare
867         init_client_timer() (HACK!) to preserve rate-limiting behavior
868
869         * include/list.h: declare new free_connection()
870
871         * include/client.h: add a struct Socket to struct Connection
872
873 2001-05-09  Kevin L. Mitchell  <klmitch@mit.edu>
874
875         * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and
876         SIGTERM into event callbacks; perform the actions in the
877         callbacks, since they're not called in the context of the signal;
878         set up the signal callbacks in the event engine
879
880         * ircd/ircd_events.c (signal_callback): we're supposed to look for
881         a specific signal; don't generate an event if there is no signal
882         structure for it
883
884         * ircd/ircd.c: nuke nextconnect and nextping and replace them with
885         connect_timer and ping_timer; massage try_connections() and
886         check_pings() into timer callbacks that re-add themselves at the
887         right time; remove ircd.c's "event_loop()"; initialize the event
888         system and the connect_timer and ping_timer
889
890         * ircd/uping.c: correct a couple more typos
891
892         * ircd/s_auth.c: rework to use new events system
893
894         * ircd/os_solaris.c (os_connect_nonb): update to new interface
895
896         * ircd/os_openbsd.c (os_connect_nonb): update to new interface
897
898         * ircd/os_linux.c (os_connect_nonb): update to new interface
899
900         * ircd/os_generic.c (os_connect_nonb): update to new interface
901
902         * ircd/os_bsd.c (os_connect_nonb): update to new interface
903
904         * include/s_auth.h: remove deprecated members of struct
905         AuthRequest, replacing them with struct Socket and struct Timer
906         structures; add flags to indicate when these structures have been
907         released by the event system; remove the deprecated
908         timeout_auth_queries()
909
910         * include/ircd_osdep.h (os_connect_nonb): connect could complete
911         immediately, so change the interface to handle that possibility
912
913         * ircd/uping.c (uping_server): noticed and corrected a typo
914
915         * ircd/listener.c: set up to use ircd_event's struct Socket by
916         adding an socket_add() call to inetport(), replacing
917         free_listener() with socket_del() in close_listener(), and
918         reworking accept_connection to be called as the callback
919
920         * ircd/ircd.c: add a call to IPcheck_init()
921
922         * ircd/IPcheck.c: remove IPcheck_expire(); rework
923         ip_registry_expire() to be called from a timer; write
924         IPcheck_init() to set up the expiration timer (hard-coded for a
925         60-second expiration time)
926
927         * include/listener.h: add a struct Socket to the struct Listener;
928         remove accept_connection()
929
930         * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire()
931
932 2001-05-08  Kevin L. Mitchell  <klmitch@mit.edu>
933
934         * ircd/ircd_events.c: include config.h; use USE_KQUEUE and
935         USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H
936
937         * ircd/engine_select.c: include config.h; set FD_SETSIZE to
938         MAXCONNECTIONS, not IRCD_FD_SETSIZE...
939
940         * ircd/engine_poll.c: include config.h
941
942         * ircd/engine_kqueue.c: include config.h
943
944         * ircd/engine_devpoll.c: include config.h
945
946         * ircd/Makefile.in: include engine sources in compilation and make
947         depend steps
948
949         * configure.in: add checks for enabling the /dev/poll- and
950         kqueue-based engines
951
952         * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE
953
954         * ircd/Makefile.in: work in the engine sources
955
956 2001-05-07  Kevin L. Mitchell  <klmitch@mit.edu>
957
958         * ircd/m_settime.c: include ircd_snprintf.h
959
960         * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting
961         parens around a construct that had both || and &&
962
963         * ircd/chkconf.c: #include "config.h" to get some important
964         definitions
965
966         * ircd/Makefile.in: revamp ircd makefile for new build system
967
968         * doc/Makefile.in: revamp doc makefile for new build system
969
970         * config/*: Removed old build system files
971
972         * stamp-h.in: a stamp file
973
974         * install-sh: install-sh for new build system
975
976         * configure.in: configure.in for new build system
977
978         * configure: configure script for new build system (built by
979         autoconf)
980
981         * config.sub: config.sub for new build system
982
983         * config.h.in: config.h.in for new build system (built by
984         autoheader)
985
986         * config.guess: config.guess for new build system
987
988         * aclocal.m4: aclocal.m4 for new build system (built by aclocal
989         1.4)
990
991         * acinclude.m4: aclocal.m4 macros for new build system
992
993         * acconfig.h: config.h skeleton for new build system
994
995         * Makefile.in: modify for new build system
996
997 2001-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
998
999         * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT
1000
1001         * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT
1002
1003         * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT
1004
1005 2001-05-01  Perry Lorier       <Isomer@coders.net>
1006         * doc/iauth.doc: Protocol for iauth server. (from hybrid).
1007         * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock
1008                 when you have far far too many sockets in use.
1009         * {include,ircd}/iauth.c: A start on iauth support.
1010
1011 2001-05-01  Perry Lorier       <Isomer@coders.net>
1012         * ircd/s_err.c: Suggested wording change.
1013         * ircd/s_user.c: Users aren't target limited against +k users.
1014         * ircd/chkconf.c: Made it compile again, who knows if it works, but
1015                 now I can at least make install
1016         * various: Cleanups on m_*.c files.
1017
1018
1019 2001-04-23  Kevin L. Mitchell  <klmitch@mit.edu>
1020
1021         * ircd/s_misc.c (exit_client): make netsplit server notice say the
1022         right thing
1023
1024         * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS
1025         change to make Khaled happy...
1026
1027         * ircd/m_whois.c (do_whois): pull-up of m_whois() fix
1028         (do_whois): duh...
1029
1030 2001-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
1031
1032         * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's
1033         turned up no more bugs
1034
1035         * ircd/ircd.c: use /* */ comments instead of // comments--all the
1036         world's not gcc :(
1037
1038         * ircd/s_conf.c (conf_add_server): use /* */ comments instead of
1039         // comments--all the world's not gcc :(
1040
1041         * ircd/runmalloc.c: finally garbage-collect unused file
1042
1043         * include/runmalloc.h: finally garbage-collect unused file
1044
1045         * ircd/<multiple files>: addition of '#include "config.h"' before
1046         all other includes in most .c files
1047
1048         * include/<multiple files>: remove includes of config.h, which are
1049         now going into the raw .c files
1050
1051 2001-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
1052
1053         * ircd/m_whois.c (do_whois): display proper server name if the
1054         user is looking up himself
1055
1056         * ircd/m_who.c (m_who): disable match by servername or display of
1057         server names by non-opers
1058
1059         * include/ircd_policy.h: add define for
1060         HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15
1061         of CFV 165
1062
1063 2001-04-18  Kevin L. Mitchell  <klmitch@mit.edu>
1064
1065         * ircd/s_conf.c: keep the $R in memory so we can see it clearly
1066         when we do a /stats k
1067
1068         * ircd/s_user.c (set_user_mode): pull-up of changes to prevent
1069         users from turning on +s and +g
1070
1071         * ircd/s_misc.c (exit_client): pull-up of changes to turn off
1072         net.split notice
1073
1074         * ircd/parse.c: pull-up of changes to disable /trace, /links, and
1075         /map for users
1076
1077         * ircd/m_whois.c (do_whois): pull-up of server name masking for
1078         /whois
1079
1080         * ircd/m_user.c (m_user): removal of umode and snomask defaulting
1081         functions, pull-up
1082
1083         * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff
1084
1085         * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect()
1086
1087         * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect()
1088
1089         * ircd/channel.c (channel_modes): pull-up of channel key display
1090         as *
1091
1092         * include/ircd_policy.h: pull-up of ircd_policy.h
1093
1094         * include/client.h: pull-up of Set/ClearServNotice()
1095
1096         * ircd/gline.c (do_gline): report client name in G-line message
1097         (pull-up)
1098
1099         * ircd/s_user.c (register_user): pull-up--show IP address in some
1100         server notices dealing only with users; report which connection
1101         class has filled up
1102
1103         * ircd/s_stats.c (report_deny_list): use conf->flags &
1104         DENY_FLAGS_IP insteaf of conf->ip_kill
1105
1106         * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP
1107         insteaf of conf->ip_kill
1108
1109         * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of
1110         K-line by real name
1111
1112         * include/s_conf.h: use a flags field in struct DenyConf; define
1113         DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for
1114         pull-up of K-line by real name
1115
1116         * ircd/m_trace.c: pull-up of IP show for user connections
1117
1118         * doc/example.conf: pull-up of the realname K-line documentation
1119
1120         * ircd/ircd.c: forward port of pid file advisory locking mechanism
1121
1122 2001-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
1123
1124         * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to
1125         all servers, rather than to only servers that have +w/+g/whatever
1126         users on them; among other things, this removes that atrocity
1127         known as sentalong[] from this function
1128
1129         * ircd/m_admin.c: must include ircd.h to declare "me"; must
1130         include hash.h to declare FindUser()
1131
1132         * ircd/m_wallusers.c: implementation of WALLUSERS
1133
1134         * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers
1135
1136         * ircd/m_wallops.c: only send WALLOPS to opers
1137
1138         * ircd/parse.c: add WALLUSERS command to parser table
1139
1140         * include/handlers.h: declare wallusers handlers
1141
1142         * include/msg.h: add WALLUSERS command
1143
1144         * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with
1145         flag, send only to appropriate opers
1146
1147 2001-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
1148
1149         * ircd/uping.c: refit to use the new events interface
1150
1151         * ircd/res.c: refit to use the new events interface
1152
1153         * ircd/ircd_events.c: create timer_chg(), which permits a
1154         (non-periodic) timer's expire time to be modified; change the
1155         logic in timer_run() so that timers that were re-added while the
1156         event was being processed will not be destroyed prematurely
1157
1158         * include/uping.h: include the events header, declare some extra
1159         fields in struct UPing, remove timeout value, and define some
1160         flags for marking which cleanup items have yet to be done
1161
1162         * include/ircd_events.h: add a prototype for timer_chg() to change
1163         the expire time of a running timer
1164
1165 2001-03-13 Joseph Bongaarts <foxxe@wtfs.net>
1166         * ircd/os_openbsd.c: Tweaked the openbsd hack a bit.
1167         
1168 2001-03-07  Joseph Bongaarts  <foxxe@wtfs.net>
1169
1170         * config/configure.in: Add check for OpenBSD
1171
1172         * ircd/os_openbsd.c: Add seperate os dep file for openbsd which
1173         differs from generic BSD, particularly in its handling of
1174         _XOPEN_SOURCE.
1175         
1176 2001-02-12  Kevin L. Mitchell  <klmitch@mit.edu>
1177
1178         * ircd/m_gline.c (ms_gline): propagate a G-line that happened to
1179         have been added by a U-lined server, rather than going through the
1180         activate/deactivate logic; propagate G-line removals by U-lined
1181         servers as well
1182
1183         * ircd/gline.c: rename propagate_gline() to gline_propagate();
1184         make gline_propagate() return an int 0 (convenience return); only
1185         update lastmod in gline_activate() and gline_deactivate() if the
1186         current lastmod is non-zero, since 0 lastmod is our flag of a
1187         U-lined server having added a G-line
1188
1189         * include/gline.h (gline_propagate): exporting the G-line
1190         propagation function
1191
1192         * ircd/m_list.c (m_list): duh; permit explicit channel name
1193         specification only when /list gets two arguments ("Kev
1194         #wasteland") rather than when /list gets more than two
1195         arguments--nice braino
1196
1197 2001-01-29  Thomas Helvey <twhelvey1@home.com>
1198
1199         * ircd/ircd_reply.c (need_more_params): fix bug that allowed
1200         unregistered clients to spam opers with protocol violation
1201         messages. Note: the bugfix may have eliminated some useful
1202         protocol violation messages.
1203         Please send protocol violation messages explicitly from the
1204         functions they are discovered in, you have much better context
1205         for the error there and it helps to document the behavior of the
1206         server. This was also a design bug in that it violated the
1207         "A function should do one thing" heuristic. Patching this one
1208         would have resulted in a continuous spawning of other bugs over
1209         the next 3 years, so I killed it. Check around for stuff this
1210         broke and readd the calls to protocol_violation in the functions
1211         that need to send the message.
1212
1213 2001-01-29  Kevin L. Mitchell  <klmitch@mit.edu>
1214
1215         * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban
1216         already existed, then the logic would (attempt to) skip it, but
1217         would not free the ban string; now the ban string is free'd and
1218         the ban count is decremented, releasing the ban for use
1219
1220         * ircd/s_user.c: make send_umode_out() take a prop argument
1221         instead of testing for the PRIV_PROPAGATE privilege itself; fix
1222         set_umode() to use this new argument, calculating it before
1223         calculating the new privileges for a -o'd user
1224
1225         * ircd/m_oper.c (m_oper): pass the new prop argument to
1226         send_umode_out()
1227
1228         * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans
1229         that we're not actually going to add because they already exist;
1230         test that particular bit before adding to the linked list
1231
1232         * include/s_user.h: add a prop argument to send_umode_out() to
1233         indicate whether or not to propagate the user mode
1234
1235 2001-01-24  Kevin L. Mitchell  <klmitch@mit.edu>
1236
1237         * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that
1238         it would have written; upper-bound the number to prevent overflows
1239         by proxy; also, tune buffer size given to ircd_vsnprintf() to take
1240         into account the fact that ircd_vsnprintf() already takes the
1241         terminal \0 into account
1242
1243 2001-01-22  Kevin L. Mitchell  <klmitch@mit.edu>
1244
1245         * ircd/msgq.c: add an incredibly ugly hack to attempt to track
1246         down an apparent buffer overflow; remove msgq_map(), since it's no
1247         longer used anywhere; slight tweaks to prevent off-by-one errors,
1248         but these can't explain the problems we've seen
1249
1250         * include/msgq.h: remove msgq_map(), since it's no longer used
1251         anywhere
1252
1253 2001-01-18  Kevin L. Mitchell  <klmitch@mit.edu>
1254
1255         * ircd/s_user.c (set_nick_name): call client_set_privs() after
1256         parsing user modes
1257
1258 2001-01-17  Kevin L. Mitchell  <klmitch@mit.edu>
1259
1260         * ircd/s_bsd.c (read_message): fix a typo in the select version of
1261         read_message()
1262
1263         * ircd/whowas.c (whowas_free): MyFree() is a macro that expects
1264         its argument to be an lvalue, which means we can't use
1265         whowas_clean()'s handy-dandy "return ww" feature
1266
1267         * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops...
1268
1269 2001-01-16  Kevin L. Mitchell  <klmitch@mit.edu>
1270
1271         * ircd/ircd_events.c (timer_run): it's possible that the timer got
1272         deleted during the callback processing, so don't go to the bother
1273         of requeuing it if the destroy flag is set
1274
1275         * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE
1276         out of config.h if this is a *BSD; include errno.h (oops);
1277         decrement error count after an hour using a timer; use FD_SETSIZE
1278         constant instead of IRCD_FD_SETSIZE constant; fill in event
1279         processing code
1280
1281         * ircd/engine_poll.c: include errno.h (oops); decrement error
1282         count after an hour using a timer; fill in event processing code
1283
1284         * ircd/engine_kqueue.c: include errno.h (oops); decrement error
1285         count after an hour using a timer; assert events filter is either
1286         EVFILT_READ or EVFILT_WRITE; fill in event processing code
1287
1288         * ircd/engine_devpoll.c: include errno.h (oops); decrement error
1289         count after an hour using a timer; fill in event processing code
1290
1291 2001-01-15  Kevin L. Mitchell  <klmitch@mit.edu>
1292
1293         * ircd/client.c: fixed feattab; basically, when I changed features
1294         to use small integers specifying bit positions, instead of the
1295         bits themselves, I forgot to update feattab to not | these
1296         privileges together; also fixed a bug in the antiprivs masking
1297         loop in client_set_privs()--last index wouldn't get parsed
1298
1299 2001-01-11  Kevin L. Mitchell  <klmitch@mit.edu>
1300
1301         * ircd/ircd_events.c: call event_generate() with new data
1302         argument; make it set that field in struct Event; make
1303         socket_add() return the value of the eng_add callback
1304
1305         * ircd/engine_select.c: make engine_add() return a
1306         successful/unsuccessful status; add bounds-checking outside of an
1307         assert; use accessor macros; use log_write(), not the deprecated
1308         ircd_log(); add an assert to engine_loop() to double-check for
1309         data structure corruption
1310
1311         * ircd/engine_poll.c: make engine_add() return a
1312         successful/unsuccessful status; add bounds-checking outside of an
1313         assert; use accessor macros; use log_write(), not the deprecated
1314         ircd_log(); add an assert to engine_loop() to double-check for
1315         data structure corruption
1316
1317         * ircd/engine_kqueue.c: implementation of an engine for kqueue()
1318
1319         * ircd/engine_devpoll.c: implementation of an engine for /dev/poll
1320
1321         * include/ircd_events.h: define some accessor macros; add ev_data
1322         to struct Event for certain important data--errno values, for
1323         instance; make EngineAdd callback tell us if it was successful or
1324         not; add extra argument to event_generate(); make socket_add()
1325         return the status from EngineAdd
1326
1327 2001-01-10  Kevin L. Mitchell  <klmitch@mit.edu>
1328
1329         * ircd/ircd_events.c: pass initializer information about how many
1330         total _filedescriptors_ may be opened at once
1331
1332         * ircd/ircd.c: use exported "running" instead of unexported
1333         thisServer.running
1334
1335         * ircd/engine_select.c: implementation of an event engine based on
1336         select()
1337
1338         * ircd/engine_poll.c: implementation of an event engine based on
1339         poll()
1340
1341         * include/ircd_events.h: pass the engine initializer an integer
1342         specifing how many _filedescriptors_ may be opened at once
1343
1344         * include/ircd.h: running has to be exported for the engine_*
1345         event loops
1346
1347 2001-01-09  Kevin L. Mitchell  <klmitch@mit.edu>
1348
1349         * ircd/ircd_events.c: include some needed headers; add some
1350         comments; make evEngines[] const; bundle sig_sock and sig_fd into
1351         a struct named sigInfo; rework struct evInfo to have a queue of
1352         _generators_, and only when threaded; added a gen_init() function
1353         to centralize generator initialization; fix various compile-time
1354         errors; rework event_add() for new queueing scheme and checked for
1355         compile-time errors; add casts where needed; spell evEngines[]
1356         correctly; make engine_name() return const char*
1357
1358         * include/ircd_events.h: type EventCallBack depends on struct
1359         Event, so pre-declare it; put _event_ queue into generators, and
1360         only when threaded; give engine data a union to store both ints
1361         and pointers; make engine name a const; fix gen_ref_dec() macro;
1362         make engine_name() return a const char*
1363
1364         * ircd/ircd_events.c: gen_dequeue() is now exported, so move it
1365         down with the non-static functions; modify event_execute() to use
1366         the new gen_ref_dec() to simplify code; make sure event_generate()
1367         does not generate new events for generators marked for destruction
1368
1369         * include/ircd_events.h: the engines, at least, may need to modify
1370         reference counts to keep generators from going away while
1371         something still points at them, so add reference counter
1372         manipulators and export gen_dequeue() for them
1373
1374         * ircd/ircd_events.c: set up the list of engines to try; set up
1375         the signal struct Socket; rename netInfo to evInfo; move static
1376         functions near the beginning of the file; do away with
1377         signal_signal() (since we no longer keep a signal count ourselves)
1378         and call event_generate() directly from signal_callback--also
1379         renamed some functions; allow signal_callback() to read up to
1380         SIGS_PER_SOCK at once from the signal pipe; add event_init() to
1381         initialize the entire event system; add event_loop() to call the
1382         engine's event loop; initialize new struct GenHeader member,
1383         gh_engdata; remove timer_next(); add socket_add() function to add
1384         a socket; add socket_del() to mark a socket for deletion; add
1385         socket_state() to transition a socket between states; add
1386         socket_events() to set what events we're interested in on the
1387         socket; add engine_name() to retrieve event engine's name
1388
1389         * include/ircd_events.h: add engine data field to struct
1390         GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a
1391         note about states vs s_events; remove signal count; fold union
1392         Generator back into struct Event; remove count members from struct
1393         Generators; redefine engine callbacks to not take a struct
1394         Engine*; add explanatory comments to callback definitions; add
1395         some engine callbacks to handle operations; remove struct Engine
1396         flag member--can detect single flag from eng_signal member; add
1397         event_init(), event_loop(), engine_name(), and the socket_*()
1398         functions; make timer_next() a macro to avoid a function call
1399
1400 2001-01-08  Kevin L. Mitchell  <klmitch@mit.edu>
1401
1402         * include/ircd_events.h: rename to ircd_events.h, since it handles
1403         events, not just networking stuff; add signal support; more
1404         structural rearrangement
1405
1406         * ircd/ircd_events.c: rename to ircd_events.c, since it handles
1407         events, not just networking stuff; add signal support; more
1408         structural rearrangement
1409
1410 2001-01-07  Kevin L. Mitchell  <klmitch@mit.edu>
1411
1412         * ircd/ircd_network.c: implement timer API; add reference counts
1413         appropriately
1414
1415         * include/ircd_network.h: firm up some pieces of the interface;
1416         split out members everything has into a separate structure; add
1417         reference counts; add timer API
1418
1419 2001-01-06  Kevin L. Mitchell  <klmitch@mit.edu>
1420
1421         * ircd/ircd_network.c: static data and event manipulation
1422         functions for new event processing system
1423
1424         * include/ircd_network.h: data structures for new event processing
1425         system
1426
1427 2001-01-03  Kevin L. Mitchell  <klmitch@mit.edu>
1428
1429         * ircd/whowas.c: Completely re-did the old allocation scheme by
1430         turning it into a linked list, permitting the
1431         NICKNAMEHISTORYLENGTH feature to be changed on the fly
1432
1433         * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH
1434         feature instead of old #define
1435
1436         * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an
1437         integer feature with a notify callback (whowas_realloc)
1438
1439         * ircd/client.c (client_set_privs): second memset was supposed to
1440         be over antiprivs, not privs; thanks, Chris Behrens
1441         <cbehrens@xo.com> for pointing that out...
1442
1443         * include/whowas.h: new elements for an extra linked list in
1444         struct Whowas; a notify function for feature value changes
1445
1446         * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH
1447
1448         * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature
1449
1450 2001-01-02  Kevin L. Mitchell  <klmitch@mit.edu>
1451
1452         * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER
1453         compile-time option--now in features subsystem
1454
1455         * ircd/motd.c (motd_init): rework motd_init() to be called as the
1456         notify function for MPATH and RPATH features (should probably
1457         split it up a bit, though...)
1458
1459         * ircd/m_privs.c (mo_privs): if called with no parameters, return
1460         privs of the caller, rather than an error
1461
1462         * ircd/m_list.c: pull usage message into its own function; pull
1463         list parameter processing into its own function that does not
1464         modify the contents of the parameter; add list_set_default() to
1465         set the default list parameter (uses the notify hook); rework
1466         m_list() to make use of these functions; removed dead code
1467
1468         * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since
1469         we have no notify handler
1470
1471         * ircd/ircd_features.c: add notify callback for notification of
1472         value changes; give mark callback an int return value to indicate
1473         whether or not to call the notify callback; fix up feature macros
1474         for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite
1475         string handling in feature_set() to deal with def_str being a null
1476         pointer; wrote feature_init() to set up all defaults appropriately
1477
1478         * ircd/ircd.c (main): call feature_init() instead of
1479         feature_mark(), to avoid calling notify functions while setting up
1480         defaults
1481
1482         * ircd/client.c: updated to deal with new privileges structure
1483
1484         * ircd/class.c: updated so init_class() can be called should one
1485         of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or
1486         DEFAULTMAXSENDQLENGTH be changed
1487
1488         * include/ircd_log.h: log_feature_mark() updated to fit with new
1489         API changes
1490
1491         * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and
1492         feature_init() function (found necessary since adding the notify
1493         stuff and notifying motd.c during start-up...before we defined
1494         RPATH!)
1495
1496         * include/client.h: move privs around to enable addition of more
1497         bits if necessary; based on the FD_* macros
1498
1499         * include/channel.h: declare list_set_default (actually located in
1500         m_list.c *blanche*)
1501
1502         * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now
1503         AVBANLEN*MAXSILES) from features subsystem
1504
1505         * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to
1506         anything anymore
1507
1508         * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from
1509         the features subsystem
1510
1511         * ircd/s_auth.c (start_auth): NODNS migrated to the features
1512         subsystem
1513
1514         * ircd/random.c: created random_seed_set() function to set seed
1515         value, along with some stuff to make ircrandom() a little more
1516         random--state preserving, xor of time instead of direct usage,
1517         etc.; it's still a pseudo-random number generator, though, and
1518         hopefully I haven't broken the randomness
1519
1520         * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls
1521
1522         * ircd/m_join.c: use features interface to retrieve
1523         MAXCHANNELSPERUSER
1524
1525         * ircd/ircd_features.c: add NODISP flag for super-secret features;
1526         add a whole bunch of new features migrated over from make config
1527
1528         * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY,
1529         CONNECTTIMEOUT, and TIMESEC
1530
1531         * ircd/client.c (client_get_ping): use features interface to
1532         retrieve PINGFREQUENCY
1533
1534         * ircd/class.c: use features interface to retrieve PINGFREQUENCY,
1535         CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH
1536
1537         * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the
1538         features subsystem, we have to add something explicit
1539
1540         * ircd/channel.c: use features interface to retrieve
1541         KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER;
1542         note that MAXBANLENGTH is now calculated dynamically from MAXBANS
1543         and AVBANLEN
1544
1545         * ircd/Makefile.in: run make depend
1546
1547         * include/supported.h (FEATURESVALUES): update to reference
1548         feature settings
1549
1550         * include/random.h: add prototype for random_seed_set
1551
1552         * include/ircd_features.h: add several more features
1553
1554         * include/channel.h: move MAXBANS and MAXBANLENGTH into feature
1555         subsystem
1556
1557         * config/config-sh.in: feature-ized some more stuff
1558
1559         * include/motd.h: some new elements in motd.h for motd.c changes
1560
1561         * ircd/motd.c: motd_cache() now searches a list of already cached
1562         MOTD files; saves us from having duplicate caches in memory if
1563         there are two identical T-lines for two different sites...
1564
1565 2001-01-02  Perry Lorier <isomer@coders.net>
1566         * ircd/motd.c: don't core if the motd isn't found.  Bug found by
1567         Amarande.
1568
1569 2001-01-02  Perry Lorier <isomer@coders.net>
1570         * ircd/s_err.c: Added third param to 004 - the channel modes that tage params.  Used by hybrid/epic.
1571         * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
1572                 to guppy for noticing, and hektik for providing the fix.
1573         * misc others: Minor cleanups, added more protocol_violations, ripped
1574                 out more P09 stuffs, bit more protocol neg stuff.
1575
1576 2000-12-19  Kevin L. Mitchell  <klmitch@mit.edu>
1577
1578         * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
1579         space (*sigh* stupid clients...)
1580
1581         * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
1582         ircd_features.[ch]
1583
1584         * ircd/s_err.c: get rid of GODMODE conditionals
1585
1586         * ircd/s_debug.c (debug_serveropts): switch to using appropriate
1587         calls into the features subsystem for various serveropts
1588         characters
1589
1590         * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
1591
1592         * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
1593         to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
1594         NOFLOWCONTROL conditional
1595
1596         * ircd/s_auth.c: use features subsystem to determine value of
1597         KILL_IPMISMATCH
1598
1599         * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
1600         features subsystem to determine the setting of IDLE_FROM_MSG
1601
1602         * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
1603
1604         * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
1605         use features subsystem to get motd file names
1606
1607         * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
1608         subsystem
1609
1610         * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
1611         us no good; use features subsystem to figure out if we need to do
1612         HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
1613         the Debug(()) macro instead; get value of RELIABLE_CLOCK from
1614         features subsystem
1615
1616         * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
1617
1618         * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
1619         subsystem
1620
1621         * ircd/m_connect.c: get SERVER_PORT from the features subsystem
1622
1623         * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
1624         from getting marked if they were already set to something...
1625
1626         * ircd/ircd_features.c: add a flag to indicates read-only access;
1627         add several new features that used to be compile-time selected
1628
1629         * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
1630         access to motd files (what the heck?); make sure to initialize the
1631         feature subsystem before trying to write the config file
1632
1633         * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
1634         use feature_bool() to figure out if we're using the FERGUSON
1635         flusher
1636
1637         * ircd/Makefile.in: MPATH and RPATH are now done differently, so
1638         remove the clause that creates empty files of that name; also ran
1639         make depend
1640
1641         * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
1642         there is no easy way to bounds-check it at present
1643
1644         * include/querycmds.h: make sure ircd_features.h is included; use
1645         feature_str(FEAT_DOMAINNAME) in calls to match()
1646
1647         * include/ircd_features.h: many new features that used to be
1648         compile-time selected
1649
1650         * config/config-sh.in: add * to DOMAINNAME; try also using first
1651         argument to search in /etc/resolv.conf; removed many compile-time
1652         options that now can be configured through the features system
1653
1654 2000-12-18  Kevin L. Mitchell  <klmitch@mit.edu>
1655
1656         * doc/api/log.txt: how to use the logging API
1657
1658         * doc/api/features.txt: how to use the features API
1659
1660         * doc/api/api.txt: how to write API documentation
1661
1662         * include/ircd_features.h: rearranged a couple of features for
1663         neatness purposes
1664
1665         * ircd/ircd_features.c: cleaned up the macros some; rearranged
1666         some code to all go into the switch; rearranged a couple of
1667         features for neatness purposes
1668
1669 2000-12-16  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1670         * ircd/os_bsd.c: Added os_set_tos for BSD users.
1671
1672 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
1673
1674         * ircd/ircd_features.c: Isomer almost got it right; you need to
1675         use F_I(), since it's an integer value, not a boolean value.  The
1676         asserts in feature_int would catch you out...  Also made the F_*
1677         macros take flags
1678
1679         * ircd/s_err.c: define RPL_PRIVS reply
1680
1681         * ircd/parse.c: put new PRIVS command into command table
1682
1683         * ircd/m_privs.c (mo_privs): message handler to report operator
1684         privileges
1685
1686         * ircd/ircd_features.c: declare new features OPER_SET and
1687         LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
1688         ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
1689
1690         * ircd/client.c: simplify client_set_privs() with a table that
1691         defines what features to test for; add new client_report_privs()
1692
1693         * ircd/Makefile.in: compile new m_privs.c; run make depend
1694
1695         * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
1696         an operator's privileges
1697
1698         * include/msg.h: define new command: PRIVS
1699
1700         * include/ircd_features.h: create new features OPER_SET and
1701         LOCOP_SET for controlling access to /set
1702
1703         * include/handlers.h (mo_privs): declare message handler for
1704         reporting oper privileges
1705
1706         * include/client.h (client_report_privs): declare function to
1707         report what privileges an oper has
1708
1709         * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
1710         report that a user is an oper if the oper doing the /whois had
1711         PRIV_SEE_OPERS
1712
1713 2000-12-17  Isomer <Isomer@coders.net>
1714         * ircd/listener.c: added support for TOS twiddling as a 'feature'.
1715
1716 2000-12-17  Isomer <Isomer@coders.net>
1717         * ircd/os_linux.c: add TOS stuffs
1718
1719         * ircd/listener.c: add TOS stuffs
1720
1721 2000-12-16  Kevin L. Mitchell  <klmitch@mit.edu>
1722
1723         * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
1724         to indicate a user is an oper
1725
1726         * ircd/s_user.c: clear privileges setting when deopping; don't
1727         propagate +o unless user has PRIV_PROPAGATE privilege
1728
1729         * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
1730         function and replaced how the server option string is generated
1731
1732         * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
1733
1734         * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
1735         not to indicate the user is an operator
1736
1737         * ircd/m_who.c: use HasPriv to determine whether or not a user
1738         should be displayed in the list of opers
1739
1740         * ircd/m_version.c: call debug_serveropts() to get server option
1741         string
1742
1743         * ircd/m_userip.c (userip_formatter): use HasPriv to determine
1744         whether or not to show oper status
1745
1746         * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
1747         whether or not to show oper status
1748
1749         * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
1750         checks with HasPriv check; remove dead code
1751
1752         * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
1753         checks with HasPriv check
1754
1755         * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
1756         use feature_bool to check if disabled
1757
1758         * ircd/m_oper.c (m_oper): set oper priviliges
1759
1760         * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
1761         check
1762
1763         * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
1764         can kill
1765
1766         * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
1767         check
1768
1769         * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
1770         use feature_bool to check if disabled
1771
1772         * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
1773         #ifdef conditional with a HasPriv check
1774
1775         * ircd/m_gline.c (mo_gline): rework permissions checking
1776         structure; use feature_bool to check if any part is disabled
1777
1778         * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
1779         check; remove dead code
1780
1781         * ircd/m_clearmode.c: use feature_bool() to detect if we're
1782         disabled; use HasPriv to figure out what we're permitted to do;
1783         only allow clearmode on moded channels
1784
1785         * ircd/ircd_features.c: define various features; use HasPriv to
1786         verify permissions to set/reset
1787
1788         * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
1789         conditionals
1790
1791         * ircd/client.c (client_set_privs): function to set an oper's
1792         privileges
1793
1794         * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
1795
1796         * include/whocmds.h: deconditionalize several macros and
1797         substitute appropriate calls to HasPriv()
1798
1799         * include/s_debug.h: get rid of global serveropts[]; define new
1800         function debug_serveropts() to build that string on the fly
1801
1802         * include/ircd_features.h: define some features
1803
1804         * include/client.h: add privs member to struct Connection; define
1805         various priviledges
1806
1807         * include/channel.h: no longer using IsOperOnLocalChannel; remove
1808         conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
1809
1810         * doc/Configure.help: remove help information for deprecated
1811         options
1812
1813         * config/config-sh.in: remove certain deprecated options having to
1814         do with what opers can and cannot do--first stage in moving
1815         compile-time constants into the .conf
1816
1817 2000-12-16  Isomer <Isomer@coders.net>
1818         * ircd/parse.c: detect if the prefix is missing and try and recover
1819         instead of coring.
1820
1821 2000-12-15  Kevin L. Mitchell  <klmitch@mit.edu>
1822
1823         * ircd/ircd_log.c: found and fixed some bugs in the debug logging
1824         code that would sometimes result in the log file not being
1825         reopened--which meant that a user could connect and get the
1826         logging output--oops
1827
1828         * ircd/Makefile.in: run make depend...
1829
1830         * ircd/s_stats.c: get rid of report_feature_list()
1831
1832         * ircd/s_err.c: add the 'bad value' error message, shift error
1833         messages over somewhat
1834
1835         * ircd/s_debug.c (debug_init): call log_debug_init with the
1836         use_tty flag
1837
1838         * ircd/s_conf.c (read_configuration_file): unmark features before
1839         reading the config file, then reset unmarked features after
1840         reading the config file
1841
1842         * ircd/m_stats.c: use feature_report() instead of
1843         report_feature_list()
1844
1845         * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
1846         special 'mark' flags and use them; add the stuff needed by the
1847         features API
1848
1849         * ircd/ircd_features.c: rework the features API and add gobs of
1850         comments to try to explain what some of these complex functions
1851         are actually doing
1852
1853         * include/s_stats.h: get rid of report_feature_list(); use
1854         feature_report() instead
1855
1856         * include/numeric.h: added a new error message and shifted old
1857         values over some--this is, after all, an alpha
1858
1859         * include/ircd_log.h: log_debug_init now takes an integer to tell
1860         it if it should be using the tty; added a couple of functions
1861         required by the features API
1862
1863         * include/ircd_features.h: add an enum and some more functions to
1864         flesh out the feature API--it should now be possible to put all
1865         those compile-time constants in the config file!
1866
1867         * ircd/send.c: got the direction of the assert incorrect...
1868
1869         * ircd/send.c: implement the efficiency of flush_connections by
1870         creating a linked list of struct Connection's with queued data;
1871         also get rid of flush_sendq_except and make sure to yank
1872         connections out of the list when their sendQs become empty (notice
1873         the assertion in flush_connections!)
1874
1875         * ircd/s_bsd.c (close_connection): must yank the Connection out of
1876         the sendq list
1877
1878         * ircd/list.c (dealloc_connection): must yank the Connection out
1879         of the sendq list
1880
1881         * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
1882         deprecated flush_sendq_except
1883
1884         * ircd/client.c: define a couple new helper functions for sendq
1885         threading--this will make the flush_connections function in send.c
1886         considerably more efficient by creating a linked list of
1887         Connections that have queued data to send
1888
1889         * include/send.h: remove flush_sendq_except, as it's not used
1890         anymore
1891
1892         * include/client.h: declare a couple new helper functions for the
1893         sendq threading system
1894
1895 2000-12-14  Kevin L. Mitchell  <klmitch@mit.edu>
1896
1897         * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
1898         parse all arguments
1899
1900         * ircd/s_debug.c (count_memory): modify to report for clients and
1901         connections, not local clients and remote clients
1902
1903         * ircd/list.c: fiddle with the client-fiddling functions to take
1904         into account the divorce of struct Connection from struct Client
1905
1906         * ircd/ircd.c: define a struct Connection for me, initialize it,
1907         and link it into the right place (ewww, globals!)
1908
1909         * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
1910         struct Client into struct Client and struct Connection; redefine
1911         local-portion accessor macros to go through struct Client to the
1912         struct Connection; define struct Connection accessor macros
1913
1914 2000-12-13  Kevin L. Mitchell  <klmitch@mit.edu>
1915
1916         * ircd/whowas.c: missed a couple of accesses to a struct Client
1917
1918         * ircd/uping.c: missed a couple of accesses to a struct Client
1919
1920         * ircd/send.c: missed a couple of accesses to a struct Client
1921
1922         * ircd/s_user.c: missed a couple of accesses to a struct Client
1923
1924         * ircd/s_misc.c: missed a couple of accesses to a struct Client
1925
1926         * ircd/s_conf.c: missed a couple of accesses to a struct Client
1927
1928         * ircd/s_bsd.c: missed a couple of accesses to a struct Client
1929
1930         * ircd/s_auth.c: missed a couple of accesses to a struct Client
1931
1932         * ircd/res.c: missed a couple of accesses to a struct Client
1933
1934         * ircd/parse.c: missed a couple of accesses to a struct Client
1935
1936         * ircd/m_whois.c: use new accessor macros for struct Client
1937
1938         * ircd/m_who.c: use new accessor macros for struct Client
1939
1940         * ircd/m_wallchops.c: use new accessor macros for struct Client
1941
1942         * ircd/m_version.c: use new accessor macros for struct Client
1943
1944         * ircd/m_userip.c: use new accessor macros for struct Client
1945
1946         * ircd/m_userhost.c: use new accessor macros for struct Client
1947
1948         * ircd/m_user.c: use new accessor macros for struct Client
1949
1950         * ircd/m_uping.c: use new accessor macros for struct Client
1951
1952         * ircd/m_trace.c: use new accessor macros for struct Client
1953
1954         * ircd/m_topic.c: use new accessor macros for struct Client
1955
1956         * ircd/m_time.c: use new accessor macros for struct Client
1957
1958         * ircd/m_stats.c: use new accessor macros for struct Client
1959
1960         * ircd/m_squit.c: use new accessor macros for struct Client
1961
1962         * ircd/m_silence.c: use new accessor macros for struct Client
1963
1964         * ircd/m_server.c: use new accessor macros for struct Client;
1965         remove dead code
1966
1967         * ircd/m_rpong.c: use new accessor macros for struct Client
1968
1969         * ircd/m_rping.c: use new accessor macros for struct Client
1970
1971         * ircd/m_quit.c: use new accessor macros for struct Client
1972
1973         * ircd/m_privmsg.c: use new accessor macros for struct Client
1974
1975         * ircd/m_pong.c: use new accessor macros for struct Client; remove
1976         dead code
1977
1978         * ircd/m_ping.c: use new accessor macros for struct Client
1979
1980         * ircd/m_pass.c: use new accessor macros for struct Client
1981
1982         * ircd/m_part.c: use new accessor macros for struct Client
1983
1984         * ircd/m_oper.c: use new accessor macros for struct Client
1985
1986         * ircd/m_notice.c: use new accessor macros for struct Client
1987
1988         * ircd/m_nick.c: use new accessor macros for struct Client
1989
1990         * ircd/m_names.c: use new accessor macros for struct Client
1991
1992         * ircd/m_mode.c: use new accessor macros for struct Client
1993
1994         * ircd/m_map.c: use new accessor macros for struct Client
1995
1996         * ircd/m_list.c: use new accessor macros for struct Client
1997
1998         * ircd/m_links.c: use new accessor macros for struct Client;
1999         remove some dead code
2000
2001         * ircd/m_kill.c: use new accessor macros for struct Client; remove
2002         some dead code
2003
2004         * ircd/m_kick.c: use new accessor macros for struct Client
2005
2006         * ircd/m_join.c: use new accessor macros for struct Client; remove
2007         some dead code
2008
2009         * ircd/m_ison.c: use new accessor macros for struct Client
2010
2011         * ircd/m_invite.c: use new accessor macros for struct Client
2012
2013         * ircd/m_info.c: use new accessor macros for struct Client
2014
2015         * ircd/m_gline.c: use new accessor macros for struct Client
2016
2017         * ircd/m_error.c: use new accessor macros for struct Client
2018
2019         * ircd/m_create.c: use new accessor macros for struct Client
2020
2021         * ircd/m_connect.c: use new accessor macros for struct Client;
2022         removed some dead code
2023
2024         * ircd/m_burst.c: use new accessor macros for struct Client
2025
2026         * ircd/m_away.c: use new accessor macros for struct Client
2027
2028         * ircd/m_admin.c: use new accessor macros for struct Client
2029
2030         * ircd/hash.c: missed a couple of accesses to a struct Client
2031
2032         * ircd/gline.c: missed a couple of accesses to a struct Client
2033
2034         * ircd/crule.c: missed a couple of accesses to a struct Client
2035
2036         * ircd/class.c: missed an access to a struct Client
2037
2038         * ircd/channel.c: missed a couple of accesses to a struct Client
2039
2040         * ircd/IPcheck.c: missed an access to a struct Client
2041
2042         * include/querycmds.h: fix a couple of stats macros to use
2043         structure accessor macros
2044
2045         * include/client.h: change structure member names to highlight any
2046         places in the code I've missed
2047
2048 2000-12-12  Kevin L. Mitchell  <klmitch@mit.edu>
2049
2050         * ircd/whowas.c: use new struct Client accessor macros
2051
2052         * ircd/whocmds.c: use new struct Client accessor macros
2053
2054         * ircd/send.c: use new struct Client accessor macros
2055
2056         * ircd/s_user.c: use new struct Client accessor macros; removed
2057         some dead code
2058
2059         * ircd/s_serv.c: use new struct Client accessor macros; removed
2060         some dead code
2061
2062         * ircd/s_numeric.c: use new struct Client accessor macros
2063
2064         * ircd/s_misc.c: use new struct Client accessor macros
2065
2066         * ircd/s_debug.c: use new struct Client accessor macros
2067
2068         * ircd/s_conf.c: use new struct Client accessor macros
2069
2070         * ircd/s_bsd.c: use new struct Client accessor macros
2071
2072         * ircd/s_auth.c: use new struct Client accessor macros
2073
2074         * ircd/parse.c: use new struct Client accessor macros
2075
2076         * ircd/packet.c: use new struct Client accessor macros
2077
2078         * ircd/numnicks.c: use new struct Client accessor macros
2079
2080         * ircd/motd.c: use new struct Client accessor macros
2081
2082         * ircd/listener.c: use new struct Client accessor macros
2083
2084         * ircd/list.c: use new struct Client accessor macros
2085
2086         * ircd/jupe.c: use new struct Client accessor macros
2087
2088         * ircd/ircd_snprintf.c: use new struct Client accessor macros
2089
2090         * ircd/ircd_reply.c: use new struct Client accessor macros
2091
2092         * ircd/ircd_relay.c: use new struct Client accessor macros
2093
2094         * ircd/ircd.c: use new struct Client accessor macros
2095
2096         * ircd/gline.c: catch some instances of me.<stuff> I missed
2097         previously
2098
2099         * ircd/client.c: use cli_ instead of con_
2100
2101         * ircd/class.c: use cli_ instead of con_
2102
2103         * ircd/channel.c: use cli_ instead of con_
2104
2105         * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
2106         of me.<stuff> I missed previously
2107
2108         * include/client.h: use cli_ instead of con_...seemed like a good
2109         idea at the time *shrug*
2110
2111 2000-12-11  Kevin L. Mitchell  <klmitch@mit.edu>
2112
2113         * ircd/hash.c: use struct Client accessor macros
2114
2115         * ircd/gline.c: use struct Client accessor macros
2116
2117         * ircd/crule.c: use struct Client accessor macros
2118
2119         * ircd/client.c: use struct Client accessor macros; remove some
2120         dead code
2121
2122         * ircd/class.c: use struct Client accessor macros
2123
2124         * ircd/channel.c: use struct Client accessor macros; remove some
2125         dead code
2126
2127         * ircd/IPcheck.c: use struct Client accessor macros
2128
2129         * include/numnicks.h: use struct Client accessor macros
2130
2131         * include/client.h: first step to divorcing struct Client and
2132         struct Connection--define accessor macros and use them
2133
2134         * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
2135         uplink would remove them.  This is because the removal protocol
2136         message wasn't being sent to the uplinks.  This is fixed by fixing
2137         propagate_gline() to send the proper number of arguments depending
2138         on whether or not we're adding or deleting the Uworld gline, and
2139         by having gline_deactivate() make sure to turn off the active bit
2140         and call propagate_gline() if it's a Uworld gline
2141
2142 2000-12-10  Kevin L. Mitchell  <klmitch@mit.edu>
2143
2144         * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
2145
2146         * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
2147         anywhere intelligent...
2148
2149 2000-12-09  Kevin L. Mitchell  <klmitch@mit.edu>
2150
2151         * ircd/send.c (send_queued): call deliver_it with appropriate
2152         arguments
2153
2154         * ircd/s_serv.c: reorder a couple of headers--cosmetic
2155
2156         * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
2157         MsgQ
2158
2159         * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
2160         with appropriate iovec
2161
2162         * ircd/os_linux.c (os_sendv_nonb): function for calling writev
2163         with appropriate iovec
2164
2165         * ircd/os_generic.c (os_sendv_nonb): function for calling writev
2166         with appropriate iovec
2167
2168         * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
2169         appropriate iovec
2170
2171         * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
2172         exactly how much we're trying to write out to the fd
2173
2174         * include/s_bsd.h: make deliver_it take a struct MsgQ
2175
2176         * include/msgq.h: add a len_p argument to msgq_mapiov to help
2177         detect short writes that indicate possible socket blocking
2178
2179         * include/ircd_osdep.h: declare os_sendv_nonb()
2180
2181         * ircd/channel.c (modebuf_mode): don't add empty modes...
2182
2183 2000-12-08  Kevin L. Mitchell  <klmitch@mit.edu>
2184
2185         * include/send.h: add prio argument to send_buffer to select
2186         between normal and priority queues
2187
2188         * ircd/s_user.c (send_user_info): add prio argument to send_buffer
2189         call
2190
2191         * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
2192
2193         * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
2194         call
2195
2196         * ircd/channel.c (send_channel_modes): add prio argument to
2197         send_buffer call
2198
2199         * ircd/send.c (send_buffer): add a prio argument to select the
2200         priority queue; update send.c functions to use it
2201
2202         * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
2203         msgq_add; add a prio argument to msgq_add to select the priority
2204         queue
2205
2206         * include/msgq.h: remove msgq_prio; add a prio argument to
2207         msgq_add
2208
2209         * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
2210         using msgq functions instead of dbuf functions; remove old, dead
2211         sendto_* functions; redo send_buffer to take a struct MsgBuf;
2212         rework sendcmdto_* functions to make use of the new struct MsgBuf
2213
2214         * ircd/s_user.c: remove hunt_server; restructure send_user_info to
2215         make appropriate use of struct MsgBuf
2216
2217         * ircd/s_debug.c (count_memory): count memory used by the MsgQ
2218         system and report it
2219
2220         * ircd/s_conf.c (read_configuration_file): use
2221         sendto_opmask_butone instead of the now dead sendto_op_mask
2222
2223         * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
2224         calls on sendQ
2225
2226         * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
2227
2228         * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
2229         msgq_clean
2230
2231         * ircd/m_version.c: fix spelling in comments marking dead code
2232
2233         * ircd/m_userip.c (userip_formatter): restructure to make use of
2234         struct MsgBuf
2235
2236         * ircd/m_userhost.c (userhost_formatter): restructure to make use
2237         of struct MsgBuf
2238
2239         * ircd/m_stats.c: use MsgQLength on a sendQ
2240
2241         * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
2242         sendQ; mark a piece of dead code
2243
2244         * ircd/m_names.c: use send_reply instead of sendto_one
2245
2246         * ircd/m_mode.c: use new mode; remove old dead code
2247
2248         * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
2249
2250         * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
2251         dead code
2252
2253         * ircd/listener.c (accept_connection): use sendto_opmask_butone
2254         instead of sendto_op_mask
2255
2256         * ircd/list.c (free_client): use MsgQClear to clear sendQ
2257
2258         * ircd/ircd_reply.c: remove send_error_to_client; restructure
2259         send_reply to make use of struct MsgBuf
2260
2261         * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
2262         since its no longer used (at least currently)
2263
2264         * ircd/channel.c: restructure send_channel_modes to make use of
2265         struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
2266         and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
2267
2268         * ircd/Makefile.in: add msgq.c to list of sources; run make depend
2269
2270         * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
2271
2272         * include/send.h: send_buffer now takes a struct MsgBuf * instead
2273         of a char *; flush_sendq_except now takes no arguments, as sendq
2274         flushing currently only happens in dbuf.h and sendQ is a struct
2275         MsgQ; remove prototypes for a lot of old sendto_* functions that
2276         aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
2277         no longer needed, and the latter is identical to BUFSIZE in
2278         ircd_defs.h
2279
2280         * include/s_user.h: make InfoFormatter take a struct MsgBuf*
2281         instead of a char *; also make it return void, instead of char *
2282
2283         * include/msgq.h: add msgq_append and msgq_bufleft functions
2284
2285         * include/client.h: use a struct MsgQ instead of a struct DBuf for
2286         sendq
2287
2288         * doc/Configure.help: Remove help for compile-time options that
2289         have gone away
2290
2291         * config/config-sh.in: remove CONFIG_NEWMODE
2292
2293         * ircd/m_server.c (mr_server): don't send server IPs in any server
2294         notices
2295
2296         * ircd/msgq.c (msgq_vmake): add \r\n to messages
2297
2298 2000-12-07  Kevin L. Mitchell  <klmitch@mit.edu>
2299
2300         * include/msgq.h: declare the MsgQ API
2301
2302         * ircd/msgq.c: implementation of new MsgQ system
2303
2304 2000-12-06  Kevin L. Mitchell  <klmitch@mit.edu>
2305
2306         * ircd/ircd_features.c: #include was supposed to be for
2307           ircd_features.h, not features.h--missed when I had to do a
2308           rename because of namespace collision
2309
2310 2000-12-05  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2311         * ircd/m_topic.c: Added missing braces that caused all remote
2312           topics to be ignored.
2313
2314 2000-12-04  Kevin L. Mitchell  <klmitch@mit.edu>
2315
2316         * ircd/m_create.c: I'm tired of the exit_client warning :)
2317         (ms_create): discovered that exit_client() was being called with
2318         too few arguments
2319
2320         * ircd/s_misc.c (exit_client): remove all dependance on
2321         FNAME_USERLOG, since that's now gone; log only to LS_USER
2322
2323         * ircd/s_debug.c: USE_SYSLOG no longer means anything
2324
2325         * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
2326         log to LS_OPER
2327
2328         * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
2329
2330         * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
2331
2332         * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
2333         the same purpose as LS_USER and LS_OPER
2334
2335         * config/config-sh.in: remove no longer relevant log config
2336         variables
2337
2338         * ircd/uping.c (uping_init): use log_write instead of ircd_log
2339
2340         * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
2341
2342         * ircd/s_conf.c: use log_write instead of ircd_log
2343
2344         * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
2345
2346         * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
2347         ircd_log
2348
2349         * ircd/res.c (send_res_msg): use log_write instead of ircd_log
2350
2351         * ircd/m_who.c: use log_write instead of write_log; no longer
2352         conditionalize on WPATH; mark dead ircd_log calls
2353
2354         * ircd/m_uping.c: mark dead ircd_log call
2355
2356         * ircd/m_server.c (mr_server): use log_write instead of ircd_log
2357
2358         * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
2359         ircd_log calls
2360
2361         * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
2362
2363         * ircd/m_oper.c: use log_write instead of ircd_log; no longer
2364         conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
2365
2366         * ircd/m_kill.c: mark dead ircd_log calls
2367
2368         * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
2369         ircd_log
2370
2371         * ircd/m_clearmode.c: use log_write instead of write_log; no
2372         longer conditionalize on OPATH
2373
2374         * ircd/jupe.c: use log_write instead of write_log; no longer
2375         conditionalize on JPATH
2376
2377         * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
2378         function; fix a couple of bugs
2379
2380         * ircd/ircd_alloc.c: fixed a comment
2381
2382         * ircd/ircd.c: use log_write instead of ircd_log; fold server
2383         notice generation in a couple of cases
2384
2385         * ircd/gline.c: use log_write instead of write_log; no longer
2386         conditionalize on GPATH
2387
2388         * ircd/channel.c (modebuf_flush_int): use log_write instead of
2389         write_log; no longer conditionalize on OPATH
2390
2391         * ircd/Makefile.in: run make depend, since dependencies have
2392         changed
2393
2394         * doc/example.conf: add system USER to documentation
2395
2396         * include/ircd_log.h: add system USER; remove old ircd_log()
2397         declarations
2398
2399 2000-12-04  Isomer <isomer@coders.net>
2400         * ircd/m_names.c: Add NAMES_EON to do_names to say add a
2401         'end_of_names' reply when done.
2402         * ircd/m_join.c: use NAMES_EON as mentioned above
2403
2404 2000-12-01  net  <simms@LUCIDA.QC.CA>
2405
2406         * ircd/motd.c: add a freelist for struct Motds
2407
2408 2000-11-30  Kevin L. Mitchell  <klmitch@mit.edu>
2409
2410         * ircd/s_stats.c (report_feature_list): report features--only
2411         local opers can see logging configuration, since it doesn't really
2412         mean anything to users
2413
2414         * ircd/s_err.c: add reply messages for new feature subsystem
2415
2416         * ircd/s_conf.c: add F lines to .conf
2417
2418         * ircd/parse.c: add the message descriptions for /set, /reset, and
2419         /get
2420
2421         * ircd/m_stats.c: add /stats f
2422
2423         * ircd/m_set.c (mo_set): implement /set
2424
2425         * ircd/m_reset.c (mo_reset): implement /reset
2426
2427         * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
2428         reopens log files (for log file rotation)
2429
2430         * ircd/m_get.c (mo_get): implement /get
2431
2432         * ircd/ircd_log.c: use int instead of void return value; add
2433         log_report_features() and log_canon(); fix a function that
2434         disappears if DEBUGMODE not #define'd
2435
2436         * ircd/ircd_features.c: functions to manipulate feature settings
2437         either from the config file or with the new /set, /reset, and /get
2438         commands
2439
2440         * ircd/Makefile.in: add new .c files, run make depend
2441
2442         * include/s_stats.h: declare report_feature_list() (/stats f
2443         handler)
2444
2445         * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
2446         ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
2447         reply numerics
2448
2449         * include/msg.h: add defines for SET, RESET, and GET
2450
2451         * include/ircd_log.h: add a function to canonicalize subsystem
2452         names; change some void return values to int
2453
2454         * include/ircd_features.h: new features subsystem handles all the
2455         manipulation of special features, like log files
2456
2457         * include/handlers.h: declare new mo_{s,res,g}et message handlers
2458         for fiddling with features run-time
2459
2460         * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
2461         seemed like a good idea at the time...
2462
2463         * doc/example.conf: document new F lines
2464
2465 2000-11-29  Kevin L. Mitchell  <klmitch@mit.edu>
2466
2467         * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
2468         new logging functions, which have special support for the debug
2469         log; added loop detection to vdebug(), so that I can
2470         sendto_opmask_butone() from log_vwrite() without incurring another
2471         call to vdebug()
2472
2473         * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
2474         this allows log file rotations
2475
2476         * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
2477
2478         * ircd/ircd_log.c: much more work fleshing out the interface;
2479         removed old interface; included backwards-compat ircd_log()
2480         function that logs to subsystem LS_OLDLOG
2481
2482         * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
2483         functions
2484
2485         * include/ircd_log.h: include stdarg.h for va_list; move ordering
2486         warning to top of file; fill out LogSys enum; declare new
2487         log_debug_init(), log_vwrite(), log_write_kill(), and
2488         log_[sg]et_*() functions; add flags argument to log_write();
2489         defined flags to inhibit various logging actions
2490
2491         * include/client.h: added support for new SNO_DEBUG, enabled only
2492         if DEBUGMODE is defined
2493
2494 2000-11-28  Kevin L. Mitchell  <klmitch@mit.edu>
2495
2496         * ircd/ircd_log.c: make sure the various LOG_* constants are
2497         defined (probably not needed, since #include <syslog.h> isn't
2498         conditional); various static data needed for the new logging
2499         functions; definitions of new logging functions
2500
2501         * include/ircd_log.h: new LogSys enum, declarations for part of
2502         new logging API
2503
2504         * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
2505         which was of course stupid; switched to using switch/case in
2506         initialization in motd_create(); zero the MotdList.other pointer
2507         from motd_clear()
2508
2509         * ircd/ircd.c (main): motd_init() has to come before init_conf(),
2510         or we overwrite init_conf()'s hard work with respect to T-lines
2511
2512 2000-11-27  Kevin L. Mitchell  <klmitch@mit.edu>
2513
2514         * ircd/s_stats.c: comment out report_motd_list and include a
2515         reference to motd_report()
2516
2517         * ircd/s_conf.c: rip out the old MOTD manipulation functions; call
2518         motd_add() from the conf parser; call motd_clear() from the rehash
2519         routine; remove the no longer needed memory clearing and reloading
2520         stuff from the rehash service routine
2521
2522         * ircd/motd.c: loads new API, including static internal functions
2523         to do allocation/deallocation, etc.
2524
2525         * ircd/m_stats.c: use new motd_report() instead of
2526         report_motd_list()
2527
2528         * ircd/m_motd.c: use new syntax for motd_send()
2529
2530         * ircd/ircd.c: use new motd_init() function
2531
2532         * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in
2533         Makefile.(in); also ran make depend
2534
2535         * include/motd.h: don't need config.h, but now do need time.h;
2536         define new structures and constants; redefine old API and define
2537         new functions
2538
2539 2000-11-22  Kevin L. Mitchell  <klmitch@mit.edu>
2540
2541         * ircd/s_user.c (register_user): use motd_signon() instead of
2542         calling m_motd; much cleaner this way
2543
2544         * ircd/motd.c: write the new motd_* stuff to make MOTD handling
2545         less of a crock
2546
2547         * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_*
2548         functions
2549
2550         * include/motd.h: define new MOTD API stuff
2551
2552 2000-11-20  Kevin L. Mitchell  <klmitch@mit.edu>
2553
2554         * ircd/ircd_reply.c (protocol_violation): rewrite
2555         protocol_violation so it'll actually work
2556
2557         oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get
2558         the client's real name in there.
2559
2560         * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr)
2561         resulted in core dumps if NODEFAULTMOTD is defined, because m_motd
2562         gets called from register_user with a NULL sptr.  This is probably
2563         a design problem, but this bandaid will do for now...
2564
2565 2000-11-19  Isomer <isomer@coders.net>
2566         * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us
2567         to problems in the server<->server protocol.
2568
2569         * ircd/m_connect.c: allow remote connects with a port of '0'
2570         meaning to use the port in the config file.
2571
2572         * ircd/m_create.c: Enable hacking protection, lets see how far we
2573         get.
2574
2575         * ircd/m_error.c: The RFC says never accept ERROR from unreg'd
2576         clients, so we don't any more.
2577
2578         * ircd/m_kill.c: The kill path is now made up of numnicks of servers,
2579         and the user@host is displayed of the victim.
2580
2581         * ircd/m_map.c: reloaded 'dump_map'.
2582
2583         * ircd/m_trace.c: allow per class T:
2584
2585         * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net.
2586
2587 2000-11-17  Isomer <isomer@coders.net>
2588
2589         * ircd/m_topic.c: Fixed bug where we'd only send to clients topics
2590         that were the *same* instead of different.  Oh the embarrasment!
2591
2592         * ircd/IPcheck.c: Merged net's fix.
2593
2594 2000-11-02  Kevin L. Mitchell  <klmitch@mit.edu>
2595
2596         * ircd/m_whois.c: remove compiler warning by adding a newline to
2597         end of file
2598
2599         * ircd/m_names.c: moved the flags up to s_user.h
2600
2601         * ircd/m_join.c: call do_names instead of m_names; restructure
2602         ms_join to never transmute a JOIN into a CREATE, but use the TS in
2603         the JOIN (if present) to timestamp the channel
2604
2605         * ircd/channel.c: send JOINs individually, instead of grouping
2606         them, so that we can send the channel's creation time
2607
2608         * include/s_user.h: declare do_names()
2609
2610 2000-10-30  Isomer <isomer@coders.net>
2611         * ircd/m_oper.c: Fixed warning
2612
2613 2000-10-30  Isomer <isomer@coders.net>
2614         * ircd/m_oper.c: Fixed over agressive cut and no paste
2615
2616 2000-10-30  Isomer <isomer@coders.net>
2617
2618         * ircd/m_topic.c: Restructured, fixed bug where topics on local
2619         channels are propergated (I forget who pointed this out to me, but
2620         thanks anyway).  Also to save bandwidth don't send the topic to
2621         users if the topic is already the same on the server (but still
2622         propergate to other servers).  X/W's "autotopic" feature must
2623         chew a lot of bandwidth, hopefully this will help reduce this.
2624
2625         * doc/rfc1459.rfc: Updated documentation on /topic.
2626
2627         * ircd/listener.c: snotice warnings about failed accept()'s
2628         potentially warning admins that they're running out of fd's.
2629
2630         * ircd/stats.c, ircd/class.c: Removed /stats v, added number of
2631         people in a class in /stats y
2632
2633         * ircd/m_create.c: Checks for timewarp hacking and squit's
2634         evil servers. (currently disabled)
2635         
2636
2637 2000-10-30  net <simms@lucida.qc.ca>
2638         
2639         * ircd/gline.c: Fixed various bugs Isomer left behind.
2640
2641 2000-10-26  Kevin L. Mitchell  <klmitch@mit.edu>
2642
2643         * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed
2644         channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME
2645
2646 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
2647
2648         * ircd/channel.c: ok, now last mode rules; mode +ps will always
2649         result in +s (and won't send a mode if the channel is already +s);
2650         mode +sp will always result in +p; -n+n on a +n channel results in
2651         no mode change; -n+n on a -n channel results in a +n mode change;
2652         etc.
2653
2654 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
2655
2656         * ircd/channel.c: add "add" and "del" elements to ParseState to
2657         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
2658         mode_parse_limit that caused it to clear all channel modes
2659         prematurely; restructure mode_parse_mode to avoid calling
2660         modebuf_mode too early (ties in with first mentioned change);
2661         better logic for +p/+s mutual exclusivity; initialize "add" and
2662         "del" elements in mode_parse; send simple modes down to
2663         modebuf_mode after the loop in mode_parse
2664
2665 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2666         * ircd/m_names.c: Fixed a non-lethal logic error that 
2667         triggers an assert() in find_member_link while debugging.
2668         (Spotted by Maniac-).
2669 2000-09-19  Thomas Helvey <helveytw@home.com>
2670         * ircd/s_conf.c: move K:lines to their own list and data
2671         structures, add supporting code.
2672         * ircd/m_stats.c: cleanup stats processing a bit move
2673         kline listing code to a new function, haven't figured
2674         out where it goes yet tho'
2675         * ircd/s_stats.c: added K:line bulk lister
2676         * include/s_conf.h: added new DenyConf struct
2677         * *[ch]: fixeup code that depended on changes
2678
2679 2000-09-17  Thomas Helvey <helveytw@home.com>
2680         * ircd/class.c: encapsulate class list
2681         * include/class.h: clean up classes
2682         * * fixup code that depended on changes
2683
2684 2000-09-17  Thomas Helvey <helveytw@home.com>
2685         * ircd/s_conf.c: add me to local conf
2686         * include/s_conf.h: move CONF_ME macro to chkconf.c
2687         * ircd/s_bsd.c: cleanup initialization, allow virtual host
2688         to be changed by rehash
2689
2690 2000-09-17  Thomas Helvey <helveytw@home.com>
2691         * include/class.h: add missing prototype
2692         * ircd/class.c: make argument to get_conf_class const
2693
2694 2000-09-17  Thomas Helvey <helveytw@home.com>
2695         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
2696         merge conflicts.
2697         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
2698         merge conflicts
2699
2700 2000-09-16  Thomas Helvey <helveytw@home.com>
2701         * ircd/s_conf.c: add code for server struct
2702         * ircd/client.c: copy of class.c sort of, new file for client
2703         specific operations, will move things here as appropriate,
2704         currently only one function is exported from here.
2705         * ircd/*.c: general logic cleanups, convert negatives to
2706         positives in places.
2707
2708 2000-09-16  Thomas Helvey <helveytw@home.com>
2709         * ircd/s_conf.c: add code for new crule data structs, strip quotes
2710         * ircd/crule.c: clean up scary casting a bit, type safety stuff
2711         * include/s_conf.h: add CRuleConf struct and support, remove
2712         unused constants
2713         * include/crule.h: type safety cleanups
2714         * ircd/*.c: fixup code that depended on stuff I changed
2715
2716 2000-09-15  Thomas Helvey <helveytw@home.com>
2717         * ircd/s_conf.c: start adding code for new conf data structs, changed
2718         listeners, admin line, motd lines, class lines. Move validate_hostent
2719         to resolver. General mayhem.
2720         * include/s_conf.h: new data structs and accessors
2721         * ircd/res.c: move validate_hostent here, rewrite, use regular
2722         expression for validation.
2723         * doc/example.conf: update docs for port
2724
2725 2000-09-14  Thomas Helvey <helveytw@home.com>
2726         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
2727         up conf_init into managable chunks.
2728         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
2729         * include/s_conf.h: add new data struct for local info (unwinding the mess).
2730
2731 2000-09-13  Thomas Helvey <helveytw@home.com>
2732         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
2733         local clients.
2734         * ircd/list.c: put SLinks in free lists
2735         * ircd/channel.c: put Memberships in free lists
2736         * ircd/ircd.c: rearrange initializations a bit in main
2737         Note: With these changes, ircd NEVER frees Clients, SLinks or
2738         Memberships. It will also rarely need to allocate new
2739         ones during net bursts and other disruptions. This should
2740         cut down on memory fragmentation a bit as well.
2741
2742 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
2743
2744         * ircd/m_names.c (do_names): pull-up from do_names fix in
2745         u2.10.10.pl11
2746
2747 2000-07-15  Perry Lorier       <Isomer@coders.net>
2748         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
2749                  match()'s.  Major Major cpu savings.  Also speed up the
2750                  other case slightly.  As a side effect you can now
2751                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
2752                  3am.
2753
2754 2000-07-15  Perry Lorier       <Isomer@coders.net>
2755         * various: Fixed warnings after compiling on an alpha.
2756 2000-07-09  Perry Lorier       <Isomer@coders.net>
2757         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
2758                       changes suggested by various other people.
2759         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
2760                         that it gets a corrupt entry somehow.
2761 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2762         * ircd/m_oper.c: Clean up compiler warning.
2763
2764 2000-07-08  Perry Lorier       <Isomer@coders.net>
2765         * doc/ircd.8: Updated the documentation, it was slightly out of date
2766                       being updated around 1989.
2767         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
2768                           fixed a few minor glitches.
2769         * doc/rfc1459.unet: Updated.
2770         * ircd/IPcheck.c: Fixed more bugs.
2771         * ircd/s_bsd.c: We now keep track of servers we've conected.
2772
2773 2000-07-02  Perry Lorier       <Isomer@coders.net>
2774         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
2775                         me.  Thanks to Hektik, thanks thanks thanks thanks
2776                         thanks thanks thanks thanks thank thanks thank thanks
2777
2778 2000-07-01  Perry Lorier       <Isomer@coders.net>
2779         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
2780         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
2781
2782 2000-06-22  Perry Lorier       <Isomer@coders.net>
2783         * ircd/IPcheck.c: Large chunks redone.
2784         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
2785                         single AND double digit limits are allowed now.
2786         * misc other: Changes to IPcheck.
2787
2788 2000-06-30  Perry Lorier       <Isomer@coders.net>
2789         * ircd/ircd.c: Fix command line parameter bugs.
2790
2791 2000-06-30  Perry Lorier       <Isomer@coders.net>
2792         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
2793         * ircd/m_nick.c: Tidied things up.
2794
2795 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
2796         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
2797         
2798 2000-05-29  Perry Lorier       <Isomer@coders.net>
2799         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
2800         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
2801                         you think it'll get bored and fix itself?
2802
2803 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2804
2805         * ircd/m_names.c: Clean up compiler warnings.
2806
2807 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
2808
2809         * ircd/channel.c (mode_parse_client): don't send warning if
2810         there's not enough arguments for a +/-o/v; means the habit of
2811         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
2812         error messages
2813
2814 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
2815
2816         * ircd/m_names.c: Re-factor code to remove unneccessary
2817         GlobalChannelList iteration every time someone joins a channel.
2818
2819 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
2820
2821         * ircd/s_user.c: add struct Gline * argument to register_user;
2822         look up global glines and repropagate them if necessary; send
2823         acknowledgement of gline to remote servers when registering users
2824
2825         * ircd/s_serv.c (server_estab): don't send acknowledgement of
2826         local glines to remote servers; do send gline acknowledgement of
2827         bursted users
2828
2829         * ircd/m_user.c (m_user): pass new struct Gline * argument to
2830         register_user
2831
2832         * ircd/m_pong.c: pass new struct Gline * argument to register_user
2833
2834         * ircd/m_nick.c (ms_nick): document protocol change
2835
2836         * ircd/gline.c: support GLINE_LASTMOD
2837
2838         * include/s_user.h: add struct Gline * argument to register_user
2839
2840         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
2841
2842         * ircd/s_conf.c (find_kill): add unsigned int argument to
2843         gline_lookup()
2844
2845         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
2846         glines; add unsigned int argument to gline_lookup()
2847
2848         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
2849         argument to gline_lookup()
2850
2851         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
2852         parameter, or when it falls out of bounds: see comments prior to
2853         call to jupe_resend(); call server_estab with struct Jupe
2854         parameter, so that we place the appropriate %<lastmod> in the
2855         appropriate place.
2856
2857         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
2858         server, as well as for servers when we're sending the BURST
2859
2860         * include/s_serv.h: add a struct Jupe * to the arguments for
2861         server_estab() so that we can send the appropriate lastmod
2862         parameter
2863
2864         * ircd/m_gline.c (ms_gline): actually, this should be the
2865         slightest bit more efficient...
2866
2867         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
2868         bit more efficient...
2869
2870         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
2871         during netburst
2872
2873         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
2874         netburst
2875
2876         * ircd/channel.c (joinbuf_join): really remove user from local
2877         channels
2878
2879 2000-05-29  Perry Lorier       <Isomer@coders.net>
2880         * ircd/m_names.c: Removed redundant space. 
2881         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
2882
2883 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
2884
2885         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
2886         a " "
2887
2888 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
2889
2890         * ircd/channel.c: replace bogus assertions with returns, which is
2891         logically correct; only wipe out limit/key if they were originally
2892         set in the first place; remove user from channel when doing a
2893         PARTALL; only send MODE +o for user CREATEing channel if user is
2894         not MyUser--CREATE will only be used if the channel did not
2895         originally exist, therefore we can assume no one local is on the
2896         channel anyway, and we don't exactly need for the user to see an
2897         explicit +o for themselves
2898
2899         * doc/readme.gline: describe the syntax of the GLINE command
2900
2901         * doc/readme.jupe: update to reflect a couple of changes to JUPE
2902
2903         * ircd/gline.c: don't propagate local changes
2904
2905         * ircd/jupe.c: don't propagate local changes
2906
2907         * ircd/m_gline.c (mo_gline): force local flag when deactivating
2908         glines with 0 lastmod
2909
2910         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
2911         are now removed instead of being deactivated
2912
2913         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
2914         -<mask>" be accepted
2915
2916         * ircd/channel.c (send_channel_modes): deal with one of the last
2917         vestiges of sendbuf
2918
2919         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
2920         debugging hooks
2921
2922         * ircd/channel.c (modebuf_extract): remove debugging
2923         sendto_opmask_butone calls
2924
2925 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
2926
2927         * ircd/channel.c: support a couple of new flags to support using
2928         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
2929         of modebuf_extract to extract added flags for use by ms_burst
2930
2931         * include/channel.h: a couple of new flags to support using
2932         mode_parse inside ms_burst
2933
2934         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
2935
2936         * ircd/m_endburst.c: add loop to processing of end_of_burst to
2937         free empty channels after the BURST is over.
2938
2939         * ircd/m_server.c: convert to use new send.c functions--I wanted
2940         to rewrite it from scratch, but the logic's pretty complex; I may
2941         still rewrite it, though...
2942
2943 2000-05-02  Thomas Helvey <tomh@inxpress.net>
2944
2945         * ircd/ircd.c: fix broken header include ordering
2946
2947 2000-05-02  Thomas Helvey <tomh@inxpress.net>
2948         
2949         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
2950         review emailed privately
2951
2952         * include/IPcheck.h: removed unneeded include
2953
2954 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
2955
2956         * ircd/s_user.c (hunt_server): throw in a comment so I know what
2957         the sendto_one is for
2958
2959         * include/querycmds.h (Count_unknownbecomesclient): convert to
2960         sendto_opmask_butone
2961
2962         * ircd/send.c: start removing dead code
2963
2964         * include/send.h: start removing dead code
2965
2966         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
2967         hunt_server_cmd
2968
2969         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
2970
2971 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
2972
2973         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
2974
2975         * ircd/m_kick.c: Completely reimplement m_kick
2976
2977         * ircd/channel.c: send_user_joins removed; it was dead code,
2978         anyway...
2979
2980 2000-05-01  Perry Lorier <isomer@coders.net>
2981         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
2982         * ircd/channels.c: My fix for the part problem.  Untested, probably
2983                 won't work.  Can't be much worse than the current problem.
2984                 it'll either work or core, take your pick.
2985
2986
2987 2000-04-30  Perry Lorier <isomer@coders.net>
2988         * config/config-sh.in: Fix for CONNEXIT
2989         * ircd/s_{user,misc}.c: Fix for CONNEXIT
2990         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
2991                         (Kev: Want to come talk to me about this?)
2992
2993 2000-04-30  Steven M. Doyle <steven@doyle.net>
2994         * ircd/ircd.c
2995           - general cleanups and readability enhancements
2996           - rewrite of setuid/chroot code.
2997           - server will no longer run as root
2998           - -DPROFIL compile option removed
2999           - Fixed IPcheck API calls
3000  
3001         * config/config-sh.in
3002           - Fixed up chroot compile options
3003           - Added options for debug and profile compiles
3004  
3005         * config/gen.ircd.Makefile
3006           - Support for new debug/profile options
3007  
3008         * ircd/Makefile.in
3009           - Support for new debug/profile options
3010  
3011         * ircd/ircd_signal.c
3012           - Removed -DPROFIL
3013
3014         * include/IPcheck.h
3015           - Removed old API prototypes, added new ones
3016         
3017         * ircd/IPcheck.c
3018           - Readability cleanups (well, I -think-...)
3019           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
3020             used unsigned short was probably causing interesting things after
3021             a client had been connected longer than about 65,535 seconds...
3022           - Removed old API functions.
3023
3024         * ircd/whocmds.c
3025           - Removed IPcheck.h include
3026         
3027         * Additionally modified IPcheck API calls in:
3028           - ircd/m_nick.c
3029           - ircd/m_auth.c
3030           - ircd/s_bsd.c
3031           - ircd/s_conf.c
3032           - ircd/s_misc.c
3033           - ircd/s_serv.c
3034           - ircd/s_user.c
3035         
3036         
3037 2000-04-30  Perry Lorier <isomer@coders.net>
3038         * ircd/s_bsd.c: Sigh. :)
3039         * ircd/m_mode.c: fix for modeless channels by poptix.
3040
3041 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
3042
3043         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
3044
3045         * ircd/channel.c (clean_channelname): make clean_channelname also
3046         truncate long channel names
3047
3048 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
3049
3050         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
3051
3052         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
3053         joinbuf_flush
3054
3055         * include/channel.h: definitions and declarations for the struct
3056         JoinBuf abstraction
3057
3058 2000-04-29  Perry Lorier <isomer@coders.net>
3059         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
3060
3061 2000-04-29  Perry Lorier <isomer@coders.net>
3062         * ircd/s_bsd.c: Add debugging code to IPcheck
3063
3064 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
3065
3066         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
3067
3068         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
3069         RPL_EXPLICIT
3070
3071         * ircd/m_userhost.c (m_userhost): add a dead code comment
3072
3073         * ircd/m_desynch.c: forgot one...
3074
3075         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
3076
3077         * ircd/m_proto.c (proto_send_supported): just change a comment so
3078         it doesn't show up in my scans
3079
3080         * ircd/ircd_reply.c (send_reply): fix a slight bug...
3081
3082         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
3083         kinda hackish...
3084
3085         * ircd/parse.c (parse_server): argument wrangling to make
3086         processing in do_numeric a little easier to deal with
3087
3088         * ircd/s_serv.c (server_estab): SERVER should come from
3089         acptr->serv->up, not &me
3090
3091         * ircd/m_lusers.c: accidentally left out sptr for a %C
3092
3093         * ircd/send.c: hack to support doing wallchops...
3094
3095         * ircd/m_whowas.c: convert to new send functions
3096
3097         * ircd/m_whois.c: convert to new send functions
3098
3099         * ircd/m_who.c: convert to new send functions
3100
3101         * ircd/m_wallops.c: convert to new send functions
3102
3103         * ircd/m_wallchops.c: convert to new send functions
3104
3105         * ircd/m_version.c: convert to new send functions
3106
3107         * ircd/m_userip.c: convert to new send functions
3108
3109         * ircd/m_userhost.c: convert to new send functions
3110
3111         * ircd/m_uping.c: convert to new send functions
3112
3113         * ircd/m_trace.c: convert to new send functions
3114
3115         * ircd/m_topic.c: convert to new send functions
3116
3117         * ircd/m_time.c: convert to new send functions
3118
3119         * ircd/m_squit.c: convert to new send functions
3120
3121         * ircd/m_silence.c: convert to new send functions
3122
3123         * ircd/m_settime.c: convert to new send functions
3124
3125         * ircd/m_restart.c: convert to new send functions
3126
3127         * ircd/m_rehash.c: convert to new send functions
3128
3129         * ircd/m_privmsg.c: convert to new send functions
3130
3131         * ircd/m_pong.c: convert to new send functions
3132
3133         * ircd/m_ping.c: convert to new send functions
3134
3135         * ircd/m_pass.c: convert to new send functions
3136
3137         * ircd/m_opmode.c: convert to new send functions
3138
3139         * ircd/m_oper.c: convert to new send functions
3140
3141         * ircd/m_notice.c: convert to new send functions
3142
3143         * ircd/m_nick.c: convert to new send functions
3144
3145         * ircd/m_names.c: convert to new send functions
3146
3147         * ircd/m_motd.c: convert to new send functions
3148
3149         * ircd/m_mode.c: convert to new send functions
3150
3151         * ircd/m_map.c: convert to new send functions
3152
3153         * ircd/m_lusers.c: convert to new send functions
3154
3155         * ircd/m_list.c: convert to new send functions
3156
3157         * ircd/m_links.c: convert to new send functions
3158
3159         * ircd/m_kill.c: convert to new send functions
3160
3161         * ircd/m_jupe.c: convert to new send functions
3162
3163         * ircd/m_invite.c: convert to new send functions
3164
3165         * ircd/m_info.c: convert to new send functions
3166
3167         * ircd/m_help.c: convert to new send functions
3168
3169         * ircd/m_gline.c: convert to new send functions
3170
3171         * ircd/m_error.c: convert to new send functions
3172
3173         * ircd/m_endburst.c: convert to new send functions
3174
3175         * ircd/m_die.c: convert to new send functions
3176
3177         * ircd/m_destruct.c: convert to new send functions
3178
3179         * ircd/m_defaults.c: convert to new send functions
3180
3181         * ircd/m_connect.c: convert to new send functions
3182
3183 2000-04-28  Perry Lorier <isomer@coders.net>
3184         * RELEASE.NOTES: Describe a few more undocumented features.
3185         * config/config-sh.in: change the default paths for logging
3186         and the recommended number of channels.
3187         * include/supported.h: Rearrange slightly, added CHANTYPE's
3188
3189 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
3190
3191         * ircd/m_close.c: convert to send_reply
3192
3193         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
3194
3195         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
3196
3197         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
3198
3199         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
3200         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
3201         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
3202         carefully rethought...
3203
3204         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
3205
3206         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
3207
3208         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
3209         numeric nick; therefore, we have to use the server name
3210
3211         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
3212
3213         * ircd/send.c: fix minor bugs
3214
3215         * ircd/s_user.c (check_target_limit): mark dead code so I filter
3216         it when I grep
3217
3218         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
3219         when I grep
3220
3221         * ircd/parse.c: mark dead code so I filter it when I grep
3222
3223         * ircd/map.c: mark dead code so I filter it when I grep
3224
3225         * ircd/ircd.c: mark dead code so I filter it when I grep
3226
3227         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
3228         functions
3229
3230         * ircd/channel.c: mark dead code so I filter it when I grep
3231
3232         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
3233         hope I'm not stepping on toes...
3234
3235         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
3236         conversions; use ircd_snprintf in a couple of cases to negate the
3237         possibility of buffer overflow
3238
3239 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
3240
3241         * ircd/channel.c: convert as much as possible to new send
3242         semantics
3243
3244         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
3245         test member->user->from->fd, not from->fd
3246
3247         * ircd/gline.c (gline_add): go ahead and add badchans; we just
3248         won't look for them in m_gline; this way, they always work...
3249
3250         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
3251
3252         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
3253         ircd_vsnprintf conversion specifiers
3254
3255         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
3256         I have my conversion specifiers
3257
3258         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
3259
3260         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
3261         local users
3262
3263         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
3264         little less brain-dead
3265
3266         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
3267
3268         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
3269         RPL_STATSDEBUG
3270
3271         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
3272         RPL_STATSDEBUG
3273
3274         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
3275         for RPL_STATSDEBUG
3276
3277         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
3278
3279         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
3280
3281         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
3282         ERR_INVALIDUSERNAME
3283
3284         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
3285
3286         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
3287         a numeric as needing to use an explicit pattern, which will be the
3288         first argument in the variable argument list
3289
3290         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
3291         non-prefixed nospoof PING
3292
3293         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
3294         non-prefixed SERVER login
3295
3296         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
3297         a numeric usage further up)
3298
3299         * include/send.h: declare sendrawto_one
3300
3301         * ircd/send.c (sendrawto_one): new function to use ONLY for
3302         non-prefixed commands, like PING to client, or PASS/SERVER on
3303         server registration
3304
3305 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
3306
3307         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
3308         future expansion (channel numerics?)
3309
3310         * include/ircd_snprintf.h: added documentation to # to explain use
3311         with %C; added documentation for : to explain use with %C; added
3312         documentation for %H for channels
3313
3314         * ircd/whocmds.c: use send_reply
3315
3316         * ircd/userload.c: use sendcmdto_one
3317
3318         * ircd/uping.c: use sendcmdto_one
3319
3320         * ircd/send.c: use new flags to %C format string; ':' prefixes
3321         client name with a colon for local connects, '#' uses
3322         nick!user@host form for local connects
3323
3324         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
3325         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
3326
3327         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
3328
3329         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
3330         sendcmdto_one
3331
3332         * ircd/s_auth.c: use sendto_opmask_butone
3333
3334         * ircd/res.c: use sendcmdto_one
3335
3336         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
3337         debugging assertions
3338
3339 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
3340
3341         * ircd/support.c: dumpcore is no longer used, so get rid of it
3342
3343         * ircd/parse.c: use send_reply, sendcmdto_one
3344
3345         * ircd/map.c: use send_reply
3346
3347         * ircd/listener.c: use send_reply
3348
3349         * ircd/jupe.c: use sendto_opmask_butone, send_reply
3350
3351         * ircd/ircd_reply.c: use send_reply
3352
3353         * ircd/ircd.c: use sendto_opmask_butone
3354
3355         * ircd/gline.c: use sendto_opmask_butone, send_reply
3356
3357         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
3358         registered clients; make FLAG_ALT print nick!user@host; make
3359         FLAG_COLON print :blah
3360
3361         * ircd/class.c (report_classes): use send_reply instead of
3362         sendto_one
3363
3364         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
3365
3366         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
3367         sendto_one with sendcmdto_one
3368
3369 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
3370
3371         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
3372         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
3373         sendcmdto_match_butone
3374
3375         * include/send.h: declare sendcmdto_match_butone
3376
3377 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
3378
3379         * ircd/jupe.c: update to use send_reply()
3380
3381         * ircd/gline.c: update to use send_reply()
3382
3383         * include/ircd_reply.h: declare send_reply
3384
3385         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
3386         replies; uses ircd_snprintf
3387
3388         * ircd/send.c: added comments to redirect searchers to appropriate
3389         sendcmdto_* function; moved new functions to end of file; added
3390         explanatory comments; reordered arguments; defined new functions
3391         mentioned below
3392
3393         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
3394
3395         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
3396
3397         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
3398
3399         * ircd/gline.c: reorder arguments to sendcmdto_* functions
3400
3401         * include/send.h: reorder arguments, add explanatory comments,
3402         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
3403         and vsendto_opmask_butone
3404
3405 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
3406
3407         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
3408         vsendto_op_mask that uses '*' instead of the receiving client
3409         nickname
3410
3411         * include/send.h: declare sendcmdto_channel_butone; takes a skip
3412         argument that allows you to skip (or not to skip) deaf users,
3413         users behind bursting servers, and non channel operators
3414
3415 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
3416
3417         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
3418         sendto_channel_butserv has a subtle bug; also wrote
3419         sendcmdto_common_channels.
3420
3421         * include/send.h: declare new sendcmdto_* functions
3422
3423         * ircd/jupe.c: support local deactivations of jupes
3424
3425         * ircd/gline.c: support local deactivations of glines
3426
3427         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
3428         deactivated; if they aren't locally deactivated, then it slaves to
3429         the net-wide activation status; JupeIsRemActive() tests only
3430         whether the jupe is active everywhere else
3431
3432         * include/gline.h: GLINE_LDEACT allows glines to be locally
3433         deactivated; if they aren't locally deactivated, then it slaves to
3434         the net-wide activation status; GlineIsRemActive() tests only
3435         whether the gline is active everywhere else
3436
3437         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
3438         gline expires after the new one will, we drop the new one,
3439         otherwise we add the G-line after that one (so the wide one will
3440         apply first); if the new one contains an existing G-line and if it
3441         will expire after the existing one, we drop the existing one to
3442         save memory
3443
3444         * ircd/m_gline.c (mo_gline): opers could issue remote local
3445         glines when CONFIG_OPERCMDS was off; fixed
3446
3447 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
3448
3449         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
3450         this is a local JUPE
3451
3452         * ircd/gline.c: add flags argument to gline_activate and
3453         gline_deactivate for future expansion
3454
3455         * ircd/m_gline.c: pass flags to gline_activate and
3456         gline_deactivate
3457
3458         * include/gline.h: add flags argument to gline_activate and
3459         gline_deactivate
3460
3461         * ircd/jupe.c: add flags argument to jupe_activate and
3462         jupe_deactivate for future expansion
3463
3464         * include/jupe.h: add flags argument to jupe_activate and
3465         jupe_deactivate
3466
3467         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
3468         local, active; pass flags to jupe_activate and jupe_deactivate
3469
3470         * include/gline.h: remove dead code
3471
3472         * ircd/gline.c: make gline expire times relative to CurrentTime,
3473         since that should be monotonically increasing, instead of
3474         TStime(), which can be set backwards, and which can therefore
3475         cause an expire time to increase; make local glines be removed
3476         instead of just deactivated; don't let gline_find() look for
3477         user@host glines if the mask being looked up is a channel mask
3478
3479         * ircd/send.c (vsendcmdto_one): forgot to account for the case
3480         where origin is a server and destination is a user
3481
3482         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
3483         since that should be monotonically increasing, instead of
3484         TStime(), which can be set backwards, and which can therefore
3485         cause an expire time to increase; make local jupes be removed
3486         instead of just deactivated
3487
3488         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
3489         limit is fine.  any other warnings I should know about?
3490
3491 2000-04-15  Thomas Helvey <tomh@inxpress.net>
3492
3493         * ircd/*.c: const correctness and type safety cleanups to
3494         get code to compile with C++ compiler. Still has
3495         signed/unsigned comparison warnings.
3496
3497 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3498
3499         * ircd/userload.c: change <sys/time.h> include to <time.h> for
3500           portability.
3501
3502 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
3503
3504         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
3505         and convert acptr...
3506
3507         * ircd/s_user.c: move gline_lookup function call into
3508         register_user, where it'll have a username to lookup!
3509
3510         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
3511         functions; also stuff send_error_to_client into return clauses
3512
3513         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
3514         functions; also use send_error_to_client where that makes sense
3515
3516         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
3517         functions; also use send_error_to_client where that makes sense
3518
3519         * ircd/gline.c: modify to utilize new sendcmdto_* series of
3520         functions; also fix gline_lookup() to deal properly with remote
3521         clients--boy, do struct Client and struct User need to be cleaned
3522         up!
3523
3524         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
3525         too...
3526
3527         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
3528         sendcmdto_serv_butone(), all utilizing the %v conversion of
3529         ircd_snprintf()
3530
3531         * include/send.h: define IRC_BUFSIZE, max size of a message;
3532         declare sendcmdto_one(), vsendcmdto_one(), and
3533         sendcmdto_serv_butone()
3534
3535         * include/msg.h: define all the CMD_* constants needed to utilize
3536         the new sendcmdto_* series of functions
3537
3538         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
3539
3540         * ircd/gline.c: remove old, dead code.
3541
3542         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
3543         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
3544         (don't advertise proxies); remove dead code
3545
3546         * ircd/parse.c: oper handler for JUPE only lists jupes unless
3547         CONFIG_OPERCMDS is enabled
3548
3549         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
3550         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
3551
3552         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
3553         always return ERR_DISABLED
3554
3555         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
3556         enabled, always return ERR_DISABLED
3557
3558         * ircd/s_err.c: add error message to indicate disabled commands
3559
3560         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
3561
3562         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
3563
3564         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
3565         CONFIG_NEW_MODE to 'y' for now
3566
3567         * ircd/gline.c (gline_list): fix a minor formatting bogon
3568
3569         * BUGS: since I fixed that bug, might as well mark it fixed.
3570
3571         * ircd/m_join.c: look up badchans with GLINE_EXACT
3572
3573         * ircd/m_gline.c: fix parc count problems; look up existing
3574         G-lines with GLINE_EXACT; only set new lastmod when
3575         activating/deactivating existing glines if old lastmod was not 0
3576
3577         * ircd/gline.c: forgot to copy the gline reason over; don't
3578         propagate a gline with 0 lastmod if origin is user; add
3579         GLINE_EXACT to force exact matching of gline mask
3580
3581         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
3582         flag properly
3583
3584         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
3585         but gline_lookup() actually takes a client--d'oh.
3586
3587 2000-04-13  Thomas Helvey <tomh@inxpress.net>
3588         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
3589
3590 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3591
3592         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
3593           "/who * x"
3594           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
3595           (Found by Plexus).
3596
3597         * ircd/whocmds.c: Change idle time calc from socket idle to user
3598           idle.
3599
3600 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
3601
3602         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
3603         too, for ircd_snprintf.c
3604
3605         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
3606         comments; mostly descended from the Linux manpage for printf, but
3607         also documenting the extensions.
3608
3609         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
3610         client; make 'q' be the same as 'L'; remove __inline__; only
3611         define EXTENSION if HAVE_LONG_LONG is defined
3612
3613         * include/handlers.h: declare m_gline()
3614
3615         * ircd/parse.c: gline can be called by users, but it only lists
3616         the glines.
3617
3618         * ircd/s_user.c (set_nick_name): resend gline if a remote server
3619         introduces a glined client
3620
3621         * ircd/s_serv.c (server_estab): burst glines, too
3622
3623         * ircd/gline.c: fix up all the expire times to be offsets;
3624         simplify gline_resend()
3625
3626         * ircd/m_gline.c: begin coding replacements for ms_gline(),
3627         mo_gline(), and m_gline()
3628
3629         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
3630         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
3631
3632 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3633
3634         * tools/Bouncer/*: Add comments/documentation/tags.
3635         * tools/Bouncer/*: Add debug defines, make task fork().
3636
3637 2000-04-12  Thomas Helvey <tomh@inxpress.net>
3638         * ircd/s_err.c: Cleanup s_err.c make one table so we
3639         don't have to do anything tricky to get an error string.
3640
3641 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3642         * Add port bouncer for http (x/w)
3643
3644 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
3645
3646         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
3647         call to gline_find(); also used GlineReason() instead of direct
3648         reference to structure member
3649
3650         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
3651         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
3652         is active
3653
3654         * ircd/channel.c: nothing seems to be called anywhere...
3655
3656         * ircd/s_err.c: update a couple of replies to dovetail with new
3657         semantics
3658
3659         * ircd/gline.c: begin complete re-implementation of gline.c along
3660         the lines of the final design of jupe.c
3661
3662         * include/gline.h: begin complete re-implementation of gline.c
3663         along the lines of the final design of jupe.c
3664
3665         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
3666         %s by %s" message...
3667
3668         * ircd/ircd_snprintf.c: my new snprintf()-like functions
3669
3670         * include/ircd_snprintf.h: my new snprintf()-like functions
3671
3672 2000-04-11  Thomas Helvey <tomh@inxpress.net>
3673         * ircd/IPcheck.c: removed old dead code
3674         * ircd/s_user.c (send_user_info): removed non-standard
3675           user not found message for userhost/userip
3676
3677 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
3678
3679         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
3680         * doc/p10.html: Work on chapter 4.
3681
3682 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
3683
3684         * ircd/channel.c (mode_parse_client): fix coredump on /mode
3685         #foobar +o nosuchnick
3686
3687 2000-04-10  Perry Lorier  <Isomer@coders.net>
3688         * BUGS: Added bug.
3689
3690 2000-04-09  Thomas Helvey <tomh@inxpress.net>
3691         * include/IPcheck.h: fix prototype
3692         * ircd/s_user.c: fix usage of IPcheck_remote_connect
3693         * ircd/IPcheck.c: removed unused args
3694
3695 2000-04-09  Thomas Helvey <tomh@inxpress.net>
3696         * include/IPcheck.h: add proto for IPcheck_expire
3697
3698         * ircd/IPcheck.c: Rewrote
3699
3700         * ircd/ircd.c: Add IPcheck_expire to main message loop
3701
3702         * ircd/s_user.c: Redo target hashing, refactor target code
3703
3704         * include/numeric.h: Cleaned up numerics, added which ones are
3705         in use by other networks and what they are in use for.
3706
3707         * ircd/channel.c: cleaned can_join(), allow anyone through anything
3708         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
3709         will get a message explaining to them not to cheat.
3710
3711         * ircd/m_join.c: cleaned up the various join functions, should be
3712         a lot more efficient.  Still needs work.  Now assumes that s<->s
3713         won't send it a JOIN 0.  Service coders - note this and tread with
3714         care.
3715
3716         * ircd/m_stats.c: added Gte-'s stats doc patch.
3717
3718         * ircd/m_version.c: /version now returns the 005 numeric as well.
3719         as requested by Liandrin.
3720
3721
3722 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
3723
3724         * ircd/m_clearmode.c: add include for support.h for write_log()
3725
3726         * configure: move ircd/crypt/* to tools/*
3727
3728 2000-04-06  Thomas Helvey <tomh@inxpress.net>
3729         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
3730           set client host to server alias if connection from localhost
3731
3732 2000-04-06  Perry Lorier <isomer@coders.net>
3733         * ircd/ircd.c: Fix core during pinging (oops)
3734         
3735 2000-04-06  Perry Lorier <isomer@coders.net>
3736         * ircd/send.c: fixed wrong ident being sent to channels bug.
3737         * include/numerics.h: Updated some of the numerics from other
3738         networks.  Flagged some as 'unused' by undernet.
3739
3740 2000-03-30  Perry Lorier <isomer@coders.net>
3741         * ircd/ircd.c: Lets see if this helps the ping problem at all.
3742         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
3743         time for local clients. (as requested), extended who now returns all
3744         the flags (@+!) so you can tell the complete state of a client.
3745
3746 2000-03-30  Thomas Helvey <tomh@inxpress.net>
3747         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
3748
3749 2000-03-30  Perry Lorier <isomer@coders.net>
3750         * ircd/parse.c: oops, missed opers.
3751
3752 2000-03-30  Perry Lorier <isomer@coders.net>
3753         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
3754         for so long.  Remember: m_ping MUST be in the parse array. :)
3755
3756 2000-03-30  Perry Lorier <isomer@coders.net>
3757         * ircd/ircd.c: test in check_pings was wrong.  I move that we
3758         disallow cvs commit after 10pm localtime....
3759
3760 2000-03-30  Perry Lorier <isomer@coders.net>
3761         * ircd/m_pong.c: Fix it for servers too.
3762
3763 2000-03-30  Perry Lorier <isomer@coders.net>
3764         * ircd/m_pong.c: Fix ping timeout bugs
3765
3766 2000-03-30  Perry Lorier <isomer@coders.net>
3767         * ircd/channel.c: Bans had CurrentTime in their when field instead
3768         of TStime()
3769
3770 2000-03-31  Thomas Helvey <tomh@ixpress.net>
3771         * ircd/numnicks.c (SetXYYCapacity): fix for extended
3772         numerics.
3773
3774 2000-03-30  Perry Lorier <isomer@coders.net>
3775         * ircd/m_nick.c: send kills both ways so when we add nick change
3776         on collision we don't desync the network.
3777
3778         * ircd/map.c: Fixup the map a bit more.
3779
3780 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
3781
3782         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
3783
3784         * ircd/m_opmode.c: Log the mode changes to OPATH
3785
3786         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
3787         OPATH
3788
3789         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
3790         OPATH
3791
3792         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
3793
3794         * config/config-sh.in: added OPATH for opmode log file
3795
3796         * ircd/m_clearmode.c (do_clearmode): updated uses of
3797         modebuf_mode_string() for the new usage
3798
3799         * ircd/channel.c: added flag MODE_FREE and an int argument to
3800         modebuf_mode_string() to indicate that the string must be free'd;
3801         updated calls to modebuf_mode_string() for the new usage; called
3802         collapse(pretty_mask()) on the ban string and use allocated memory
3803         for it; added ban list length accounting; fixed a number of small
3804         bugs in ban processing
3805
3806         * include/channel.h: added flag MODE_FREE and an int argument to
3807         modebuf_mode_string() to indicate that the string must be free'd
3808
3809         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
3810         keys and limits that are set
3811
3812 2000-03-30  Perry Lorier <isomer@coders.net>
3813         * ircd/ircd.c: rewrote check_pings() for maintainability
3814         and speed.  Also changed quit msg's so they don't have
3815         redundant nick[host] info in them.
3816
3817         * ircd/send.c: Changed write errors to report what error
3818         occured (if possible).
3819
3820         * ircd/gline.c: added gline comment to the quit.
3821
3822         * ircd/m_server.c: Added suggestions to server quits mentioning
3823         what went wrong so the admin can fix it earlier instead of asking
3824         questions...
3825
3826         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
3827         servers that aren't fully burst yet.  And show '(--s)' for servers
3828         where its not sure.
3829
3830         * doc/example.conf: Fixed wrapped U:
3831
3832 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
3833
3834         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
3835         mode_parse() (version selectable at compile time)
3836
3837         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
3838
3839         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
3840
3841         * config/config-sh.in: add new config option to enable new m_mode
3842         implementation
3843
3844         * doc/Configure.help: add documentation for new config option
3845         CONFIG_NEW_MODE
3846
3847         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
3848         MODE -v : Not enough parameters
3849
3850         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
3851         +k and +l even if they weren't set...
3852
3853         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
3854
3855         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
3856         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
3857         for; test the 0-th member, not the i-th member, of the client
3858         change state stuff
3859
3860         * ircd/m_clearmode.c (do_clearmode): use the new
3861         mode_invite_clear() function
3862
3863         * ircd/channel.c: cleared up all the compile-time warnings and
3864         errors
3865
3866         * include/channel.h: added declarations for mode_ban_invalidate()
3867         and mode_invite_clear()
3868
3869         * ircd/channel.c: finished mode_parse(), then broke it up into a
3870         dozen or so helper functions to make the code easier to read
3871
3872 2000-03-29  Thomas Helvey <tomh@inxpress.net>
3873         * ircd/ircd.c: refactor server initialization a bit, use
3874         getopt for parsing command line, refactor init_sys, main,
3875         and other bits.
3876
3877         * ircd/s_bsd.c: add functions for initialization to clean
3878         up logic a bit and remove duplicated code.
3879
3880         * include/ircd.h: add struct for server process related
3881         variables.
3882
3883 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
3884
3885         * ircd/channel.c: initial definition of mode_parse(); flags to
3886         prevent doing the same thing multiple times; helper method
3887         send_notoper() to send a "Not oper"/"Not on channel" notice
3888
3889         * include/channel.h: declare mode_parse() and helper flags
3890
3891         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
3892         sending to match the current action of set_mode() closely enough
3893         that hopefully there won't be major conflicts
3894
3895         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
3896         building logic, reversed the order of the arguments to mode
3897         commands to have '-' preceed '+'
3898
3899 2000-03-29  Thomas Helvey <tomh@inxpress.net>
3900         * ircd/s_bsd.c (add_connection): don't disable socket options
3901         let OS tune itself and allow important performance tweaks to 
3902         work.
3903
3904 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
3905
3906         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
3907         confused by set_mode, which is doing some really weird logic;
3908         guess what I'm going to rewrite next?  ;)
3909
3910 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
3911
3912         * include/channel.h: added MODE_SAVE for the bounds checking stuff
3913         in modebuf_flush
3914
3915         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
3916         make it do bounds checking on the buffer; all modes are sent only
3917         if the all parameter is 1; modebuf_flush is the exported wrapper
3918
3919         * include/channel.h: add BOUNCE, renumber flags to get a little
3920         more space
3921
3922         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
3923         BOUNCE; send DESYNCH message
3924
3925 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
3926
3927         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
3928         channel actually has in effect for deletion
3929
3930         * ircd/channel.c: added explanatory comments to all added
3931         functions; made flushing take place at the correct place even if
3932         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
3933         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
3934         is empty, fixed the apparent source, removed some bogus string
3935         termination code, properly terminate the mode strings, add support
3936         for HACK2 and HACK3, made limit strings not be sent if the limit
3937         is being removed, changed where '+' and '-' come from in sent
3938         strings, added support for DEOP flag, set up bouncing code for
3939         HACK2
3940
3941         * ircd/Makefile.in: ran make depend
3942
3943         * include/channel.h: added new defines for future functionality,
3944         made modebuf_flush() return int so I can use tail recursion
3945
3946         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
3947         to make it all compile
3948
3949         * ircd/m_opmode.c: add msg.h to includes...
3950
3951         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
3952
3953         * ircd/channel.c (modebuf_flush): realized I forgot to
3954         nul-terminate addbuf/rembuf properly...
3955
3956         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
3957
3958         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
3959         sendto_serv_butone--blah^2
3960
3961         * ircd/send.c (sendto_serv_butone): stupid comments confused me
3962
3963         * ircd/channel.c (modebuf_flush): if there are no mode changes to
3964         propagate, we're done...
3965
3966         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
3967         not sendto_all_butone
3968
3969         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
3970
3971         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
3972
3973         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
3974         the list
3975
3976         * ircd/parse.c: added messages for opmode and clearmode
3977
3978         * include/handlers.h: added declarations for mo_opmode(),
3979         ms_opmode(), mo_clearmode(), and ms_clearmode()
3980
3981         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
3982         TOK_CLEARMODE
3983
3984         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
3985         MODEBUF_DEST_OPMODE flag
3986
3987         * ircd/channel.c (modebuf_flush): added new flag,
3988         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
3989         to originate from source's server (or source itself, if
3990         IsServer(source)); also causes a server-level MODE to be sent as
3991         OPMODE instead
3992
3993         * include/channel.h: defined MODEBUF_DEST_SERVER,
3994         MODEBUF_DEST_HACK4
3995
3996         * ircd/channel.c: Add another argument to build_string() to handle
3997         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
3998         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
3999         to be sent out
4000
4001 2000-03-27  Perry Lorier <isomer@coders.net>
4002
4003         * ircd/s_bsd.c: fixed missing 'u' typo.
4004
4005 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
4006
4007         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
4008         _mode_string(), _mode_client(), _flush(); also implemented a
4009         simple build_string()
4010
4011         * include/channel.h: added definition of ModeBuf, modebuf_*
4012         manipulation functions, and a couple of helper macros
4013
4014 2000-03-24 Thomas Helvey <tomh@inxpress.net>
4015   * numicks.c: convert extended numerics to use original mask version
4016   * numnicks.h: ""
4017   * s_user.c:
4018 2000-03-23 Thomas Helvey <tomh@inxpress.net>
4019   * Merge in changes from production
4020 2000-03-22 Thomas Helvey <tomh@inxpress.net>
4021   * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
4022   * rfc1459.unet: Add Maniac's documentation for /names 0
4023 * Fix misc. jupe bugs that somehow made it into the tree
4024 * Escape /names 0 to mean /names --Maniac
4025 * Don't core when server asks for info --Maniac 
4026 * Add Kev's jupe patch --Bleep
4027 * Add Maniacs squit patch --Bleep
4028 * Merge in u2_10_10_beta07 changes --Bleep
4029 * Merge in u2_10_10_beta06 changes --Bleep
4030 * Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
4031 #-----------------------------------------------------------------------------