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