Author: Kev <klmitch@mit.edu>
[ircu2.10.12-pk.git] / ChangeLog
1 2000-10-24  Kevin L. Mitchell  <klmitch@mit.edu>
2
3         * ircd/channel.c: ok, now last mode rules; mode +ps will always
4         result in +s (and won't send a mode if the channel is already +s);
5         mode +sp will always result in +p; -n+n on a +n channel results in
6         no mode change; -n+n on a -n channel results in a +n mode change;
7         etc.
8
9 2000-10-23  Kevin L. Mitchell  <klmitch@mit.edu>
10
11         * ircd/channel.c: add "add" and "del" elements to ParseState to
12         avoid not-too-pretty -p+s when +s is sufficient; fix a bug in
13         mode_parse_limit that caused it to clear all channel modes
14         prematurely; restructure mode_parse_mode to avoid calling
15         modebuf_mode too early (ties in with first mentioned change);
16         better logic for +p/+s mutual exclusivity; initialize "add" and
17         "del" elements in mode_parse; send simple modes down to
18         modebuf_mode after the loop in mode_parse
19
20 2000-09-28  Greg Sikorski <gte@atomicrevs.demon.co.uk>
21         * ircd/m_names.c: Fixed a non-lethal logic error that 
22         triggers an assert() in find_member_link while debugging.
23         (Spotted by Maniac-).
24 2000-09-19  Thomas Helvey <helveytw@home.com>
25         * ircd/s_conf.c: move K:lines to their own list and data
26         structures, add supporting code.
27         * ircd/m_stats.c: cleanup stats processing a bit move
28         kline listing code to a new function, haven't figured
29         out where it goes yet tho'
30         * ircd/s_stats.c: added K:line bulk lister
31         * include/s_conf.h: added new DenyConf struct
32         * *[ch]: fixeup code that depended on changes
33
34 2000-09-17  Thomas Helvey <helveytw@home.com>
35         * ircd/class.c: encapsulate class list
36         * include/class.h: clean up classes
37         * * fixup code that depended on changes
38
39 2000-09-17  Thomas Helvey <helveytw@home.com>
40         * ircd/s_conf.c: add me to local conf
41         * include/s_conf.h: move CONF_ME macro to chkconf.c
42         * ircd/s_bsd.c: cleanup initialization, allow virtual host
43         to be changed by rehash
44
45 2000-09-17  Thomas Helvey <helveytw@home.com>
46         * include/class.h: add missing prototype
47         * ircd/class.c: make argument to get_conf_class const
48
49 2000-09-17  Thomas Helvey <helveytw@home.com>
50         * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup
51         merge conflicts.
52         * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup
53         merge conflicts
54
55 2000-09-16  Thomas Helvey <helveytw@home.com>
56         * ircd/s_conf.c: add code for server struct
57         * ircd/client.c: copy of class.c sort of, new file for client
58         specific operations, will move things here as appropriate,
59         currently only one function is exported from here.
60         * ircd/*.c: general logic cleanups, convert negatives to
61         positives in places.
62
63 2000-09-16  Thomas Helvey <helveytw@home.com>
64         * ircd/s_conf.c: add code for new crule data structs, strip quotes
65         * ircd/crule.c: clean up scary casting a bit, type safety stuff
66         * include/s_conf.h: add CRuleConf struct and support, remove
67         unused constants
68         * include/crule.h: type safety cleanups
69         * ircd/*.c: fixup code that depended on stuff I changed
70
71 2000-09-15  Thomas Helvey <helveytw@home.com>
72         * ircd/s_conf.c: start adding code for new conf data structs, changed
73         listeners, admin line, motd lines, class lines. Move validate_hostent
74         to resolver. General mayhem.
75         * include/s_conf.h: new data structs and accessors
76         * ircd/res.c: move validate_hostent here, rewrite, use regular
77         expression for validation.
78         * doc/example.conf: update docs for port
79
80 2000-09-14  Thomas Helvey <helveytw@home.com>
81         * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break
82         up conf_init into managable chunks.
83         * ircd/listener.c (set_listener_mask): fix logic bug core dump.
84         * include/s_conf.h: add new data struct for local info (unwinding the mess).
85
86 2000-09-13  Thomas Helvey <helveytw@home.com>
87         * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS
88         local clients.
89         * ircd/list.c: put SLinks in free lists
90         * ircd/channel.c: put Memberships in free lists
91         * ircd/ircd.c: rearrange initializations a bit in main
92         Note: With these changes, ircd NEVER frees Clients, SLinks or
93         Memberships. It will also rarely need to allocate new
94         ones during net bursts and other disruptions. This should
95         cut down on memory fragmentation a bit as well.
96
97 2000-08-30  Kevin L. Mitchell  <klmitch@mit.edu>
98
99         * ircd/m_names.c (do_names): pull-up from do_names fix in
100         u2.10.10.pl11
101
102 2000-07-15  Perry Lorier       <Isomer@coders.net>
103         * various: IP only k:'s and G:'s now do bit tests instead of two(!) 
104                  match()'s.  Major Major cpu savings.  Also speed up the
105                  other case slightly.  As a side effect you can now
106                  k/Gline *@10.0.0.0/8.  I'll do bans tomorrow, it's nearing
107                  3am.
108
109 2000-07-15  Perry Lorier       <Isomer@coders.net>
110         * various: Fixed warnings after compiling on an alpha.
111 2000-07-09  Perry Lorier       <Isomer@coders.net>
112         * doc/ircd.8: Applied grammitical changes by Liandrin, applied
113                       changes suggested by various other people.
114         * ircd/IPcheck.c: More bug fixes.  Current problem appears to be
115                         that it gets a corrupt entry somehow.
116 2000-07-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
117         * ircd/m_oper.c: Clean up compiler warning.
118
119 2000-07-08  Perry Lorier       <Isomer@coders.net>
120         * doc/ircd.8: Updated the documentation, it was slightly out of date
121                       being updated around 1989.
122         * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed.
123                           fixed a few minor glitches.
124         * doc/rfc1459.unet: Updated.
125         * ircd/IPcheck.c: Fixed more bugs.
126         * ircd/s_bsd.c: We now keep track of servers we've conected.
127
128 2000-07-02  Perry Lorier       <Isomer@coders.net>
129         * ircd/s_misc.c: Fixed remote IPcheck bug.  Ok, I'm a moron, so sue
130                         me.  Thanks to Hektik, thanks thanks thanks thanks
131                         thanks thanks thanks thanks thank thanks thank thanks
132
133 2000-07-01  Perry Lorier       <Isomer@coders.net>
134         * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s.
135         * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings.
136
137 2000-06-22  Perry Lorier       <Isomer@coders.net>
138         * ircd/IPcheck.c: Large chunks redone.
139         * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported,
140                         single AND double digit limits are allowed now.
141         * misc other: Changes to IPcheck.
142
143 2000-06-30  Perry Lorier       <Isomer@coders.net>
144         * ircd/ircd.c: Fix command line parameter bugs.
145
146 2000-06-30  Perry Lorier       <Isomer@coders.net>
147         * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY
148         * ircd/m_nick.c: Tidied things up.
149
150 2000-06-12 Joseph Bongaarts <foxxe@trms.com>
151         * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v
152         
153 2000-05-29  Perry Lorier       <Isomer@coders.net>
154         * ircd/m_stats.c: add /stats v to do only the last part of the /trace
155         * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do
156                         you think it'll get bored and fix itself?
157
158 2000-06-09  Greg Sikorski <gte@atomicrevs.demon.co.uk>
159
160         * ircd/m_names.c: Clean up compiler warnings.
161
162 2000-06-09  Kevin L. Mitchell  <klmitch@mit.edu>
163
164         * ircd/channel.c (mode_parse_client): don't send warning if
165         there's not enough arguments for a +/-o/v; means the habit of
166         doing "/mode #channel +oooooo bob" doesn't result in a bunch of
167         error messages
168
169 2000-06-04  Greg Sikorski <gte@atomicrevs.demon.co.uk>
170
171         * ircd/m_names.c: Re-factor code to remove unneccessary
172         GlobalChannelList iteration every time someone joins a channel.
173
174 2000-06-02  Kevin L. Mitchell  <klmitch@mit.edu>
175
176         * ircd/s_user.c: add struct Gline * argument to register_user;
177         look up global glines and repropagate them if necessary; send
178         acknowledgement of gline to remote servers when registering users
179
180         * ircd/s_serv.c (server_estab): don't send acknowledgement of
181         local glines to remote servers; do send gline acknowledgement of
182         bursted users
183
184         * ircd/m_user.c (m_user): pass new struct Gline * argument to
185         register_user
186
187         * ircd/m_pong.c: pass new struct Gline * argument to register_user
188
189         * ircd/m_nick.c (ms_nick): document protocol change
190
191         * ircd/gline.c: support GLINE_LASTMOD
192
193         * include/s_user.h: add struct Gline * argument to register_user
194
195         * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods
196
197         * ircd/s_conf.c (find_kill): add unsigned int argument to
198         gline_lookup()
199
200         * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global
201         glines; add unsigned int argument to gline_lookup()
202
203         * include/gline.h: add GLINE_GLOBAL flag; add unsigned int
204         argument to gline_lookup()
205
206         * ircd/m_server.c: Resend jupe only when there is no %<lastmod>
207         parameter, or when it falls out of bounds: see comments prior to
208         call to jupe_resend(); call server_estab with struct Jupe
209         parameter, so that we place the appropriate %<lastmod> in the
210         appropriate place.
211
212         * ircd/s_serv.c (server_estab): send %<lastmod> for introduced
213         server, as well as for servers when we're sending the BURST
214
215         * include/s_serv.h: add a struct Jupe * to the arguments for
216         server_estab() so that we can send the appropriate lastmod
217         parameter
218
219         * ircd/m_gline.c (ms_gline): actually, this should be the
220         slightest bit more efficient...
221
222         * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest
223         bit more efficient...
224
225         * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends
226         during netburst
227
228         * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during
229         netburst
230
231         * ircd/channel.c (joinbuf_join): really remove user from local
232         channels
233
234 2000-05-29  Perry Lorier       <Isomer@coders.net>
235         * ircd/m_names.c: Removed redundant space. 
236         * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line.
237
238 2000-05-18  Kevin L. Mitchell  <klmitch@mit.edu>
239
240         * ircd/m_burst.c (ms_burst): er...that should have been a ",", not
241         a " "
242
243 2000-05-04  Kevin L. Mitchell  <klmitch@mit.edu>
244
245         * ircd/channel.c: replace bogus assertions with returns, which is
246         logically correct; only wipe out limit/key if they were originally
247         set in the first place; remove user from channel when doing a
248         PARTALL; only send MODE +o for user CREATEing channel if user is
249         not MyUser--CREATE will only be used if the channel did not
250         originally exist, therefore we can assume no one local is on the
251         channel anyway, and we don't exactly need for the user to see an
252         explicit +o for themselves
253
254         * doc/readme.gline: describe the syntax of the GLINE command
255
256         * doc/readme.jupe: update to reflect a couple of changes to JUPE
257
258         * ircd/gline.c: don't propagate local changes
259
260         * ircd/jupe.c: don't propagate local changes
261
262         * ircd/m_gline.c (mo_gline): force local flag when deactivating
263         glines with 0 lastmod
264
265         * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time
266         are now removed instead of being deactivated
267
268         * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE *
269         -<mask>" be accepted
270
271         * ircd/channel.c (send_channel_modes): deal with one of the last
272         vestiges of sendbuf
273
274         * ircd/m_burst.c (ms_burst): debugged ban processing; removed
275         debugging hooks
276
277         * ircd/channel.c (modebuf_extract): remove debugging
278         sendto_opmask_butone calls
279
280 2000-05-03  Kevin L. Mitchell  <klmitch@mit.edu>
281
282         * ircd/channel.c: support a couple of new flags to support using
283         mode_parse; fix some bugs with 0 struct ModeBuf *; implementation
284         of modebuf_extract to extract added flags for use by ms_burst
285
286         * include/channel.h: a couple of new flags to support using
287         mode_parse inside ms_burst
288
289         * ircd/m_burst.c (ms_burst): brand new implementation of BURST
290
291         * ircd/m_endburst.c: add loop to processing of end_of_burst to
292         free empty channels after the BURST is over.
293
294         * ircd/m_server.c: convert to use new send.c functions--I wanted
295         to rewrite it from scratch, but the logic's pretty complex; I may
296         still rewrite it, though...
297
298 2000-05-02  Thomas Helvey <tomh@inxpress.net>
299
300         * ircd/ircd.c: fix broken header include ordering
301
302 2000-05-02  Thomas Helvey <tomh@inxpress.net>
303         
304         * ircd/IPcheck.c: cleanups for ZenShadow's cleanups
305         review emailed privately
306
307         * include/IPcheck.h: removed unneeded include
308
309 2000-05-02  Kevin L. Mitchell  <klmitch@mit.edu>
310
311         * ircd/s_user.c (hunt_server): throw in a comment so I know what
312         the sendto_one is for
313
314         * include/querycmds.h (Count_unknownbecomesclient): convert to
315         sendto_opmask_butone
316
317         * ircd/send.c: start removing dead code
318
319         * include/send.h: start removing dead code
320
321         * ircd/m_rping.c: convert to sendcmdto_one / send_reply /
322         hunt_server_cmd
323
324         * ircd/m_rpong.c: convert to sendcmdto_one / send_reply
325
326 2000-05-01  Kevin L. Mitchell  <klmitch@mit.edu>
327
328         * ircd/m_stats.c: convert to sendcmdto_one / send_reply
329
330         * ircd/m_kick.c: Completely reimplement m_kick
331
332         * ircd/channel.c: send_user_joins removed; it was dead code,
333         anyway...
334
335 2000-05-01  Perry Lorier <isomer@coders.net>
336         * ircd/m_invite.c: Fix for the rest of m_invite.c, and again.
337         * ircd/channels.c: My fix for the part problem.  Untested, probably
338                 won't work.  Can't be much worse than the current problem.
339                 it'll either work or core, take your pick.
340
341
342 2000-04-30  Perry Lorier <isomer@coders.net>
343         * config/config-sh.in: Fix for CONNEXIT
344         * ircd/s_{user,misc}.c: Fix for CONNEXIT
345         * ircd/m_invite.c: Fix for incorrectly numnickified invite.
346                         (Kev: Want to come talk to me about this?)
347
348 2000-04-30  Steven M. Doyle <steven@doyle.net>
349         * ircd/ircd.c
350           - general cleanups and readability enhancements
351           - rewrite of setuid/chroot code.
352           - server will no longer run as root
353           - -DPROFIL compile option removed
354           - Fixed IPcheck API calls
355  
356         * config/config-sh.in
357           - Fixed up chroot compile options
358           - Added options for debug and profile compiles
359  
360         * config/gen.ircd.Makefile
361           - Support for new debug/profile options
362  
363         * ircd/Makefile.in
364           - Support for new debug/profile options
365  
366         * ircd/ircd_signal.c
367           - Removed -DPROFIL
368
369         * include/IPcheck.h
370           - Removed old API prototypes, added new ones
371         
372         * ircd/IPcheck.c
373           - Readability cleanups (well, I -think-...)
374           - Changed IPRegistryEntry.last_connect to a time_t.  The previously
375             used unsigned short was probably causing interesting things after
376             a client had been connected longer than about 65,535 seconds...
377           - Removed old API functions.
378
379         * ircd/whocmds.c
380           - Removed IPcheck.h include
381         
382         * Additionally modified IPcheck API calls in:
383           - ircd/m_nick.c
384           - ircd/m_auth.c
385           - ircd/s_bsd.c
386           - ircd/s_conf.c
387           - ircd/s_misc.c
388           - ircd/s_serv.c
389           - ircd/s_user.c
390         
391         
392 2000-04-30  Perry Lorier <isomer@coders.net>
393         * ircd/s_bsd.c: Sigh. :)
394         * ircd/m_mode.c: fix for modeless channels by poptix.
395
396 2000-04-29  Kevin L. Mitchell  <klmitch@mit.edu>
397
398         * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf
399
400         * ircd/channel.c (clean_channelname): make clean_channelname also
401         truncate long channel names
402
403 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
404
405         * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf
406
407         * ircd/channel.c: implemented joinbuf_init, joinbuf_join,
408         joinbuf_flush
409
410         * include/channel.h: definitions and declarations for the struct
411         JoinBuf abstraction
412
413 2000-04-29  Perry Lorier <isomer@coders.net>
414         * ircd/s_bsd.c: Ok, so I thought I compiled and tested this...
415
416 2000-04-29  Perry Lorier <isomer@coders.net>
417         * ircd/s_bsd.c: Add debugging code to IPcheck
418
419 2000-04-28  Kevin L. Mitchell  <klmitch@mit.edu>
420
421         * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT
422
423         * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of
424         RPL_EXPLICIT
425
426         * ircd/m_userhost.c (m_userhost): add a dead code comment
427
428         * ircd/m_desynch.c: forgot one...
429
430         * ircd/m_rehash.c (mo_rehash): er, duplicates :)
431
432         * ircd/m_proto.c (proto_send_supported): just change a comment so
433         it doesn't show up in my scans
434
435         * ircd/ircd_reply.c (send_reply): fix a slight bug...
436
437         * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions,
438         kinda hackish...
439
440         * ircd/parse.c (parse_server): argument wrangling to make
441         processing in do_numeric a little easier to deal with
442
443         * ircd/s_serv.c (server_estab): SERVER should come from
444         acptr->serv->up, not &me
445
446         * ircd/m_lusers.c: accidentally left out sptr for a %C
447
448         * ircd/send.c: hack to support doing wallchops...
449
450         * ircd/m_whowas.c: convert to new send functions
451
452         * ircd/m_whois.c: convert to new send functions
453
454         * ircd/m_who.c: convert to new send functions
455
456         * ircd/m_wallops.c: convert to new send functions
457
458         * ircd/m_wallchops.c: convert to new send functions
459
460         * ircd/m_version.c: convert to new send functions
461
462         * ircd/m_userip.c: convert to new send functions
463
464         * ircd/m_userhost.c: convert to new send functions
465
466         * ircd/m_uping.c: convert to new send functions
467
468         * ircd/m_trace.c: convert to new send functions
469
470         * ircd/m_topic.c: convert to new send functions
471
472         * ircd/m_time.c: convert to new send functions
473
474         * ircd/m_squit.c: convert to new send functions
475
476         * ircd/m_silence.c: convert to new send functions
477
478         * ircd/m_settime.c: convert to new send functions
479
480         * ircd/m_restart.c: convert to new send functions
481
482         * ircd/m_rehash.c: convert to new send functions
483
484         * ircd/m_privmsg.c: convert to new send functions
485
486         * ircd/m_pong.c: convert to new send functions
487
488         * ircd/m_ping.c: convert to new send functions
489
490         * ircd/m_pass.c: convert to new send functions
491
492         * ircd/m_opmode.c: convert to new send functions
493
494         * ircd/m_oper.c: convert to new send functions
495
496         * ircd/m_notice.c: convert to new send functions
497
498         * ircd/m_nick.c: convert to new send functions
499
500         * ircd/m_names.c: convert to new send functions
501
502         * ircd/m_motd.c: convert to new send functions
503
504         * ircd/m_mode.c: convert to new send functions
505
506         * ircd/m_map.c: convert to new send functions
507
508         * ircd/m_lusers.c: convert to new send functions
509
510         * ircd/m_list.c: convert to new send functions
511
512         * ircd/m_links.c: convert to new send functions
513
514         * ircd/m_kill.c: convert to new send functions
515
516         * ircd/m_jupe.c: convert to new send functions
517
518         * ircd/m_invite.c: convert to new send functions
519
520         * ircd/m_info.c: convert to new send functions
521
522         * ircd/m_help.c: convert to new send functions
523
524         * ircd/m_gline.c: convert to new send functions
525
526         * ircd/m_error.c: convert to new send functions
527
528         * ircd/m_endburst.c: convert to new send functions
529
530         * ircd/m_die.c: convert to new send functions
531
532         * ircd/m_destruct.c: convert to new send functions
533
534         * ircd/m_defaults.c: convert to new send functions
535
536         * ircd/m_connect.c: convert to new send functions
537
538 2000-04-28  Perry Lorier <isomer@coders.net>
539         * RELEASE.NOTES: Describe a few more undocumented features.
540         * config/config-sh.in: change the default paths for logging
541         and the recommended number of channels.
542         * include/supported.h: Rearrange slightly, added CHANTYPE's
543
544 2000-04-27  Kevin L. Mitchell  <klmitch@mit.edu>
545
546         * ircd/m_close.c: convert to send_reply
547
548         * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
549
550         * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
551
552         * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
553
554         * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
555         that takes cmd and tok arguments, etc.  NOTE: THIS IMPLEMENTATION
556         HAS A MAJOR HACK!!!  The whole hunt_server architecture should be
557         carefully rethought...
558
559         * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
560
561         * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
562
563         * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
564         numeric nick; therefore, we have to use the server name
565
566         * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick
567
568         * ircd/send.c: fix minor bugs
569
570         * ircd/s_user.c (check_target_limit): mark dead code so I filter
571         it when I grep
572
573         * ircd/s_serv.c (exit_new_server): mark dead code so I filter it
574         when I grep
575
576         * ircd/parse.c: mark dead code so I filter it when I grep
577
578         * ircd/map.c: mark dead code so I filter it when I grep
579
580         * ircd/ircd.c: mark dead code so I filter it when I grep
581
582         * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply
583         functions
584
585         * ircd/channel.c: mark dead code so I filter it when I grep
586
587         * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str;
588         hope I'm not stepping on toes...
589
590         * ircd/s_conf.c: more sendto_opmask_butone / send_reply
591         conversions; use ircd_snprintf in a couple of cases to negate the
592         possibility of buffer overflow
593
594 2000-04-26  Kevin L. Mitchell  <klmitch@mit.edu>
595
596         * ircd/channel.c: convert as much as possible to new send
597         semantics
598
599         * ircd/send.c (sendcmdto_common_channels): fix a subtle bug --
600         test member->user->from->fd, not from->fd
601
602         * ircd/gline.c (gline_add): go ahead and add badchans; we just
603         won't look for them in m_gline; this way, they always work...
604
605         * ircd/jupe.c: use ircd_vsnprintf conversion specifiers
606
607         * ircd/gline.c: since write_log now uses ircd_vsnprintf, use
608         ircd_vsnprintf conversion specifiers
609
610         * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so
611         I have my conversion specifiers
612
613         * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP
614
615         * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to
616         local users
617
618         * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a
619         little less brain-dead
620
621         * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply
622
623         * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for
624         RPL_STATSDEBUG
625
626         * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for
627         RPL_STATSDEBUG
628
629         * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT
630         for RPL_STATSDEBUG
631
632         * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING
633
634         * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING
635
636         * ircd/s_user.c (register_user): use RPL_EXPLICIT for
637         ERR_INVALIDUSERNAME
638
639         * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT
640
641         * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark
642         a numeric as needing to use an explicit pattern, which will be the
643         first argument in the variable argument list
644
645         * ircd/s_user.c: use sendrawto_one instead of sendto_one to send
646         non-prefixed nospoof PING
647
648         * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send
649         non-prefixed SERVER login
650
651         * ircd/ircd.c (check_pings): fix last sendto_one calls (except for
652         a numeric usage further up)
653
654         * include/send.h: declare sendrawto_one
655
656         * ircd/send.c (sendrawto_one): new function to use ONLY for
657         non-prefixed commands, like PING to client, or PASS/SERVER on
658         server registration
659
660 2000-04-25  Kevin L. Mitchell  <klmitch@mit.edu>
661
662         * ircd/ircd_snprintf.c (doprintf): implement %H for possible
663         future expansion (channel numerics?)
664
665         * include/ircd_snprintf.h: added documentation to # to explain use
666         with %C; added documentation for : to explain use with %C; added
667         documentation for %H for channels
668
669         * ircd/whocmds.c: use send_reply
670
671         * ircd/userload.c: use sendcmdto_one
672
673         * ircd/uping.c: use sendcmdto_one
674
675         * ircd/send.c: use new flags to %C format string; ':' prefixes
676         client name with a colon for local connects, '#' uses
677         nick!user@host form for local connects
678
679         * ircd/s_user.c: use send_reply, sendto_opmask_butone,
680         sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone
681
682         * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone
683
684         * ircd/s_bsd.c: use sendto_opmask_butone, send_reply,
685         sendcmdto_one
686
687         * ircd/s_auth.c: use sendto_opmask_butone
688
689         * ircd/res.c: use sendcmdto_one
690
691         * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some
692         debugging assertions
693
694 2000-04-24  Kevin L. Mitchell  <klmitch@mit.edu>
695
696         * ircd/support.c: dumpcore is no longer used, so get rid of it
697
698         * ircd/parse.c: use send_reply, sendcmdto_one
699
700         * ircd/map.c: use send_reply
701
702         * ircd/listener.c: use send_reply
703
704         * ircd/jupe.c: use sendto_opmask_butone, send_reply
705
706         * ircd/ircd_reply.c: use send_reply
707
708         * ircd/ircd.c: use sendto_opmask_butone
709
710         * ircd/gline.c: use sendto_opmask_butone, send_reply
711
712         * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely
713         registered clients; make FLAG_ALT print nick!user@host; make
714         FLAG_COLON print :blah
715
716         * ircd/class.c (report_classes): use send_reply instead of
717         sendto_one
718
719         * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one
720
721         * ircd/IPcheck.c (ip_registry_connect_succeeded): replace
722         sendto_one with sendcmdto_one
723
724 2000-04-21  Kevin L. Mitchell  <klmitch@mit.edu>
725
726         * ircd/send.c: clean up logic in sendcmdto_channel_butone; use
727         MyConnect() instead of IsServer() in sendcmdto_flag_butone; define
728         sendcmdto_match_butone
729
730         * include/send.h: declare sendcmdto_match_butone
731
732 2000-04-20  Kevin L. Mitchell  <klmitch@mit.edu>
733
734         * ircd/jupe.c: update to use send_reply()
735
736         * ircd/gline.c: update to use send_reply()
737
738         * include/ircd_reply.h: declare send_reply
739
740         * ircd/ircd_reply.c (send_reply): send_error_to_client, but for
741         replies; uses ircd_snprintf
742
743         * ircd/send.c: added comments to redirect searchers to appropriate
744         sendcmdto_* function; moved new functions to end of file; added
745         explanatory comments; reordered arguments; defined new functions
746         mentioned below
747
748         * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions
749
750         * ircd/m_gline.c: reorder arguments to sendcmdto_* functions
751
752         * ircd/jupe.c: reorder arguments to sendcmdto_* functions
753
754         * ircd/gline.c: reorder arguments to sendcmdto_* functions
755
756         * include/send.h: reorder arguments, add explanatory comments,
757         declare new functions sendcmdto_flag_butone, sendto_opmask_butone,
758         and vsendto_opmask_butone
759
760 2000-04-19  Kevin L. Mitchell  <klmitch@mit.edu>
761
762         * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified
763         vsendto_op_mask that uses '*' instead of the receiving client
764         nickname
765
766         * include/send.h: declare sendcmdto_channel_butone; takes a skip
767         argument that allows you to skip (or not to skip) deaf users,
768         users behind bursting servers, and non channel operators
769
770 2000-04-17  Kevin L. Mitchell  <klmitch@mit.edu>
771
772         * ircd/send.c: new sendcmdto_channel_butserv -- note that old
773         sendto_channel_butserv has a subtle bug; also wrote
774         sendcmdto_common_channels.
775
776         * include/send.h: declare new sendcmdto_* functions
777
778         * ircd/jupe.c: support local deactivations of jupes
779
780         * ircd/gline.c: support local deactivations of glines
781
782         * include/jupe.h: JUPE_LDEACT allows jupes to be locally
783         deactivated; if they aren't locally deactivated, then it slaves to
784         the net-wide activation status; JupeIsRemActive() tests only
785         whether the jupe is active everywhere else
786
787         * include/gline.h: GLINE_LDEACT allows glines to be locally
788         deactivated; if they aren't locally deactivated, then it slaves to
789         the net-wide activation status; GlineIsRemActive() tests only
790         whether the gline is active everywhere else
791
792         * ircd/gline.c: detect overlapping G-lines; if an existing, wider
793         gline expires after the new one will, we drop the new one,
794         otherwise we add the G-line after that one (so the wide one will
795         apply first); if the new one contains an existing G-line and if it
796         will expire after the existing one, we drop the existing one to
797         save memory
798
799         * ircd/m_gline.c (mo_gline): opers could issue remote local
800         glines when CONFIG_OPERCMDS was off; fixed
801
802 2000-04-16  Kevin L. Mitchell  <klmitch@mit.edu>
803
804         * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if
805         this is a local JUPE
806
807         * ircd/gline.c: add flags argument to gline_activate and
808         gline_deactivate for future expansion
809
810         * ircd/m_gline.c: pass flags to gline_activate and
811         gline_deactivate
812
813         * include/gline.h: add flags argument to gline_activate and
814         gline_deactivate
815
816         * ircd/jupe.c: add flags argument to jupe_activate and
817         jupe_deactivate for future expansion
818
819         * include/jupe.h: add flags argument to jupe_activate and
820         jupe_deactivate
821
822         * ircd/m_jupe.c: pass a flags argument to jupe_add instead of
823         local, active; pass flags to jupe_activate and jupe_deactivate
824
825         * include/gline.h: remove dead code
826
827         * ircd/gline.c: make gline expire times relative to CurrentTime,
828         since that should be monotonically increasing, instead of
829         TStime(), which can be set backwards, and which can therefore
830         cause an expire time to increase; make local glines be removed
831         instead of just deactivated; don't let gline_find() look for
832         user@host glines if the mask being looked up is a channel mask
833
834         * ircd/send.c (vsendcmdto_one): forgot to account for the case
835         where origin is a server and destination is a user
836
837         * ircd/jupe.c: make jupe expire times relative to CurrentTime,
838         since that should be monotonically increasing, instead of
839         TStime(), which can be set backwards, and which can therefore
840         cause an expire time to increase; make local jupes be removed
841         instead of just deactivated
842
843         * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for
844         limit is fine.  any other warnings I should know about?
845
846 2000-04-15  Thomas Helvey <tomh@inxpress.net>
847
848         * ircd/*.c: const correctness and type safety cleanups to
849         get code to compile with C++ compiler. Still has
850         signed/unsigned comparison warnings.
851
852 2000-04-15  Greg Sikorski <gte@atomicrevs.demon.co.uk>
853
854         * ircd/userload.c: change <sys/time.h> include to <time.h> for
855           portability.
856
857 2000-04-14  Kevin L. Mitchell  <klmitch@mit.edu>
858
859         * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C
860         and convert acptr...
861
862         * ircd/s_user.c: move gline_lookup function call into
863         register_user, where it'll have a username to lookup!
864
865         * ircd/m_gline.c: modify to utilize new sendcmdto_* series of
866         functions; also stuff send_error_to_client into return clauses
867
868         * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of
869         functions; also use send_error_to_client where that makes sense
870
871         * ircd/jupe.c: modify to utilize new sendcmdto_* series of
872         functions; also use send_error_to_client where that makes sense
873
874         * ircd/gline.c: modify to utilize new sendcmdto_* series of
875         functions; also fix gline_lookup() to deal properly with remote
876         clients--boy, do struct Client and struct User need to be cleaned
877         up!
878
879         * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server,
880         too...
881
882         * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and
883         sendcmdto_serv_butone(), all utilizing the %v conversion of
884         ircd_snprintf()
885
886         * include/send.h: define IRC_BUFSIZE, max size of a message;
887         declare sendcmdto_one(), vsendcmdto_one(), and
888         sendcmdto_serv_butone()
889
890         * include/msg.h: define all the CMD_* constants needed to utilize
891         the new sendcmdto_* series of functions
892
893         * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend
894
895         * ircd/gline.c: remove old, dead code.
896
897         * ircd/m_gline.c (mo_gline): disallow setting of global G-lines
898         unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines
899         (don't advertise proxies); remove dead code
900
901         * ircd/parse.c: oper handler for JUPE only lists jupes unless
902         CONFIG_OPERCMDS is enabled
903
904         * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if
905         CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c
906
907         * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled,
908         always return ERR_DISABLED
909
910         * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not
911         enabled, always return ERR_DISABLED
912
913         * ircd/s_err.c: add error message to indicate disabled commands
914
915         * include/numeric.h (ERR_DISABLED): to indicate disabled commands
916
917         * doc/Configure.help: add documentation for CONFIG_OPERCMDS
918
919         * config/config-sh.in: add CONFIG_OPERCMDS, default both it and
920         CONFIG_NEW_MODE to 'y' for now
921
922         * ircd/gline.c (gline_list): fix a minor formatting bogon
923
924         * BUGS: since I fixed that bug, might as well mark it fixed.
925
926         * ircd/m_join.c: look up badchans with GLINE_EXACT
927
928         * ircd/m_gline.c: fix parc count problems; look up existing
929         G-lines with GLINE_EXACT; only set new lastmod when
930         activating/deactivating existing glines if old lastmod was not 0
931
932         * ircd/gline.c: forgot to copy the gline reason over; don't
933         propagate a gline with 0 lastmod if origin is user; add
934         GLINE_EXACT to force exact matching of gline mask
935
936         * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero
937         flag properly
938
939         * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost,
940         but gline_lookup() actually takes a client--d'oh.
941
942 2000-04-13  Thomas Helvey <tomh@inxpress.net>
943         * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10
944
945 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
946
947         * ircd/whocmds.c: Don't make idle flag default in /who, to prevent:
948           "/who * x"
949           "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was."
950           (Found by Plexus).
951
952         * ircd/whocmds.c: Change idle time calc from socket idle to user
953           idle.
954
955 2000-04-13  Kevin L. Mitchell  <klmitch@mit.edu>
956
957         * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *,
958         too, for ircd_snprintf.c
959
960         * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in
961         comments; mostly descended from the Linux manpage for printf, but
962         also documenting the extensions.
963
964         * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a
965         client; make 'q' be the same as 'L'; remove __inline__; only
966         define EXTENSION if HAVE_LONG_LONG is defined
967
968         * include/handlers.h: declare m_gline()
969
970         * ircd/parse.c: gline can be called by users, but it only lists
971         the glines.
972
973         * ircd/s_user.c (set_nick_name): resend gline if a remote server
974         introduces a glined client
975
976         * ircd/s_serv.c (server_estab): burst glines, too
977
978         * ircd/gline.c: fix up all the expire times to be offsets;
979         simplify gline_resend()
980
981         * ircd/m_gline.c: begin coding replacements for ms_gline(),
982         mo_gline(), and m_gline()
983
984         * ircd/gline.c (gline_add): allow *@#channel to work correctly;
985         also, prohibit local BADCHANs if LOCAL_BADCHAN not defined
986
987 2000-04-13  Greg Sikorski <gte@atomicrevs.demon.co.uk>
988
989         * tools/Bouncer/*: Add comments/documentation/tags.
990         * tools/Bouncer/*: Add debug defines, make task fork().
991
992 2000-04-12  Thomas Helvey <tomh@inxpress.net>
993         * ircd/s_err.c: Cleanup s_err.c make one table so we
994         don't have to do anything tricky to get an error string.
995
996 2000-04-12  Greg Sikorski <gte@atomicrevs.demon.co.uk>
997         * Add port bouncer for http (x/w)
998
999 2000-04-12  Kevin L. Mitchell  <klmitch@mit.edu>
1000
1001         * ircd/s_conf.c (find_kill): replaced call to find_gline() with a
1002         call to gline_find(); also used GlineReason() instead of direct
1003         reference to structure member
1004
1005         * ircd/m_join.c (m_join): replace bad_channel() calls with calls
1006         to gline_find(name, GLINE_BADCHAN), and also check to see if gline
1007         is active
1008
1009         * ircd/channel.c: nothing seems to be called anywhere...
1010
1011         * ircd/s_err.c: update a couple of replies to dovetail with new
1012         semantics
1013
1014         * ircd/gline.c: begin complete re-implementation of gline.c along
1015         the lines of the final design of jupe.c
1016
1017         * include/gline.h: begin complete re-implementation of gline.c
1018         along the lines of the final design of jupe.c
1019
1020         * ircd/channel.c (mode_process_clients): fix "Deop of +k user on
1021         %s by %s" message...
1022
1023         * ircd/ircd_snprintf.c: my new snprintf()-like functions
1024
1025         * include/ircd_snprintf.h: my new snprintf()-like functions
1026
1027 2000-04-11  Thomas Helvey <tomh@inxpress.net>
1028         * ircd/IPcheck.c: removed old dead code
1029         * ircd/s_user.c (send_user_info): removed non-standard
1030           user not found message for userhost/userip
1031
1032 2000-04-11  Greg Sikorski <gte@atomicrevs.demon.co.uk>
1033
1034         * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric.
1035         * doc/p10.html: Work on chapter 4.
1036
1037 2000-04-10  Kevin L. Mitchell  <klmitch@mit.edu>
1038
1039         * ircd/channel.c (mode_parse_client): fix coredump on /mode
1040         #foobar +o nosuchnick
1041
1042 2000-04-10  Perry Lorier  <Isomer@coders.net>
1043         * BUGS: Added bug.
1044
1045 2000-04-09  Thomas Helvey <tomh@inxpress.net>
1046         * include/IPcheck.h: fix prototype
1047         * ircd/s_user.c: fix usage of IPcheck_remote_connect
1048         * ircd/IPcheck.c: removed unused args
1049
1050 2000-04-09  Thomas Helvey <tomh@inxpress.net>
1051         * include/IPcheck.h: add proto for IPcheck_expire
1052
1053         * ircd/IPcheck.c: Rewrote
1054
1055         * ircd/ircd.c: Add IPcheck_expire to main message loop
1056
1057         * ircd/s_user.c: Redo target hashing, refactor target code
1058
1059         * include/numeric.h: Cleaned up numerics, added which ones are
1060         in use by other networks and what they are in use for.
1061
1062         * ircd/channel.c: cleaned can_join(), allow anyone through anything
1063         if /invited, simplified the function.  Opers overusing OPEROVERRIDE
1064         will get a message explaining to them not to cheat.
1065
1066         * ircd/m_join.c: cleaned up the various join functions, should be
1067         a lot more efficient.  Still needs work.  Now assumes that s<->s
1068         won't send it a JOIN 0.  Service coders - note this and tread with
1069         care.
1070
1071         * ircd/m_stats.c: added Gte-'s stats doc patch.
1072
1073         * ircd/m_version.c: /version now returns the 005 numeric as well.
1074         as requested by Liandrin.
1075
1076
1077 2000-04-07  Kevin L. Mitchell  <klmitch@mit.edu>
1078
1079         * ircd/m_clearmode.c: add include for support.h for write_log()
1080
1081         * configure: move ircd/crypt/* to tools/*
1082
1083 2000-04-06  Thomas Helvey <tomh@inxpress.net>
1084         * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds
1085           set client host to server alias if connection from localhost
1086
1087 2000-04-06  Perry Lorier <isomer@coders.net>
1088         * ircd/ircd.c: Fix core during pinging (oops)
1089         
1090 2000-04-06  Perry Lorier <isomer@coders.net>
1091         * ircd/send.c: fixed wrong ident being sent to channels bug.
1092         * include/numerics.h: Updated some of the numerics from other
1093         networks.  Flagged some as 'unused' by undernet.
1094
1095 2000-03-30  Perry Lorier <isomer@coders.net>
1096         * ircd/ircd.c: Lets see if this helps the ping problem at all.
1097         * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle
1098         time for local clients. (as requested), extended who now returns all
1099         the flags (@+!) so you can tell the complete state of a client.
1100
1101 2000-03-30  Thomas Helvey <tomh@inxpress.net>
1102         * m_rping.c m_rpong.c: add Gte's rping/rpong fixes
1103
1104 2000-03-30  Perry Lorier <isomer@coders.net>
1105         * ircd/parse.c: oops, missed opers.
1106
1107 2000-03-30  Perry Lorier <isomer@coders.net>
1108         * ircd/parse.c: fixed mystifying ping bug thats been plaguing us
1109         for so long.  Remember: m_ping MUST be in the parse array. :)
1110
1111 2000-03-30  Perry Lorier <isomer@coders.net>
1112         * ircd/ircd.c: test in check_pings was wrong.  I move that we
1113         disallow cvs commit after 10pm localtime....
1114
1115 2000-03-30  Perry Lorier <isomer@coders.net>
1116         * ircd/m_pong.c: Fix it for servers too.
1117
1118 2000-03-30  Perry Lorier <isomer@coders.net>
1119         * ircd/m_pong.c: Fix ping timeout bugs
1120
1121 2000-03-30  Perry Lorier <isomer@coders.net>
1122         * ircd/channel.c: Bans had CurrentTime in their when field instead
1123         of TStime()
1124
1125 2000-03-31  Thomas Helvey <tomh@ixpress.net>
1126         * ircd/numnicks.c (SetXYYCapacity): fix for extended
1127         numerics.
1128
1129 2000-03-30  Perry Lorier <isomer@coders.net>
1130         * ircd/m_nick.c: send kills both ways so when we add nick change
1131         on collision we don't desync the network.
1132
1133         * ircd/map.c: Fixup the map a bit more.
1134
1135 2000-03-31  Kevin L. Mitchell  <klmitch@mit.edu>
1136
1137         * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH
1138
1139         * ircd/m_opmode.c: Log the mode changes to OPATH
1140
1141         * ircd/channel.c (modebuf_flush_int): Log the mode changes to
1142         OPATH
1143
1144         * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to
1145         OPATH
1146
1147         * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH
1148
1149         * config/config-sh.in: added OPATH for opmode log file
1150
1151         * ircd/m_clearmode.c (do_clearmode): updated uses of
1152         modebuf_mode_string() for the new usage
1153
1154         * ircd/channel.c: added flag MODE_FREE and an int argument to
1155         modebuf_mode_string() to indicate that the string must be free'd;
1156         updated calls to modebuf_mode_string() for the new usage; called
1157         collapse(pretty_mask()) on the ban string and use allocated memory
1158         for it; added ban list length accounting; fixed a number of small
1159         bugs in ban processing
1160
1161         * include/channel.h: added flag MODE_FREE and an int argument to
1162         modebuf_mode_string() to indicate that the string must be free'd
1163
1164         * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed
1165         keys and limits that are set
1166
1167 2000-03-30  Perry Lorier <isomer@coders.net>
1168         * ircd/ircd.c: rewrote check_pings() for maintainability
1169         and speed.  Also changed quit msg's so they don't have
1170         redundant nick[host] info in them.
1171
1172         * ircd/send.c: Changed write errors to report what error
1173         occured (if possible).
1174
1175         * ircd/gline.c: added gline comment to the quit.
1176
1177         * ircd/m_server.c: Added suggestions to server quits mentioning
1178         what went wrong so the admin can fix it earlier instead of asking
1179         questions...
1180
1181         * ircd/map.c: Changed m_map() to hide numerics, show a * beside
1182         servers that aren't fully burst yet.  And show '(--s)' for servers
1183         where its not sure.
1184
1185         * doc/example.conf: Fixed wrapped U:
1186
1187 2000-03-30  Kevin L. Mitchell  <klmitch@mit.edu>
1188
1189         * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of
1190         mode_parse() (version selectable at compile time)
1191
1192         * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1])
1193
1194         * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1])
1195
1196         * config/config-sh.in: add new config option to enable new m_mode
1197         implementation
1198
1199         * doc/Configure.help: add documentation for new config option
1200         CONFIG_NEW_MODE
1201
1202         * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461
1203         MODE -v : Not enough parameters
1204
1205         * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove
1206         +k and +l even if they weren't set...
1207
1208         * ircd/m_opmode.c: implement the OPMODE command using mode_parse()
1209
1210         * ircd/channel.c: make mode_process_clients() clear the DEOPPED
1211         flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list
1212         for; test the 0-th member, not the i-th member, of the client
1213         change state stuff
1214
1215         * ircd/m_clearmode.c (do_clearmode): use the new
1216         mode_invite_clear() function
1217
1218         * ircd/channel.c: cleared up all the compile-time warnings and
1219         errors
1220
1221         * include/channel.h: added declarations for mode_ban_invalidate()
1222         and mode_invite_clear()
1223
1224         * ircd/channel.c: finished mode_parse(), then broke it up into a
1225         dozen or so helper functions to make the code easier to read
1226
1227 2000-03-29  Thomas Helvey <tomh@inxpress.net>
1228         * ircd/ircd.c: refactor server initialization a bit, use
1229         getopt for parsing command line, refactor init_sys, main,
1230         and other bits.
1231
1232         * ircd/s_bsd.c: add functions for initialization to clean
1233         up logic a bit and remove duplicated code.
1234
1235         * include/ircd.h: add struct for server process related
1236         variables.
1237
1238 2000-03-29  Kevin L. Mitchell  <klmitch@mit.edu>
1239
1240         * ircd/channel.c: initial definition of mode_parse(); flags to
1241         prevent doing the same thing multiple times; helper method
1242         send_notoper() to send a "Not oper"/"Not on channel" notice
1243
1244         * include/channel.h: declare mode_parse() and helper flags
1245
1246         * ircd/channel.c (modebuf_flush_int): fiddled with timestamp
1247         sending to match the current action of set_mode() closely enough
1248         that hopefully there won't be major conflicts
1249
1250         * ircd/channel.c (modebuf_flush_int): consolidated the mode string
1251         building logic, reversed the order of the arguments to mode
1252         commands to have '-' preceed '+'
1253
1254 2000-03-29  Thomas Helvey <tomh@inxpress.net>
1255         * ircd/s_bsd.c (add_connection): don't disable socket options
1256         let OS tune itself and allow important performance tweaks to 
1257         work.
1258
1259 2000-03-28  Kevin L. Mitchell  <klmitch@mit.edu>
1260
1261         * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got
1262         confused by set_mode, which is doing some really weird logic;
1263         guess what I'm going to rewrite next?  ;)
1264
1265 2000-03-28  Kevin L. Mitchell  <klmitch@emc.com>
1266
1267         * include/channel.h: added MODE_SAVE for the bounds checking stuff
1268         in modebuf_flush
1269
1270         * ircd/channel.c: make modebuf_flush into modebuf_flush_int and
1271         make it do bounds checking on the buffer; all modes are sent only
1272         if the all parameter is 1; modebuf_flush is the exported wrapper
1273
1274         * include/channel.h: add BOUNCE, renumber flags to get a little
1275         more space
1276
1277         * ircd/channel.c (modebuf_flush): don't overload HACK2, add
1278         BOUNCE; send DESYNCH message
1279
1280 2000-03-27  Kevin L. Mitchell  <klmitch@emc.com>
1281
1282         * ircd/m_clearmode.c (do_clearmode): only mark the modes the
1283         channel actually has in effect for deletion
1284
1285         * ircd/channel.c: added explanatory comments to all added
1286         functions; made flushing take place at the correct place even if
1287         the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper
1288         to bash some stupid bugs; made modebuf_flush() return if ModeBuf
1289         is empty, fixed the apparent source, removed some bogus string
1290         termination code, properly terminate the mode strings, add support
1291         for HACK2 and HACK3, made limit strings not be sent if the limit
1292         is being removed, changed where '+' and '-' come from in sent
1293         strings, added support for DEOP flag, set up bouncing code for
1294         HACK2
1295
1296         * ircd/Makefile.in: ran make depend
1297
1298         * include/channel.h: added new defines for future functionality,
1299         made modebuf_flush() return int so I can use tail recursion
1300
1301         * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups
1302         to make it all compile
1303
1304         * ircd/m_opmode.c: add msg.h to includes...
1305
1306         * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan()
1307
1308         * ircd/channel.c (modebuf_flush): realized I forgot to
1309         nul-terminate addbuf/rembuf properly...
1310
1311         * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()...
1312
1313         * ircd/channel.c (modebuf_flush): correct sendto_server_butone to
1314         sendto_serv_butone--blah^2
1315
1316         * ircd/send.c (sendto_serv_butone): stupid comments confused me
1317
1318         * ircd/channel.c (modebuf_flush): if there are no mode changes to
1319         propagate, we're done...
1320
1321         * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone,
1322         not sendto_all_butone
1323
1324         * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode
1325
1326         * ircd/m_opmode.c: define skeleton for m{o,s}_opmode
1327
1328         * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to
1329         the list
1330
1331         * ircd/parse.c: added messages for opmode and clearmode
1332
1333         * include/handlers.h: added declarations for mo_opmode(),
1334         ms_opmode(), mo_clearmode(), and ms_clearmode()
1335
1336         * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and
1337         TOK_CLEARMODE
1338
1339         * include/channel.h (MODEBUF_DEST_OPMODE): Define the
1340         MODEBUF_DEST_OPMODE flag
1341
1342         * ircd/channel.c (modebuf_flush): added new flag,
1343         MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear
1344         to originate from source's server (or source itself, if
1345         IsServer(source)); also causes a server-level MODE to be sent as
1346         OPMODE instead
1347
1348         * include/channel.h: defined MODEBUF_DEST_SERVER,
1349         MODEBUF_DEST_HACK4
1350
1351         * ircd/channel.c: Add another argument to build_string() to handle
1352         numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to
1353         servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices
1354         to be sent out
1355
1356 2000-03-27  Perry Lorier <isomer@coders.net>
1357
1358         * ircd/s_bsd.c: fixed missing 'u' typo.
1359
1360 2000-03-26  Kevin L. Mitchell  <klmitch@emc.com>
1361
1362         * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(),
1363         _mode_string(), _mode_client(), _flush(); also implemented a
1364         simple build_string()
1365
1366         * include/channel.h: added definition of ModeBuf, modebuf_*
1367         manipulation functions, and a couple of helper macros
1368
1369 2000-03-24 Thomas Helvey <tomh@inxpress.net>
1370   * numicks.c: convert extended numerics to use original mask version
1371   * numnicks.h: ""
1372   * s_user.c:
1373 2000-03-23 Thomas Helvey <tomh@inxpress.net>
1374   * Merge in changes from production
1375 2000-03-22 Thomas Helvey <tomh@inxpress.net>
1376   * numicks.c: Tweak to numnick generator to reduce possibility of duplicates.
1377   * rfc1459.unet: Add Maniac's documentation for /names 0
1378 * Fix misc. jupe bugs that somehow made it into the tree
1379 * Escape /names 0 to mean /names --Maniac
1380 * Don't core when server asks for info --Maniac 
1381 * Add Kev's jupe patch --Bleep
1382 * Add Maniacs squit patch --Bleep
1383 * Merge in u2_10_10_beta07 changes --Bleep
1384 * Merge in u2_10_10_beta06 changes --Bleep
1385 * Start ircu2.10.11 development, beta branch u2_10_10 --Bleep
1386 #-----------------------------------------------------------------------------