12.11.2p3
2
32010-08-12  Piotr Kucharski
4
5	* channel.c/can_send(): bans and exceptions set with cidr work only
6	  on local server. side-effect of this was if you set non-cidr ban
7	  (say *@*) plus a cidr exception, you were no longer heard outside
8	  your server (you matched the ban, but cidr exception was not even
9	  checked). allow remote clients to talk without checking for bans
10	  and exceptions. (reported by BR).
11	* s_err.c, s_serv.c, s_user.c: fix various format string errors
12	  visible on amd64 (patch from jilles).
13	* parse.c/cancel_clients(), s_user.c/register_user(): fix all kills
14	  that sent a nick to send a UID, except the impossible nick collision
15	  kill (patch from jilles).
16
172010-08-11  Piotr Kucharski
18
19	* s_conf.c/prep_kline(): reject all not fully specified u@h masks and
20	  also *@* one.
21	* ircd.c/s_die(): clean up unix socket.
22	* s_service.c/m_service(): send SERVICE also to dist matching SID.
23
242010-03-09  Piotr Kucharski
25
26	* s_conf.c/prep_kline(): match_ipmask() was getting host with '@' char
27	  prepended, that did not work at all.
28
292009-12-11  Piotr Kucharski
30
31	* s_conf.c/prep_kline(): oper can crash his local ircd by issuing
32	  tkline with wrong parameters (reported by AsmPro).
33
342.11.2p2
35
362009-11-13  Piotr Kucharski
37
38	* channel.c/set_mode(): don't swap keys and limits on netjoin.
39	* s_misc.c/initruntimeconf(), config.h.dist: default and min. values
40	  of SPLIT vars; lower defaults to better match IRCnet status.
41	* struct_def.h, ircd.c/try_connections(), s_misc.c/check_split(),
42	  s_serv.c/m_set(): add "SET ACONNECT ND" to disable autoconnect
43	  after nickdelay expires (requested by BR); with nice sideeffect
44	  of showing in "stats d" when server entered split mode.
45	* s_conf.c/oline_flags_parse(), s_debug/serveropts[], config.h.dist:
46	  add OPER_SQUIT_REMOTE define and use it in version string (requested
47	  by BR to do V:line on it).
48
492009-04-30  Piotr Kucharski
50
51	* s_conf.c/prep_kline(): check for erroneous netmasks in tkline.
52
532009-03-15  Piotr Kucharski
54
55	* support.c/strtoken(): mysterious wallops from JP fix (kudos to jilles).
56	* list.c/free_class(), patricia.c, patricia_ext.h, s_externs.h: tidy up.
57	* s_conf.c/find_Oline(), s_user.c/m_oper(): better error msg for OPER
58	  failed due to class limits.
59	* s_user.c/register_user(): tiny fix for sunCC compiler.
60	* res.c: fix compilation with DEBUG problem.
61	* s_conf.c/find_Oline(): use user->sip.
62	* list.c/make_client(), s_misc.c/read_motd(): MyMalloc() does outofmemory
63	  on its own, no need to do that again.
64	* channel.c/jp_chname(), support.c/strtoken(): if cn[1] is null, cn[2]
65	  may access rubbish, reverse conditions to not allow it.
66	* channel.c/clean_channelname(): if japanese channel name is incorrect,
67	  return -1 to allow callee function to react; fix all functions that
68	  call clean_channelname() to deal with erroneous channel names.
69
702.11.2p1
71
722008-06-24  Piotr Kucharski
73
74	* res.c/proc_answer(), update_list(): fix incorrect caching of ips looked
75	  up for C/N-lines (patch from fiction).
76	* res.c/m_dns(): show flags for cache entries.
77	* initconf(): allow '*' in username part of user@host field of C/N/S line
78	  (reported by BR).
79	* chkconf.c/openconf(), s_conf.c/openconf(): pass INET6 to m4, if defined
80	  (patch from peder).
81	* configure.in, configure, setup.h.in: check for GNU m4.
82	* chkconf.c/openconf(), s_conf.c/openconf(): pass -I includedir to GNU m4
83	  allowing easier configs (patch from peder).
84	* chkconf.c/openconf(), s_conf.c/openconf(), setup.h.dist: define to use
85	  "-P" flag for GNU m4 (courtesy to peder).
86	* s_conf.c/check_split(): set default caccept value after first netjoin.
87
882008-06-23  Piotr Kucharski
89
90	* res.c: more cleanup, so no v6 related code is in there for #undef INET6.
91
922008-06-22  Piotr Kucharski
93
94	* class.c/add_class(), initclass(): don't set MaxBSendq if not explicitly
95	  set in Y-line (client classes have no need for it anyway).
96	* class.c/get_sendq(): don't use MaxBSendq if not set.
97	* res.c/gethost_byname_type(), proc_answer(), update_list(), make_cache(),
98	  find_cache_name(): add "valid" flags to cache entries, so we use cached
99	  entry only when it was ok in both directions; this fixes problems with
100	  dual v4/v6 names in dns and also some possible spoofs (patch from fiction).
101	* res.c: while at it, little cleanup.
102
1032008-06-21  Piotr Kucharski
104
105	* s_err.c, s_serv.c/m_etrace(): turns out that more fields was granted
106	  different numeric in ratbox, so we change to match theirs; etrace now
107	  behave always like ratbox "etrace -full".
108	* s_serv.c/m_sidtrace(): for local clients provide extra fields as well.
109	* s_serv.c/m_etrace(): extend oper check to IsAnOper, like sidtrace has.
110
1112008-06-20  Piotr Kucharski
112
113	* s_err.c, s_serv.c/m_etrace(): add additional user fields to output.
114
1152008-06-18  Piotr Kucharski
116
117	* class.c/initclass(): add missing init for maxbsendq for class 0.
118
1192008-06-15  Piotr Kucharski
120
121	* hash.c/hash_find_ip(): stupid bug making iphash unusable (report by tlund).
122	* s_serv.c/m_stats(): guard stats f with ACL_TRACE.
123
1242.11.2
125
1262008-06-13  Piotr Kucharski
127
128	* s_err.c: change RPL_ETRACEEND numeric to 759.
129
1302008-06-11  Piotr Kucharski
131
132	* channel.c/m_njoin(): fix negative history count in stats z (by fiction).
133	* s_serv.c/m_stats(), m_trace(): show unknown connections only to +w opers.
134	* s_err.c, s_serv.c/m_etrace(), m_sidtracce(): use new RPL_ETRACEEND.
135
1362008-06-10  Piotr Kucharski
137
138	* channel.c/set_mode(): change every unset key to '*', so in a case of
139	  desynch it will not get exposed on &CHANNEL.
140	* struct_def.h: add EXITC_TKLINE.
141	* s_conf.c/do_kline(): set properly EXITC_(T)KLINE (reported by BR).
142	* s_conf.c/attach_conf(), config.h.dist: allow reverting to previous
143	  behaviour of Y-line host limits with #undef YLINE_LIMITS_IPHASH.
144	* parse.c, hash.c, hash_def.h, hash_ext.h, ircd.c, s_user.c, s_misc.c,
145	  config.h.dist: if ip hash or hostname hash is not needed, do not compile
146	  it in (by the power of #ifdefs).
147
1482.11.2b1
149
1502008-06-09  Piotr Kucharski
151
152	* configure.in, setup.h.in, os.h: check if strings.h can be included
153	  along with string.h
154
1552008-06-09  Jakub Vlasek
156
157	* struct_def.h: add iphashv and iphnext used by the IP hash table.
158	* hash.c, hash_def.h, hash_ext.h: add IP hash.
159	* s_conf/attach_conf(): use hash_find_ip() to check for local and
160	  global user limits.
161	* s_user.c/register_client(): Add user to the IP hash.
162	* s_misc.c/exit_one_client(): Remove user from the IP hash.
163
1642008-06-08  Piotr Kucharski
165
166	* channel.c/can_join(): if channel is opless, allow people matching
167	  reoplist to join channel overriding channel limit.
168	* s_misc.c, s_serv.c, s_service.c, s_service_ext.h, s_user.c: change
169	  "server" argument of check_services_butone from char to aServer.
170	* s_user.c/m_message(): allow services to send notices to uids.
171	* s_service.c/check_services_butone(), m_service(), m_servset(),
172	  s_misc.c/exit_one_client(), s_serv.c/m_server_estab(),
173	  s_user.c/hunt_server(): allow distribution to be based on SID,
174	  not only server name.
175	* s_misc.c/get_client_host(): show IP, not hostname, in all those &LOCAL
176	  notices about unauthorized access.
177	* struct_def.h: increased TOPICLEN, MAXBANS and MAXBANLENGHT.
178	* s_user.c/who_one(): show SID between hopcount and user info.
179	* s_serv.c/m_stats(): allow multichar stats.
180	* s_serv.c/m_stats(), s_debug.c/send_defines(): stats d5 return 005 as well.
181	* s_user.c/m_oper(): different message for failed oper attempt if
182	  attach_conf() failed with correct password (reported by MJRider).
183	* s_user.c/attach_conf(): move checks around to save some cpu cycles.
184	* services_def.h, send.c/sendto_flag(): add SERVICE_WANT_CLIENTS.
185	* s_err.c: extend replies[] up to 1000 entries.
186	* numeric_def.h, parse.c, struct_def.h, s_conf.c, s_err.c, s_serv_ext.h,
187	  s_serv.c, config.h.dist: added ETRACE and SIDTRACE commands (from anfl).
188
1892008-06-07  Piotr Kucharski
190
191	* s_user.c/who_find(): service can request who as well and it does not have
192	  user struct allocated => instant segv (reported by BR).
193	* service_def.h: add SERVICE_WANT_KLINE; unfortunately I had to change value
194	  of SERVICE_WANT_TKLINE, otherwise I'd have to rewrite a lot more for
195	  strtol() to work.
196	* s_user.c/is_allowed(): add kline acl for service.
197	* parse.c/parse(): tell service if command is unknown.
198	* struct_def.h: another field for aConf when XLINE (to keep hostmask/ip
199	  to match against).
200	* list.c/make_conf(), free_conf(): add new field.
201	* list.c/free_conf(): source_ip stats confmem stats were not updated.
202	* s_conf.c/initconf(): read new field if X-line conf (and change where
203	  they end up to be a bit more logical).
204	* s_user.c/register_user(): update changed fields and match on ip or
205	  host of the user.
206	* s_serv.c/report_x_lines(): update and add new field.
207
2082.11.2a2
209
2102008-06-06  Piotr Kucharski
211
212	* patricia.c, patricia_ext.h: new files to do CIDR limits (from anfl).
213	* class_def.h: new fields in class and macros for them (from anfl).
214	* class_ext.h, class.c/add_class(): adding and changing limits (from anfl).
215	* list.c/free_class(): freeing patricia (from anfl).
216	* s_conf.c/add_cidr_limit(), remove_cidr_limit(): functions to maintain
217	  proper count for each CIDR subnet (from anfl).
218	* s_conf.c/detach_conf(), attach_conf(): use above two functions in proper
219	  places (from anfl).
220	* s_conf.c/initconf(): read one more field for conf line and pass it to
221	  add_class() (from anfl).
222	* Makefile.in, config.h.dist: make it work (from anfl).
223	* INSTALL.*: documentation for CIDR limits.
224	* class.c/report_classes(): show CIDR limits if they exist.
225	* s_err.c: change RPL_STATSYLINE format to output CIDR limits too.
226
2272008-06-04  Piotr Kucharski
228
229	* s_user.c/register_user(): improve CCL_CONNINFO to show all fields of
230	  connecting USER.
231
2322.11.2a1
233
2342008-06-03  Piotr Kucharski
235
236	* send.c, struct_def.h, support.c, channel.c, channel_ext.h, s_bsd.c,
237	  s_debug.c, s_serv.c, config.h.dist: added JP patch (huge!).
238
2392007-12-16  Piotr Kucharski
240
241	* s_conf.c/prep_kline(): tiny bug squashed, added more checks.
242	* os.h, send.c, struct_def.h, support.c, support_ext.h, res.c, s_auth.c,
243	  s_bsd.c, s_conf.c, s_misc.c, s_serv.c, s_user.c: clean mydummy stuff,
244	  use better descriptive name ipv6string and standard name and length for
245	  INET6_ADDRSTRLEN (patch from fiction).
246	* s_serv.c/m_server_estab(), s_bsd.c/completed_connection(): make
247	  sending additional options in PASS more compact.
248	* channel_ext.h: define get_channelmask to rindex-find ':' in name.
249	* send.c/sendto_match_servs(), send.c/sendto_match_servs_v(),
250	  send.c/sendto_match_servs_notv(), channel.c/check_channelmask(),
251	  channel.c/m_join(), channel.c/m_part(), s_send.c/esendto_match_servs():
252	  use get_channelmask() instead of rindex() where appropriate.
253	* channel.c: change name or parv to chptr->chname where appropriate;
254	  tiny sideffect: clients will see channel names cased as created,
255	  not as they issued.
256
2572007-10-28  Jakub Vlasek
258
259	* s_misc.c/exit_one_client(): Send QUITs of killed users to services
260	  with SERVICE_WANTS_QUIT.
261
2622007-04-10  Jakub Vlasek
263
264	* struct_def.h: Added is_rreop to struct stats.
265	* channel.c/set_mode(): Count number of remote reops.
266	* s_misc.c/tstats(): Report number of remote reops seen.
267
2682007-03-30  Jakub Vlasek
269
270	* struct_def.h: Added is_reop to struct stats.
271	* channel.c/reop_channel(): Keep count of local reops made.
272	* s_misc.c/tstats(): Report number of local reops made.
273
2742007-03-15  Kurt Roeckx
275
276	* common/os.h: Define _GNU_SOURCE on all systems making use
277	  of glibc.  This should fix build problems on *BSD systems
278	  using glibc.  Patch from Cyril Brulebois.
279
2802006-08-30  Piotr Kucharski
281
282	* ircd.c/try_connections(): maxlinks of 0 would incorrectly, even if only
283	  temporarily, disable calling try_connections (noted by fiction).
284
2852006-06-17  Piotr Kucharski
286
287	* s_serv.c, s_serv_ext.h, ircd.c/main(): be a bit more verbose about
288	  startup errors about server name.
289	* s_serv.c/m_server_estab(): show "from my.server.name" in directly
290	  received SERVER message, so it is the same as remote SERVER.
291	* s_conf.c/attach_conf(), config.h.dist: new behaviour of Y-line limits.
292
2932006-05-03  Piotr Kucharski
294
295	* struct_def.h: extend ConfItem to have another text field.
296	* struct_def.h: add UnregItem for temp storage of USER params.
297	* s_conf.c/initconf(): read 5th field (ie. nick) of X-line.
298	* s_user.c: remember 2nd and 3rd USER param in unregList.
299	* s_user.c: move X-line check from m_user to register_user, use
300	  unregList for it; also move exit_client for X-line up.
301	* s_misc.c/exit_client(): remove client data from unregList.
302	* list.c/make_conf(), free_conf(): update for name2 field.
303	* struct_def.h, s_user.c: get rid of unregList and remember 2nd and 3rd
304	  USER param directly in aClient struct, so it is accessible also after
305	  register_user().
306	* list.c/make_client(), free_client(): update for user2, user3 fields.
307	* s_misc.c/exit_client(): get rid of unregList.
308	* s_serv.c/report_x_lines(): show 5th field.
309
3102006-04-30  Kurt Roeckx
311
312	* s_bsd.c/CHECK_PFD(): Initialise revents to 0 too.
313
3142006-04-28  Piotr Kucharski
315
316	* ircd.c/main(): show IRCDCONF_DELIMITER in 'ircd -v'.
317
3182006-04-26  Piotr Kucharski
319
320	* channel.c/remove_user_from_channel(), set_mode(): make reop a bit random,
321	  so not always one server wins.
322	* struct_def.h, ircd.c/main(), try_connections(), s_misc.c/check_split(),
323	  initruntimeconf(), s_serv.c/m_server(), m_connect(): standalone mode.
324	* s_bsd.c/start_iauth(), s_conf.c/rehash(): "rehash a" restarts iauth
325	  (no other way to reread iauth.conf currently).
326	* s_conf.c/rehash(): "rehash d" reinitializes dns (rereads resolv.conf).
327	* ircd.c/s_rehash(), io_loop(): deal with consecutive SIGHUPs properly.
328
3292006-04-25  Piotr Kucharski
330
331	* configure, configure.in: detect Solaris 10 properly.
332	* mod_pipe.c/pipe_start(): pass chars, not integers (from Zobo).
333	* s_debug.c/show_defines(): show compiled in SPLIT_SERVERS and SPLIT_USERS.
334	* s_serv.c/m_eoback(): clear byuid so it won't notice oper later.
335
3362005-12-27  Piotr Kucharski
337
338	* list.c/free_client(): MyConnect is not a valid check in free_client()
339	  (noticed by fiction).
340	* bsd.c/deliver_it(): return correct errno eagain. (noticed by fiction).
341
3422005-12-06  Piotr Kucharski
343
344	* s_user.c/do_nick_name(), config.h.dist: MINLOCALNICKLEN allows
345	  enforcing minimum length of nickname for local clients.
346	* s_debug.c/send_defines(): show MINLOCALNICKLEN (as N0).
347
3482005-12-05  Piotr Kucharski
349
350	* bsd.c/deliver_it(): return correct errno (not always EPERM) also when
351	  not in debug mode (noticed by fiction).
352
3532005-11-17  Piotr Kucharski
354
355	* s_conf.c, s_conf_ext.h: added m_kline().
356	* s_conf.c/prep_kline(), do_kline(): updated for kline cmd.
357	* parse.c: add KLINE cmd.
358	* struct_def.h: add ACL_KLINE.
359	* s_conf.c/oline_flags_to_string(), oline_flags_parse(): add ACL_KLINE.
360	* Makefile.in: add KLINE_PATH define.
361	* config.h.dist: add KLINE (default off) and OPER_KLINE defines.
362	* s_conf.c/prep_kline(): u@h length checks.
363	* s_conf.c/prep_kline(): writing klines to kline file.
364
3652005-11-15  Piotr Kucharski
366
367	* chkconf.c: compile warnings about redefining MyMalloc.
368	* service.c/m_squery(): use UID as source if service wants UIDs.
369	* s_conf.c: renamed do_tkline to do_kline, renamed m_tkline to
370	  prep_kline, added small m_tkline calling prep_kline.
371
3722005-09-02  Piotr Kucharski
373
374	* s_serv.c/m_squit(): find_server() before searching among clients.
375
3762005-07-10  Piotr Kucharski
377
378	* channel.c/m_njoin(): get rid of ^V in mbuf, we never use it.
379	* hash.c/bigger_hash_table(): don't add ME to uid hash.
380	* s_bsd.c/connect_inet(): don't parse empty source ip (reported by
381	  fantomas).
382	* s_bsd.c/inetport(): do not sscanf null ipmask (reported by MJRider).
383
3842005-06-01  Piotr Kucharski
385
386	* s_serv.c/m_set(): manual SET CACCEPT ON activates delayed listeners.
387	* s_bsd.c/init_sys(): set soft limit on core size to its hard value;
388	  warn if not unlimited.
389
3902.11.1p1
391
3922005-05-27  Piotr Kucharski
393
394	* channel.c/check_channelmask(): don't bother removing, simply
395	  return error, when last char is colon.
396	* channel.c/check_channelmask(): we no longer use \007, remove
397	  and simplify.
398
3992.11.1
400
4012005-05-14  Piotr Kucharski
402
403	* s_serv.c/m_server(): add_to_sid_hash must be after register_server.
404
4052005-05-13  Piotr Kucharski
406
407	* channel.c/check_channelmask(): remove all ':' from end of supplied
408	  channelname, not only one.
409	* INSTALL, ircd.8, 2.11-New, ircd.conf.example, RELEASE_LOG,
410	  RELEASE_NOTES: doc updates.
411	* configure, configure.in, setup.h.in: try to find strlcpy().
412	* config_read.c: as fileio.c uses strlcpy, define it to strncpyzt if
413	  system does not have it.
414
4152005-04-26  Piotr Kucharski
416
417	* config_read.c/config_read(): use MyMalloc, not malloc (from kinlo).
418
4192.11.1a2
420
4212005-04-13  Piotr Kucharski
422
423	* s_user.c/hunt_server(): aware of sid now.
424	* s_conf.c/initconf(), config.h.dist: define to speed up rehash at
425	  the expense of memory (from anfl).
426	* config.h.dist: increase some defaults to suit IRCnet better.
427	* config.h.dist: increase default LOCALNICKLEN to 15.
428	* configure, configure.in, Makefile.in: add --with-rundir (ircd pid
429	  and tune files) option.
430	* s_debug.c/send_defines(): show current istat.is_eobservers in
431	  addition to SPLIT_SERVERS value (and similar for users).
432
4332.11.1a1
434
4352005-03-30  Piotr Kucharski
436
437	* s_user.c/m_nick(): prevent (however unlikely) possibility to change
438	  user nick to uid of another server.
439	* channel.c/set_mode(): allow mixing +R and other modes.
440	* ircd.c/setup_signals(), s_slave(): ignore (and not die) USR1 if
441	  USE_IAUTH is not defined.
442	* s_serv.c/m_links(), s_err.c: show SID after hopcount in LINKS.
443
4442005-03-29  Piotr Kucharski
445
446	* channel.c/m_join, m_part(), m_topic(), s_misc.c/exit_one_client(),
447	  s_user.c/m_nick, m_unick(), m_away(), send_umode_out(), save_user():
448	  use sid or uid as source of message, not nick.
449
4502005-02-22  Piotr Kucharski
451
452	* struct_def.h, send.c/setup_svchans(), sendto_flag(), logfiles_open(),
453	  logfiles_close(), Makefile.in: possibility to log server channels.
454	* res.c, config.h.dist: drop SIXBONE_HACK.
455	* s_conf.c/m_tkline(): expand ipv6 short form addresses, so they work.
456	* chkconf.c/validate(): use IRCDCONF_DELIMITER, not ':'.
457
4582005-02-21  Piotr Kucharski
459
460	* s_bsd.c/add_connection(): clone rejects were not properly logged.
461
4622005-02-20  Piotr Kucharski
463
464	* s_user.c/m_nick(): drop 2.10 related code (introducing new clients
465	  from servers using NICK).
466	* s_user.c/m_user(): drop 2.8 related code (passing new clients info
467	  from servers using USER).
468
4692005-02-19  Piotr Kucharski
470
471	* channel.c/set_mode(): do not rebroadcast +lk if they come from server
472	  and are already set.
473
4742005-02-17  Piotr Kucharski
475
476	* s_conf.c/do_tkline(), m_tkline(): use time_t, not int.
477	* config.h.dist: limit TKLINE_MAXTIME to 99999999.
478
4792005-02-15  Piotr Kucharski
480
481	* s_conf.c/initconf(): use fdopen again.
482	* fileio.c, fileio.h: new files imported from ircd-ratbox, for use
483	  instead of buggy FILE functions on Sun.
484	* config_read.c: redefine fopen() to ratbox fbopen() etc. when being
485	  compiled on Sun.
486	* s_user.c/m_oper(): honour LOGFILES_ALWAYS_CREATE for oper log too.
487	* chkconf.c/initconf(): ignore tabs and spaces in flags field.
488	* channel.c/reop_channel(): return 1 only when we did reop.
489
4902005-02-11  Piotr Kucharski
491
492	* s_conf.c/initconf(): do not use buggy fdopen.
493
4942005-02-10  Piotr Kucharski
495
496	* config.h.dist, s_bsd.c, s_debug.c, s_err.c, s_serv.c, s_user.c:
497	  changed some define names to avoid confusion.
498	* channel.c/set_mode(): remove not sending +R to old servers.
499	* channel.c/m_join(), m_njoin(), m_kick(): remove calls to
500	  sendto_match_servs_notv() (and buffers around them).
501	* send.c: ifdef-out unused pieces of code (sendto*_servs_notv).
502
5032005-02-09  Piotr Kucharski
504
505	* channel.c/m_join(): get rid of ^G hack; simplify, as we don't get
506	  JOIN from other servers.
507	* channel.c/m_join(): tiny bug, JOIN 0,#chan did not join #chan.
508	* s_serv.c/get_version(): anything below 2.11.0b12 is too old.
509	* s_serv.c/m_squit(): SV_OLDSQUIT is gone.
510	* s_serv.c/m_server_estab(): drop too old servers.
511
5122005-02-08  Piotr Kucharski
513
514	* struct_def.h: removed ST_UID and ST_NOTUID.
515	* parse.c, send.c, channel.c, s_misc.c, s_send.c, s_serv.c, s_user.c,
516	  s_service.c: changed ST_UID to IsServer, changed ST_NOTUID to false.
517	* send.c, send_ext.h: removed unneeded sendto_match_butone_old().
518	* s_user.c/m_message(): removed sendto_match_butone_old().
519	* channel.c/send_channel_modes(): no need for special case for +R.
520	* s_misc.c/mark_blind_servers(), exit_client(), exit_one_client(),
521	  s_serv.c/m_squit(), send_server(), m_server(), m_server_estab(),
522	  m_eob(), s_service/m_service(), s_user.c/register_user(): removed
523	  always matching conditions and never matching conditions and code.
524	* parse.c/find_sender(), s_id.c/sid_valid(), s_serv.c/m_server(),
525	  m_server_estab(), m_trace(): sid cannot have '$' anymore.
526	* s_user.c/m_kill(): no "old" servers, no sendto_serv_notv() using.
527
5282005-02-07  Piotr Kucharski
529
530	* struct_def.h: removed HasUID macro.
531	* channel.c, hash.c, s_bsd.c, s_misc.c, s_serv.c, s_service.c, s_user.c:
532	  change HasUID to (x)->user.
533
5342005-02-06  Piotr Kucharski
535
536	* channel.c/set_mode(): allow -r on all channels.
537
5382005-02-04  Piotr Kucharski
539
540	* struct_def.h et al: change ONICKLEN to LOCALNICKLEN, which is allowed
541	  from local clients.
542	* config.h.dist: default LOCALNICKLEN 12.
543	* common_def.h: removed isscandinavian() macro.
544	* s_user.c/do_nick_name(): removed isscandinavian() checks, []{}\|
545	  are again in use for nicks.
546	* channel.c: removed convert_scandinavian(), []{}\| are again in
547	  use for channel names.
548	* match.c: ~ (tilde) is valid for nicks now.
549	* s_user.c/do_nick_name(): no need for special case of ~ from servers.
550	* channel.c/set_mode(): allow +R from all chanops.
551
5522005-01-30  Piotr Kucharski
553
554	* configure.in, configure: suncc adds space in front thus breaking grep.
555	* s_bsd.c/free_server(): there should be cptr->name, not cptr.
556	* s_serv.c/m_server_estab(): move clearing of burst state to m_eoback().
557	* class_def.h: add bsendq (burst sendq).
558	* s_err.c, class.c/report_classes(): show bsendq in STATSYLINE.
559	* class_ext.h, class.c/get_sendq(): return bsendq or sendq depending on
560	  new param "bursting".
561	* send.c/send_message(), channel.c/m_list(): update get_sendq() call.
562	* class.c/add_class(): new param bsendq (empty equal sendq)
563	* send.c/initconf(): parse sendq.bsendq in conf.
564	* send.c/send_message(): remove ignoring sendq exceeding during burst
565	  as we now have burst sendq.
566	* s_serv.c, s_serv_ext.h: remove do_emulated_eob().
567	* s_user.c/m_pong(), s_numeric.c/do_numeric(): remove do_emulated_eob()
568	  calls.
569	* s_serv.c/m_server_estab(): don't PING anymore (EOB emulation).
570
5712005-01-30  Piotr Kucharski, Kurt Roeckx
572
573	* struct_def.h: removed stok, tok, ltok.
574	* parse.c, parse_ext.h: removed find_tokserver().
575	* hash.c,hash_def.h,hash_ext.h: removed SERVERSIZE (using SIDSIZE
576	  on its own), removed serverTable hash, removed hash_find_stoken(),
577	  clear_server_hash_table(), add_to_server_hash_table(),
578	  del_from_server_hash_table(), functions and updated inithashtables(),
579	  bigger_hash_table(), show_hash_bucket().
580	* ircd.c/ircd_writetune(), ircd_readtune(): store and retrieve _SIDSIZE
581	  instead of _SERVERSIZE.
582	* list.c: removed used_tokens[] bit table.
583	* list.c/make_server(): removed tokens.
584	* s_misc.c/exit_one_client(): del_from_server_hash_table() call removed.
585	* s_serv.c/m_server_estab(): removed sending old syntax SERVICE.
586	* s_serv.c/m_server(), m_server_estab(): add_to_server_hash_table() call
587	  removed.
588	* s_serv.c/m_squit(), send_server(), m_server(), m_server_estab(),
589	  m_smask(), m_eob(): removed sending, parsing and receiving tokens (use
590	  sids, if possible) and compatibility sids.
591	* s_serv.c/m_smask(), m_server(): make_server() cannot fail due to lack
592	  of tokens, removed if-failure code.
593	* service_def.h: removed SERVICE_WANT_TOKEN, added SERVICE_WANT_SID.
594	* s_service.c/sendnum_toone(), m_service(), m_servset(): removed tokens
595	  and 2.10 protocol.
596	* s_user.c/register_user(): NICK introducing new client is no longer
597	  used between servers.
598	* s_user.c/m_user(): find_tokserver() call removed.
599
6002005-01-27  Piotr Kucharski
601
602	* mod_webproxy.c/proxy_init(): off-by-one config parse error.
603
6042005-01-03  Kurt Roeckx
605
606	* ircd.c/check_pings(): Initialise the reason variable.  It could be
607	  used uninitialised when TIMEDKLINES is not defined.
608	* configure, setup.h.in, os.h: Make configure detect the arguments of
609	  accept() and use the 3rd argument for SOCK_LEN_TYPE, which should be
610	  socklen_t in most cases.
611	* mode_pipe.c/pipe_start(): Properly terminate the call to execlp()
612	  with a (char *)NULL.
613	* os.h, support.c, support_ext.h, a_io.c, nameser_def.h, res.c,
614	  s_bsd.c: Don't use macro variables as #if VAR but use #ifdef VAR
615	  or #if defined(VAR)
616	* s_bsd.c, s_bsd_ext.h, send.c, mkpasswd.c, iauth.c, chkconf.c,
617	  class.c, hash.c, ircd.c, list.c, res.c, res_init.c: Give all
618	  definitions and declarations of function a proper prototype:
619	  add void as parameter if none is used.
620	* parse.c/find_target(): When using $SID, it checked the wrong
621	  variable which was always NULL, resulting in it never finding
622	  those servers.
623
6242005-01-02  Kurt Roeckx
625
626	* configure.in/configure: Use AC_CHECK_LIB to check if pow needs -lm.
627	* config.guess/config.sub: Update to latest versions.
628
6292.11.0
630
6312004-12-21  Piotr Kucharski
632
633	* README, RELEASE_LOG, RELEASE_NOTES, iauth-internals.txt: update.
634
6352004-12-16  Piotr Kucharski
636
637	* iauth.conf.5: reason is all-module option, move docs around.
638
6392004-12-15  Piotr Kucharski
640
641	* channel.c/check_channelmask(): empty mask matches any, just in case
642	  ':' is last char in channel name (problem reported by pigreco).
643	* s_serv.c/m_set(): check for split after doing SET SPLIT (suggested
644	  by fiction).
645
6462.11.0b21
647
6482004-12-12  Piotr Kucharski
649
650	* s_user.c/m_nick(), m_user(): call exit_client with cptr, not NULL,
651	  so it returns FLUSH_BUFFER to parse().
652	* s_serv.c/report_myservers(): show version and zip.
653
6542004-12-10  Piotr Kucharski
655
656	* send.c/send_message(): tame notices about maxsendq exceeded, allow
657	  for complete disabling via define.
658	* config.h.dist: MAXSENDQ_NOTICES define.
659	* config_read.c/config_error(): add "\n" when printing to stdout.
660
6612.11.0b20
662
6632004-12-06  Piotr Kucharski
664
665	* config_read.c/config_read(): changed interface from mmap to fgets.
666	* chkconf.c/showconf(), initconf(), s_conf.c/initconf(): adjustments
667	  to config_read() change.
668	* config.h.dist, configure.in, setup.h.in, os.h: removed mmap().
669	* config_read.c/config_read(): more safety caps (snprintf and fdn).
670
6712004-11-30  Piotr Kucharski
672
673	* config_read.c/config_read(): add some guardians for border cases.
674
6752.11.0b19
676
6772004-11-29  Piotr Kucharski
678
679	* send.c/send_message(): use to->name, not get_client_name in &notices.
680	* s_user.c/m_nick(), config.h.dist: DISABLE_NICK0_REGISTRATION define.
681
6822.11.0b18
683
6842004-11-20  Piotr Kucharski
685
686	* s_serv.c/check_link(): except remote services.
687	* struct_def.h/msgtab[]: allow the same set of commands for services as
688	  2.10 allowed.
689
6902004-11-19  Piotr Kucharski
691
692	* send.c/send_queued(): use strerror, not errno.
693	* send.c, channel.c, config_read.c, hash.c, s_user.c, whowas.c: remove
694	  some unused variables to get rid of warnings (compilation warnings of
695	  today noted by Andreas Ley).
696	* s_bsd.c/read_message(): move write_err declaration out to get rid of
697	  some errors.
698	* s_bsd.c: new function add_connection_refuse().
699	* s_bsd.c/add_connection(): change gotos to inside block to function
700	  call (to avoid compiler warnings).
701	* struct_def.h: ConfItem->pref can be -1, so int, not u_int.
702	* list.c/make_conf(): bzero IN_ADDR size for INET6 sake.
703	* s_conf.c/match_ipmask(): badmask for ipv4 masks between 32 and 96
704	  when INET6.
705	* s_conf.c/do_tkline(), m_untkline(): send notices to config.h-defined
706	  channel.
707
7082004-11-16  Piotr Kucharski
709
710	* send.c/dead_link(): make it va-aware, don't hardcode get_client_name,
711	  let caller give all arguments it needs.
712	* send.c: adjust to new dead_link().
713	* bsd.c/deliver_it(): return errno from send.
714	* send./send_queued(): put errno returned from deliver_it() in notices.
715	* ircd.c/main(): allow -T without filename.
716	* ircd.c/ircd_writetune(): return without error if empty filename.
717	* ircd.c/bad_command(): make it void and update for -T change.
718
7192004-11-15  Piotr Kucharski
720
721	* os.h: typedefs incorrectly written.
722
7232.11.0b17
724
7252004-11-14  Piotr Kucharski
726
727	* s_serv.c/m_server_estab(): send njoin dot for other server to lock
728	  empty channel; also send modes for empty !channels.
729	* ircd.c/check_pings(): don't check pings more often than once in 30s.
730	* config.h.dist: default LISTENER_DELAY 1 for undefined SLOW_ACCEPT.
731
7322004-11-13  Piotr Kucharski
733
734	* config.h.dist: move L/DCTL to struct_def.h as they must not be ever
735	  changed.
736	* a_conf.c/conf_err(): exit with code 1, not 0.
737	* configure.in, configure, setup.h.in, os.h: use newer AC_CHECK_TYPES
738	  autoconf macro and use typedef instead of defines for types.
739	* configure.in: AC_CHECK_TYPES now also includes <sys/bitypes.h> to fix
740	  some configure/compilation errors on some platforms (problem noted by
741	  Andreas Ley).
742	* channel.c/m_njoin(): move get_channel() out of strtoken loop.
743	* channel.c/m_njoin(): njoin dot hack for locking empty channels.
744
7452004-11-11  Piotr Kucharski
746
747	* send.c/send_message(): default define to allow increasing poolsize
748	  all the time, not only during bursts.
749
7502004-11-10  Piotr Kucharski
751
752	* config.h.dist, s_bsd.c/read_listener(), read_message(): speed up
753	  accepting new clients tenfold by default; make it configurable.
754	* s_bsd.c/read_message(): keep existing (primary) error on cptr.
755	* s_conf.c/initconf(): make sure sid is uppercase.
756	* send.c/send_message(): no need to increase sendq and poolsize
757	  for bursting clients when they exceed their maxsendq.
758	* send.c/send_message(): no need to increase sendq when poolsize
759	  is exceeded.
760
7612004-11-09  Piotr Kucharski
762
763	* a_conf.c/conf_err(): print errors to stderr.
764	* configure: fix --disable-ip6.
765	* struct_def.h: add ping to aClient.
766	* ircd.c/check_pings(): use cptr->ping.
767	* s_conf.c/attach_conf(): set cptr->ping.
768
7692004-11-04  Piotr Kucharski
770
771	* send.c/vsendpreprep(): do not use sockhost (breaks I-line 'M' flag).
772	* send.c/vsendpreprep(): overall simplification.
773	* s_misc.c/get_client_name(): use host for registered users, sockhost
774	  for others (so make I-line 'M' flag working better); also use sip for
775	  registered users.
776
7772.11.0b16
778
7792004-11-03  Piotr Kucharski
780
781	* hash.c/bigger_hash_table(): fix serverTable grow bug.
782	* channel.c/send_mode_list(), send_channel_modes(): use sid, not ME,
783	  where appropriate.
784	* ircd.c/setup_me(): set ourself SV_UID.
785
7862004-11-02  Piotr Kucharski
787
788	* s_conf.c/m_tkline(), config.h.dist: TKLINE_MAXTIME define.
789	* s_serv.c/m_stats(), config.h.dist: DISABLE_STATSTKLINE define.
790	* s_conf.c/m_tkline(): show tkline reason in notice.
791	* send.c/svchans[], struct_def.h, channel.c/setup_server_channels():
792	  added &OPER server channel.
793	* s_serv.c/can_join(): make &OPER server channel oper only.
794	* s_conf.c/do_tkline(): send TKLINE notices to &OPER.
795	* res.c/get_res(): do not show nameserver IP in error message.
796	* s_user.c, s_user_ext.h: new function send_away() (idea from fiction).
797	* channel.c/m_invite(), s_user.c/m_message(): use send_away().
798	* config.h.dist: AWAY_MOREINFO define.
799	* hash.c: add guardians for possible loops in hashes.
800	* s_conf.c/wdhms2sec(): !input there should be.
801	* a_conf.c/conf_read(): fix negation for ip masks.
802
8032004-11-01  Piotr Kucharski
804
805	* Makefile.in: config file define for tkserv (not always ircd.conf).
806	* tkconf.h.dist: use ".bak" suffix for config file backup.
807	* s_conf.c/do_tkline(): show notice only if there were more than four
808	  hits for a tkline.
809	* Makefile.in: introduce IRCDCONF_DIR for chkconf and s_conf.o pointing
810	  to dir where ircd.conf is located.
811	* chkconf.c/showconf(), config_read.c/config_read(),config_error(): use
812	  IRCDCONF_DIR instead of extracting it from IRCDCONF_PATH.
813	* tkserv.c: use IRCDCONF_DELIMITER (from fiction).
814	* tkserv.c/main(): updated registration for ircd 2.11.
815	* s_conf.c: new function wdhms2sec() allowing to use 1w2d3h4m5s format
816	  in tkline commands. Default (only number) is minutes.
817
8182004-10-30  Piotr Kucharski
819
820	* s_bsd.c/check_client(): nullify cptr->hostp when IP mismatch, so
821	  "Unauthorized" shows IP, not an incorrect hostname (from fiction).
822	* channel.c/m_topic(): simplified a bit.
823
8242004-10-29  Piotr Kucharski
825
826	* res.c/proc_answer(): allow any char in CNAME to allow RFC2317 reverse
827	  delegation.
828
8292004-10-27  Piotr Kucharski
830
831	* match.c/match(): return NOMATCH for null masks too.
832	* chkconf.c/initconf(): updated I-line flags, added O-line flags.
833	* s_serv.c: change name of dump_sid_map to dump_map_sid.
834	* s_serv.c/dump_map*(): add "mask" parameter to limit output.
835
8362.11.0b15
837
8382004-10-26  Piotr Kucharski
839
840	* ircd.c/main(): move logfiles_open() below daemonize(), this fixes
841	  bug of logs getting to a client (bug reported by dojo and Borys,
842	  found by BitKoenig).
843	* s_bsd.c/daemonize(): fclose(stderr), fclose(stdin) additionally;
844	  also remove second local[0] setting.
845	* send.c/logfiles_open(): clear local[] too, just to be safe.
846	* s_serv.c/m_motd(): make motd work for unregistered clients.
847	* s_serv.c/m_motd(): bigger penalty for unregistered clients.
848	* config.h.dist, parse.c: add MOTD_UNREG define.
849	* parse.c: require 2 params for ENCAP.
850	* s_serv.c/m_encap(): broadcast ENCAP.
851	* s_user.c/m_kill(): send killed user@host[serv/sid] to syslog too.
852
8532004-10-23  Piotr Kucharski
854
855	* struct_def.h: moved count, rcount, bytes from Message to Cmd struct,
856	  also added rbytes.
857	* parse.c/msgtab[], parse(): make stats (count, bytes) per handler, not
858	  per command.
859	* s_serv.c/m_stats(), s_err.c/replies[]: show per handler stats.
860
8612004-10-21  Piotr Kucharski
862
863	* configure: remove own checks for stdarg.
864	* setup.h: remove USE_STDARG.
865	* os.h: depend on HAVE_STDARG_H, not USE_STDARG.
866
8672004-10-20  Piotr Kucharski
868
869	* ircd.c/try_connections(): increase hold for best, so other servers
870	  will have chance to be tried in next round.
871
8722004-10-13  Piotr Kucharski
873
874	* s_serv.c/m_set(): new "SET SPLIT".
875	* config.h.dist: increased default SPLIT_SERVERS and SPLIT_USERS.
876	* s_serv.c/m_map(): swap SID and usercount.
877
8782004-10-09  Piotr Kucharski
879
880	* send.c/logfiles_close(): set fd to -1 after closing.
881	* s_send.c/esendto_channel_butone(): missing param (though function
882	  not yet used).
883
8842004-10-07  Piotr Kucharski
885
886	* s_conf.c/do_tkline(): send a notice how many tklined.
887	* s_user.c/m_ping(): revert removing unnecessary parts of code. Oops.
888
8892.11.0b14
890
8912004-10-06  Piotr Kucharski
892
893	* common/numeric_def.h, config.h.dist, s_err.c, s_serv.c/m_users():
894	  added USERS_RFC1459 define to choose between rfc1459 behaviour of
895	  USERS and a new one.
896	* s_serv.c: add send_users() used in LUSERS and new USERS.
897	* s_serv.c/m_users(): new behaviour of USERS command if USERS_RFC1459
898	  is not defined.
899	* s_serv.c/m_lusers(): send 265 and 266 only if request was for all
900	  clients (either no param or param "*").
901	* channel.c/m_join(): disable '#' and '!' as first +channel name.
902	* s_serv.c/m_stats(): stats k honours TXT_NOSTATSK define.
903	* s_user.c/m_ping(): local PING is answered with PONG containing text
904	  used as argument to PING; removed unnecessary parts of code.
905
9062004-10-05  Piotr Kucharski
907
908	* numeric_def.h, s_err.c, s_serv.c/m_lusers(): revert 251 and 255
909	  numerics changes, readd 266 numeric, change format of 265 and 266
910	  numerics to be alike 251 (but with numbers in front).
911
9122004-10-04  Piotr Kucharski
913
914	* moved support/iauth.conf to doc/iauth.conf.example and
915	  renamed example.conf to ircd.conf.example
916	* Makefile.in: appropriate changes.
917	* struct_def.h: change Zdata->outbuf type to Bytef (as defined
918	  in zlib headers).
919	* s_zip.c: add some casts to get rid of warnings.
920	* a_conf.c: add "exit" keyword.
921	* s_serv.c/m_server_estab(), s_bsd.c/report_error(): find_uid() can
922	  return NULL, better check before MyConnect().
923
9242004-10-03  Piotr Kucharski
925
926	* get rid of more warnings.
927
9282.11.0b13
929
9302004-10-01  Piotr Kucharski
931
932	* struct_def.h, s_debug.c/send_defines(), s_misc.c/initruntimeconf():
933	  add caccept to iconf structure.
934	* s_serv.c/m_set(): "SET CACCEPT" with "ON", "OFF" and "SPLIT".
935	* s_bsd.c/read_listener(): do not accept clients on delayed ports if
936	  iconf.caccept if OFF or SPLIT when split.
937	* s_serv.c/report_listeners(): when caccept is off (or split), mark
938	  such ports "noaccept".
939	* get rid of "rcsid defined but not used" warning.
940	* send.c, send_ext.h: initanonymous() function to get rid of that
941	  damn "missing braces around initializer" warning.
942	* ircd.c/main(): run initanonymous().
943	* a_defines.h: include common_def.h so isalpha/isdigit is consistent
944	  with ircd (also gets rid of some warnings).
945	* config.h.dist: SIXBONE_HACK default off.
946	* os.h: include first <syslog.h> and then <sys/syslog.h> (for proper
947	  declaration of syslog(), openlog() etc.)
948	* got rid of most warnings.
949
9502004-09-28  Piotr Kucharski
951
952	* a_conf.c/conf_read(): allow rfc913 timeout be smaller (but warn).
953	* configure.in, configure: --with-zlib takes param now, replacing
954	  old --with-zlib-prefix (and removing --with-zlib-library and
955	  --with-zlib-include).
956
9572004-09-23  Piotr Kucharski
958
959	* channel.c/reop_channel(): clear ->reop only when we did reop.
960
9612004-09-21  Piotr Kucharski
962
963	* mod_webproxy.c, mod_webproxy_ext.h: new files.
964	* new command 'M' in ircd>iauth communication, passing ircd name.
965	* a_conf.c: "port" setting mandatory for webproxy.
966	* support/iauth.conf: more examples.
967
9682004-09-20  Piotr Kucharski
969
970	* a_conf.c: add "port" setting to modules (mandatory for socks).
971	* mod_socks.c: use port from configuration, not hardcoded 1080.
972
9732004-09-16  Piotr Kucharski
974
975	* s_misc.c/exit_one_client(): squit bouncing back to 2.10 with incorrect
976	  prefix resulted in "fake prefix" (reported by ZZyZZ).
977
9782004-09-13  Piotr Kucharski
979
980	* mod_socks.c: cleaned and simplified.
981
9822004-09-12  Piotr Kucharski
983
984	* changed LOCAL_KILL_ONLY to OPER_KILL_REMOTE and moved it to other
985	  OPER_ defines in config.h.
986	* s_auth.c/read_iauth(): allow iauth to kill clients after registration.
987	* a_conf.c/conf_read(), iauth.conf.5, a_conf_def.h: "delayed" keyword.
988	* a_io.c/next_io(): send fake "done" message to ircd for delayed
989	  modules.
990	* mod_socks.c/socks_init(): show in conf line if module is delayed.
991
9922004-09-10  Piotr Kucharski
993
994	* configure.in: logdir defaults to $(localstatedir)/log, not directly
995	  PREFIX/var/log/ircd.
996	* Makefile.in: ircd_var_dir (where .pid and .tune are kept) is again
997	  $(localstatedir)/run.
998	* Makefile.in: log file names changed from users, rejects, etc to
999	  ircd.users, ircd.rejects, ircd.etc (and "ircd" part dependable on
1000	  $(IRCD) Makefile variable).
1001	* config_read.c: make quotes around filename in #include optional; also
1002	  allow for unlimited amount of whitechars around filename.
1003
10042004-09-08  Piotr Kucharski
1005
1006	* send.c/sendto_flog(): save two function calls each log line written;
1007	  also add comments about logfile contents.
1008	* example.conf is installed as ircd.conf.example from now on.
1009
10102004-09-07  Piotr Kucharski
1011
1012	* parse.c: allow HAZH without params to allow sending minihelp (noted
1013	  by fiction).
1014	* s_id.c, res_mkquery.c: compilation warnings for strict CC (reported
1015	  by Mark Visser).
1016	* Makefile.in: few tiny fixes (suggested by Olafur Osvaldsson).
1017	* config.h.dist: some cleanup (suggested by Core).
1018
10192.11.0b12
1020
10212004-08-31  Piotr Kucharski
1022
1023	* s_serv.c/m_stats(): is_allowed I forgot to negate (caught by Borys).
1024	* struct_def.h: increased MAXBANS to 42.
1025	* support.c/make_isupport(): add R to MAXLIST.
1026	* config.h.dist: moved IRCDCONF_DELIMITER from os.h.
1027	* struct_def.h: increased NICKLEN to 15.
1028
10292004-08-27  Piotr Kucharski
1030
1031	* channel.c/reop_channel(): do not abort reop mechanism if restricted
1032	  client is channel operator.
1033
10342004-08-21  Piotr Kucharski
1035
1036	* s_serv.c/m_server(): register_server() must be called before
1037	  add_to_sid/server_hash_table (in case of growing hash tables).
1038	* s_user.c/m_nick(): silently cut longer nicks from clients (instead
1039	  of rejecting).
1040	* swap return values of is_allowed, 1 for ok, 0 for forbidden now.
1041	* s_serv.c/m_server_estab(): moved sending PASS/SERVER after checking
1042	  if server exists.
1043
10442004-08-18  Piotr Kucharski
1045
1046	* s_conf.c/initconf(): o:line (local oper) did not revoke remote rights
1047	  like it should (noticed by Hans Engren).
1048	* channel.c/setup_server_channels(): make &CLIENTS invite-only.
1049	* channel.c/can_join(): reverse &CLIENTS join logic: if allowed, let
1050	  oper in regardless invite-only status, for all others behave normal.
1051
10522004-08-17  Piotr Kucharski
1053
1054	* channel.c/set_mode(): also allow +R from servers. :)
1055
10562.11.0b11
1057
10582004-08-13  Piotr Kucharski
1059
1060	* channel.c/set_mode(): allow +R from opers.
1061	* config.h.dist: allow undefining both SLOW_ACCEPT and CLONE_CHECK
1062	  (may speed server a bit if admin is aware of consequences).
1063
10642004-08-12  Piotr Kucharski
1065
1066	* ircd.c/try_connections(), config.h.dist: DISABLE_DOUBLE_CONNECTS to
1067	  overcome problems with two autoconnects to each other.
1068	* ircd.c/main(): better check for tune filename length.
1069	* channel.c/m_invite(): as invite works different for existing and
1070	  non-existing channels, try best and search for shortname !channel
1071	  (from fiction).
1072	* s_serv.c/m_squit(): don't quit oper trying to squit ME (from fiction).
1073	* ircd.c/s_die(): send SDIE to 2.11 servers.
1074	* s_serv.c/m_sdie(): broadcast received SDIE to 2.11 servers.
1075
10762004-08-10  Piotr Kucharski
1077
1078	* s_bsd.c/check_server(): as trace shows last attached class, attach
1079	  H: before C/N.
1080	* ircd.c/main(): check for tune filename length.
1081
10822004-08-10  Jakub Vlasek
1083
1084	* s_bsd.c, s_bsd_ext.h: Moved actual cptr->fd closing code
1085	  to newly created close_client_fd().
1086	* s_bsd.c/close_connection(): Do not send stop to iauth for
1087	  outgoing server connections.
1088	* s_bsd.c, s_bsd_ext.h: Added open_listener() and reopen_listeners().
1089	* s_bsd.c/add_listener(): Moved actual listener fd related code
1090	  to open_listener(), do not remove listener if binding to socket fails.
1091	* s_bsd.c/close_listeners(): Close fd as soon as the listener
1092	  is marked illegal.
1093	* s_bsd.c/close_client_fd(): Set fd to -1 to allow inetport() work
1094	  again on given cptr.
1095	* s_conf.c/rehash(): Call reopen_listeners().
1096
10972004-08-10  Jakub Vlasek
1098
1099	* s_bsd.c/close_connection(): Do not recurse listeners, remove only
1100	  unused listeners from ListenerLL.
1101	* s_conf.c/detach_conf(),rehash(): Check for negative client counts.
1102
11032004-08-04  Piotr Kucharski
1104
1105	* s_user.c/m_quit(): if sptr is server, return at once; also use
1106	  MyConnect to surround quit reason with double quotes.
1107
11082004-08-03  Piotr Kucharski
1109
1110	* channel.c/m_join(): empty part comment in JOIN 0.
1111
11122004-08-03  Jakub Vlasek
1113
1114	* s_misc.c/read_motd(): Do not leak FD.
1115
11162004-08-02  Piotr Kucharski
1117
1118	* channel.c/del_modeid(): missing parens (noted by Matyas Koszik).
1119	* channel.c/set_mode(): we change parv directly, so we have to restore
1120	  it, so another channel loop in m_mode could use it again (noted by
1121	  Matyas Koszik).
1122
11232004-08-02  Jakub Vlasek
1124
1125	* ircd.c/setup_me(), main(): Call register_server.
1126	* list.c/free_server(): Don't change svrtop and take only one
1127	  argument.
1128	* list.c/free_user(): Take only one argument.
1129	* s_serv.c, s_serv_ext.h: Added register_server(), unregister_server()
1130	  and use it in m_server(), m_smask().
1131	* s_bsd.c, whowas.c, list_ext.h: free_user() and free_server() take
1132	  only one parameter from now on.
1133	* s_bsd.c/close_listeners(): Use ListenerLL.
1134	* config.h.dist: Remove UPHOST. (was used by client)
1135
11362004-07-26  Jakub Vlasek
1137
1138	* list.c/free_user(): Call free_server() with the cptr of the server
1139	  itself, not the user we're currently freeing.
1140
11412004-07-15  Piotr Kucharski
1142
1143	* chkconf.c/main(): missing declaration when in debug mode.
1144	* s_conf.c/do_tkline(): always send notice about new tkline.
1145	* s_conf.c/initconf(): fix core on empty ircd.conf.
1146
11472004-07-15  Piotr Kucharski
1148
1149	* chkconf.c: use config_error() instead of fprintf(stderr... and adjust
1150	  wherever needed for changed filelist (different definition depending
1151	  on compile-time options).
1152	* chkconf.c: allow -d and -s, show filenames and linenumbers when -d1 -s.
1153	* config_read.c/config_read(): added CF_NONE level for printing without
1154	  filename:linenum prefix.
1155	* config_read.c, chkconf.c: tidy up.
1156
11572004-07-15  Jakub Vlasek
1158
1159	* s_bsd.c/activate_delayed_listeners(): Use ListenerLL.
1160
11612004-07-14  Piotr Kucharski
1162
1163	* chkconf.c/validate(): make it void.
1164	* chkconf.c: new function showconf() for printing config file as ircd
1165	  would see it.
1166	* chkconf.c/main(): new command line option -s.
1167	* config_read.c/config_read(): do not omit bad #include and comments,
1168	  put them in config so admin can see problems with `chkconf -s'.
1169	* config_read.c: new function config_error().
1170	* config_read.c: new struct aFile, changed struct aConfig.
1171	* config_read.c: new function new_config_file().
1172	* config_read.c/config_read(): keep track of line numbers in config.
1173	* config_read.c/config_read(): new parameter (config file name).
1174	* s_conf.c/initconf(), chkconf/showconf(), initconf(): config_read()
1175	  added parameter.
1176	* config_read.c/config_free(): free also config file stack.
1177	* config_read.c/config_read(): set file in each new aConfig.
1178	* config_read.c/config_error(): print traceback for chkconf.
1179	* config_read.c/config_read(): use config_error() for printing errors.
1180	* config_read.c/config_read(): don't print IRCDCONF_PATH if no need.
1181	* config_read.c/config_read(): detect loops.
1182
11832004-07-13  Piotr Kucharski
1184
1185	* s_conf.c: move oper flags config.h restrictions from initconf() to
1186	  oline_flags_parse(); make flag 'A' equivalent to what's O: in 2.10.
1187
11882004-07-12  Piotr Kucharski
1189
1190	* config_read.c/config_read(): if included file was empty we got core.
1191
11922004-07-11  Piotr Kucharski
1193
1194	* config_read.c/config_read(): do not proceed if error occured, go to
1195	  next line instead (could be fatal with too long filename).
1196
11972004-07-11  Jakub Vlasek
1198
1199	* ircd.c, ircd_ext.h: Define ListenerLL.
1200	* s_bsd.c/add_listener(), close_connection(): Use ListenerLL.
1201	* s_serv.c/report_listeners(): Use ListenerLL.
1202
12032004-07-07  Piotr Kucharski
1204
1205	* configure.in, configure: fix --with-resconf, fix detecting -lm.
1206
12072004-07-05  Piotr Kucharski
1208
1209	* s_conf.c/tkline_expire(): tklines were kept past their expire time.
1210
12112004-07-03  Piotr Kucharski
1212
1213	* channel.c/match_modeid(): introducing ACL_CONNECTREMOTE surfaced year
1214	  old bug! (noticed by ZZyZZ).
1215	* struct_def.h: new ACL_NOPENALTY (P), ACL_CANFLOOD (p).
1216	* s_conf.c/oline_flags_parse(), oline_flags_to_string(): new flags.
1217	* parse.c/parse(): don't add penalty if ACL_NOPENALTY.
1218	* s_bsd.c/read_packet(): don't disconnect if ACL_CANFLOOD.
1219	* struct_def.h: new ACL_TRACE (t).
1220	* s_serv.c/m_trace(): ACL_TRACE guard.
1221
12222.11.0a10
1223
12242004-07-02  Piotr Kucharski
1225
1226	* s_user.c/find_denied(): added reverse D: (disable AC when given server
1227	  is absent).
1228	* s_user.c/save_user(): send saved nick change to &CLIENTS as well.
1229	* s_service.c/m_servset(): send "EOB" after burst.
1230	* services_def.h: new SERVICE_WANT_UID.
1231	* s_service.c/check_services_butone(): if WANT_UID, send it, not nick.
1232	* s_service.c/sendnum_toone(): if WANT_UID, send appropriate UNICK.
1233	* s_service.c/m_service(): send 005 to services.
1234	* services_def.h: new SERVICE_WANT_TKLINE.
1235	* s_user.c/is_allowed(): check services for being allowed to TKLINE.
1236
12372004-07-01  Piotr Kucharski
1238
1239	* class.c/get_client_class(): return last attached class, not highest.
1240	* class.c/get_sendq(): use sendq of last attached class, not highest.
1241
12422004-06-30  Piotr Kucharski
1243
1244	* channel.c/match_modeid(): drop special case for '#' matching uids.
1245	* s_conf.c/initconf(): simplify X-line parsing: just take first 4 fields
1246	  from config, no flags.
1247	* s_user.c/m_user(): match on each field separately and also break when
1248	  all match.
1249	* s_serv.c/report_x_lines(): show all 4 fields of X-lines.
1250	* s_conf.c: remove xline_flags_to_string() and xline_flags_parse().
1251	* struct_def.h: removed no longer needed defines.
1252	* struct_def.h: xline exempt related defines added.
1253	* s_conf.c/iline_flags_parse(), iline_flags_to_string(): added 'e' flag
1254	  for X-line exempt.
1255	* s_conf.c/attach_Iline(): ClearXlined() if 'e' flag.
1256	* register_user(): get rid of IsKlineExempt around IsXlined, new flag
1257	  takes care of it now.
1258	* s_err.c, config.h.dist: customizable 381 reply.
1259	* numeric_def.h: new numeric 499.
1260	* config.h.dist, s_err.c: customizable 499 reply.
1261	* s_serv.c/m_stats(): if customizable 499 defined, send it to users instead
1262	  of reporting K-lines (useful for servers with huge list of K).
1263
12642004-06-30  Jakub Vlasek
1265
1266	* struct_def.h: Added FLAGS_XLINED, CONF_XLINE, IsConfXlineWhole(),
1267	  IsXlined(), SetXlined() and EXITC_XLINE.
1268	* chkconf.c: recognize X-lines.
1269	* s_conf.c, s_conf_ext.h: Added xline_flags_to_string(),
1270	  xline_flags_parse().
1271	* s_conf.c/initconf(): Parse X-lines.
1272	* s_serv.c: Added report_x_lines for stats X.
1273	* s_user.c/register_user(): Exit X-lined clients.
1274	* s_user.c/m_user(): Check for X-lines.
1275	* config.h.dist: Added XLINE_EXIT_REASON and XLINE defines.
1276
12772004-06-29  Piotr Kucharski
1278
1279	* s_service.c/m_service(): set FLAGS_CBURST on service.
1280	* send.c/send_message(): support bursting services.
1281	* s_misc.c/exit_client(): do not log service quits to users log.
1282	* send.c/sendto_flog(): revert from tabs to spaces in logs, do not
1283	  write ending "\n" to syslog and services.
1284	* s_bsd.c/inetport(): under Cygwin call set_non_blocking() here, not
1285	  after returning to add_listener() (from Q).
1286	* send.c/svchans[], struct_def.h, channel.c/setup_server_channels():
1287	  added &CLIENTS server channel.
1288	* struct_def.h: add ACL_CLIENTS.
1289	* channel.c/can_join(): allow join &CLIENTS only if is_allowed().
1290	* s_conf.c/oline_flags_to_string(), oline_flags_parse(): add '&' flag
1291	  for ACL_CLIENTS.
1292	* struct_def.h: CCL_mumble restrictions (for CLIENTS_CHANNEL).
1293	* config.h.dist: CLIENTS_CHANNEL (undefined) and CLIENTS_CHANNEL_LEVEL.
1294	* s_misc.c/exit_client(): log client quits to &CLIENTS.
1295	* s_user.c/register_user(): log client connects to &CLIENTS.
1296	* s_user.c/m_nick(): log client nick changes to &CLIENTS.
1297
12982004-06-28  Piotr Kucharski
1299
1300	* s_user.c/is_allowed(): silly bug.
1301	* s_user.c/m_kill(): service can be killed, too, format &KILLS message
1302	  appropriately.
1303	* struct_def.h: SCH_* changed to enum.
1304	* send.c/setup_svchans(), send.c/sendto_flag(): adjustments to SCH
1305	  being enum (and starting from 0).
1306
13072004-06-27  Piotr Kucharski
1308
1309	* s_serv.c/check_link(): make check_link() accept sptr, not cptr.
1310	* s_serv.c/check_link(): free opers from RPL_TRYAGAIN.
1311	* s_serv.c/m_stats(): change a little what's subject to RPL_TRYAGAIN
1312	  for users (now only stats i c k m t z).
1313
13142.11.0a9
1315
13162004-06-26  Piotr Kucharski
1317
1318	* s_user.c/m_kill(): recent cleaning did too much, we must not cut the
1319	  path from remotes.
1320
13212004-06-25  Piotr Kucharski
1322
1323	* config.h.dist, send.c/logfiles_open(): LOGFILES_ALWAYS_CREATE define.
1324	* s_serv.c/m_squit(): show server name, not sid, in wallops.
1325	* s_serv.c/m_close(), res.c/m_dns(), hash.c/m_hash(): add is_allowed().
1326
13272004-06-24  Piotr Kucharski
1328
1329	* parse.c: require 2 params for KILL and SQUIT.
1330	* s_serv.c/m_squit(), s_user.c/m_kill(): remove code checking and
1331	  dealing with less than 2 params.
1332	* struct_def.h: remove ACL enum, use #define ACL_mumble.
1333	* s_conf.c: new functions oline_flags_to_string(), oline_flags_parse().
1334	* s_conf.c/initconf(): use oline_flags_parse().
1335	* s_err.c: add room for oline flags in STATSOLINE.
1336	* s_serv.c/report_configured_links(): use oline_flags_to_string() to
1337	  report O:line flags.
1338	* s_err.c: change 481 to not mention not being irc operator.
1339	* s_user.c/is_allowed(): use O:line flags to decide access.
1340	* s_debug.c: removed unused LOCOP_ defines.
1341	* s_serv.c/m_squit(): use ACL_SQUITREMOTE to decide if allowed.
1342	* s_serv.c/m_connect(): use ACL_CONNECT* to decide if allowed.
1343	* s_user.c/m_kill(): use ACL_KILL* to decide if allowed; also remove
1344	  #ifdef LOCAL_KILL_ONLY, initconf() takes care of guarding it.
1345	* config.h.dist: OPER_mumble all defined by default.
1346	* INSTALL: changed O: format and described O:line flags.
1347
13482004-06-22  Piotr Kucharski
1349
1350	* Makefile.in: add implicit dependency for struct_def.h
1351	* struct_def.h: change definition of SetClient.
1352	* s_user.c/m_umode(): use SetClient macro.
1353	* s_conf.c/m_tkline(): moved tkline existence check and nexttkexpire
1354	  setting to do_tkline().
1355	* s_conf.c/do_tkline(): removed doall parameter (it always removes all
1356	  matching clients); also send notice only when new tkline is set.
1357
13582004-06-21  Piotr Kucharski
1359
1360	* parse.c/parse(): minparams check was flawed.
1361	* parse.c/parse(): status was computed too early.
1362	* class.c/initclass(): add default 1.1 limits.
1363	* s_user.c/m_umode(): incorrect STAT_CLIENT/STAT_OPER change.
1364	* config_read.c/config_read(): do not prepend ircd conf dir if filename
1365	  to include begins with slash; also drop <> convention, use only "".
1366
13672004-06-19  Piotr Kucharski
1368
1369	* parse.c/parse(): don't check for min param count for commands which
1370	  are (for given caller) either ignored or insufficient privs, or unreg.
1371	* struct_def.h: CONF_TKILL, CONF_TOTHERKILL and ACL_TKLINE.
1372	* s_conf.c, s_conf_ext.h: new functions: m_tkline(), m_untkline(),
1373	  tkline_expire(), do_tkline() and one variable tkconf added.
1374	* s_conf.c/find_kill(): support for tklines.
1375	* s_conf.c/rehash(): "rehash t" flushes all tklines.
1376	* s_user.c/is_allowed(): add ACL_TKLINE case.
1377	* config.h.dist: TKLINE related defines.
1378	* s_serv.c/report_configured_links(): aware of tklines (also shows
1379	  time to live of a tkline, not port).
1380	* s_serv.c/m_stats(): stats k reports tklines, stats K klines.
1381	* parse.c: TKLINE and UNTKLINE handlers.
1382	* ircd.c/io_loop(): call tkline_expire() from time to time.
1383
13842004-06-18  Piotr Kucharski
1385
1386	* s_conf.c: move config_read() to new file.
1387	* config_read.c: new file with config_read() and config_free().
1388	* chkconf.c: work (almost) properly with ircd #include directive.
1389	* Makefile.in: s_conf.o and chkconf.o dependency on config_read.c.
1390	* s_serv.c/m_rehash(): use first char of first param to REHASH.
1391	* s_conf.c/rehash(): change sig==2 (was sign of 'q') to sig=='d'.
1392
13932004-06-17  Piotr Kucharski
1394
1395	* s_err.c, s_serv.c: slightly changed LUSERS format (numbers in front,
1396	  but to ease transition, keep text with numbers too).
1397	* os.h: removed some client includes of nameser.h.
1398	* s_misc.c/exit_client(): exit_server() frees sptr, so we have to move
1399	  usage of sptr->name up.
1400
14012004-06-15  Piotr Kucharski
1402
1403	* parse.c: incorrect minparams for SMASK.
1404	* parse.c/parse(): exit server when it sends us command with less than
1405	  minparams parameters.
1406	* s_serv.c: new function count_servers_users().
1407	* s_serv.c/trace_one(), report_myservers(): use count_servers_users().
1408	* s_serv.c/m_lusers(), config.h.dist: removed SHOW_INVISIBLE_LUSERS.
1409	* numeric_def.h, s_err.c, s_serv.c/m_lusers: RPL_LOCALUSERS and
1410	  RPL_GLOBALUSERS combined into one RPL_LUSERMAX.
1411	* s_serv.c/m_wallops(): client wallops are ignored during parse.
1412
14132004-06-13  Piotr Kucharski
1414
1415	* channel.c/set_mode(): reset reop time when +r comes from server (or
1416	  channel will never get reopped).
1417
14182004-06-12  Piotr Kucharski
1419
1420	* struct_def.h: new enum type ACL.
1421	* s_user.c: new function is_allowed() meant to replace #ifdef based
1422	  command restrictions.
1423	* parse.c, s_serv_ext.h, s_serv.c/m_rehash(), m_restart(), m_die(),
1424	  m_set(): remove #ifdef OPER_mumble.
1425	* s_user.c/m_kill(), s_serv.c/m_rehash(), m_restart(), m_die(),
1426	  m_set(): use is_allowed().
1427	* s_user.c/m_umode(): remove STAT_OPER status after -o/-O.
1428
14292004-06-11  Piotr Kucharski
1430
1431	* struct_def.h: added minparams to Message struct.
1432	* parse.c/parse(): check for minparams and reject command without even
1433	  calling function.
1434	* irc/*, doc/irc.1: removed irc client.
1435	* match.c, support.c: remove c_*.h includes.
1436	* configure.in, configure, setup.h.in: adopted to autoheader.
1437	* acconfig.h: removed (now it's kind of in configure.in).
1438	* Makefile.in: adapted to no client.
1439	* s_user.c/m_message(): parse checks param count, removed.
1440	* msg_def.h: removed.
1441	* parse.c: merged msg_def.h
1442	* s_user.c/m_message(): no MSG_PRIVATE, simply "PRIVMSG".
1443	* removed unneeded occurrences of CLIENT_COMPILE.
1444	* parse.c/parse(): minparams check failed when it was 0.
1445	* parse.c, parse_ext.h: new functions: m_ignore, m_noprivileges,
1446	  m_unregistered and m_registered.
1447
14482004-06-08  Piotr Kucharski
1449
1450	* channel.c/del_modeid(): do not free modeid.
1451	* channel.c/set_mode(): free modeid after del_modeid(), after using it.
1452
14532004-06-06  Piotr Kucharski
1454
1455	* channel.c/set_mode(): allow +k even if there already is a key set.
1456	* channel.c/check_string(): use global static asterix.
1457	* channel.c/make_bei(): use check_string() before copying; also copy
1458	  at most max lens for each part (problem reported by Marcin Rozycki).
1459	* channel.c/set_mode(): get rid of make_nick_user_host(), use alist.
1460	* channel.c/make_nick_user_host(): removed whole function.
1461	* channel.c/set_mode(): possible tiny memleak fixed.
1462	* channel.c/make_bei(): alloc & strcpy minimal possible number of bytes.
1463	* s_user.c/m_user(): parse second USER parameter better, reducing
1464	  incorrectly assigned +r due to faulty clients.
1465
14662004-06-02  Piotr Kucharski
1467
1468	* match.c/isvalidusername(): allow two non-alphanums in username.
1469
14702004-05-24  Piotr Kucharski
1471
1472	* channel.c/set_mode(): use supplied key when removing, don't change it
1473	  before sending out to the one on the server.
1474
14752004-05-19  Piotr Kucharski
1476
1477	* parse.c: new server commands: SDIE and ENCAP.
1478	* s_serv.c: new functions: m_sdie and m_encap (empty yet).
1479
14802004-05-18  Piotr Kucharski
1481
1482	* channel.c/m_njoin(): properly end buffers before sending.
1483	* channel.c/m_njoin(): send SID as source to 2.11 servers.
1484	* send.c/setup_svchans(), channel.c/setup_server_channels(),
1485	  struct_def.h: new server channel &WALLOPS.
1486	* send.c/sendto_ops_butone(): rewritten, not sending to +w users,
1487	  not traversing all fds, simply send to servers and &WALLOPS.
1488	* s_serv.c/m_squit(), m_server(), m_connect(), m_wallops(),
1489	  s_user.c/m_unick(), m_umode(): parameters fix to match rewritten
1490	  sendto_ops_butone().
1491	* s_serv.c/m_wallops(): no more +wallops channel, just send notice
1492	  to &ERRORS about user-issued wallops.
1493
14942004-05-16  Piotr Kucharski
1495
1496	* ircd.c/try_connections(): yet another condition, which could lead to
1497	  temporarily disabled AC.
1498	* ircd.c: new function calculate_preference().
1499	* ircd.c/try_connections(): tidied up, moved calculating preference
1500	  to new function.
1501	* ircd.c/try_connections(): move send_ping() to calculate_preference.
1502	* ircd.c/calculcate_preference(): skip non AC C-lines.
1503
15042.11.0a8
1505
15062004-05-14  Piotr Kucharski
1507
1508	* msg_def.h, parse.c, s_serv.c, s_serv_ext.h: new command EOBACK
1509	  (so far only placeholder).
1510	* s_serv.c/m_eob(): send EOBACK.
1511
15122004-05-13  Piotr Kucharski
1513
1514	* channel.c/m_njoin(): bug causing small desynch of big channels
1515	  (sometimes giving NJOIN protocol errors).
1516
15172004-05-12  Piotr Kucharski
1518
1519	* s_user.c/m_kill(): show target user@host[server/sid].
1520	* class.c/report_classes(): show usage count in Y:lines.
1521	* s_err.c: add param for RPL_STATSYLINE, removed RPL_TRACECLASS.
1522	* s_serv.c: removed report_class_usage().
1523	* s_serv.c/m_stats(): change 'C' (removed) to 'Y'.
1524
15252004-05-09  Piotr Kucharski
1526
1527	* configure, configure.in: more fixes.
1528	* config.h.dist: check for empty TIMEDKLINES define.
1529
15302004-05-07  Piotr Kucharski
1531
1532	* configure, configure.in: update to work with autoconf 2.57.
1533	* configure, configure.in, setup.h.in, os.h: check for mmap().
1534	* s_conf.c, Makefile.in: new function config_read() parsing #include
1535	  directive in ircd.conf file without calling m4.
1536	* config.h.dist: new define CONFIG_DIRECTIVE_INCLUDE.
1537	* s_conf.c/initconf(): use config_read() if defined.
1538
15392004-04-18  Jakub Vlasek
1540
1541	* s_bsd.c/read_message(): Do not check cptrs of delayed listeners.
1542	* list.c/free_client(): hopcount=1 of directly connected servers.
1543	* s_misc.c/exit_one_client(): incorrect SQUITs were sent to 2.10 which
1544	  resulted in strange remote client quits (looking as if whole net was
1545	  breaking apart).
1546	* s_misc.c/exit_server(): use from, not &me or else -- otherwise squits
1547	  get messed up for 2.10 (after all, that's what from is for, eh?)
1548
15492.11.0a7
1550
15512004-04-17  Piotr Kucharski
1552
1553	* s_conf.c/match_ipmask(): show original mask in error.
1554	* s_bsd.c/start_iauth(): send data to iauth in big chunks to save on
1555	  metadata overhead (from BitKoenig).
1556
15572004-04-14  Piotr Kucharski
1558
1559	* s_misc.c/exit_client(): if remote server matching C-line exits and
1560	  AC is temporarily disabled, enable it.
1561	* ircd.c/check_pings(): forgotten IsListener().
1562	* ircd.c/try_connections(): if no conf suitable for AC found, disable
1563	  AC temporarily.
1564	* s_bsd.c/close_connection(): if AC was temporarily disabled and local,
1565	  not matching C-line server quits, no need for enabling AC; however,
1566	  if it was in Handshake or Connecting state (not yet Server), enable
1567	  AC so it tries again.
1568	* s_bsd.c/get_my_name(): do not fill mysk with resolved hostname from
1569	  M-line.
1570
15712004-04-13  Piotr Kucharski
1572
1573	* s_misc.c/initstats(): set localc, not remc.
1574	* list.c/remove_client_from_list(): negative remote client count bug,
1575	  as directly connected servers have hopcount of 1, not 0.
1576
15772004-04-10  Jakub Vlasek
1578
1579	* config.h.dist: Made OPER_SET #define'd by default.
1580
15812004-04-10  Piotr Kucharski
1582
1583	* channel.c/del_modeid(): memleak, it should've freed modeid.
1584	* channel.c/set_mode(): memleak, it should've freed tmp->value.alist
1585	  where it was not used or freed by add_modeid().
1586	* channel.c/add_modeid(): don't free modeid, let set_mode() do it.
1587
15882004-04-07  Piotr Kucharski
1589
1590	* ircd.c, s_bsd.c, s_bsd_ext.h: reverting changes from 2004-03-07
1591	  regarding listeners[] table.
1592	* s_serv.c/report_listeners(): use local[], not listeners[].
1593	* channel.c/add_modeid(): allow redundant bans for it is users problem,
1594	  not server, to maintain banlist.
1595	* struct_def.h, ircd.c, s_bsd.c, s_serv.c: changed IsListening() macro
1596	  name to IsListener().
1597
15982004-03-29  Piotr Kucharski
1599
1600	* s_user.c/do_nick_name(): allow '~' in nicks from servers.
1601	* common_def.h: exclude '^' from isscandinavian (no need to disable it).
1602	* s_user.c/m_nick(): if user used not allowed char in nick, inform him
1603	  about it, not silently cut given nick.
1604
16052004-03-25  Piotr Kucharski
1606
1607	* s_service.c/m_service(): tiny yet fatal bug messing up hash tables
1608	  (introduced 2004-03-19).
1609
16102.11.0a6
1611
16122004-03-24  Piotr Kucharski
1613
1614	* s_serv.c/m_trace(): code reporting classes usage moved out to
1615	  separate, new function report_class().
1616	* s_serv.c/m_stats(): stats C is used to call report_class().
1617	* s_serv.c/report_configured_links(): show password (reason) field
1618	  of Q-line.
1619	* s_serv.c/m_stats(): stats Z behave the same as stats z for non-opers
1620	  even in debug mode.
1621
16222004-03-23  Piotr Kucharski
1623
1624	* res.c/init_resolver(): a hack to allow resolving inside FreeBSD
1625	  jail (patch from Gerhard Gonter).
1626
16272004-03-22  Jakub Vlasek
1628
1629	* struct_def.h, s_bsd.c, s_serv.c: Rename IsListeningInactive and
1630	  SetListeningInactive macros to IsListenerInactive and
1631	  SetListenerInactive.
1632	* s_bsd.c, s_bsd_ext.h: Added activate_delayed_listeners().
1633	* s_misc.c/check_split(): Activate delayed listeners when the server
1634	  rejoins the network for first time.
1635
16362004-03-21  Jakub Vlasek
1637
1638	* ircd.c, ircd_ext.h, s_misc.c/check_split(): Added firstrejoindone
1639	  variable. Set to 0 between server start and first network rejoin.
1640	* s_bsd.c/inetport(): Added dolisten parameter to make possible
1641	  making listeners without calling listen() on them.
1642	* struct_def.h: Added IsListeningInactive(), SetListeningInactive(),
1643	  ClearListenerInactive().
1644
16452004-03-20  Piotr Kucharski
1646
1647	* s_conf.c/find_bounce(): allow negative classes in B:lines.
1648	* s_user.c/m_nick(), m_user(): reject user when it connects to
1649	  server-only P-line; use B:-1 for redirecting, if available.
1650
16512004-03-20  Jakub Vlasek
1652
1653	* struct_def.h: Added PFLAG_DELAYED, PFLAG_SERVERONLY,
1654	  IsConfDelayed(), IsConfServeronly().
1655	* s_serv.c/report_listeners(): Report P-line flags.
1656	* s_conf.c: Added pline_flags_parse() and pline_flags_to_string().
1657	* s_conf.c/initconf(): Parse P-line flags.
1658
16592004-03-19  Jakub Vlasek
1660
1661	* s_serv.c/m_server_estab(): Introduce services to 2.11 using new
1662	  protocol.
1663	* s_service.c/m_service.c(): Changed SERVICE protocol to send source
1664	  server as a prefix. Removed server token and hopcount parameters.
1665
16662004-03-18  Piotr Kucharski
1667
1668	* s_conf.c/initconf(): update flags of I:lines in use to the new ones.
1669
16702004-03-17  Piotr Kucharski
1671
1672	* channel.c/m_join(), m_njoin(): send "Fake" notice to &CHANNEL, when
1673	  member of channel joins it again; when NJOIN, do it when not bursting
1674	  otherwise keep sending NJOIN protocol error.
1675	* s_bsd.c/check_init(): don't set fake hostp for localhost clients.
1676	* ircd.s/setup_me(): no need for me.hostp
1677	* s_bsd.c/check_client(): no more fake me.hostp, no need to check.
1678	* s_bsd.c/unixport(): do not unlink unix socket, only report error
1679	  (other ircd may be using it).
1680	* send.c, s_bsd.c, s_misc.c, s_user.c, struct_def.h: guard all unix
1681	  socket uses by #ifdef UNIXPORT
1682
16832004-03-16  Piotr Kucharski
1684
1685	* s_serv.c/m_server_estab(): moves related to namebuf change made
1686	  server name appear much earlier, thus making find_name() return
1687	  this, just introduced, server; this caused wrong "Server Exists".
1688
16892004-03-15  Piotr Kucharski
1690
1691	* res_init.c/ircd_res_init(), res.c/init_resolver(), send_res_msg(),
1692	  get_res(), resolv_def.h: IPv6 nameservers.
1693
16942004-03-14  Piotr Kucharski
1695
1696	* s_bsd.c/get_my_name(): mysk.s_addr was not initialized when M: ip
1697	  address field was empty.
1698	* s_bsd.c/check_client(): narrowed the scope of "local" (used in stats
1699	  t "local connections" and with NO_OPER_REMOTE); now this covers only
1700	  clients from 127/8, unixsocket or the same IP as in M-line; it works
1701	  now only when NO_OPER_REMOTE is defined.
1702	* s_misc.c/read_motd(): correctly parse motd file without ending \n.
1703	* c_numeric.c: removed RPL_TRACELOG from client.
1704	* config.h.dist, struct_def.h, ircd.c, s_conf.c, s_misc.c, s_misc_ext.h,
1705	  s_serv.c: removed CACHE_MOTD, it's default and not possible to turn
1706	  off; also fixed tiny bug of always reloading motd, not when changed.
1707
17082.11.0a5
1709
17102004-03-10  Piotr Kucharski
1711
1712	* s_bsd.c, s_bsd_ext.h: added delay_close() function.
1713	* s_bsd.c/add_connection(): use delay_close for too rapid connections.
1714	* struct_def.h: counters wrt delay_close()
1715	* ircd.c/io_loop(), ircd_ext.h: calling delay_close() when needed.
1716	* s_debug.c: send DELAY_CLOSE value in stats d.
1717	* s_misc.c: send stats counters wrt delay_close in stats t.
1718	* s_serv.c/m_close(): close also all delayed fds.
1719	* config.h.dist: default DELAY_CLOSE, some sanity checks.
1720	* s_bsd.c/connect_server(): reversed params to memcpy resulting in
1721	  "Address family not supported..." errors when connecting.
1722	* list.c/remove_client_from_list(), free_server(): moved some server
1723	  related cleaning to free_server(), where it rather belongs.
1724	* s_bsd.c/add_connection(): we did not deal with aServer structure to
1725	  be released after make_server().
1726	* s_serv.c/m_server_estab(): send maskedby->serv->tok in NICK during
1727	  burst to 2.10 (from jv).
1728	* s_user.c/register_user(): send real tok to 2.11 servers, even if
1729	  client is coming from 2.10, even behind the mask (noted by ZZyZZ,
1730	  patch from jv).
1731	* s_service/free_service(): unnecessary free_server() call.
1732
17332004-03-09  Piotr Kucharski
1734
1735	* s_bsd.c/add_connection(): move check_clones() before DNS starts.
1736	* s_bsd.c/init_sys(): initalize listeners[]; also not bzero, just set
1737	  all to NULLs.
1738
17392004-03-08  Piotr Kucharski
1740
1741	* s_user.c/m_nick(): DISABLE_NICKCHANGE_WHEN_BANNED, default undefined,
1742	  allows to do what advertised (only local clients affected, of course).
1743	* ircd.c/main(): check_servername(ME) added, this disallows things like
1744	  spaces in server name in M: etc.
1745
17462004-03-07  Piotr Kucharski
1747
1748	* parse.c: DNS command is oper only from now.
1749	* class.c/get_sendq(): check also for NULL ->nline.
1750	* s_conf.c/attach_Iline(): make a case for UNIXPORT or else we need
1751	  "match any" I:line.
1752	* list.c/make_server(): check and eventually quit earlier, without
1753	  MyMalloc()ing.
1754	* struct_def.h, send.c, ircd.c, list.c, s_bsd.c, s_conf.c, s_serv.c,
1755	  s_service.c: changed cptr->name to pointer, added namebuf[]s of
1756	  proper sizes to cptr, cptr->serv and cptr->service; this saves us
1757	  in memory (HOSTLEN-NICKLEN) bytes per each client (5MB on IRCnet).
1758	* parse.c/remove_unknown(): SID can be source too, treat like server.
1759	* parse.c/find_sender(): fix core when unknown sid source.
1760	* s_id.c/check_uid(), s_user.c/m_unick(): check uid introduced if
1761	  matches source sid.
1762	* s_user.c/register_user(): not only remove client received in NICK
1763	  with improper servertok, but also the server that introduced it.
1764	* s_user.c/register_user(): when iterating over fdas, check for
1765	  null acptr and IsServer(apctr).
1766	* ircd.c, s_bsd.c, s_bsd_ext.h: moved listeners from local[] to
1767	  listeners[] table (preparation for better handling).
1768	* s_serv.c/report_listeners(): as stats l/L is not returning
1769	  listeners anymore, show them detailed in stats P.
1770	* ircd.c, s_bsd.c, s_debug.c, s_err.c, s_serv.c, numeric_def.h,
1771	  struct_def.h: removed ancient STAT_LOG (and RPL_TRACELOG).
1772
17732.11.0a4
1774
17752004-03-05  Piotr Kucharski
1776
1777	* res.c/proc_answer(), get_res(): fix CNAMEs resolving; now we use the
1778	  name that client IP has "IN PTR" to, not the name that "IN A"
1779	  points to client IP (patch from BitKoenig).
1780	* list.c/make_conf(): initialize flags to 0L.
1781	* struct_def.h, chkconf.c, s_conf.c, s_serv.c: got rid of CONF_RCLIENT
1782	  internally -- it's CONF_CLIENT with 'R' flag set.
1783	* s_conf.c/iline_flags_to_string(): return '-' when no flags.
1784	* s_serv.c/report_configured_links(): iline_flags_to_string() now
1785	  returns '-' for no flags, no need to check it here.
1786	* ircd.c/ircd_readtune(), ircd_writetune(), hash.c/inithashtables(),
1787	  hash_def.h: introduce UIDSIZE (instead of using HASHSIZE).
1788	* channel.c/m_kick(): don't send KICKs one by one to other servers,
1789	  use one KICK per channel; also put UIDs where appropriate.
1790	* struct_def.h, chkconf.c, s_conf.c: CONF_NORESOLVEMATCH ('M') I:line
1791	  flag: does not show clients hostname, but allows it to match in beIR.
1792	* s_user.c/register_user(): use IP for user->host, if 'M' I: flag.
1793	* channel.c/match_modeid(): try to match sockhost, if 'M' I: flag.
1794	* hash.c/hash_uid(): little, but still improvement.
1795	* s_user.c/register_user(): send a notice about disabled host resolving.
1796
17972004-03-04  Piotr Kucharski
1798
1799	* s_conf.c/attach_Iline(): rewritten, now it requires both addr and name
1800	  to match (if you want old behaviour of "put x in name to disable
1801	  clients resolve", just use 'N' flag).
1802	* s_conf.c/attach_Iline(): 'N' flag working now.
1803	* s_conf.c/attach_Iline(): moved strcpy/strcat out of aconf loop, that
1804	  should make it significantly faster.
1805	* s_conf.c/attach_Iline(): no longer match aconf->name to each alias
1806	  of a host, use only its hostname.
1807
18082004-02-29  Piotr Kucharski
1809
1810	* s_serv.c/m_squit(): squit without comment bug (noted by Marcin Krol).
1811	* hash.c/bigger_hash_table(): uid hash table bug (endless loop).
1812	* s_user.c/m_nick(): another try, this time "NICK 0" seems to work
1813	  before USER (with help from fiction).
1814	* s_user.c/register_user(): add_to_client_hash_table() when registering
1815	  after "NICK 0".
1816	* struct_def.h, s_misc.c, s_user.c: is_save statistics.
1817	* channel.c/send_channel_members(): SID as source if ST_UID server.
1818	* channel.c/m_join(): not only send SID as source where appropriate,
1819	  but also client joining as UID, if it has one.
1820
18212004-02-27  Piotr Kucharski
1822
1823	* s_bsd.c/add_unixconnection(): return value.
1824	* s_bsd.c/read_listener(): send notice on client connect.
1825	* s_user.c/m_unick(): check return value of do_nick_name().
1826	* s_user.c/m_nick(): don't copy more than ONICKLEN to nick for local
1827	  clients.
1828
18292004-02-24  Piotr Kucharski
1830
1831	* parse.c, msg_def.h: add "POST" command being alias for "QUIT"
1832	  to cut w3cache abuse (idea from ircu).
1833
18342.11.0a3
1835
18362004-02-23  Piotr Kucharski
1837
1838	* s_serv.c/m_squit(): do not send compatibility sids in SQUIT.
1839	* s_misc.c/exit_client(): moved adding "by whom" to comment of squit
1840	  to m_squit().
1841	* s_serv.c/m_squit(): add "by whom" to comment of squit.
1842	* parse.c/find_matching_client(): traverse server list from bottom
1843	  (ME) to up, so we find ourselves first (fixes trace bug).
1844
18452004-02-22  Jakub Vlasek
1846
1847	* s_misc.c/exit_server(): moved "Received SQUIT", so the sequence on
1848	  &SERVERS is not reversed.
1849	* s_misc.c/exit_server(): added "from" parameter.
1850	* s_misc.c/exit_client(): use "from" in remote squit reason.
1851
18522004-02-22  Piotr Kucharski
1853
1854	* s_misc.c/exit_client(): removed unnecessary "Sending SQUIT" notice.
1855	* s_serv.c/m_squit(): removed unnecessary "Received SQUIT", it's now
1856	  in exit_server().
1857
18582004-02-21  Piotr Kucharski
1859
1860	* channel.c/m_kick(): "KICK # me,other" caused desync on remote servers:
1861	  it was sent in two consecutive KICKs, first one removed client from
1862	  channel and second one thus failed. No more "NJOIN protocol error".
1863	* s_user.c/register_user(): remove add_to_client_hash_table() when nick
1864	  was "0", let m_nick() do it.
1865	* s_user.c/m_nick(): reverted (wrong) fix from 2004-02-19 and disabled
1866	  "NICK 0" before "USER".
1867
18682004-02-19  Piotr Kucharski
1869
1870	* Makefile.in: when jv rewrote m_hash on 2002-07-04, sums were removed.
1871	  no need to munch hash.c anymore.
1872	* s_user.c/m_nick(): we were calling add_to_client_hash_table() twice
1873	  with UID-nick! Hash tables get corrupted. It was caused by allowing
1874	  "NICK 0" during registration and was causing endless loop in hash.
1875	* s_user.c/m_unick(): fixed core in checking for collisions (local
1876	  unregistered clients have no ->user struct).
1877
18782004-02-18  Piotr Kucharski
1879
1880	* channel.c/m_part(): canonize list of channels first; move comment
1881	  out of strtoken loop; allow empty comment, don't force it to be
1882	  user nick.
1883	* channel.c/m_part(): buffer overflow resulting in network desync.
1884
18852.11.0a2
1886
18872004-02-17  Piotr Kucharski
1888
1889	* s_user.c/m_nick(): do not add to hash table nick of "0".
1890	* s_user.c/register_user(): when NICK 0 was before USER, wait until
1891	  USER is sent and we know UID -- then change this nick and add it
1892	  to hash table.
1893	* s_serv.c/m_stats(): cleanup of what to check_link (RPL_TRYAGAIN).
1894	* s_serv.c: new function report_listeners() showing P:lines (IP, port)
1895	  and number of clients using it.
1896	* s_serv.c: new stats (P) for report_listeners().
1897
18982004-02-16  Piotr Kucharski
1899
1900	* s_serv.c/dump_sid_map(): add bursting time; also rewritten a bit.
1901	* s_serv.c/m_server_estab(): do not append own SID to "mass" EOB,
1902	  being source is enough.
1903	* channel.c/set_mode(): set ->reop when +R from server.
1904
19052004-02-15  Piotr Kucharski
1906
1907	* s_serv.c/m_squit(): return when illegal port is found.
1908	* support.c/make_isupport(): removed CHARSET, changed CASEMAPPING
1909	  to ascii.
1910	* s_serv.c/m_squit(): fixed core (introduced 2004-02-13) when squit
1911	  issued by oper. ;)
1912	* s_bsd.c/add_local_domain(): remove ending dot from hname (so it
1913	  won't assume later it already is fqdn).
1914	* s_bsd.c/get_my_name(): dot check not needed, add_local_domain does it.
1915	* channel.c/m_njoin(): revive difference between netjoin and plain join.
1916	* channel.c/reop_channel(): use ->reop, not ->history, for checking if
1917	  channel reop is overdue.
1918	* s_serv.c/report_ping(): comment out debug message.
1919
19202004-02-14  Piotr Kucharski
1921
1922	* s_user.c/m_join(): show nick in error, not UID, when restricted
1923	  clients does "NICK 0".
1924
19252.11.0a1
1926
19272004-02-13  Jakub Vlasek
1928
1929	* s_serv.c/dump_map(): Make *prevserver NULL after processing it.
1930	* s_serv.c/m_squit(): Handle SQUIT sent by remote server. Send SID
1931	  to 2.11 servers in SQUIT message.
1932	* s_misc.c/exit_client(): Send SQUIT to remote server when closing
1933	  link.
1934
19352004-02-13  Piotr Kucharski
1936
1937	* INSTALL.*, 2.11-New, RELEASE_NOTES, example.conf: update.
1938	* channel.c/m_join(): do not return "Too many channels" when client
1939	  tries to join channel he is already on.
1940	* s_bsd.c/add_local_domain(): fix localhost bug introduced in 2.10.3p5.
1941	* s_user.c/m_unick(): bug appearing in whowas (after squit users had
1942	  improper info in server field).
1943	* version.c.SH.in: INFO update.
1944	* s_conf.c, chkconf.c: removed U:lines.
1945	* s_err.c, s_user.c/save_user(): added UID to RPL_SAVENICK.
1946
19472004-02-12  Piotr Kucharski
1948
1949	* s_user.c, s_debug.c, config.h.dist: removed OPER_REMOTE
1950	  (now default), though left possibility to define NO_OPER_REMOTE,
1951	  for those who need it.
1952	* channel.c/remove_user_from_channel(): record reop time for all
1953	  channels, not only !chans.
1954	* s_misc.c, s_misc_ext.h: myrand() and mysrand() added.
1955	* channel.c/collect_channel_garbage(): a bit rewritten, and made
1956	  aware of IsSplit not to call reop_channel during split.
1957	* channel.c/reop_channel(): got rid of "small +r !channels get
1958	  all clients reopped", unified reop mechanism for both !channels
1959	  (+R and +r) and #channels (+R), made it more random and of course
1960	  matching +R.
1961	* ircd.c/main(), s_conf.c/rehash(): init srand.
1962
19632004-02-11  Piotr Kucharski
1964
1965	* parse.c: unick requires registered connection (msgtab).
1966	* s_serv.c/m_eob(): show also server name in debug.
1967	* s_user.c/m_nick(): allow "NICK 0" during registration.
1968
19692004-02-10  Piotr Kucharski
1970
1971	* s_service.c/m_service(): lacking parameter added.
1972	* channel.c/match_modeid(): bug in matching username part.
1973
19742004-02-09  Piotr Kucharski
1975
1976	* s_conf.c/initconf(), s_serv.c: swap 'o' and 'O' to match umode.
1977	* ircd.c/setup_me(): SetEOB(me).
1978	* s_misc.c/check_split(): remove "+1", as &me is SetEOB now.
1979	* s_serv.c/m_version(), s_err.c: add SID to version output.
1980	* struct_def.h: TOPICLEN increased.
1981	* config.h.dist: MCPU increased.
1982	* RELEASE_NOTES: docs.
1983	* s_conf.c: erroneous IsIllegal() traps removed.
1984	* res.c/bad_hostname(): isalnum is enough.
1985	* s_serv.c/m_server(): move some SID checks earlier.
1986	* s_conf.c/find_conf_host_sid(): match SID mask (2nd field) in H:.
1987	* s_serv.c/m_server(): check new server for SID mask match.
1988	* s_serv.c/report_configured_links(): show SID mask field in STATS H.
1989
19902004-02-08  Piotr Kucharski
1991
1992	* iauth.c: new function write_pidfile().
1993	* Makefile.in: added IAUTHPID_PATH.
1994	* s_user.c/m_quit(): enclose local users' supplied quit reasons with
1995	  double quotes; get rid of default "I Quit" message.
1996	* s_misc.c/exit_client(): take advantage of double quotes enclosing.
1997	* s_misc.c/exit_client(): do not call check_split() every client
1998	  quitting (leave it only every server quitting).
1999	* s_misc.c/check_split(): tiny unsigned bug.
2000	* channel.c/m_join(): no-op-on-split.
2001
20022004-01-20  Piotr Kucharski
2003
2004	* channel.c/set_mode(): disallow +R from clients.
2005
20062004-01-02  Piotr Kucharski
2007
2008	* reverting Kurt's changes #2 and #3 from 2004-01-01 (too much
2009	  champagne?)
2010	* channel.c/m_join(): allowing to join +q channels regardless
2011	  of MAXCHANNELSPERUSER.
2012
20132004-01-01  Jakub Vlasek
2014
2015	* s_serv.c/do_emulated_eob(): The value of istat.is_eobservers should
2016	  have been incremented before SetEOB().
2017
20182004-01-01  Kurt Roeckx
2019
2020	* support.c/make_isupport(): Replace MAXCHANNEL by CHANLIMIT.
2021	* channel.c:add_user_to_channel(), remove_user_from_channel()
2022		m_join(): Don't count &-channels for MAXCHANNELSPERUSER,
2023                instead of not counting +q channels.
2024	* channel.c: m_join(): Allow joining &-channels even when
2025		MAXCHANNELSPERUSER already reached.
2026	* support.c/make_isupport(): Replace CHIDLEN by IDCHAN.
2027
20282003-12-24  Kurt Roeckx
2029
2030	* config.guess, config.sub: Newer versions.
2031
20322003-12-12  Piotr Kucharski
2033
2034	* channel.c/match_modeid(): bug in nick check (noted by fiction).
2035
20362003-12-09  Piotr Kucharski
2037
2038	* s_conf.c/find_denied(): try find_client with server name (from C:),
2039	  not server address.
2040	* s_bsd.c/close_connection(): when nextconnect was 0, it was not
2041	  reset when server closed connection. This bug made autoconnect
2042	  stop forever.
2043	* s_bsd.c/close_connection(): added another sanity check for the
2044	  benefit of nextconnect.
2045
20462003-11-13  Piotr Kucharski
2047
2048	* s_user.c/m_pass(): don't copy PASS params to info when issued
2049	  after USER or SERVICE (noted by fiction).
2050
20512003-11-03  Piotr Kucharski
2052
2053	* struct_def.h: MODE_REOPLIST was added, MODE_FLAGS needed updating.
2054
20552003-10-22  Jakub Vlasek
2056
2057	* hash.c/m_hash(): Spelling fixes, hash_channel_name() takes 3 params
2058	  - removed the hashfunc from HashTables[].
2059
20602003-10-19  Kurt Roeckx
2061
2062	* support.c/make_isupport(): Limit to sending 12 tokens in
2063	  005 numeric.
2064
20652003-10-18  Piotr Kucharski
2066
2067	* ircd.c: new function delayed_kills() for checking kill-lines.
2068	* ircd.c/io_loop(): add delayed_kills next to check_pings().
2069	* s_conf.c/rehash(): add "queue" of rehash (when we get rehash
2070	  while previous delayed_kills did not finish yet).
2071	* s_conf.c/find_kill(), s_conf_ext.h: change param name, reversed
2072	  its meaning.
2073	* s_user.c/register_user(): find_kill param fix
2074	* s_misc.c: removed old version of DK.
2075	* config.h.dist: added MAXDELAYEDKILLS define, removed DELAYED_KILLS.
2076
20772003-10-18  Kurt Roeckx
2078
2079	* os.h: Removed the defenition of in6addr_any.
2080	* *.c: Remove all K&R syntax.
2081	* channel.c, str.c, mod_socks.c, list.c, s_id.c, send_ext.h, hash.c,
2082	  ircd.c, s_misc.c, s_serv.c, irc.c, s_bsd.c, parse.c, iauth.c
2083	  ircdwatch.c, mkpasswd.c, s_service.c, s_misc_ext.hi, nameser_def.h,
2084	  res_mkquery.c, s_auth.c, os.h, send.c, support.c:
2085	  Fix warnings.
2086
20872003-10-18  Jakub Vlasek
2088
2089	* bsd.c, config.h.dist: Removed NOWRITEALARM.
2090	* dbuf.c: Removed VALLOC.
2091	* s_bsd.c: Removed SUN_GSO_BUG.
2092	* s_debug.c: Removed SUN_GSO_BUG, VALLOC, NPATH and NOWRITELALARM
2093	  from serveropts[]. (Not used anymore)
2094	* s_debug.c: Added TOPIC_WHO_TIME to serveropts[].
2095
20962003-10-18  Jakub Vlasek
2097
2098	* msg_def.h: Added MSG_MAP.
2099	* numeric_def.h, s_err.c: Added MSG_MAPSTART, MSG_MAP and MSG_MAPEND.
2100	* parse.c, s_serv_ext.h: Added m_map.
2101	* s_serv.c: Added m_map(), dump_map() and dump_sid_map().
2102	* s_serv.c/m_trace(): Allow tracing of a SID.
2103
21042003-10-17  Kurt Roeckx
2105
2106	* hash.c, list.c, s_id.c, s_serv.c, s_service.c: Fix warnings
2107	  (from Robbert Muller)
2108	* s_service.c/sendnum_toone(): Correctly send modes to the services
2109	  that requested it. (From Robbert Muller)
2110	* ircd.c/main(): cygwin (1.5?) can now use iauth.
2111	* s_bsd.c/daemonize(): Go in the background on cygwin too.
2112	* dbuf_ext.h, send_ext.h, class_ext.h, hash_ext.h, ircd.c, ircd_ext.h,
2113	  list_ext.h, res_ext.h, res_init_ext.h, s_auth_ext.h, s_bsd.c,
2114	  s_bsd_ext.h, s_conf_ext.h, s_id_ext.h, s_misc_ext.h, whowas_ext.h:
2115	  Fix compile warnings (From Robbert Muller)
2116	* ircd.c, ircd_ext.h: Get rid of PROFIL.
2117	* a_conf_ext.h, a_io_ext.h, a_log_ext.h, mkpasswd.c, support_ext.h,
2118	  channel.c, chkconf.c: Fix compile warnings (From Robbert Muller)
2119	* c_msg_ext.h, edit_ext.h, irc_ext.h, screen_ext.h: Fix compile
2120	  warnings (From Robbert Muller)
2121	* support.c, support_ext.h: Convert dumpcore() to use stdarg.
2122	* *_ext.h, os.h: Get rid of __P().
2123
2124
21252003-10-15  Kurt Roeckx
2126
2127	* parse.c, send_ext.h, ircdwatch.c, iauth.c, mod_lhex.c, mod_pipe.c,
2128	  mod_rfc931.c, mod_socks.c, channel.c, ircd.c, list.c, s_misc.c:
2129	  Fix some warnings (from Robbert Muller)
2130
21312003-10-14  Kurt Roeckx
2132
2133	* send.c, a_conf.c, c_conf_ext.h, s_serv.c: More warning fixes (from
2134	  Robbert Muller)
2135	* send.c, ircdwatch.c, a_log.c, mod_rfc931.c, mod_socks.c, chkconf.c:
2136	  Even more warning fixes (from Robbert Muller)
2137
21382003-10-13  Piotr Kucharski
2139
2140	* res.c/proc_answer(): possible buffer overflow.
2141	* res.c/get_res() : "wrong type" error for ipv4 server names
2142	  on ipv6 servers.
2143	* res.c/do_query_number(), config.h.dist: SIXBONE_HACK.
2144	* config.h.dist: CLONE_CHECK is now default, not SLOW_ACCEPT.
2145	* s_user.c/m_nick(): username and hostname were erroneously empty
2146	  in legal collisions.
2147	* s_conf.c: some CONF_RCLIENT missing.
2148	* s_bsd.c/polludp(): remove confusing "udp port recvfrom()" message.
2149	* s_bsd.c/inetport(): check ipmask validity.
2150
21512003-10-13  Kurt Roeckx
2152
2153	* match_ext.h, send_ext.h, c_conf.c, channel.c, hash.c, ircd.c, res.c,
2154	  s_auth.c, s_bsd.ci, s_bsd_ext.h, s_conf.c, s_conf_ext.h, s_debug.c,
2155	  s_err.c, s_misc.c, s_send.c, s_serv.c, s_user.c: Fix compiler
2156	  warnings and other general cleanup (From Robbert Muller)
2157	* struct_def.h, channel.c, s_misc.c: Clean up the invite linked list.
2158
21592003-10-12  Piotr Kucharski
2160
2161	* channel.c/m_join(): join overflow bug.
2162	* s_auth.c/sendto_iauth(): iauth failing to restart (patch from Q).
2163
21642003-09-30  Piotr Kucharski
2165
2166	* chkconf.c/initconf(): 'N' flag to I:line should be recognized too
2167	  (noted by fiction).
2168	* struct_def.h, chkconf.c/initconf(), s_conf.c/iline_flags_parse(),
2169	  iline_flags_to_string(), attach_Iline(), s_user.c/register_user():
2170	  add 'F' (fallthrough) flag to I:lines (from fiction).
2171	* struct_def.h: add EXITC_BADPASS.
2172
21732003-08-12  Piotr Kucharski
2174
2175	* res.c/do_query_name(), s_bsd.c/add_local_domain(): fix possible
2176	  buffer overflow (noted by cras).
2177
21782003-08-10  Piotr Kucharski
2179
2180	* s_serv.c/m_eob(): sid was not initialized, use sptr->serv->sid.
2181	* s_serv.c/m_eob(): deal with protocol errors (eob coming from 2.10).
2182
21832003-08-08  Piotr Kucharski
2184
2185	* common_def.h: added isscandinavian() macro checking ~^{}[]|\ chars.
2186	* s_user.c/do_nick_name(): move check to isscandinavian() macro.
2187	* s_user.c/m_nick(): do do_nick_name() earlier, not to broadcast
2188	  ":old NICK old" message.
2189	* channel.c: added convert_scandinavian() function to change
2190	  chars {}\~ to []|^ in channel names in commands from local clients
2191	  or 2.10 servers; this will allow dropping scandinavian origin
2192	  in next version.
2193	* channel.c: m_mode(), m_join(), m_njoin(), m_part(), m_kick(),
2194	  m_topic(), m_invite(), m_names(): added convert_scandinavian() in
2195	  proper places (I hope no important function is missing).
2196	* channel.c/names_channel(): using strlen for checking if server is
2197	  bugus, proper is finding dot.
2198	* struct_def.h: increased NICKLEN to 12, added ONICKLEN=9 for keeping
2199	  compatibility.
2200	* support.c/make_isupport(), s_debug.c/send_defines(): use ONICKLEN,
2201	  as this is the nicklen allowed from clients.
2202	* s_user.c/do_nick_name(): allow ONICKLEN long nicks from clients
2203	  and NICKLEN long from servers.
2204
22052003-08-07  Piotr Kucharski
2206
2207	* s_user.c/m_nick(): move around some code and add checking for
2208	  "NICK 0" or "NICK UID" from client already having UID nick and
2209	  discard it.
2210	* s_user.c/do_nick_name(): disallow {}\ in nicks, so we can later
2211	  drop scandinavian origin in match().
2212	* match.c: change upper- and lowertable, so {|}~ is no longer
2213	  lowercase of [\]^.
2214	* match.c: make ~ not valid in nicknames (however it was
2215	  forbidden in other place).
2216
22172003-08-06  Piotr Kucharski
2218
2219	* numeric_def.h, struct_def.h, support.c/make_isupport(),
2220	  channel.c/send_channel_modes(),add_modeid(),send_mode_list(),
2221          set_mode(), s_err.c: introduced R (reop) list (no reop yet).
2222
22232003-08-05  Piotr Kucharski
2224
2225	* channel.c/can_join(): send a notice also when overriding limit.
2226
22272003-07-29  Piotr Kucharski
2228
2229	* s_service.c/m_service(): removed metric variable; moved filling
2230	  hopcount earlier, so it does not break later in free_client(),
2231	  where it is used for local client check (noted by jv).
2232	* s_service.c/m_service(): changed !sp to sp==NULL, as the former
2233	  breaks in DEBUGMODE.
2234
22352003-07-28  Jakub Vlasek
2236
2237	* struct_def.h: Added byuid to struct Server. Stores UID of remote
2238	  oper initiating the connection.
2239	* send.c/send_queued(), ircd.c/check_pings(), s_bsd.c/report_error(),
2240	  s_serv/m_server_estab(): Report the error to remote oper who
2241	  initiated server connection.
2242
22432003-07-24  Piotr Kucharski
2244
2245	* s_id.c/next_uid(): changed pow() to #define constant; added
2246	  check if we need to find_uid() over newly found cid (not
2247	  needed if it's the first loop of cids).
2248
22492003-07-19  Piotr Kucharski
2250
2251	* s_user.c/m_user(): changed unused (since 2.9.x) FLAGS_RILINE
2252	  to FLAGS_RESTRICT.
2253	* send.c/sendto_match_butone(),sendto_match_butone_old(): fixed
2254	  comments.
2255	* common/struct_def.h: added MATCH_OLDSYNTAX
2256	* s_user.c/m_message(): accept old syntax of $/#-mask, correctly
2257	  send both old and new syntax to old and new servers.
2258
22592003-07-18  Piotr Kucharski
2260
2261	* irc_sprintf.c, irc_sprintf_body.c, irc_sprintf_ext.h: various
2262	  cleanups, typo fixes (from Zobo).
2263	* struct_def.h: removed unused flags, some cleanups.
2264	* s_bsd.c/close_connection(): schedule quick reconnect for a good
2265	  link only when cptr was aServer.
2266	* doc/ cleanup.
2267	* added ISO-3166-1 file (from NetBSD) for SID allocations.
2268	* struct_def.h: changed SIDLEN to 4. Yes, it's a waste, but at
2269	  least it takes off the burden of assigning SIDs. ISO-3166 now!
2270	  Also enlarged tok in Server struct to hold long tokens.
2271	* list.c: increased MAX210SERVERS to 46656.
2272
22732003-06-22  Kurt Roeckx
2274
2275	* channel.c/m_join: Send RPL_TOPIC before RPL_TOPIC_WHO_TIME.
2276	* channel.c, s_send.c: Fix spelling of the anonymous user.
2277	* channel.c/m_join: Now always use NJOIN between servers.
2278
22792003-06-18  Kurt Roeckx
2280
2281	* Update RPL_ISUPPORT to the latest draft.
2282
22832003-06-03  Piotr Kucharski
2284
2285	* s_user.c/m_nick(): bad param count NICK coming from server must
2286	  be dealt with.
2287
22882003-04-13  Piotr Kucharski
2289
2290	* channel.c/set_mode(): 'break' misplaced (reported by BitKoenig).
2291
22922003-02-22  Kurt Roeckx
2293
2294	* os.h: Always include resolv.h when found.
2295
22962003-02-16  Jakub Vlasek
2297
2298        * struct_def.h: Added IsSplit() macro. Added split variables to
2299          struct iconf_t.
2300        * s_debug.c: Report administrative state of autoconnect and split
2301          values in stats d.
2302        * s_misc.c,s_misc_ext.h: Added check_split().
2303        * s_misc.c/exit_client(): Added split detection.
2304        * s_misc.c/initruntimeconf(): Initialise split values.
2305        * s_serv.c/m_eob(), do_emulated_eob(): Call check_split().
2306        * s_user.c/register_user(): Call check_split(), send split notice
2307          to users upon connect.
2308
23092003-02-15  Piotr Kucharski
2310
2311	* s_bsd.c/polludp(): sometimes garbage IP was shown in error message.
2312	* send.c/sendto_match_butone(): don't send to old servers.
2313	* send.c: new function sendto_match_butone_old() for sending $#/$$
2314	  mask message to old servers only.
2315	* s_user.c/m_message(): use sendto_match_butone_old().
2316	* struct_def.h: added ST_NOTUID() define.
2317	* s_misc.c, s_send.c, s_serv.c, s_service.c, s_user.c, send.c:
2318	  we miserably forgot about De Morgan laws, changing all
2319	  !ST_UID() to ST_NOTUID(); luckily in most, if not every, places it
2320	  was guarded by earlier IsServer or similar (talk about redundant
2321	  checks, eh?), so it didn't affect us badly (noted by Grega Pogacnik).
2322
23232003-02-14  Piotr Kucharski
2324
2325	* channel.c/match_modeid(): wrong UID ban checks.
2326	* channel.c/set_mode(): removing key on channel with no key resulted
2327	  in desynch, when combined with other modes after -k (from Grega
2328	  Pogacnik).
2329
23302003-02-13  Piotr Kucharski
2331
2332	* match.c/match(): added quick parsing of '*' mask; added '#'
2333	  wildcard matching only digits.
2334	* s_serv.c/m_stats(): be aware of '#' wildcard.
2335	* struct_def.h, channel.c/match_modeid(), add_modeid(), del_modeid(),
2336	  set_mode(), s_err.c: changed value.cp to struct holding nick, user,
2337	  host separately, this allowed for faster match()es and better beI
2338	  lists parsing.
2339	* channel.c: added make_bei() and free_bei() functions.
2340	* channel.c/match_modeid(): added full CIDR support for beI lists.
2341
23422003-02-13  Jakub Vlasek
2343
2344	* s_user.c/m_user(): Parse user text modes sent in USER command
2345	  during registration.
2346
23472003-02-11  Piotr Kucharski
2348
2349        * s_serv.c/m_stats(): stats l server client_not_on_this_server
2350          should not return bogus values (from Grega Pogacnik).
2351
23522003-02-10  Piotr Kucharski
2353
2354        * channel.c/match_modeid(): added support for CIDR.
2355        * s_conf.c/match_ipmask(): added one param to ease using it
2356          with or without user@ part to match CIDRs;
2357        * Makefile.in: added install-ircd target.
2358
23592003-02-09  Jakub Vlasek
2360
2361	* s_bsd.c/connect_inet(): Fixed compile error. (from Shigeru Okumura)
2362
23632002-12-28  Jakub Vlasek
2364
2365	* msg_def.h, parse.c, s_serv.c, s_serv_ext.h: Added SET command.
2366	* config.h.dist: Added OPER_SET and LOCOP_SET defines.
2367	* s_misc.c: Added initruntimeconf() used for initialisation of
2368	  struct iconf.
2369	* ircd.c, ircd_ext.h: Added declaration of iconf. Structure used
2370	  for keeping run-time configuration data.
2371	* ircd.c/main(): Call initruntimeconf().
2372	* ircd.c/try_connections(): Do not autoconnect if autoconnect
2373	  disabled via SET.
2374
23752002-11-29  Jakub Vlasek
2376
2377	* mkpasswd.c, contrib/mkpasswd/README: New version from W. Campbell.
2378
23792002-11-25  Jakub Vlasek
2380
2381	* s_user.c/m_nick(): Allow user to set his nick to UID by specifying
2382	  nick 0 or his own UID.
2383	* s_serv.c/m_stats(): Made stats 'Z' and 'z' behave the same if
2384	  DEBUGMODE not set.
2385	* s_err.c/RPL_YOURID: Send UID before the text of numerics.
2386	* chkconf.c: Enclosed debug messages with #ifdef DEBUGMODE.
2387
23882002-11-24  Jakub Vlasek
2389
2390	* struct_def.h: Added source_ip to struct ConfItem.
2391	* list.c/make_conf(): set source_ip to NULL.
2392	* list.c/free_conf(): Free source_ip.
2393	* s_bsd.c/connect_inet(): Use aconf->source_ip to bind correct IP
2394	  for outgoing connections.
2395	* s_conf.c/initconf(): Fill aconf->source_ip.
2396	* 2.11-New: Added.
2397	* s_serv.c/m_stats(), report_fd(): Support for stats F.
2398
23992002-11-23  Piotr Kucharski
2400
2401	* ircd.c/check_pings(), s_misc.c/exit_client(), config.h.dist:
2402	  DelayedKills upon rehash.
2403
24042002-11-22  Jakub Vlasek
2405
2406	* s_serv.c/m_stats(): Do not reply to stats requests with more than
2407	  1 char.
2408
24092002-11-22  Piotr Kucharski
2410
2411	* numeric_def.h, channel.c/m_join(),m_topic(), s_err.c, config.h.dist,
2412	  struct_def.h: who and when set the topic.
2413	* s_err.c, s_user.c/send_whois(), config.h.dist: signon time in whois.
2414	* numeric_def.h, s_serv.c/m_server_estab(),m_lusers(), struct_def.h,
2415	  s_err.c: info (numerics 265 and 266) and notices about max local/global
2416	  client count.
2417	* s_service.c, s_serv.c, s_user.c: keep stats about max client values.
2418	* struct_def.h, s_misc.c/initstats(),exit_client(), config.h.dist,
2419	  s_user.c/register_user(): notice on in/de-creasing local clients count.
2420
24212002-11-11  Jakub Vlasek
2422
2423	* s_err.c: Changed text of ERR_TOOMANYMATCHES.
2424	* channel.c/m_list(): Terminate LIST output when the client has less
2425	  than 10% of available sendQ free.
2426
24272002-10-13  Jakub Vlasek
2428
2429	* ircdwatch.c/sig_handler(): Removed extra semicolon after #endif.
2430
24312002-10-09  Kurt Roeckx
2432
2433	* support.c, support_ext.h, channel.c, list.c res.c, s_bsd.c, s_id.c,
2434	  s_misc.c, s_service.c, s_zip.c: MyFree now takes a void * as argument.
2435
24362002-09-29  Jakub Vlasek
2437
2438	* iauth-internals.txt: Update for 2.11 protocol (added kill reason).
2439	* struct_def.h: Added reason to struct Client - used for storing
2440	  of extended information about client quit (like from iauth modules).
2441	* a_conf.c: Parse reason from iauth.conf
2442	* a_conf_def.h: Added reason to struct Instance.
2443	* mod_socks.h: Send kill reason to ircd.
2444	* list.c/free_client(): Free aClient->reason.
2445	* s_auth.c: Parse kill reason from iauth.
2446	* s_user.c/register_user(): Send kill reason from iauth to the client.
2447
24482002-09-13  Jakub Vlasek
2449
2450	* ircd.c, s_ircd.c: Make -t (don't fork) available even when not
2451	  DEBUGMODE used.
2452	* s_serv.c/report_configured_links(): Show * in I-line flag
2453	  field if no flag defined.
2454	* s_user.c/m_oper(), config.h.dist: Added FAILED_OPERLOG to log
2455	  failed oper attempts.
2456	* s_debug.c: Added FAILED_OPERLOG to version output.
2457
24582002-09-08  Jakub Vlasek
2459
2460	* channel.c/m_list(), config.h.dist: Added LIST_ALIS_NOTE.
2461
24622002-09-06  Piotr Kucharski
2463
2464	* s_user.c/m_nick(): when checking for correct number of params
2465	  in NICK when it comes from server, prior to collision make
2466	  sure the other side sent proper number of params in NICK
2467	  and kill only the wrong side, as it is protocol error.
2468
24692002-08-25  Jakub Vlasek
2470
2471	* parse.c/getfield(): Support quoting of delimiter in ircd.conf.
2472	* s_user.c/m_user(): Fixed crash introduced during last change
2473	  (from Grega Pogacnik).
2474
24752002-08-24  Piotr Kucharski
2476
2477	* parse.c/remove_unknown(), channel.c/collect_channel_garbage(),
2478	  s_misc.c/exit_client(), s_serv.c/m_server(): move some messages from
2479	  SCH_LOCAL to SCH_NOTICES (from jv).
2480	* mod_socks.c/socks_init(): added 'megaparanoid' option, which denies
2481	  access to everything listening on 1080 and not answering explicitly
2482	  that it is closed proxy; that includes all protocol errors etc.
2483	* mod_socks.c/socks_read(), doc/iauth.conf.5: modified to use above.
2484
24852002-08-23  Piotr Kucharski
2486
2487	* irc_sprintf.c,irc_sprintf_body.c,irc_sprint_ext.h: added irc_vsprintf;
2488	  irc_sprintf() now supports most of basic formats and modifiers (no
2489	  uid support yet).
2490	* s_user.c/m_message(): changed syntax for oper mass notices from
2491	  $/#-mask to $$/$#-mask (since it may go confused with channels).
2492	* channel.c/send_channel_modes(): allow mixing beI (compatibility
2493	  with 2.9, no longer needed).
2494	* s_serv.c/m_stats(): allow 'stats L nick' without penalizing with
2495	  RPL_TRYAGAIN.
2496	* res.c/proc_answer(): check if answer is matching the request (from Q).
2497
24982002-08-05  Piotr Kucharski
2499
2500	* s_user.c/m_nick(): check for correct number of params in NICK when
2501	  it comes from server before checking for collisions.
2502
25032002-08-04  Piotr Kucharski
2504
2505	* class.c/add_class(): typo in debug string.
2506
25072002-08-01  Piotr Kucharski
2508
2509	* struct_def.h: added invLink struct, similar to Link, but keeps
2510	  also 'char *who'.
2511	* list.c, list_ext.h: make_invlink() and free_invlink() added.
2512	* channel.c/add_invite(): added sptr param for remembering who
2513	  invited us to every channel.
2514	* channel.c/del_invite(): also free memory allocated in add_invite().
2515	* channel.c/can_join(): announce to channel who invited banned user.
2516
25172002-07-31  Piotr Kucharski
2518
2519	* hash.c/m_hash(): was '%Full', should've been '%%Full'.
2520
25212002-07-30  Piotr Kucharski
2522
2523	* s_serv.c/trace_one(): don't send UID to local clients (from Zobo).
2524
25252002-07-29  Piotr Kucharski
2526
2527	* got rid of !STDARG from everywhere.
2528	* got rid of R lines from everywhere.
2529	* got rid of SPRINTF define from everywhere.
2530	* added irc_sprintf() function, which will handle %y.
2531
25322002-07-06  Jakub Vlasek
2533
2534	* struct_def.h: added defines for I: line flags. Added ->flags to
2535	  struct ConfItem (from Beeth).
2536	* ircd.c/check_pings(),s_user.c/register_user(): added support for
2537	  kline exemptions.
2538	* s_conf.c,s_conf_ext.h  iline_flags_parse(), iline_flags_to_string()
2539	  added.
2540	* s_conf.c/initconf(),attach_Iline: added support for kline exemptions.
2541	* s_err.c: Added string field to RPL_STATSILINE for iline flags.
2542	* s_serv.c/show_configured_links(): Show iline flags.
2543
25442002-07-05  Piotr Kucharski
2545
2546	* s_serv.c/trace_one(): removed duplicated argument causing core.
2547	* channel.c/set_mode(): use ->uid only if it HasUID (from Zobo).
2548	* s_conf.c/find_kill(): don't check interval if TIMEDKLINE is not
2549	  defined.
2550	* s_conf.c/check_time_interval(): surround it by #ifdef TIMEDKLINE.
2551
25522002-07-04  Jakub Vlasek
2553
2554	* hash.c/m_hash(): rewritten to support all hashes.
2555	* send.c/sendto_ops_butone(): Rewritten to use local[] instead
2556	  of client linked list.
2557	* s_sev.c/m_close(): Send message about closing to SCH_NOTICE too.
2558	* parse.c/find_userhost(): Enclose with CLIENT_COMPILE.
2559
25602002-06-11  Piotr Kucharski
2561
2562	* channel.c/m_njoin(): use ->uid if HasUID, not ->name (from Zobo).
2563	* s_serv.c/m_eob(): missing argument (from Zobo).
2564
25652002-06-03  Jakub Vlasek
2566
2567	* parse.c/find_userhost(): use hostname hash for faster lookup.
2568
25692002-06-01  Jakub Vlasek
2570
2571	* struct_def.h: added hhashv,hhnext to struct User (used by hostname
2572	  hash).
2573	* hash.c, hash_def.h, hash_ext.h: added hostname hash.
2574	* s_conf.c/attach_conf(): use hostname hash for userhost limits.
2575	* s_user.c/register_user(): add user to hostname hash.
2576	* s_misc.c/exit_one_client(): remove user from hostname hash.
2577	* ircd.c/read_ircdtune(): initialise size of hostname hash to size
2578	  of client hash.
2579
25802002-06-01  Kurt Roeckx
2581
2582	* class.c, class_ext.h, class_def.h: Make maxSendq an int.
2583	* send.c, channel.c, support.c: Add extra {} and () to stop compiler
2584	  warnings.  Also removed some unused variables.
2585	* ircd.c: Make variables used in signal handlers volatile.
2586
25872002-06-01  Piotr Kucharski
2588
2589	* a_conf.c/conf_err(): exit iauth on config error.
2590	* bsd.c, packet.c, struct_def.h, s_bsd.c, s_misc.c, s_serv.c, send.c:
2591	  got rid of receiveK and sendK from struct Client, got rid of is_cks,
2592	  is_ckr, is_sks, is_skr from struct stats, changed receiveB, sendB
2593	  is_cbs, is_cbr, is_sbs, is_sbr to unsigned long long.
2594	* list.c/make_client(): add initialization of stats variables.
2595	* send.c/sendto_flog(): new log format.
2596	* struct_def.h: more EXITC_ codes.
2597	* s_user.c, s_user_ext.h: got rid of ereject_user(), use exit_client()
2598	  instead.
2599	* ircd.c/check_pings(), s_bsd.c/add_connection(),
2600	  s_user.c/register_user(): set proper cptr->exitc, use exit_client()
2601	  instead of ereject_user(), get rid of duplicating sendto_flog()s.
2602	* s_misc.c/exit_client(): log everything from here, use sptr->exitc.
2603	* config.h.dist: add LOG_OLDFORMAT define.
2604	* s_id_ext.h: readded cid_ok() declaration, we use it (via macro) in
2605	  other files.
2606
26072002-05-26  Piotr Kucharski
2608
2609	* send.c/sendto_flog(): ircd was not honouring SYSLOG_CONN and
2610	  SYSLOG_USERS being undefined (reported by Francesco).
2611
26122002-05-22  Jakub Vlasek
2613
2614	* s_serv.c/m_server(): Show the name of the server which caused
2615	  server exists error in squit message.
2616
26172002-05-20  Piotr Kucharski
2618
2619	* s_err.c: removed mistakenly changed format of I: and K:.
2620
26212002-05-20  Jakub Vlasek
2622
2623	* s_conf.c/detach_conf(): remove config entry from conf linked list
2624	  while freeing it (reported by BitKoenig).
2625	* buildm4: added EXTRAPORT, SERVICE macros, fixed RESTRICTED and ME
2626	  macros (from W.Campbell.
2627	* m4macros: updated (from W. Campbell).
2628
26292002-05-19  Piotr Kucharski
2630
2631	* channel.c/m_mode(): remove not needed chanop (from BitKoenig).
2632
26332002-05-19  Jakub Vlasek
2634
2635	* s_user.c/who_find(): Initialise myoper to 0, show +i user
2636	  to himself (from BitKoenig).
2637	* s_serv.c/m_trace(): Fixed condition causing wrong users being
2638	  shown, added comments (from BitKoenig).
2639
26402002-04-23  Jakub Vlasek
2641
2642	* s_conf.c/rehash(): Do not delist config entries which are still
2643	  used.
2644
26452002-04-19  Jakub Vlasek
2646
2647	* res.c/bad_hostname(): added defineable more restrictive hostname
2648	checking (by Mario 'BitKoenig' Holbe)
2649	* config.h.in: added define RESTRICT_HOSTNAMES.
2650
26512002-04-16  Jakub Vlasek
2652
2653	* parse.c, parse_ext.h: added find_matching_client().
2654	* struct_def.h: added usercnt[3] array to struct server for per-server
2655	  user counts.
2656	* channel.c, channel_ext.h: removed count_channels().
2657	* s_misc.c/exit_one_client(), s_user.c/register_user, m_oper():
2658	  Update per-server user count.
2659	* s_serv.c/m_trace(): splitted into two functions, m_trace
2660	  and trace_one().
2661	* s_serv.c/m_lusers(),m_trace(): Improved performance by using
2662	  per-server usercnt[], instead of counting users each time.
2663
26642002-04-11  Piotr Kucharski
2665
2666	* s_user.c/register_user(): validusername() was checking also OTHER
2667	  type ident, which could have been encrypted.
2668	* s_id_ext.h: remove unused, add new extern declariations.
2669	* example.conf: update.
2670
26712002-04-06  Piotr Kucharski
2672
2673	* s_serv.c/m_server_estab(),m_eob(): send empty EOB if we have no
2674	  leaf-servers EOB-ed.
2675	* parse.c,s_serv.c: add missing parameter to idtol().
2676
26772002-04-07  Jakub Vlasek
2678
2679	* bsd.c/deliver_it(): Removed call to hold_server() (which has been
2680	  removed).
2681	* s_serv.c/m_eob(): Fix notices about received EOBs, warn about
2682	  multiple local EOBs.
2683	* support.c/inetntop(): Use the_size for bcopy() properly.
2684	* ircd.c/setup_me(): Copy PATCHLEVEL into me.serv->verstr.
2685	* ircd.c: Move add_to_sid_hash_table to setup_me() from main().
2686
26872002-04-06  Jakub Vlasek
2688
2689	* s_user.c/save_user(): Send ME as source of RPL_SAVENICK if collision
2690	  is generated locally.
2691	* s_serv.c/m_eob(): Pass sid+1 as a parameter to find_tokserver()
2692	  for fake SIDs.
2693
26942002-04-05  Jakub Vlasek
2695
2696	* s_service.c/m_service(),m_servset(),m_servlist(): Changed atoi()
2697	  to strtol() to allow hexadecimal arguments.
2698	* msg_dev.h: Added EOB, removed useless comments.
2699	* parse.c: Added m_eob to msgtab. Added find_target().
2700	* parse_ext.h: Added declaration of m_eob().
2701	* struct_def.h: Added IsBursting(), SetEOB() defines and FLAGS_EOB.
2702	  Added is_eobservers to istat array.
2703	* s_misc.c/exit_one_client(): Decrease istat.is_eobservers if EOBed
2704	  server quits.
2705	* s_numeric.c/do_numeric(): Added EOB emulation support, use
2706	  find_target().
2707	* s_serv.c/m_server(): Send PINGs on server introduction for EOB
2708	  emulation. m_server_estab(): Send EOB(s) after burst.
2709	  Added: m_eob(), do_emulated_eob(),
2710	* s_serv_ext.h: Added declaration for do_emulated_eob().
2711	* s_user.c/m_pong(): Added support for EOB emulation.
2712
27132002-03-29  Jakub Vlasek
2714
2715	* channel.c/m_names(): Rewritten, channel names handling moved to
2716	  names_channel().
2717	* channel.c/m_list(): Partialy rewritten, don't send +p channels
2718	  user is not member of anymore.
2719	* s_user.c/who_find(): Rewritten.
2720	* s_user.c/m_who(): Moved colapse() down to fix bug which made
2721	  impossible to use WHO on channels with * in their name.
2722
27232002-03-24  Jakub Vlasek
2724
2725	* s_user.c/m_oper(): Send +O after local oper opers and +o when global
2726	  opers to services - was reversed (reported by Olafur Osvaldsson).
2727	* s_user.c/send_umode_out(): Check for service distribution
2728	  (reported by Olafur Osvaldsson).
2729	* s_service.c/sendnum_toone(): Send user modes to services with
2730	  SERVICE_WANT_OPER (by Olafur Osvaldsson).
2731
27322002-03-23  Piotr Kucharski
2733
2734	* s_serv.c/check_servername(): initialize all vars (problem reported
2735	  by ZZyZZ).
2736
27372002-03-14  Jakub Vlasek
2738
2739	* ircd.c/setup_signals(): Ignore SIGTRAP on FreeBSD to prevent crash
2740	  after detaching ircd in gdb.
2741	* support.c: Added #ifndef CLIENT_COMPILE around make_isupport.
2742
27432002-03-15  Jakub Vlasek
2744
2745	* support.c,s_conf.c: Read network name from ircd.conf.
2746	* s_conf.c/s_conf_ext.h: Added networkname global variable.
2747	* ircd.c: Added warning message about network name not being set.
2748	* config.h.dist: Removed SERVER_ID and NETWORK_NAME defines.
2749
27502002-03-14  Jakub Vlasek
2751
2752	* s_bsd.c,s_bsd_ext.h: Moved daemonization from init_sys() into
2753	  daemonize().
2754	* ircd.c,ircd_ext.h,s_conf.c: Read SID from M-line instead of #define.
2755	* ircd.c,list.c,s_conf.c: Send error messages during server boot
2756	  to stderr. Show message that server successfuly started.
2757	* list.c/outofmemory(): Die instead of restart if the server
2758	  is booting.
2759
27602002-03-13  Jakub Vlasek
2761
2762	* numeric_def.h, s_err.c, s_user.c/save_user(): Added RPL_SAVENICK
2763	  to inform user that his nick is being changed to UID after
2764	  nick collision.
2765
27662002-03-03  Jakub Vlasek
2767
2768	* support.c: added make_isupport() used for 005 numeric generation.
2769	* s_user.c/register_user(): send 005 numeric.
2770	* numeric_def.h, support_ext.h, ircd.c, s_err.c,version.c.SH.in,
2771	  version_ext.h,config.h.dist: added support for 005 numeric.
2772	* struct_def.h, channel_def.h: moved MAXMODEPARAMS into
2773	  struct_def.
2774	* s_user.c/m_kill(): removed u@h from killpath.
2775	* s_user.c/m_save(): better argument checking.
2776	* s_user.c/m_oper(): changed missed err_str() to replies[].
2777	* s_bsd.c/init_sys(): setpgrp() takes no argument on cygwin.
2778	* s_serv.c/m_connect(): When doing 'CONNECT serv 0', look up proper
2779	  port from config file; if we find it negative (to prevent AC),
2780	  use absolute value of it.
2781
27822002-01-22  Jakub Vlasek
2783
2784	* tkserv.c: Fixed potential overflow (from W.Campbell)
2785
27862002-01-07  Piotr Kucharski
2787
2788	* list.c/make_server(): introduced used_tokens table and IsBitSet,
2789	  SetBit, ClearBit defines (from Q).
2790	* s_serv.c/m_links(): don't show masked servers.
2791	* s_id.c: moved CHIDNB define to struct_def.h (we need it in list.c).
2792	* list.c/make_server(): return NULL, do not abort, if used_tokens array
2793	  is exhausted.
2794	* s_serv.c/m_server(),m_smask(),m_server_estab(),ircd.c/setup_me(),
2795	  s_bsd.c/connect_server(): deal with return value of make_server().
2796	* list.c/make_server(),list_ext.h: remove unused 'add' parameter.
2797
27982002-01-06  Piotr Kucharski
2799
2800	* s_serv.c/m_server_estab(),s_service.c/m_service(),
2801	  s_user.c/register_user(): if link we send NICK/UNICK/SERVICE to is
2802	  UID capable, send client->servp->tok, not me.serv->tok.
2803	* s_misc.c/exit_one_client(): don't decrease istat.is_serv when
2804	  server is masked.
2805	* s_misc.c/exit_server(): regenerate SQUITs to send them to &SERVERS.
2806	* s_serv.c/m_server(): squit link if no SID was given on a 2.11 link.
2807	* hash.c/bigger_hash_table(): add only ST_UID sptrs to sid_hash_table.
2808	* parse.c/find_sender(): strlen(sid)==SIDLEN, not sid[SIDLEN]=='\0'.
2809	* list.c/make_server(), s_serv.c/m_smask(), s_user.c/register_user():
2810	  fix bug of dropping unknown clients (NICKs) coming behind from 2.10
2811	  masked behind 2.11. *NOTE*: do it better, like add all servers to
2812	  svrtop or have token array. (from Q).
2813
28142002-01-05  Piotr Kucharski
2815
2816	* parse.c/find_sender(): sid and fake sid aware now.
2817	* parse.c, msg_def.h: aware of m_smask().
2818	* struct_def.h: ismasked, left, right, down, servers to Server struct.
2819	* struct_def.h, ircd.c: changed FLAGS_RESTRICTED to FLAGS_RESTRICT,
2820	  used SetRestricted or IsRestricted wherever possible.
2821	* struct_def.h, send.c: changed FLAGS_DEADSOCKET to FLAGS_DEADSOCK,
2822	  used SetDead wherever possible.
2823	* hash.c/del_from_sid_hash_table(): remove unnecessary parameter,
2824	  use sptr, not cptr->server for sidhashv.
2825	* s_misc.c/mark_blind_servers(): use ptr to server, not server->name
2826	  as argument.
2827	* following work came from jv, cleaned by Q.
2828	* s_serv.c/m_squit(): made aware of sids; removed issuing additional
2829	  squit (we'll do it in exit_client); don't show received squits if
2830	  they come from masked servers.
2831	* ircd.c/setup_me(), s_bsd.c/connect_server(): initialize ->maskedby.
2832	* s_misc.c: added exit_server().
2833	* s_misc.c/exit_client(): rewritten to use exit_server().
2834	* s_misc.c/exit_one_client(): rewritten to be aware of SIDs and doing
2835	  proper SQUITs/QUITs; also added using servers' tree.
2836	* s_serv.c: added functions send_server(), introduce_server(), m_smask(),
2837	  send_server_burst(), add_server_to_tree(), remove_server_from_tree().
2838	* s_serv.c/m_server(): simplified checks of parameters; added checks
2839	  of SID we receive; add using servers' tree; removed checks of C/N
2840	  (should be in m_rehash).
2841	* s_serv.c/m_server_estab(): check masks to avoid same mask inside;
2842	  store temporarily version we received in PASS in hopcount; add
2843	  using servers' tree; fill in (compatibility) SIDs and ltok; change
2844	  some (repeating) code to functions (introduce_server).
2845
28462002-01-04  Piotr Kucharski
2847
2848	* ircd.c/main(): check if SERVER_ID is valid.
2849	* config.h.dist: changed default SERVER_ID.
2850	* s_err.c: changed ERR_YOUREBANNEDCREEP format.
2851	* s_conf.c/find_kill(): show user@host in K:line error.
2852	* list.c/make_server(): add parameter used for deciding
2853	  whether to add server to tree or not.
2854
28552001-12-31  Piotr Kucharski
2856
2857	* s_user.c/m_unick(): while creating client we messed with server
2858	  pointer, adding ->user struct to it, which later made m_server
2859	  reject servers (from jv).
2860
28612001-12-30  Piotr Kucharski
2862
2863	* s_user.c/m_nick(): allow restricted users change nick from saved uid.
2864	* common_def.h, match.c, struct_def.h, s_user.c, config.h.dist: add
2865	  RESTRICT_USERNAME code to reject users with special chars in their
2866	  usernames. Also revamp char_atribs[] table.
2867	* match.c: added isvalidusername().
2868
28692001-12-29  Piotr Kucharski
2870
2871	* s_user.c/register_user(): we assigned uid after we sent UNICK.
2872	* s_bsd.c/completed_connection(),s_serv.c/m_server(): send SID
2873	  in SERVER command.
2874	* s_user.c/register_user(): send user sid as source, not always ours.
2875	* s_id.c/check_uid(): use cid_ok() to check all chars, check len.
2876	* s_user.c/m_unick(): use check_uid(), not simple strlen(uid).
2877	* s_user.c/m_unick(): squit link feeding us with bad UID.
2878	* s_user.c/m_unick(),m_nick(): removed checking for collisions
2879	  with servers (this cannot happen).
2880	* config.h.dist, s_id.c, struct_def.h, s_debug.c: add UIDLEN and
2881	  use it wherever possible; this is for allowing longer nicks without
2882	  having to have longer uids.
2883
28842001-12-29  Kurt Roeckx
2885
2886	* struct_def.h, ircd.c, s_bsd.c, s_misc.c, s_serv.c, s_service.c:
2887	  Convert up from a string to a pointer to a client. (from jv)
2888
28892001-12-28  Piotr Kucharski
2890
2891	* s_conf.c/find_kill(): make K:user@host remove also +r clients
2892	  (that is, +user@host).
2893	* s_misc.c/get_sockhost(): don't trust input values, so we don't
2894	  accidentally copy on null.
2895	* s_user.c/m_unick(): cleanup, remove m_user() call, fill whatever
2896	  we need to fill in this function directly.
2897	* s_id.c/sid_valid(): allow fake sids.
2898
28992001-12-26  Kurt Roeckx
2900
2901	* channel.c/m_kick(): Add support for UIDs in KICK.
2902
29032001-12-25  Kurt Roeckx
2904
2905	* send.c, struct_def.h, channel.c, channel_ext.h, s_send.c,
2906	  s_serv.c: Removed some 2.9 protocol support. (From jv)
2907
29082001-12-24  Piotr Kucharski
2909
2910	* s_user.c/m_unick(): changes, including ip, removing token and
2911	  hopcount
2912
29132001-12-24  Kurt Roeckx
2914
2915	* channel.c/set_mode(): Only allow UIDs from the server.
2916	* s_user.c/m_message(): privmsg/notice now support UIDs.
2917
29182001-12-23  Kurt Roeckx
2919
2920	* parse.c/find_sender(): Default parv[0] to sptr->from.
2921
29222001-12-22  Piotr Kucharski
2923
2924	* s_bsd.c/check_server(): check for class being legal, so we
2925	  do not core later.
2926	* s_serv.c: introduced get_version() for easier reading; also
2927	  few changes to it.
2928	* parse.c: added find_sid().
2929
29302001-12-21  Kurt Roeckx
2931
2932	* parse.c/parse(), find_sender():  Add support for UID as source of a
2933	  message. (From jv)
2934	* channel.c/m_mode(), set_mode(): Made MODE use UID when posible.
2935
29362001-12-20  Kurt Roeckx
2937
2938	* msg_def.h, numeric_def.h, parse.c, send.c, struct_def.h, ircd.c,
2939	  s_bsd.c, s_bsd_ext.h, s_err.c, s_misc.c, s_serv.c, s_serv_ext.h:
2940	  Get rid of reconnect.
2941
29422001-12-13  Piotr Kucharski
2943
2944	* configure: a typo made FreeBSD 5.0 be taken for Solaris 2.0
2945
29462001-12-08  Kurt Roeckx
2947
2948	* struct_def.h, hash.c, hash_ext.h, ircd.c: Add a sid hash table, and
2949	  add ourself to it. (From jv)
2950	* channel.c/m_njoin, send_channel_members(): Make NJOIN use UIDs
2951	  (based on work from Zobo)
2952
29532001-10-25  Piotr Kucharski
2954
2955	* config.h.dist: minor explanatory changes
2956
29572001-06-09  Kurt Roeckx
2958
2959	* s_err.c: Change RPL_BOUNCE to use a %d instead of %s
2960
29612001-02-26  Kurt Roeckx
2962
2963	* struct_def.h, ircd.c, s_id.c, s_id_ext.h, s_misc.c, s_user.c,
2964	  config.h.dist: Properly generate UID's, and SAVE user where we can.
2965
29662001-02-10  Kurt Roeckx
2967
2968	* s_err.c, numeric_def.h: Change RPL_BOUNCE to numeric 010.
2969
29702001-01-15  Piotr Kucharski
2971
2972	* s_user.c/m_unick(): fixed irritating typo (parv[7] vs. parv[8])
2973
29741999-09-21  Piotr Kucharski
2975
2976	* channel.c, class.c, parse.c, s_bsd.c, s_conf.c, s_err.c,
2977	s_err_ext.h, s_misc.c, s_serv.c, s_service.c, s_user.c,
2978	struct_def.h, whowas.c: rewritten to use replies[] table
2979	directly, not rpl_str()/err_str().
2980
29811999-09-18  Christophe Kalt
2982
2983	* wrote s_send.c to provide specialized functions equivalent to
2984	sendto_*() but dealing with UID issues and hiding them from above
2985	layers.
2986
29871999-08-31  Kurt Roeckx
2988
2989	* s_user.c/m_kill: acptr wasn't initialised
2990
29911999-06-??  Christophe Kalt
2992
2993	* hash_ext.h, msg_def.h, numeric_def.h, parse_ext.h, struct_def.h,
2994	s_id_ext.h, s_user_ext.h, channel.c, hash.c, ircd.c, list.c,
2995	parse.c, send.c, s_err.c, s_id.c, s_misc.c, s_serv.c, s_user.c:
2996	basic 2.11 functionnality: added uid hash tables, &SAVE channel,
2997	m_unick(), m_save(), save_user(), new numeric 42.
2998
29992.10.3p3
3000
30012001-01-19  Piotr Kucharski
3002
3003	* s_misc.c,s_debug.c: changed %d or %u to %lu in various places.
3004	* s_serv.c/m_stats(): allow unlimited stats c for opers.
3005	* config.h.dist: define NOWRITEALARM by default, saves us calls.
3006	* mkpasswd: new version from Walter Campbell.
3007
30082001-10-18  Piotr Kucharski
3009
3010	* res.c/make_cache(): bug allowing to spoof hosts (from Q).
3011	* a_defines.h, a_log_def.h: do not debug iauth by default (from jv).
3012	* send.c/sendto_flog(): format string bug.
3013	* send.c/send_message(): service exceeding sendq under some conditions
3014	  entered endless loop of errors (thus coring ircd) (reported by Gael).
3015	* send.c/send_message(): label 'tryagain' moved below zip_buffer,
3016	  so we don't zip already zipped buffer (from Oleg Medinsky).
3017	* s_user.c/m_umode(): clear local oper received from remote
3018	  servers (fixes wrong oper count!) (from Oleg Medinsky).
3019	* packet.c/dopacket(): me.receiveK wasn't updated properly (from jv).
3020
30212.10.3p2
3022
30232001-07-07  Piotr Kucharski
3024
3025	* send.c/send_message(): once we adjusted pool size during
3026	  netjoin, we did not add to queue parts of burst (from jv).
3027	* channel.c/send_mode_list(), send_channel_modes(): reverted
3028	  change from 2001-02-07 (about space in MODEs); fixed
3029	  sending more than MAXMODEPARAMS modes (from Q).
3030	* s_user.c/send_whois(): get rid of one find_server(), we
3031	  don't need it.
3032
30332001-07-05  Piotr Kucharski
3034
3035	* s_conf.c/initconf.c: set default u@h limits to 1.1, not 0.
3036
30372001-07-04  Piotr Kucharski
3038
3039	* match.c: char_atribs table was missing one element (at least
3040	  nine year old bug!)
3041
30422001-07-02  Piotr Kucharski
3043
3044	* channel.c/m_list(),m_names(): forwarding queries using
3045	  hunt_server() makes sense only with parc > 2
3046
30472001-06-30  Kurt Roeckx
3048
3049	* s_bsd.c/add_connection: use fd instead of acptr->fd, which isn't set
3050	  yet
3051
30522001-06-29  Kurt Roeckx
3053
3054	* s_user.c/m_who(): Only call who_one() when we found a client.
3055	* send.c: Removed a ; after an #endif
3056	* s_conf.c: Removed a ; after an #endif
3057	* s_debug.c/send_defines(): removed the space after LDCTL:
3058	* channel.c/m_njoin(): Don't send MODE +O to clients.
3059
30602001-06-06  Piotr Kucharski
3061
3062	* channel.c/reop_channel(): fixed typo, which made sometimes
3063	  problems with that code; also changed 3 to MAXMODEPARAMS.
3064
30652001-05-31  Piotr Kucharski
3066
3067	* support.c/inetntop(): logic flaw in checking for
3068	  ipv6_is_addr_v4mapped (":ffff:" case).
3069
30702001-05-30  Piotr Kucharski
3071
3072	* s_serv.c/m_who(): almost complete rewrite to reduce unnecessary
3073	  showing all clients, hence to save CPU
3074	* mod_socks.c/socks_write(): missing mydata declaration.
3075
30762001-05-16  Piotr Kucharski
3077
3078	* iauth.c/main(): read config before init_filelogs, which depends
3079	  for some logs on debuglvl variable (from Q)
3080
30812001-05-15  Piotr Kucharski
3082
3083	* mod_socks.c/socks_write(): don't bother checking socks4 on ipv6
3084	  addresses, socks4 doesn't support it anyway.
3085	* mod_socks.c/socks_write(): if v4only option is set, don't switch
3086	  to socks5 check for ipv6
3087	* s_serv.c/m_trace(): don't send info about unknown connections to
3088	  clients who are not +w
3089	* support.c/inetntop(): check for :FFFF: as well
3090
30912001-05-14  Piotr Kucharski
3092
3093	* send.c/sendto_common_channels(): use ->clist, not ->members; big
3094	  channels will benefit from it a lot (from jv).
3095
30962001-05-13  Piotr Kucharski
3097
3098	* s_id.c/cache_chid(): an unfortunate typo making negative Cache
3099	  size in stats (from jv).
3100	* s_bsd.c/read_message(), packet.c/dopacket(): if client exceeded
3101	  sendq, say so, instead of "Dead Socket" (from jv).
3102	* s_service.c/check_services_butone(),check_services_num(): don't
3103	  loop over all fds when we have services linked list (from jv).
3104	* chkconf.c: it was not working properly if .conf was not using ':'.
3105
31062001-05-06  Piotr Kucharski
3107
3108	* list.c/free_client(): we check for local client, since ->auth
3109	  is not allocated at all for remotes.
3110	* s_bsd.c/add_connection(): initialize lin.next with NULL.
3111	* ircd.c/ircd_readtune(): initialize buf with zeroes.
3112	* ircd.c/main(),server_reboot(): make syslog stamp ircd messages
3113	  only with basename(argv[0]) instead of argv[0].
3114	* channel.c/m_njoin(): we must initialize p used in strtoken.
3115
31162001-05-05  Piotr Kucharski
3117
3118	* a_log.c/init_filelogs(): don't open iauth.log when debug level
3119	  is not set in iauth.conf.
3120	* whowas.c/m_whowas(): 'whowas nick1,nick2 x' was not showing
3121	  last x whowas for each nick, only for nick1.
3122	* res_def.h: increased DNS cache table size.
3123	* send.c/sendto_flog(): added syslog() support, fixed potential
3124	  buffer overflow.
3125	* s_user.c/ereject_user(),register_user(), s_bsd.c/add_connection(),
3126	  s_misc.c/exit_client(): removed those syslog() calls, which are
3127	  now in sendto_flog(); this also removed (old) bug in ereject_user()
3128	  logging via syslog, when we supplied more parameters than %s in
3129	  format, and superfluous param was not the last.
3130
31312001-05-04  Piotr Kucharski
3132
3133	* s_misc.c/exit_client(),mark_blind_servers(): fixed squit routines
3134	  not to send QUITs, when SQUIT would do (fix from Jakub Vlasek)
3135	* s_bsd.c/polludp(): show IP upon recvfrom error.
3136
31372001-05-03  Piotr Kucharski
3138
3139	* channel.c/m_kick(): multiply channel kicks are now handled
3140	  differently (one channel in a KICK sent), so that old servers
3141	  can parse them well.
3142	* ircd.c/main(): added chdir() before chroot().
3143
31442001-05-01  Piotr Kucharski
3145
3146	* list.c/make_client(),s_auth.c/set_clean_username: revert change,
3147	  it can point to static buffer (saves memory), we just have to be
3148	  careful not to free() it.
3149	* send.c: added some comments.
3150	* sys_def.h: change MyFree() to set variable to NULL after free()
3151
31522001-04-11  Piotr Kucharski
3153
3154	* s_misc.c: change sizeof(pointer) to strlen().
3155
31562001-04-06  Piotr Kucharski
3157
3158	* whowas.c/m_whowas(): don't send away info.
3159	* s_auth.c: changing various sizeof(dynamic buffer) to strlen().
3160	* list.c/make_client(),s_auth.c/set_clean_username: use strdup().
3161	* a_conf.c/conf_read(): close iauth conf file.
3162
31632001-04-01  Kurt Roeckx
3164
3165	* s_user.c/m_whois(): Fix a memory leak.
3166	* channel.c/m_kick(): Fix a memory leak.
3167
31682001-03-13  Piotr Kucharski
3169
3170	* s_user.c, s_serv.c: pass whole aconf->pass to crypt(); this will
3171	  allow modern crypt() to deal with MD5, Blowfish and others.
3172	* contrib/mkpasswd: Walter Campbell's mkpasswd.c to generate also
3173	  MD5 passwords
3174
31752001-03-06  Piotr Kucharski
3176
3177	* tkserv.c: potential buffer overflow fixes
3178
31792001-03-05  Piotr Kucharski
3180
3181	* ircd.c/send_pings(): with getting rid of timed klines, we got rid
3182	  of checking klines after rehash; let's better reinstate it (from jv)
3183
31842001-03-04	Kurt Roeckx
3185
3186	* bsd.c, s_bsd.c: Remove some sendto()s for ipv6, and use send() like
3187	  with ipv4.
3188
31892001-03-02  Piotr Kucharski
3190
3191	* channel.c/m_kick(): 'KICK #chan1,#chan2 nick1,nick2' was not
3192	  working properly
3193
31942001-02-28  Piotr Kucharski
3195
3196	* send.c/sendto_flog(),logfiles_open(),logfiles_close(),
3197	  s_conf.c/rehash(), ircd.c: Stop open-close logfiles ping-pong,
3198	  reopen only on HUP signal.
3199	* s_user.c/m_whois(): show all parameters in ENDOFWHOIS reply
3200	* ircd.c/send_pings(), s_conf.c, config.h.dist: another speedup
3201	  by getting rid of rarely used code (here: timed klines)
3202
32032001-02-27  Kurt Roeckx
3204
3205	* c_msg.c/m_join(): Copy the name of the channel just joined.
3206
32072001-02-26  Kurt Roeckx
3208
3209	* ircd.c/main(): Don't die when there is no listen port when called
3210	  from inetd.
3211
32122001-02-10  Kurt Roeckx
3213
3214	* s_err.c, numeric_def.h: Undo the RPL_BOUNCE change.
3215	* s_serv.c/m_restart(): Create the buffer before we remove the
3216	  clients.
3217	* hash.c/hash_find_server(): Removed unused variable s.
3218	* s_bsd.c/close_connection(): Removed unused variable j.
3219	* s_mis.c/exit_client(): Removed unused variable asptr.
3220	* whowas.c/get_history(): Removed unused variable i.
3221
32222001-02-09  Kurt Roeckx
3223
3224	* s_user.c, s_conf.c, s_conf_ext.h: Make O-lines work with CIDR masks.
3225	* config.h.dist: undefine ZIP_LINKS, if USE_ZLIB is undefined.
3226	* struct_def.h: Use long long to keep stats.
3227	* configure.in, Makefile.in: Don't assume we need the math lib.
3228	* irc.c: refresh() was called while using termcap.
3229	* config.guess, config.sub: Update to the latest version.
3230	* whowas.c: Only grow the locked array when we added at the end of it.
3231	* s_user.c/m_ping(): Make PING work with masked servers.
3232	* s_bsd.c/close_connection(): Don't remap the fd's.
3233	* s_serv.c/m_connect(): Fix a typo: irc.conf -> ircd.conf.
3234	* configure, configure.in: Add a cache check for the mathlib check,
3235	  and fix a typo.
3236
32372001-02-08  Kurt Roeckx
3238
3239	* send.c/sendto_channel_butserv(): Use the clist, instead of members.
3240	* s_id.c/ltoid(): Build the right string.
3241	* s_user.c/m_nick(): put user@host in comment for nick change
3242	  collision.
3243
32442001-02-07  Kurt Roeckx
3245
3246	* support.c/inetpton(): Do it different. (fixes a buffer overflow.)
3247	* configure, configure.in: Complain if neither strerror(), or
3248          sys_errlist[] is found.
3249	* bsd.c, s_bsd.c, s_debug.c: Don't use sys_errlist[], use strerror().
3250	* s_misc.c/rehash(): Now only "REHASH q", will flush the dns cache.
3251	* s_service.c/best_service(): Return the closest, instead of the
3252	  latest.
3253	* channel.c: Remove en extra space while sending MODE, generated during
3254          bursts.
3255	* channel.c: Use MAXMODEPARAMS instead of 3.
3256	* tkserv.c: Added support for crypted passwords.
3257	* tkserv.c: Add support for ipv6.  Now uses '%', instead of ':' where
3258	  it should.
3259	* tkserv.c: Unix domain sockets weren't working properly.
3260	* c_numeric.c, numeric_def.h, s_err.c, s_user.c, s_service.c: Fixed
3261	  spelling of ERR_ERRONEOUSNICKNAME.
3262	* s_conf.c/match_ipmask(): Check if the mask contains a number.
3263	* s_err.c/rpl_str(), rep_err(): correctly send unknown error reply's.
3264	* s_err.c, numeric_def.h: change RPL_BOUNCE to numeric 010.
3265
32662000-12-11  Kurt Roeckx
3267
3268	* res.c, res_ext.c: fixed resolver problem for host with both an
3269	  IN A and IN AAAA record.
3270
32712000-12-08  Kurt Roeckx
3272
3273	* chkconf.c/initconf(): complain about not finding mandatory lines.
3274	* chkconf.c/validate(): make chkconf return -1 when initconf()
3275	  failed.
3276	* ircd.c/main(): Make sure that there is an M-line.
3277	* res.c/proc_answer(): cp wasn't updated for unknown types.
3278	* support.c, support_ext.h, a_io.c, mod_socks.c, s_bsd.c, s_conf.c,
3279	  c_bsd.c: change inetntop(), and add inetpton(), to be able to use
3280	  ipv4 addresses, when using ipv6.
3281	* s_conf.c/match_ipmask(): Make sure that ipv4/mask still works when
3282	  using ipv6.
3283	* support.c/inetntop(): Debug() doesn't work for clients.
3284
32852000-12-01  Kurt Roeckx
3286
3287	* whowas.c/find_history(), get_history(): it should be faster
3288	  by avoiding work we shouldn't do.
3289	* whowas.c, whowas_def.h: The locked array didn't keep the whole nick.
3290	* s_user.c/m_ison(): prevent a buffer overflow.
3291
32922000-10-22  Kurt Roeckx
3293
3294	* channel.c/set_mode(): mode -i should only remove invites
3295	  if it's done by an op. (from Grega Pogacnik)
3296	* res.c: Always query for both IN A, and IN AAAA if INET6 is
3297	  defined.
3298	* res.c/get_res(): when it complained about a bad hostname,
3299	  the ip's were not correct.
3300	* res.c/update_list(): Using old pointer after realloc()
3301	* channel.c/set_mode(): allow any key to be used to unset the key.
3302
33032000-09-28  Kurt Roeckx
3304
3305	* s_debug.c/debug(): Format string fixes.
3306	* a_log.c/sendto_log(): Format string fixes.
3307	* a_defines.h: Change #if INET6 to #ifdef INET6, like it should.
3308	* mod_socks.c: Added support for socks check using ipv6.
3309	* support.c/MyMalloc(): MyMalloc() was using a wrong ofset.
3310	* send.c/sendto_flog(): Prevent a core if time was set back.
3311	  Check msg, instead of duration.
3312	* s_bsd.c/summon(): Made buffer bigger, could be overflowed.
3313	* s_conf.c/match_ipmask(): Make a mask of /0 work using ipv4.
3314
33152000-08-20  Piotr Kucharski
3316
3317	* hash.c/bigger_prime(): no need to check even numbers (speed!)
3318	* hash.c/clear_*_hash_table(): initialize (ch,cl,sv)size to 0
3319
33202000-08-15  Piotr Kucharski
3321
3322	* s_user.c/m_oper(), s_serv.c/m_server_estab(), mkpasswd.c:
3323	  sometimes crypt() returned NULL, crashing ircd little further
3324	* a_io.c/parse_ircd(): iauth having lower MAXCONNECTIONS than
3325	  ircd crashed giving no explanations
3326	* channel.c/set_mode(): comma used in channel key made joining
3327	  that channel impossible
3328
33292000-08-13  Piotr Kucharski
3330
3331	* s_user.c/m_oper(): parens typo (noted by viha)
3332
33332.10.3p1
3334
33352000-05-29  Kurt Roeckx
3336
3337	* s_bsd.c/setup_ping(): typo which caused compile to fail using IPv6
3338	* configure: removed warning about poll() with linux 2.0 and libc6
3339	* res.c/proc_answer(): Added check for too long hostnames
3340	* s_conf.c/find_bounce(): send to the fd instead of class
3341
33422000-05-16  Piotr Kucharski
3343
3344	* s_bsd.c/start_iauth(), config.h.dist: increase socket buffers
3345	  for ircd-iauth communication
3346	* channel.c/send_user_joins(): use rindex to check for ':' in
3347 	  channel names
3348	* hash.c/bigger_hash_table(): removed some unnecessary code
3349	* hash.c/hash_find_*(): removed so called "performance optimization",
3350	  which only seemed to eat cpu
3351	* parse.c: require registration for using NJOIN
3352
33532000-05-05  Kurt Roeckx
3354
3355	* a_conf.c/conf_read(): Check cfh properly
3356	* s_auth.c/read_iauth(): olen was calculated wrongly (off by 1)
3357	* s_auth.c/read_iauth(): olen could be != 0 when iauth is restarted
3358
33592000-04-09  Kurt Roeckx
3360
3361	* README, ircdwatch.8, INSTALL: Changed some forgotten references
3362	  to @stealth.net to @irc.org
3363	* s_bsd.c/setup_ping(): missing parentheses caused it to listen to
3364	  all ip's instead of the selected.
3365	* s_user.c/register_user(): removed some debug message
3366	* channel.c/m_join(): call clean_channelname() faster.
3367	* hash.c/bigger_hash_table(): build client hast table from the old one.
3368
33692000-02-10  Kurt Roeckx
3370
3371	* hash.c/hash_find_server(): prevent creation of illegal pointers
3372	* channel.c/m_join(): called exit_client with correct value's
3373	  for a local client
3374	* s_bsd.c/report_error(): calling it with cptr == NULL would cause
3375	  a core dump.
3376	* s_serv.c/m_stats(): cleanup of stats l
3377	* s_conf.c: Allow compressed notation in the config file, and
3378	  convert it to non-compressed when reading it
3379	* s_user.c/m_nick(): Extra penalty on nick-change if you can't
3380	  speak on a channel
3381	* s_err.c: Changed RPL_LUSERME to say how many users he has, it
3382	  said incorrectly that it where clients before.
3383	* configure: Try to do better checking for IPv6 capable systems
3384
33852000-02-04  Piotr Kucharski
3386
3387	* mod_socks.c/socks_read(): when using "careful" option, iauth
3388	  should not close connection before checking ST_V5b (from
3389	  KIKUCHI Takahiro)
3390
33912000-02-03  Kurt Roeckx
3392
3393	* Makefile.in: Added $(LDFLAGS) and $(LIBS) for ircdwatch
3394	* os.h, res.c, s_bsd.c: Removed all s6_laddr's because it's not
3395	  portable
3396	* res.c, s_auth.c: added missing calls for inetntop, was using
3397	  ipv4 functions while it should be ipv6.
3398	* hash.c: check store to be non-NULL
3399
34002000-01-03  Kurt Roeckx
3401
3402	* ircd.c/io_loop(): removed annoying debug message
3403	* res.c/update_list(): don't use addrcount in for loop
3404	* s_user.c/register_user(): don't cp the username if it's the same
3405	* a_conf.c/conf_read(): fixed missing some initialisation when ident
3406	  wasn't loaded
3407
34082000-01-01  Kurt Roeckx
3409
3410	* configure, configure.in: check for md5, FreeBSD uses it.
3411	* match.c: mask can now be empty, and will then return no match
3412	* whowas.c, hash.c: prevent creation of illegal pointers
3413	* s_misc.c/date(): fix for the offset bug during year change
3414	* s_conf.c/match_ipmask(): now checks the username, changed algo
3415	  for ipv4, and added it for ipv6.
3416	* s_conf.c/lookup_confhost(): Now correctly checks for ipv6 ips
3417	* chkconf.c/initconf(): No longer free()'s non alloc()'d memory
3418	* res.c/update_list(): Fix for ipv6, and also cleans it up a little
3419
34202000-01-01  Piotr Kucharski
3421
3422	* s_user.c/register_user(): moved some stuff around, so m_lusers
3423	show proper number of clients (including just registered user).
3424
34251999-11-11  Christophe Kalt
3426
3427	* s_bsd.c/add_unixconnection(): needed to be iauth aware.
3428
34291999-11-10  Christophe Kalt
3430
3431	* struct_def.h, channel.c/m_join(): added code to reject clients
3432	trying to join a channel used by the PrettyPark virus.  (This is a
3433	sad day).
3434
34351999-11-03  Christophe Kalt
3436
3437	* configure.in: check for getipnodebyname() for IPv6.
3438
3439	* c_bsd.c, resolv_def.h, res_init.c, s_bsd.c: updated code to
3440	follow RFC 2553 (from Roar Thron�s).
3441
3442	* mod_rfc931.c: renamed _data structure which causes problems
3443	under Compaq Tru64 Unix 5.0 (from Roar Thron�s).
3444
34451999-10-30  Kurt Roeckx
3446
3447	* irc.c/main(): me.info was not allocated big enough (off by 1)
3448
34491999-10-04  Kurt Roeckx
3450
3451	* channel.c/reop_channel(): removed a '(' that was there too much
3452	* configure.in: only detect ipv6 as linux, if the header files
3453	  are there, and detect if the system has native ipv6 support
3454	* os.h: readded define for POLLRDNORM
3455	* os.h: only define in6addr_any under linux if glibc version is < 2.1
3456	* os.h: removed defenition for uint32_t, which isn't use anywhere.
3457	  you should use u_int32_t instead.
3458	* os.h: define s6_laddr as in6a_words, if found, else as s6_addr32
3459	* configure.in, setup.h.in, os.h: check for ncurses/ncurses.h
3460
34611999-10-03  Christophe Kalt
3462
3463	* a_conf.c: OpenBSD doesn't have RTLD_NOW, only RTLD_LAZY (as
3464	reported by Phil Pennock).
3465
34661999-09-23  Piotr Kucharski
3467
3468	* channel.c/reop_channel(): do not reop local restricted clients
3469	(patch from wnelson).
3470
3471	* s_bsd.c/summon(): let summon know about /dev/pts too (from pht).
3472
34731999-09-05  Piotr Kucharski
3474
3475	* whowas.c/m_whowas(): fixed two bad behaviours (reported by viha)
3476
34771999-08-30  Christophe Kalt
3478
3479	* os.h: moved __GNU_SOURCE up (linux).
3480
34812.10.3
3482
34831999-08-13  Christophe Kalt
3484
3485	* channel.c/match_modeid(): logic fix (reported by Michal Svoboda).
3486
3487	* os.h: added YET ANOTHER KLUDGE for linux and poll().
3488
3489	* ircd.c: assume "-s" option in CYGWIN environment.
3490
3491	* configure.in: update for CYGWIN environment.
3492
34931999-08-13  Piotr Kucharski
3494
3495	* mod_socks.c/socks_read(): allow more methods in socks5 check.
3496
34971999-08-01  Piotr Kucharski
3498
3499	* ircd.c/bad_command(): -d command line option no longer exists,
3500	while -s was added.
3501
35021999-07-28  Christophe Kalt
3503
3504	* struct_def.h: IsChannelName() macro cannot use cid_ok() for the
3505	client.
3506
3507	* channel.c/m_njoin(): inverse condition prevented modes from
3508	being sent to users and 2.9 servers.
3509
35101999-07-27  Piotr Kucharski
3511
3512	* s_id.c/cid_ok(): quite unfortunate typo which made joining
3513	!channels impossible (from Michal Svoboda).
3514
35151999-07-25  Christophe Kalt
3516
3517	* channel.c: sanity checks to drop modes on +channels even when
3518	received from servers (from Michal Svoboda).
3519
3520	* struct_def.h, channel.c, s_id.c: added checks to ensure !name
3521	validity (from Michal Svoboda).
3522
35231999-07-23  Christophe Kalt
3524
3525	* s_bsd.c/inetport(): fixed test for IPv6 (from KIKUCHI Takahiro).
3526
3527	* ircd.c:
3528		* better casting for sbrk() for OSF 4.0.
3529		* setup_me(): fixed syntax for IPv6.
3530
35311999-07-21  Piotr Kucharski
3532
3533	* channel.c/set_mode(): send ERR_UNKNOWNMODE to 'mode O' issued
3534	on non-!channels.
3535
35361999-07-21  Christophe Kalt
3537
3538	* s_misc.c/exit_one_client(): generate fake PARTs for users
3539	quitting anonymous channels.
3540
3541	* send.c/sendto_common_channels(): skip anonymous channels.
3542
3543	* Makefile.in: ircdwatch needs clsupport.o which needs clmatch.o.
3544
3545	* channel.c: added notices to warn users about +a channels.
3546
35471999-07-20  Kurt Roeckx
3548
3549	* channel.c:
3550		* m_njoin: send +v for uniqops in the right case
3551		* send_channel_members: send +v inside njoin for ops too
3552		* m_invite: send back numerics if the channel doesn't exist
3553
35541999-07-18  Piotr Kucharski
3555
3556	* channel.c/set_mode(), m_kick(): send ERR_NOTONCHANNEL, not
3557	ERR_CHANOPRIVSNEEDED, thus disable stealth secret channel probing;
3558	furthermore, use rather sptr->name, not parv[0] in sending errors;
3559
35601999-07-17  Christophe Kalt
3561
3562	* ircd.c/setup_me(), s_bsd.c: fixed that really old bug about the
3563	I line format to match connections received on the loopback
3564	interface (from Eugene L. Vorokov).
3565
3566	* configure.in: fixed previous changes about poll() (reported by
3567	KIKUCHI Takahiro).
3568
35691999-07-17  Kurt Roeckx
3570
3571        * s_user.c/m_kill(): killer could end up < path
3572
35731999-07-14  Christophe Kalt
3574
3575	* configure.in, os.h: use ncurses.h (from KIKUCHI Takahiro).
3576
3577	* configure.in: SunOS has poll(), but we don't want to use it
3578	(reported by KIKUCHI Takahiro).
3579
3580	* mod_lhex.c: replaced strtoul() with sscanf().
3581
35821999-07-11  Christophe Kalt
3583
3584	* a_defines.h was missing support_def.h (from KIKUCHI Takahiro).
3585
3586	* Makefile.in: ircdwatch.c uses strerror(), needs clsupport.o
3587	(from KIKUCHI Takahiro).
3588
3589	* config.h.dist, ircd.c, s_debug.c: renamed CONNECTTIMEOUT to
3590	ACCEPTTIMEOUT, and changed from 30 to 90.
3591
35921999-07-11  Piotr Kucharski
3593
3594	* mod_socks.c:
3595		* socks_write(): a typo made iauth allow open proxies and
3596		caused a lot of BADPROTO warnings (from KIKUCHI Takahiro).
3597		* socks_init(): buffer overflow with tmpbuf[] being too
3598		small to hold too many iauth options (also from Takahiro).
3599
36001999-07-09  Christophe Kalt
3601
3602	* configure.in, os.h, s_bsd.c: IPv6 updates (from KIKUCHI Takahiro).
3603
36041999-07-05  Christophe Kalt
3605
3606	* s_bsd.c/read_message(): can't use iauth_options when USE_IAUTH
3607	is undefined.
3608
36091999-07-05  Piotr Kucharski
3610
3611	* channel.c/m_invite(): invite to :-channels was sometimes
3612	lost with no error.
3613
36141999-07-04  Christophe Kalt
3615
3616	* a_conf_def.h, a_conf.c, a_io.c: added the "timeout" option.
3617
3618	* mod_socks.c: added PROXY_BADPROTO & OPT_PROTOCOL to
3619	differentiate between unexpected and bad protocol.
3620
3621	* s_id.c: fixed alphabet_id[] (noted by Michal Svoboda), and
3622	rewrote some code.
3623
36241999-07-04  Piotr Kucharski
3625
3626	* s_user.c/m_nick(): fix performance bug introduced in code
3627	preventing insidious collisions
3628
3629	* mod_socks.c/socks_open_proxy(): now reports in logs versions
3630	of open proxies found
3631
36321999-07-02  Kurt Roeckx
3633
3634	* configure.in, Makefile.in: Added -I for inet6.
3635
36361999-07-02  Christophe Kalt
3637
3638	* res.c/proc_answer(): portability fix from hybrid6.
3639
3640	* send.c/sendto_match_butone(): finally looked closely at why this
3641	was sending $*.mask to the wrong servers, fixed.
3642
3643	* struct_def.h, send.c/sendto_match_butone(), list_ext.h,
3644	list.c/make_client(), ircd.c/setup_me(), s_misc.c/exit_client(),
3645	s_serv.c, s_service.c/m_service(), s_user.c/m_user(): removed old
3646	code conditional to NO_USRTOP being undefined.
3647
3648	* s_user.c:
3649		* m_nick(): new delay on nicks to prevent insidious
3650		collisions (from Piotr Kucharski).
3651		* m_private(): dropped restrictions on mass msg/notices.
3652
3653	* s_auth.c/read_authports(): can't call set_clean_username with
3654	->auth pointing to ->username (from Piotr Kucharski).
3655
3656	* mod_socks.c: couple typos.
3657
3658	* a_conf.c/conf_read(): ->popt wasn't initialized.
3659
36601999-06-27  Christophe Kalt
3661
3662	* s_misc.c/exit_one_client(): made BETTER_NDELAY a little more
3663	friendly (from Piotr Kucharski).
3664
3665	* a_io.c/sendto_ircd(): added error output in write error notice.
3666
3667	* hash.c/hash_channel_name(): added shortname parameter to disable
3668	guess and fix bug (From Q).
3669
3670	* channel.c/m_join(): reject local user join for duplicates.
3671
3672	* mod_socks.c: more options, less bugs (from Piotr Kucharski).
3673
3674	* s_user.c:
3675		* m_nick(): kill nicks introduced by server if parc != 8
3676		instead of simply sending a notice.
3677		* register_user(): static variable wasn't declared as such.
3678
3679	* ircd.c, s_serv.c: used mybasename();
3680
3681	* support_ext.h, support.c: added mybasename();
3682
36831999-06-20  Christophe Kalt
3684
3685	* mod_socks.c: added code to allow checks for v5 as well as v4,
3686	depending on configuration (from Piotr Kucharski).
3687
3688	* configure.in, ircd.c/ircd_writetune(), s_serv.c/m_rehash(): use
3689	basename, and check if it needs libgen.
3690
3691	* channel.c/m_njoin(): simple optimization resulting from change
3692	to sendto_match_servs_notv() below.
3693
3694	* send_ext.h, send.c: sendto_serv_{not,}v and
3695	sendto_match_servs_{not,}v now return an integer.
3696
36971999-06-16  Christophe Kalt
3698
3699	* iauth.c/main(): send version to ircd upon startup.
3700
3701	* mod_rfc931.c/rfc931_work(): removed checks on weird chars, let
3702	ircd deal with this.
3703
3704	* s_auth.c:
3705		* start_auth(): abort if getpeername() fails (problem
3706		reported by Wolfgang Scherer).
3707		* added set_clean_username(), used in read_iauth() and
3708		read_authports().
3709		* read_iauth(): added o message (a->i).
3710		* read_iauth(): added V message (a->i).
3711
3712	* struct_def.h, s_serv.c: added SV_OLDSQUIT, and made m_squit()
3713	smarter (ugh, it's a kludge).
3714
37151999-06-07  Christophe Kalt
3716
3717	* s_user.c:
3718		* m_nick(): added notice to warn of NICK messages coming
3719		from servers with parc != 8.
3720		* register_user(): fixed unaccurate notices about iauth.
3721
3722	* config.h.dist: increased HANGONRETRYDELAY & HANGONGOODLINK values.
3723
37241999-06-06  Christophe Kalt
3725
3726	* struct_def.h, send.c/sendto_match_butone(), list_ext.h,
3727	list.c/make_client(), ircd.c/setup_me(), s_misc.c/exit_client(),
3728	s_serv.c, s_service.c/m_service(), s_user.c/m_user(): added
3729	reorder_client_list() and NO_USRTOP defines.  This reduces memory
3730	usage  (Original code from Michal Svoboda).
3731
3732	* channel.c/reop_channel(): desynched could be caused by server
3733	reops (channel mode +r) (reported by Thomas Kuiper).
3734
37351999-05-01  Christophe Kalt
3736
3737	* s_conf_ext.h, s_conf.c, s_serv.c: added a new list for K/k lines
3738	only as an easy way to improve overall performance.
3739
3740	* service_def.h: updated SERVICE_MASK_ALL.
3741
37421999-04-19  Christophe Kalt
3743
3744	* channel.c/m_njoin(): need to use sendto_match_servs*(); duh!
3745
3746	* send_ext.h, send.c: added sendto_match_servs_notv().
3747
3748	* s_serv.c/m_squit(): fixed logic in previous change.
3749
3750	* packet.c/dopacket(): fixed uncompression code.
3751
37521999-04-15  Christophe Kalt
3753
3754	* service_def.h, channel.c/m_topic(), s_service.c/m_servset():
3755	added SERVICE_WANT_TOPIC.
3756
3757	* s_serv.c/m_squit(): fixed serious and old bug that caused
3758	servers to be removed from memory (but not dependants!!!) while
3759	squit is going upstream.
3760
3761	* s_debug.c/send_usage(): divide by zero bugfix (reported by Aaron
3762	Campbell).
3763
3764	* channel.c/m_njoin(): ignore channels with an invalid mask.
3765
3766	* common/parse.c: extended MSG_NOU to include services.
3767
37681999-04-10  Christophe Kalt
3769
3770	* Makefile.in, a_conf_def.h, a_externs.h, a_conf.c, mod_lhex_ext.h,
3771	mod_lhex.c: New module (from Andrew Snare).
3772
3773	* s_debug.c: increased size of debugbuf[] to avoid overflows (from
3774	Eugene L. Vorokov).
3775
3776	* send.c/send_message(): catch more unlikely errors (from Eugene
3777	L. Vorokov).
3778
3779	* s_bsd.c/set_sock_opts(): silently ignore errors for SO_SNDLOWAT.
3780
3781	* common/os.h: FreeBSD portability (from KIKUCHI Takahiro).
3782
3783	* s_bsd.c/read_message():
3784		* debug notice format bugfix (from Q).
3785		* INET6 fix (from KIKUCHI Takahiro).
3786
3787	* s_conf.c:
3788		* initconf(): allow service type to be in hex in the
3789		configuration (from Thomas Kuiper).
3790		* find_conf_flags(): case sensitivity fix (from Q).
3791
37921999-03-19  Christophe Kalt
3793
3794	* mod_socks.c/socks_work(): closed proxies would get rejected on
3795	first attempt and accepted later as the "closed" status was in the
3796	cache.
3797
3798	* s_user.c/register_user(): fixed iauth failure notice timing bug.
3799
38001999-03-13  Christophe Kalt
3801
3802	* struct_def.h, ircd.c, s_auth.c, s_bsd.c, s_user_ext.h, s_user.c,
3803	a_struct_def.h, iauth.c, a_conf.c, a_io.c: added XOPT_EARLYPARSE,
3804	`P' message for iauth, `extinfo' option for iauth.
3805
3806	* a_io.c/next_io(): if xxx_start() returns 1, count module as left.
3807
38081999-03-11  Christophe Kalt
3809
3810	* chkconf.c:
3811		* finally shut off MyFree() redefinition warning.
3812		* fixed undefined behaviour with ++ operator (effet de bord).
3813
3814	* a_io.c/init_io(): bzero bugfix (reported by Tomas Edwardsson).
3815
3816	* a_conf_def.h, a_conf.c:
3817		* conf_err(): send conf errors to ircd as well.
3818		* conf_match(): extended iauth.conf syntax for hostname
3819		and IP matching.
3820		* added conf_ipmask() to allow use of a.b.c.d/z format for IP.
3821
3822	* configure.in: use "cc -Ae" on HPUX (reported by Jens Riecken).
3823
3824	* ircd.c/main(): iauth's presence needs to be checked before
3825	setting up the signal handlers.
3826
38271999-03-09  Christophe Kalt
3828
3829	* a_struct_def.h, a_conf_ext.h, a_conf_def.h, a_conf.c, a_io.c,
3830	mod_pipe.c, mod_rfc931.c, mod_socks.c: rewrote next_io() and
3831	conf_match() to use new more flexible logic.
3832
3833	* os.h, a_conf.c, iauth.c, configure.in, Makefile.in, acconfig.h:
3834	added DSM support.
3835
38361999-03-08  Christophe Kalt
3837
3838	* struct_def.h, a_conf.c, a_conf_ext.h, iauth.c, ircd.c, s_auth.c,
3839	s_auth_ext.h, s_bsd.c, s_user.c, s_user_exit.c: added
3840	XOPT_{REQUIRED,NOTIMEOUT,EXTWAIT}, added iauth_spawn counter;
3841	removed iauth_required variable.
3842
3843	* struct_def.h, s_auth.c, s_user.c: added FLAGS_DONEXAUTH to get
3844	rid of the approximation from yesterday.
3845
3846	* s_bsd.c/read_message(): use CLR_READ_EVENT() before modifying fd.
3847
38481999-03-07  Christophe Kalt
3849
3850	* res_comp.c: added missing prototypes.
3851
3852	* struct_def.h, a_conf.c, a_conf_ext.h, iauth.c, s_auth_ext.h,
3853	s_auth.c, s_user.c: added option to reject new user connections if
3854	iauth is dead (approximate!).
3855
3856	* struct_def.h, ircd.c, res.c, s_auth.c, s_bsd.c: removed all
3857	references to {Set,Clear,Do}Access macros (unused for a LONG time).
3858
3859	* ircd.c:
3860		* check_pings(): fixed "immediate ping timeout" bug.
3861		* main(): check for iauth's presence after changing [ug]id.
3862
3863	* s_bsd.c/do_dns_async(): notify iauth when no PTR record is found.
3864
3865	* Makefile.in: fix for M4 file path (Matthew Sullivan).
3866
38671999-03-04  Christophe Kalt
3868
3869	* ircd.c/io_loop(), s_bsd.c/start_iauth(): keep trying to restart
3870	iauth (up to once every 90 seconds) to avoid being iauth-less.
3871
3872	* struct_def.h, mod_socks.c, s_auth.c, s_user.c: added new message
3873	type from iauth to ircd to allow denying connections without any
3874	message sent to &AUTH; used by the socks module.
3875
38761999-02-22  Christophe Kalt
3877
3878	* s_err.c: RPL_TRACESERVICE changed to show values in hexadecimal
3879	(from Thomas Kuiper).
3880
3881	* s_service.c/m_service(): fixed error message.
3882
38831999-02-20  Christophe Kalt
3884
3885	* configure, configure.in, Makefile.in, config.h.dist, buildm4,
3886	send.c, ircd.c, s_bsd.c, s_conf.c, s_misc.c, s_serv.c, s_user.c,
3887	chkconf.c, a_conf.c, a_log.c: paths overhaul.
3888
3889	* c_msg_ext.h, c_msg.c: fixed m_server() prototype.
3890
38911999-02-19  Kurt Roeckx
3892
3893	* packet.c/dopacket(), s_bsd.c/read_packet(): bugfix.
3894
38951999-02-18  Christophe Kalt
3896
3897	* res.c/proc_answer(): fixed T_PTR processing (problem reported by
3898	Michal Svoboda).
3899
3900	* channel.c:
3901		* del_modeid(): bugfix when called with NULL.
3902		* can_join(): readability (from Q).
3903
3904	* s_serv.c/check_version():
3905		* removed code about 2.10.0[ab]*.
3906		* never used NJOIN with 0209* servers (bugfix).
3907
3908	* s_err.c: removed extraneous %s in RPL_UNIQOPIS.
3909
39101999-02-09  Kurt Roeckx
3911
3912	* hash.c/hash_find_channels(): cleanup.
3913
3914	* ircd.c/main(), ircd_ext.h: various cleanups.
3915
3916	* res_comp_ext.h: added prototype for ircd_getshort().
3917
3918	* s_bsd.c/read_message(): typo fix (=! -> !=).
3919
3920	* s_conf.c/attach_conf(): stops detecting listen sockets as
3921	clients from same IP address.
3922
3923	* s_err.c: removed / from replies.
3924
3925	* s_serv.c/m_links(): removed unused variable.
3926
3927	* s_user.c/who_channel(): removed unused variables.
3928
39291999-02-05  Christophe Kalt
3930
3931	* match.c/match(): removed predictable if's (from Tero J�nk�).
3932
3933	* s_serv.c/m_server_estab(): flush_connections() called once
3934	during burst.
3935
3936	* s_debug.c: updated.
3937
3938	* ircd.c/io_loop(), s_bsd.c/read_message(), s_bsd_ext.h, config.h:
3939	new logic inspired from irce, removed PREFER_SERVER.
3940
3941	* s_bsd.c:
3942		* added read_listeners().
3943		* set_sock_opts() now sets SO_SNDLOWAT.
3944		* add_connection() now sends a message to client being
3945		reject by the anti-clone crap.
3946
3947	* send.c: added flush_fdary() function.
3948
3949	* common_def.h, config.h, send.c: removed SENDQ_ALWAYS define,
3950	simplified code for when it was undefined as it is only used by
3951	the client now.
3952
39532.10.2
3954
39551999-02-03  Christophe Kalt
3956
3957	* mod_rfc931.c/rfc931_work(): get rid of any \n in replies.
3958
3959	* a_io.c/parse_ircd(): when receiving a "DNS timeout" message,
3960	inform ircd if we're already done (otherwise, it keeps waiting
3961	until timeout).
3962
3963	* s_bsd.c/completed_connection(): tell iauth not to wait for DNS
3964	information for servers we connect to.
3965
3966	* s_auth.c/read_iauth():
3967		* fixed "Garbage" notices to &AUTH.
3968		* send E message to iauth when parsing garbage.
3969
39701999-01-28  Christophe Kalt
3971
3972	* s_serv.c/m_server_estab(): added notices to &DEBUG.
3973
3974	* struct_def.h, s_auth.c: renamed MotdItem to LineItem and moved
3975	around some defines.
3976
3977	* s_bsd_ext.h: added missing ';' for utmp_open() definition.
3978
3979	* channel.c/m_list(): !shortname now reports +p/+s channels (but
3980	still hides member count and topic for +s channels).
3981
3982	* match.c/match(): rearranged if test to suppress harmless read
3983	overflow errors (reported by Insure++).
3984
3985	* s_user.c/m_nick(): lp needs to be initialized (reported by Insure++).
3986
3987	* hash.c/hash_find_channels(): bugfix (spottoed by Q).
3988
3989	* mod_rfc931.c/rfc931_init(): fix for a silly bug (from Piotr).
3990
39911999-01-19  Christophe Kalt
3992
3993	* resolv_def.h, res_comp.c, res_init.c: updated (BIND 4.9.7-REL).
3994
3995	* packet.c/dopacket(): don't call unzip_packet() without data at
3996	beginning of connection only! (from Q).
3997
3998	* numeric_def.h, s_err.c, channel.c: added numerics RPL_UNIQOPIS
3999	(325), ERR_BANLISTFULL (478) and ERR_UNIQOPPRIVSNEEDED (485).
4000
4001	* channel.c:
4002		* m_njoin(): missing return value (reported by Insure++).
4003		* m_mode(): use ERR_RESTRICTED for restricted clients.
4004		* m_join(): it's now possible to create	!!#foo if #foo exists.
4005		* m_list(): now works for !shortname.
4006
4007	* hash_ext.h, hash.c: added hash_find_channels().
4008
4009	* configure.in, os.h:
4010		* update for autoconf 2.13.
4011		* let's trust autoconf to decide to use poll() or not.
4012
4013	* s_bsd.c: sendto_flags() doesn't exist, it's sendto_flag().
4014
4015	* mod_rfc931.c:
4016		* stats weren't initialized.
4017		* added undocumented "protocol" option (it's boring!).
4018
4019	* mod_socks.c:
4020		* fixed never occuring memory leak.
4021		* improved stats (from Piotr Kucharski).
4022
4023	* s_user_ext.h, s_user.c, s_service.c: added a parameter to
4024	do_nick_name() [UID].
4025
40261999-01-12  Christophe Kalt
4027
4028	* a_log_def.h, mod_pipe_ext.h, a_externs.h, mod_pipe.c, a_conf.c:
4029	finally wrote the pipe module.
4030
4031	* struct_def.h, a_conf_def.h, a_io_ext.h, iauth.c, mod_rfc931.c,
4032	mod_socks.c, s_auth.c, s_auth_ext.h, s_misc.c: iauth now sends
4033	statistics to ircd, shown by /stats t.
4034
4035	* a_conf_def.h, a_conf.c, a_log_def.h, mod_socks.c: SOCKS module
4036	overhaul: added caching, rewrote code to use v4 instead of v5, and
4037	to be smarter (Based on work from Piotr Kucharski).
4038
4039	* s_user.c: do_nick_name() now rejects "anonymous".
4040
4041	* packet.c/dopacket(): don't call unzip_packet() without data.
4042
4043	* channel.c: extension to del_modeid() from Kaspar Landsberg.
4044
4045	* s_bsd.c: don't call dopacket() again for compressed links just
4046	because the output buffer was filled up.
4047
40481998-12-31  Christophe Kalt
4049
4050	* ircd.c: removed extraneous flush_connections() call in io_loop().
4051
4052	* ircd.c, s_bsd.c, list.c, list_ext.h: removed unused 'active' code.
4053
4054	* struct_def.h, parse.c: removed various unused aClient fields.
4055
40561998-12-24  Christophe Kalt
4057
4058	* s_service.c: using FLAGS_CBURST for services has too many
4059	implications; reverted.
4060
4061	* struct_def.h, s_bsd.c, s_zip.c: removed requirement for
4062	inflate() to never fill up the uncompression output buffer, an
4063	unlikely situation which is now dealt with. (mostly from Q).
4064
40651998-12-21  Christophe Kalt
4066
4067
4068	* s_user.c:
4069		* [RFC] suppressed an error reply for notices in m_message().
4070		* server notices to +n channels were failing. (Reported by Q).
4071
4072	* a_defines.h: INET6 fix for OSF (from Roar Thron�s).
4073
4074	* os.h: INET6 fix for OSF (from Roar Thron�s).
4075
4076	* channel.c: added check against 'duplicate joins' in m_njoin().
4077
40781998-12-14  Christophe Kalt
4079
4080	* channel.c:
4081		* yet another +a/+r fix in set_mode().
4082		* send_channel_modes() would occasionnally send duplicate
4083		bans. (Reported by Robert Martin-Legene <robert@irc.ircnet.dk>)
4084
4085	* iauth.c, a_io.c: added nonexistant INET6 code.
4086
4087	* os.h, nameser_def.h, resolv_def.h: OSF portability fix from Roar
4088	Thron�s.
4089
4090	* s_auth.c: added missing INET6 code. (Roar Thron�s)
4091
40921998-09-25  Christophe Kalt
4093
4094	* configure.in: Check for IPv6 system type and update $LIBS (from
4095	KIKUCHI Takahiro <kick@kyoto.wide.ad.jp>)
4096
4097	* bsd.c, os.h, parse.c, struct_def.h, support.c, support_ext.h,
4098	c_bsd.c, c_version.c, c_version_ext.h, irc.c, swear.c, channel.c,
4099	chkconf.c, ircd.c, nameser_def.h, res.c, res_def.h, res_init.c,
4100	resolv_def.h, s_auth.c, s_bsd.c, s_conf.c, s_debug.c, s_misc.c,
4101	s_serv.c, s_user.c, acconfig.h, configure.in: merged 2.9.5+IPv6.
4102
41031998-04-12  Christophe Kalt
4104
4105	* configure.in, s_debug.c: vsyslog() isn't necessarely available
4106	even if USE_STDARG is defined. (Digital Unix)
4107
41081998-04-04  Christophe Kalt
4109
4110	* c_version_ext.h, c_version.c, irc.c, swear.c: Digital Unix 4.0B
4111	port (Roar Thron�s <roart@nvg.ntnu.no>)
4112
41131998-12-12  Christophe Kalt
4114
4115	* channel.c: +a/+r fix for !channels.
4116
41171998-11-20  Christophe Kalt
4118
4119	* irc.c: allocate me.info (fix by Helmut Franzke <hf@rp-online.de>).
4120
41212.10.1
4122
41231998-11-12  Christophe Kalt
4124
4125	* Doc references to @stealth.net changed to @irc.org.
4126
4127	* s_serv.c: report_ping() now sends some extra info to &DEBUG.
4128
4129	* s_bsd.c: send_ping() window set to 20 minutes (instead of 10),
4130	and never close it.
4131
41321998-11-03  Christophe Kalt
4133
4134	* s_serv.c: changed m_trace() to only show unknowns to opers and
4135	local clients.
4136
4137	* a_io.c: fd remap processing bugfix (from kurt@roeckx.be).
4138
4139	* s_bsd.c: fixed ircd/iauth problem with servers ircd connects to.
4140
41411998-10-31  Christophe Kalt
4142
4143	* parse.c: reordered msgtab[].
4144
4145	* s_serv.c: added more restrictions to m_links(), m_stats() [t],
4146	m_motd() and m_lusers() for remote clients. (*sigh*)
4147
4148	* channel.c: fixed count_channels() not to count empty channels.
4149
41501998-10-28  Christophe Kalt
4151
4152	* s_user.c: optimized m_whois() (pointed out by several people).
4153
4154	* s_user.c, channel.c: channel creator flag is now removed on -o.
4155
4156	* channel.c:
4157		* !channel creation is now done with !! rather than !#.
4158		* fixed channel counters (affects /lusers & /stats z).
4159		* m_njoin(): simple optimization.
4160
4161Sat Oct 10 18:55:38 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4162
4163	* a_io.c: don't TST_* if cldata[i].?fd <= 0 in loop_io().
4164
4165	* ircd.s, s_auth.c, s_bsd.c, s_bsd_ext.h: always attempt to
4166	restart iauth in start_iauth() after receiving a SIGUSR1.
4167
4168	* s_service.c: reverted part of last change.
4169
4170	* s_user.c: last change introduced a bug. (typo, reported by N. Aust)
4171
4172	* channel.c: fixed match_modeid() to handle remote clients
4173	properly now that it's used from can_send().
4174
4175Thu Oct  8 18:33:50 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4176
4177	* configure.in: always compile with -g flag, and never strip.
4178
4179	* channel.c:
4180		* renamed sub1_from_channel() to free_channel().
4181		* always send modes for empty channels during netjoin.
4182		* fixed old (2.9.x) memory leak in collect_channel_garbage().
4183
4184	* s_id.c:
4185		* linked list corruption bugfix in collect_chid().
4186		* added logic to avoid excessive caching in cache_chid().
4187
4188	* s_service.c: stdarg bugfix in check_service_butone (from O.G.).
4189
4190Sun Sep 27 15:12:53 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4191
4192	* s_user.c: prefix bugfix (reported by mrg).
4193
41942.10.0p1
4195
4196Fri Sep 25 22:21:06 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4197
4198	* channel.c: check for +r mode before calling reop_channel().
4199
42002.10.0
4201
4202Wed Sep 23 19:55:14 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4203
4204	* configure.in, os.h: don't trust poll() to work if it exists.
4205
4206	* channel.c:
4207		* removed FULLV2_10 ifdef's
4208		* don't send empty NJOIN in m_njoin() (Reported by Beeth).
4209
4210	* channel.c, s_debug.c, config.h.dist: removed MIRC_KLUDGE.
4211
4212	* chkconf.c: added warning about old V line format.
4213
4214	* config.h.dist: OPER_DIE is now defined by default.
4215
4216	* s_user.c: reverted last change, and hostnames are now truncated.
4217
4218	* os.h: preprocessor syntax fix.
4219
4220	* s_conf.c: stupid typo in match_ipmask().
4221
4222	* s_auth.c: added a new debugging notice.
4223
4224	* s_debug.c: flags update.
4225
4226	* ircd.c:
4227		* added some debugging info in restart notice.
4228		* changed strdup() in mystrdup() (from Andrew Snare).
4229
4230Sun Sep 20 15:22:25 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4231
4232	* os.h, configure.in: configure now checks for poll() existence to
4233	decide if it should be used.
4234
4235	* res_init.c, s_conf.c: strncpy() bugfixes (from Q).
4236
4237	* s_auth.c, mod_rfc931.c: '[' is no longer allowed in ident replies.
4238
4239	* channel.c: don't let chanops set +a on !channels.
4240
4241	* a_io.c: (weirdbug)fix.
4242
4243	* s_err.c: numeric 004 update.
4244
4245	* s_user.c: connections rejected by iauth are now shown as K-lined
4246	in &LOCAL.
4247
4248	* s_bsd.c: new PASS syntax (Q).
4249
4250Sun Sep 13 20:32:08 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4251
4252	* config.h.dist, ircd.c: removed MYNAME.
4253
4254	* Makefile.in, config.h.dist: SPATH/APATH cleanup.
4255
4256	* parse.c: ABW fix (Leon Brouwers <leonb@sci.kun.nl> and purify).
4257
4258Sat Sep 12 18:53:39 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4259
4260	* ircd.c, s_bsd.c: SIGCHLD handling code to avoid zombies.
4261
4262	* s_bsd.c:
4263 		* udpfd used in place of adfd in in read_message().
4264		* silently deal with linux accept() way of life.
4265
4266	* a_io.c: loop_io() bugfix for select() systems.
4267
4268	* ircd.c:
4269		* me.info from ircd.conf was overridden in setup_me().
4270		* server_reboot() created a zombie.
4271
4272	* s_user.c: allow servers to speak on channels (reported by Q).
4273
4274	* channel.c:
4275 		* NJOIN bugfix related to unique ops (reported by Q).
4276		* removed old core from msa.
4277
4278	* various little cleanups.
4279
4280	* res.c: buffer overflow fix. (thanks to Leon Brouwers
4281	<leonb@sci.kun.nl> and purify)
4282
4283Tue Sep  8 21:23:27 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4284
4285	* s_user.c: user mode +a propagation bugfix.
4286
4287	* ircd.c: die immediately if no listener exists after reading the conf.
4288
4289	* send_ext.h, send.c, channel.c: backward compatibility fix for eI
4290	channel modes (added sendto_match_servs_v()).
4291
4292Mon Sep  7 18:03:34 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4293
4294	* s_bsd.c: inversed test for -s in start_iauth().
4295
4296	* channel.c:
4297		* keys starting with ':' don't propagate correctly.
4298		* m_njoin() didn't send modes properly to clients.
4299
4300	* s_serv.c:
4301		* slightly changed the PASS syntax again.
4302		* 2.10 alphas didn't recognize peers as such (reported by Q).
4303
4304Sun Aug 23 22:16:40 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4305
4306	* struct_def.h, ircd.c, list.c, list_ext.h, s_conf.c, s_serv.c,
4307	s_service.c, s_user.c: aClient's info is now dynamically allocated
4308	to overcome server handshake limitations.
4309
4310Sat Aug 22 15:20:10 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4311
4312	* channel.c: fixed ^G bug (only triggered in channel creation)
4313
4314	* struct_def.h, channel.c, s_err.c, s_user.c: AWAY is back.
4315
4316Sun Aug 16 16:01:15 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4317
4318	* ircd.c:, s_bsd.c: added -s switch.
4319
4320Sat Aug  8 14:21:20 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4321
4322	* s_serv.c: Roger's diff broke compression. (reported by Andre Koopal)
4323
4324	* Makefile.in: iauth didn't know where to find zlib.h (reported
4325	by delta)
4326
4327	* a_log.c: typos in parameter names (reported by delta).
4328
4329Fri Aug  7 23:54:10 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4330
4331	* mod_rfc931.c: added sanity check on replies.
4332
4333Fri Aug  7 00:03:45 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4334
4335	* mod_rfc931.c: read RFC 1413 and fixed the reply parser.
4336
4337	* numeric_def.h, s_err.c, s_auth_ext.h, s_auth.c, s_serv.c: added
4338	/stats a to show iauth's configuation.
4339
4340	* s_auth.c, a_*.[ch], mod_*.c:
4341		* SIGUSR2 will cause iauth to close and reopen log file(s).
4342		* worked around delayed messages from the iauth caused by
4343		ircd's fd remapping habit.
4344		* reduced memory usage by dynamically allocating `inbuffer'.
4345		* added G message (a->i).
4346		* added E message (i->a) and cleaned up errors messages in
4347		parse_ircd().
4348		* added a/A messages (a->i) to transmist configuration.
4349		* revisited next_io() and hopefully fixed the logic.
4350
4351	* ircd.c, res.c, s_auth.c, s_auth_ext.h, s_bsd.c, s_user.c:
4352		* stdarg'ized sendto_iauth().
4353		* iauth is now automatically restarted.
4354		* fixed bcopy() length in read_iauth().
4355		* added notices to track the "" username bug.
4356
4357Tue Aug  4 21:43:53 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4358
4359	* a_io.c: numerous bug fixes..
4360
4361	* mod_rfc931.c: fix to prevent crash when receiving data from
4362	broken ident servers.
4363
4364	* a_conf.c, a_conf_def.h, a_externs.h, a_log_def.h: added module
4365	`socks'.  (Based on a 2.9.5 diff from Jonathan Chapman)
4366
4367	* a_log.c: added timestamps to `auth' log.
4368
4369	* s_misc.c: EXITC_AREF is a special case like EXITC_REF.
4370
4371	* parse.c: penalty bugfix.
4372
4373	* ircd.c, s_auth.c, s_bsd.c, s_bsd_ext.h:
4374 		* cleaned up iauth startup procedure, added start_iauth()
4375		which is called upon SIGUSR1.
4376		* various fixes in read_iauth().
4377
4378Sun Aug  2 18:34:20 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4379
4380	* s_mist_ext.h, s_misc.c, support_ext.h, support.c: moved
4381	myctime() from s_misc.c to support.c.
4382
4383	* s_bsd.c, a_io.c: added `R' message from ircd to iauth.
4384
4385	* s_serv.c: updated check_version() not to use NJOIN with 2.9.5 links.
4386
4387	* parse.c: restricted SQUERY to users.
4388
4389	* channel.c:
4390		* m_njoin(): conversion bugfix (Reported by Q).
4391		* added FULLV2_10 #if's.
4392
4393	* struct_def.h, channel.c, s_err.c, s_misc.c: added channel mode `r'.
4394
4395	* send.c: reference to NULL pointer in sendto_match_servs()
4396	(Reported by Core).
4397
4398	* sys_def.c, chkconf.c: MyFree() redefinitions (from Core).
4399
4400	* Makefile.in: "make install-server" path problems.
4401
4402Sun Jul 19 15:32:48 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4403
4404	* s_conf.c, ircd.c: unitialized K line comment in check_pings().
4405
4406	* channel.c:
4407		* beI modes to multiple channels were corrupted.
4408		* mode parameters starting with : don't propagate correctly.
4409		* !channel creation propagation was broken (reported by Eumel).
4410
4411	* send.c, struct_def.h, channel.s, res.c, ircd.c, s_auth.c,
4412	s_auth_ext.h, s_bsd.c, s_bsd_ext.h, s_conf.c, s_user.c,
4413	Makefile.in, config.h.dist: added iauth.
4414
4415Fri Jun 12 19:00:03 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4416
4417	* ircd.c: fix for inetd support (from Jonathan Chapman
4418	<jonathan@clover.net>).
4419
4420	* parse.c, s_debug.c: more LOCOP_* fixes (from Michael Neumayer).
4421
4422	* s_user.c: oper counter bugfix (from Magnus Tjernstrom).
4423
4424	* channel.c:
4425		* fixed join #a,#b,.. desynch bug (reported by viha@vip.fi).
4426		* fixed netjoin +p/+s desynch problem (same).
4427
4428Sun May 31 14:18:41 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4429
4430	* send.c, channel.c: '-' leftovers (Michael Neumayer <eumel@42.org>).
4431
4432Mon May 25 15:13:51 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4433
4434	* struct_def.h, channel.c, hash.c, s_misc.c: changed new channels
4435	prefix to ! (instead of -).
4436
4437	* parse.c: undefining LOCOP_* had no effect (reported by Eumel).
4438
4439	* s_service.c: SERVICE_WANT_OPER burst fix (from Jonathan Chapman).
4440
4441	* s_bsd.c: SO_LINGER patch (from Andrew Snare <ajs@pigpond.com>).
4442
4443	* configure.in: better logic for --resconf.
4444
4445	* channel.c:
4446		* m_invite() fix for &channels.
4447		* add_modeid() always used RPL_BANLIST.
4448		* bIe modes coming from a server were rejected
4449		add_modeid() if another mode with the same pattern existed.
4450
4451	* c_debug_ext.h, c_debug.c, chkconf.c, s_misc.c, s_zip.c: fixes
4452	for DEBUGMODE (from Andrew Snare <ajs@pigpond.com> & Magnus
4453	Tjernstrom <d92-mtm@ludd.luth.se>)
4454
4455	* hash.c: bigger_prime() useless optimization from Magnus :-)
4456
4457Tue May  5 19:26:25 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4458
4459	* config.h.dist, Makefile.in, struct_def.h, s_externs.h, send.c,
4460	channel.c, hash.c, s_debug.c, s_err.c, s_misc.c, s_serv.c,
4461	s_user.c: implemented new channels.
4462
4463	* struct_def.h, parse.c, channel.c, ircd.c, s_debug.c, s_misc.c,
4464	s_serv.c, s_user.c, whowas.c, config.h.dist: replaced BIG_NET #define.
4465
4466Fri Apr 24 20:30:21 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4467
4468	* irc.c: missing refresh() (from Dave Hill <ddhill@zk3.dec.com>).
4469
4470	* s_conf.c, s_service.c: portability fixes from Avalon.
4471
4472	* channel.c, s_user.c: adapted undernet's Bquiet.
4473
4474Sun Apr  5 17:50:08 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4475
4476	* configure, configure.in, config.h.dist: added --logdir option.
4477
4478	* s_serv.c:
4479		* moved user wallops from #wallops to +wallops.
4480		* stricter m_server() check for unregistered users.
4481
4482	* send.c: wallops were sent to services and unregistered clients.
4483
4484Sat Apr  4 19:05:26 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4485
4486	* struct_def.h, packet.c, s_bsd.c: (never triggered) link
4487	compression bugfix (Roger Espel Llima <espel@llaic.u-clermont1.fr>).
4488
4489	* config.h.dist, ircd.c, s_debug.c: added PREFER_SERVER #define.
4490
4491	* s_user.c:
4492		* m_oper() notice bug fix (Michael 'Eumel' Neumayer).
4493		* completely disabled AWAY.
4494
4495	* struct_def.h, parse.c, channel.c, ircd.c, s_debug.c, s_misc.c,
4496	s_serv.c, s_user.c, whowas.c, config.h.dist: added BIG_NET #define.
4497
4498	* s_misc.c; Y2K fix.
4499
4500Tue Mar 31 18:52:41 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4501
4502	* s_serv.c: removed now obsolete USE_NJOIN.
4503
4504	* numeric_def.h, struct_def.h, channel.c, s_debug.c, s_err.c,
4505	s_serv.c: added channel modes +e (EFnet's exceptions to bans) and
4506	+I (invitations); raised MAXBANS (should be renamed) to 30.
4507
4508	* support.c: extended make_version().
4509
4510	* channel.c:
4511		* notify user when a ban is rejected because "redundant".
4512		* /invite (from chanop) now overrides bans & limit.
4513
4514	* s_debug.c, s_serv.c: /stats r no longer restricted to DEBUGMODE.
4515
4516	* s_bsd.c: getrlimit()/setrlimit() is now used regardless of
4517	poll() availibility.
4518
4519Sun Mar 22 14:01:24 1998  Christophe Kalt  <kalt@millennium.stealth.net>
4520
4521	* channel.c: MIRC_KLUDGE sent bogus modes on channel creation.
4522
4523	* os.h, support.c, s_bsd.c: CYGWIN32 cleanup from Dave Miller.
4524
4525	* s_user.c: hunt_server() cleanup.
4526
4527	* s_conf.c: match_ipmask() choked on a.b.c.d/z (reported by Helmut
4528	Springer <delta@RUS.Uni-Stuttgart.DE>).
4529
45302.9.5
4531
4532Tue Feb 17 21:25:02 1998  Christophe Kalt
4533
4534	* s_bsd.c: w32 doesn't have a working fork().
4535
4536	* ircd.c: deal with "getpwuid(getuid())" returning NULL.
4537
4538	* configure.in, os.h, support.c: use our own truncate() when
4539	needed (CYGWIN32), and CYGWIN32 portability.  (Thanks to Dave
4540	Miller <yahoo@molalla.net>).
4541
4542	* config.guess: update.
4543
4544	* s_user.c: broadcast restriction wasn't right (Yegg).
4545
4546	* send.c, ircd.c: removed noisy debugging notices.
4547
4548Sat Feb  7 09:21:52 1998  Christophe Kalt
4549
4550	* s_user.c:
4551		* oper log is now more verbose.
4552		* broadcast messages/notices are now less restricted.
4553
4554	* hash.c: nitpicking (from Magnus Tjernstrom).
4555
4556	* configure.in: quoting cleanup (from Alain).
4557
4558	* send_ext.h, s_debug.h: STDARG prototyping cleanup (from Alain).
4559
4560Fri Jan 23 17:39:17 1998  Christophe Kalt
4561
4562	* os.h: linux 2.1 implements poll() but the header files are a
4563	mess (what did you expect?), kludge to get it work (from Vesa).
4564
4565	* channel.c: fixes related to MIRC_KLUDGE.
4566
4567	* s_conf.c:
4568		* find_kill() fix and cleanup (mostly from Vesa).
4569		* find_bounce() stricter check and fix (from Vesa).
4570
4571	* parse.c: m_njoin() is only used by the server.
4572
4573Fri Jan 23 17:38:36 1998  Christophe Kalt
4574
4575	* channel.c:
4576		* buffer overflow fix.
4577		* bugfix from Avalon.
4578		* join/invite were propagated for &channels. (reported by DLR)
4579		* invite/kick were propagated beyond masks. (reported by DLR)
4580		* multiple kicks could desynch channels.
4581
4582	* s_user.c: stricter check on unregistered NICK changes (Avalon).
4583
4584	* hash.c: hash_find_server() didn't handle z.stealth.net (1
4585	letter) masked by *.stealth.net (DLR).
4586
4587	* msg_def.h, struct_def.h, channel_ext.h, parse.c, channel.c,
4588	s_serv.c: added send_channel_members() and m_njoin().
4589
4590	* send_ext.h, send.c: added sendto_serv_notv().
4591
4592	* buidm4: yet another m4 booboo. (fix from Mario)
4593
4594Wed Jan  7 11:40:59 1998  Christophe Kalt
4595
4596	* s_user.c: strncpy() lameness.
4597
4598	* s_conf.c: added match_ipmask() (from Vesa).
4599
4600	* configure.in, send_ext.h: "checking for working stdarg" always
4601	failed because of a quoting problem.
4602
4603Thu Dec 18 21:48:18 1997  Christophe Kalt
4604
4605	* channel.c: abusive usage of /names now forbidden.
4606
4607	* class.c: imposed a minimum of 60 seconds for connect frequencies.
4608
4609	* struct_def.h, s_misc.c, s_serv.c: check_link() tuning and statistics.
4610
4611Tue Dec 16 17:12:16 1997  Christophe Kalt
4612
4613	* s_conf.c: finished D lines.
4614
4615	* numeric_def.h, struct_def.h, list.c, s_err.c, s_serv.c: added
4616	check_link() to prevent server links from being flooded by replies
4617	to user requests.
4618
4619	* s_bsd.c: try to prevent the server from flooding with UDP pings.
4620
4621	* channel.c: #foo:*.tld modes were always sent during the burst.
4622
4623Wed Nov 12 21:02:15 1997  Christophe Kalt
4624
4625	* struct_def.h, s_conf_ext.h, s_conf.c, ircd.c, chkconf.c,
4626	numeric_def.h, s_err.c , s_serv.c: added D configuration
4627	lines. (/stats h)
4628
4629	* send.c, s_service.c: allocate more dbufs during a service burst
4630	if needed.
4631
4632	* channel.c: cosmetics, and fixed the use of MAXPENALTY in m_kick().
4633
4634	* s_debug.c: too many parameters in a call to sendto_one().
4635
46362.9.4
4637
4638Sat Oct 18 09:37:33 1997  Christophe Kalt
4639
4640	* setup.h.in, configure.in: (Alain Nissen)
4641		* additional header files checked.
4642		* non-blocking system test fixed.
4643
4644	* os.h: curses/termcap stuff is now only used for the client (AN).
4645
4646	* swear_ext.h, swear.c: portability issues (Alain Nissen).
4647
4648	* c_bsd.c, s_bsd.c, os.h: SELECT_FDSET_TYPE (defined in os.h) used
4649	as pointer type in select() calls; HPUX compilation problem
4650	fixed.  (Alain Nissen)
4651
4652	* buildm4: typo & missing quote. (again!)
4653
4654Fri Oct 10 23:48:25 1997  Christophe Kalt
4655
4656	* s_serv.c: improved m_die() and m_restart() in case a service is
4657	used for user log.
4658
4659	* os.h, acconfig.h, configure.in, res.c, s_bsd.c: (Alain Nissen)
4660		* kludge to deal with broken hostent declaration in
4661		netdb.h on some linux systems.
4662		* test for sigaction & sigset functions added back; signal
4663		implementation test fixed.
4664
4665	* s_conf.c:
4666		* more explicit K line message when reason specified in
4667		ircd.conf.
4668		* extended I lines syntax.
4669
4670	* s_service_ext.h, s_service.c, s_misc.c: faster split handling is
4671	possible now that 2.8.x protocol is history.
4672
4673	* channel.c:
4674		* m_join() was unefficient on net joins.
4675		* MIRC_KLUDGE would never show +ov modes.
4676
4677	* s_user.c:
4678 		* services can now send to channels (if the modes allow it).
4679		* prefixes for restricted connections were gone.
4680
4681	* buildm4: missing quote.
4682
46832.9.4b
4684
4685Wed Oct  1 21:57:45 1997  Christophe Kalt
4686
4687	* chkconf.c: added knowledge of B lines.
4688
4689	* s_debug.c: more info on dbufs for better tuning.
4690
4691	* channel.c: bans on IP are now matched against resolving clients.
4692
4693	* s_conf.c: K lines on IP can now be matched against resolving clients.
4694
4695	* buildm4: update for Y and K line macros, and added macros for
4696	B,V,i and k lines (Mario Holbe).
4697
4698	* s_conf.c: Y global limit per host didn't work.
4699
4700Wed Sep 24 18:25:45 1997  Christophe Kalt
4701
4702	* acconfig.h, configure.in, setup.h.in, resolv_def.h, res_init.c:
4703	added --resconf=FILE option to configure (Alain Nissen).
4704
4705	* s_conf.c: fixed bug with Y limits.
4706
4707Tue Sep 23 11:36:30 1997  Christophe Kalt
4708
4709	* common_def.h: added CHKCONF_COMPILE statement.
4710
4711	* bsd_ext.h: incorrect declaration for writeb.
4712
4713	* support_ext.h, support.c: dumpcore() was broken.
4714
4715	* class_def.h, class_ext.h, class.c, s_conf.c, s_err.c: it's now
4716	possible to combine a limit per host and per user@host for the
4717	same class.
4718
4719	* s_user.c:
4720		* RPL_ENDOFWHO wasn't correct.
4721		* who_find() / m_whois() didn't always respect +a mode.
4722		* @ restriction in username could be bypassed.
4723		* unlikely but nonetheless possible ghost generation.
4724
4725	* ircd.c: setgid() was called after setuid() (reported by Nicole
4726	Haywood <kole@mail.usyd.edu.au>)
4727
4728	* parse.c: avoid a match() call if possible.
4729
4730Sun Sep 14 19:44:27 1997  Christophe Kalt
4731
4732	* ircd.c: redundant/useless code commented out.
4733
4734	* struct_def.h, parse.c, s_err.c, s_serv.c: `stats m' is more verbose.
4735
4736	* os.h, Makefile.in: zlib.h was missing from includes.
4737
4738	* s_user.c: 2 fixes (a NULL pointer, and a non reinitialized one).
4739
4740Thu Sep 11 21:43:20 1997  Christophe Kalt
4741
4742	* class_def.h, class_ext.h, class.c, s_bsd.c, s_conf.c, s_err.c,
4743	s_user.c: added 2 fields to Y lines and implemented [u@]h global
4744	limits.
4745
4746	* service_def.h, channel.c, s_service.c: added SERVICE_WANT_VCHANNEL.
4747
4748	* channel.c: server channels now have a topic.
4749
4750	* s_conf.c: negative class numbers are now forbidden.
4751
4752	* s_conf_ext.h, s_conf.c, s_bsd.c: new B lines format.
4753
4754Sun Sep  7 20:02:50 1997  Christophe Kalt
4755
4756	* s_conf.c: B lines now catch "unauthorized connections".
4757
4758	* s_user.c: m_who() limit wasn't coded. fixed this and rewrote
4759	m_who() because recursivity and penalty don't go together.
4760
4761	* s_err.c: REPL_SERVLIST type field is now in hexa.
4762
4763	* service_def.h, send.c, s_misc.c, s_user.c: extended services
4764	capabilities so they can do logging.
4765
4766	* s_serv.c, s_user.c: added MD5 support for crypt() (from Urvos Juvan).
4767
4768	* res.c: hostnames containing * or ? are now rejected.
4769
4770	* s_conf.c: service type field stripped from optional bits (in S
4771	lines).
4772
4773	* s_serv.c: server token wasn't sent to services in m_server_estab().
4774
4775	* s_service.c: SERVICE_WANT_PREFIX wasn't honored by m_squery().
4776
4777	* struct_def.h, parse.c, s_serv.c, s_user.c:
4778               * added MyService() macro and updated several tests.
4779               * next_client() was ignoring services.
4780
4781Tue Aug 19 08:38:54 1997  Christophe Kalt
4782
4783	* channel.c: m_names() could still have a truncated reply.
4784
4785	* more cleaning from Alain.Nissen@ulg.ac.be:
4786
4787		* struct_def.h, bsd.c, s_bsd.c: removed references to "pyr".
4788		* res_comp.c: removed res_getshort() [never used].
4789		* removed all references to VMS.
4790
4791Mon Aug 11 13:34:15 1997  Christophe Kalt
4792
4793	* The following changes are from Alain.Nissen@ulg.ac.be
4794
4795	* all files (in short):
4796		* include/ was removed.
4797		* all .c have a corresponding _ext.h to declare external
4798		variables and functions.
4799		* [sc]_externs.h are #includes *_ext.h.
4800		* [sc]_defines.h are #includes *_def.h.
4801		* all .c have the same list of #include.
4802		* os.h has all system #includes and portability tests.
4803
4804	* Also, several bug and portability fixes:
4805
4806		* c_bsd.c: move renamed in tcap_move (portability).
4807		* c_msg.c:
4808			* added test on DOCURSES before including it.
4809			* various casts.
4810		* edit.c:
4811			* return type of suspend_irc() changed to RETSIGTYPE.
4812			* added int argument to suspend_irc().
4813			* use of signal(SIGTSTP,...) now depends on
4814			whether the signal exists rather than the OS.
4815		* help.c: helplist rewritten properly.
4816		* irc.c:
4817			* strdup() replaced with mystrdup().
4818			* do_log() takes 2 arguments.
4819			* return type of quit_intr() changed to RETSIGTYPE.
4820			* added int argument to quit_intr().
4821		* screen.c: such a mess
4822			* LINES is only present under curses.
4823			* idem for refresh().
4824			* clear_to_eol() is supposed to take 2 arguments,
4825			but what are they?
4826		* swear.c: added to clients targets
4827		* channel.c: delch renamed in del_ch.
4828		* chkconf.c, parse.c: newline renamed in irc_newline.
4829		* ircd.c: s_monitor(), s_die(), s_rehash(), s_restart()
4830		return type changed from VOIDSIG to RETSIGTYPE.
4831		* res.c: now using SOCK_LEN_TYPE.
4832		* res_comp.c, res_init.c: various portability changes.
4833		* s_auth.c: now using SOCK_LEN_TYPE.
4834		* s_bsd.c: now using SOCK_LEN_TYPE.
4835		* s_conf.c: several portability fixes.
4836		* s_err.c: local_replies[] and local_replies[] rewritten.
4837		* s_service.c: changed test on USE_STDARG.
4838		* bsd.c:
4839			* return type for dummy() is now RETSIGTYPE.
4840			* dummy() now takes one int argument.
4841		* dbuf.c: removed unused DBUF_INIT.
4842		* support.c:
4843			* many changes concerning #if tests.
4844			* added solaris_gethostbyname() to use instead of
4845			Solaris 2.3 broken gethostbyname().
4846			* added irc_memcmp() to use if system's memcmp()
4847			is broken.
4848		* nameser.h: now using WORDS_BIGENDIAN.
4849		* configure.in:
4850			* simpler solaris 2.x detection when looking for zlib.
4851			* added test for cursesX.
4852			* added check for sys_errlist definition in sys/errno.h
4853			* and more...
4854		* Makefile.in: CFLAGS split in S_CFLAGS, C_CFLAGS and
4855		CC_CFLAGS (ircd, irc, chkconf).
4856
4857Fri Aug  8 10:51:24 1997  Christophe Kalt
4858
4859	* channel.c: m_names() behaviour wasn't consistent with m_who()
4860	concerning +p channels (Michael 'Eumel' Neumayer).
4861
4862	* configure.in: minor changes (Alain Nissen).
4863
4864	* s_user.c: missing argument to err_str() (Kai Seidler).
4865
4866	* config.h.dist, h.h, struct.h, common.c, channel.c, s_bsd.c,
4867	s_debug.c, s_err.c, s_misc.c, s_serv.c, s_service.c, s_user.c:
4868	removed support for 2.8 protocol.
4869
4870	* config.h.dist, msg.h, channel.c, note.c, s_bsd.c, s_debug.c,
4871	s_misd.c, s_user.c: removed NOTE.
4872
4873	* s_bsd.c: wrong argument to bzero().
4874
4875	* Makefile.in, buildm4: rev.sh replaced by config.guess and
4876	buildm4 wasn't ran by `make install-server'.
4877
48782.9.3
4879
4880Wed Jul 23 11:23:30 1997  Christophe Kalt
4881
4882	* res.c: queries were never resent when reaching timeout (C. Behrens).
4883
4884	* acconfig.h, configure.in: better sys_errlist test (A. Nissen).
4885
4886	* version.c.SH.in: portability (A. Nissen).
4887
4888	* acconfig.h, configure.in, common.h, config.h.dist: AIX cleanup
4889	and optimization flags (A. Nissen).
4890
4891	* configure.in: typo.
4892
4893Thu Jul 17 23:04:48 1997  Christophe Kalt
4894
4895	* c_numeric.c, irc.c: fixes from Vesa.
4896
4897	* send.c: buffer overflow fix.
4898
4899	* h.h, res_init.c: portability fixes.
4900
4901Wed Jul 16 21:35:50 1997  Christophe Kalt
4902
4903	* s_serv.c: m_die() referenced data after freeing it.
4904
4905	* support.c, res.c: silly changes to make purify happier.
4906
4907	* s_bsd.c: fixed memory corruption problem.
4908
4909	* s_user.c: m_whois() voice flag changed back to + (from !).
4910
4911	* h.h, support.c, configure.in: reverted back: use inet_* if
4912	present, use our own inet* if not.  Our functions must be
4913	different to avoid some crazy clash when bind 8.x is on installed
4914	the system.  Should we teach configure.in about -lbind?
4915
4916Tue Jul 15 00:18:01 1997  Christophe Kalt
4917
4918	* inet_addr.c moved to support.c, renamed functions (inet_addr,
4919	inet_aton, inet_ntoa, inet_netof) to avoid clashes; always used
4920	even if the system has it.
4921
4922	* New configure and Makefile from Alain Nissen. (many many files
4923	changed, removed, created, rewritten)
4924
4925	* buildm4: update (Mario Holbe).
4926
4927	* struct.h, s_bsd.c: fixed the P line rehash bug(?).
4928
4929	* h.h, ircd.c: let's be nice to SunOS' cc.
4930
4931Mon Jun 30 21:41:11 1997  Christophe Kalt
4932
4933	* dbuf.c, send.c: earlier changes broke the client.
4934
4935	* config.h.dist, struct.h, dbuf.h, dbuf.c: new magic formula to
4936	compute BUFFERPOOL.  Added MAXSERVERS for this purpose.
4937
4938	* s_serv.c: buffer overflow (Chris Behrens).
4939
4940Thu Jun 26 19:18:24 1997  Christophe Kalt
4941
4942	* struct.h, channel.c, hash.c, parse.c, send.c, s_misc.c,
4943	s_service.c:
4944		* cleanup.
4945		* added &SERVICES.
4946
4947	* s_bsd.c: wrong buffer size given to getsockopt().
4948
4949Thu Jun 19 18:35:37 1997  Christophe Kalt
4950
4951	* h.h, struct.h, s_debug.c, send.c, dbuf.c:
4952		* dbuf stats.
4953		* send_message() #ifndef SENDQ_ALWAYS was not uptodate,
4954		tried to bring it back up to date.
4955
4956	* res.c: fixed possible buffer overflow.
4957
4958	* h.h, s_debug.c, send.c: fixes for STDARG (Olivier Galibert)
4959
4960	* ircd.c: server_reboot() would crash when called because of "out
4961	of memory".
4962
4963Mon Jun  9 20:49:55 1997  Christophe Kalt
4964
4965	* config.h.dist, h.h, struct.h, send.c, ircd.c, list.c, s_debug.c,
4966	s_serv.c, s_user.c: removed #define KRYS, it is now always `defined'.
4967
4968	* config.h.dist, h.h, common.h, service.h, sys.h, configure.in,
4969	send.c, support.c, s_auth.c, s_service.c, s_debug.c, s_conf.c:
4970	removed references to varargs, added support for stdargs.
4971	It is controlled by #define USE_STDARG set by configure. (adapted
4972	from Olivier Galibert)
4973
4974	* ircd.c: CHROOT is really called CHROOTDIR.
4975
4976	* s_user.c:
4977		* extended m_message() to accept n!u@h as recipient.
4978		* removed notice for bogus PONG.
4979
4980	* s_serv.c: /SQUIT now requires 2 arguments from opers.
4981
4982Sun Jun  1 16:57:39 1997  Christophe Kalt
4983
4984	* dbuf.h, dbuf.c: #define DBUF_TAIL is back.
4985
4986	* s_conf.c: fixed B lines behaviour, port number is now mandatory.
4987
4988	* send.c: missing arg to dead_link(). (Olivier Galibert)
4989
4990	* s_serv.c, numeric.h, s_err.c: added /stats B to see B lines (and
4991	fixed /stats V reply).
4992
4993	* service.h, channel.c, s_misc.c, s_service.c, s_serv.c, s_user.c:
4994		* numerous bugfixes related to local services (if
4995		USE_SERVICES is defined).
4996		* extended services option to allow 2.9 NICK syntax, and
4997		let them see tokens if they want. (adapted from O.Galibert)
4998
4999Wed May 21 21:17:51 1997  Christophe Kalt
5000
5001	* channel.c, s_service.c, service.h: finished service code (whee).
5002
5003	* s_serv.c: services were incorrectly sent during burst.
5004
5005	* s_bsd.c: ident MUST be done before anything else is read from a
5006	client.
5007
5008Thu May 15 16:27:13 1997  Christophe Kalt
5009
5010	* struct.h, s_conf.h, s_serv.c: created k: lines to be able to
5011	deny access based on OTHER ident replies.
5012
5013	* s_user.c: changed 001 reply to return n!u@h (more zen).
5014
5015	* s_serv.c:
5016		* if A: is bogus, trash it and complain instead of crashing.
5017		* get_client_name() is non-reentrant. *sigh*
5018
5019Wed May  7 22:11:04 1997  Christophe Kalt
5020
5021	* s_user.c: nick chasing kill bug fix. (Chris Behrens)
5022
5023	* h.h, ircd.c, s_conf.c, s_user.c: K-lined users now exit
5024	displaying the Kline comment, if any.
5025
5026	* s_conf.c: fixed notice ERR_YOUWILLBEBANNED, and don't disconnect
5027	then.
5028
5029	* inet.h, nameser.h, resolv.h, inet_addr.c, portability.h, res.c,
5030	res_comp.c, res_init.c, res_mkquery.c: updated. (BIND 4.9.5-P1)
5031
5032	* channel.c: notice for service could use free'ed memory.
5033
5034Sun Apr 27 16:40:08 1997  Christophe Kalt
5035
5036	* send.c: fixed couple buglets (added by Chris Behrens :^).
5037
5038	* s_user.c: removed dummy m_note() which was unused and buggy, and
5039	would let any oper _broadcast_ NOTE queries to the net.
5040
5041	* m_note.c: Modified m_note() in note.c not to send any NOTE
5042	commands to other servers.
5043
5044	This is lame, someone help me and port note to be a service.
5045	Then, I'll finally take it out of the server !! :-)
5046
5047Thu Apr 24 18:51:25 1997  Christophe Kalt
5048
5049	* send.c: better (faster) sendto_common_channel() (from Chris Behrens).
5050
5051	* s_serv.c: fixed connected burst for services with hostmasks.
5052
5053	* s_user.c: fixed origin check in m_pong().
5054
5055	* res.c: added a check on hostnames. (From Darren Reed)
5056
5057Sun Apr 20 20:30:21 1997  Christophe Kalt
5058
5059	* s_conf.c: find_bounce() had an inversed test. (how could it work
5060	when I tested it??)
5061
5062	* s_serv.c: SERVER message would occasionnally (and incorrectly)
5063	be dropped.
5064
5065	* s_misc.c: simple optimization in exit_client().
5066
5067	* s_service.c, s_serv.c: things looked wrong, SERVICE syntax
5068	inchorent. Minor memory leak.
5069
5070	* s_bsd.c, s_misc.c: various "typos" fixed. (UDP & non POLL)
5071
5072	* send.c, h.h: removed sendto_all_butone(). (unused)
5073
5074Tue Apr 15 19:41:32 1997  Christophe Kalt
5075
5076	* sock.h: added a check to make sure FD_SETSIZE is big enough.
5077
5078	* s_bsd.c, struct.h, s_misc.c: added more UDP stats.
5079
5080	* s_bsd.c: fixed udp_pfd/res_pfd mess, and cleaned the code. (whee)
5081
5082	* h.h, struct.h, numeric.h, s_err.c, s_conf.c, s_bsd.c: added B lines.
5083
5084	* channel.c: defining USE_SERVICE would cause buffer corruption
5085	when propagating channel modes to servers. (Found by Michael Neumayer)
5086
5087Wed Apr  2 15:25:54 1997  Christophe Kalt
5088
5089	* list.c, s_serv.c: added some error notices for users without server.
5090
5091	* s_bsd.c: fixed UDP port binding when no IP is given.
5092
5093	* configure.in: add -cckr to CFLAGS on SGI when using cc(1)
5094
5095Thu Mar 27 19:03:09 1997  Christophe Kalt
5096
5097	* h.h, send.c, s_bsd.c, s_user.c, s_serv.c: amount of transferred
5098	data added to file logs.
5099
5100	* config.h.dist: define SVR4 if __svr4__ is there.
5101
5102	* packet.c: drop server sending an unknown command.
5103
5104	* s_user.c: changed m_who() for better performance (from Chris
5105	Behrens), also put a limit on its number of arguments.
5106
5107	* h.h, struct.h, list.c: better IsMember (from Chris Behrens).
5108
5109	* s_serv.c: don't let a user introduce a new server.
5110
5111Fri Mar 21 19:53:36 1997  Christophe Kalt
5112
5113	* h.h, struct.h, ircd.c, s_conf.c, s_misc.c, s_serv.c,
5114	config.h.dist: server can now cache the MOTD in memory (from Chris
5115	Behrens).  See CACHED_MOTD #define.
5116
5117	* service.h, channel.c, s_serv.c, s_service.c, s_user.c: additions
5118	for services.
5119
5120	* s_misc.c: added missing parameter for check_service_butone().
5121
5122	* INSTALL completed and converted to sgml
5123
5124	* s_serv.c: MyRealloc(NULL, size) isn't portable.
5125
5126Tue Mar 18 17:59:26 1997  Christophe Kalt
5127
5128	* 2.9.3b10
5129
5130	* channel.c, hash.c, res.c, s_serv.c, s_service.c, s_user.c,
5131	whowas.c: penalties tuned again. (added Volker Paulsen's anti SPAM
5132	hack).
5133
5134	* s_err.c, s_serv.c: minor changes to RPL_STATS*
5135
5136	* s_bsd.c: authclnts[] was not always initialized.
5137
5138	* ircd.c: buffer in ircd_readtune() lacked initialization.
5139
5140	* s_service.c: fixed buffer overflow.
5141
5142	* send.c, support.c: # of arguments cleanup.
5143
5144	* list.c, res.c, s_service.c: casts to suppress warnings.
5145
5146	* h.h, dbuf.c: bufalloc, dbufblocks, poolsize now
5147	unsigned. (some checks might be needed, poolsize can really get
5148	big).
5149
5150	* s_misc.c: removed duplicate code in exit_client().
5151
5152	* parse.c:
5153
5154		* Added more notices when generating SQUITs for unknown
5155		servers.
5156		* removed bogus else.
5157
5158Fri Feb 28 09:34:36 1997  Christophe Kalt
5159
5160	* s_err.c, s_serv.c: Added 2 more fields to RPL_TRACELINK.
5161
5162Thu Feb 27 14:50:37 1997  Christophe Kalt
5163
5164	* s_serv.c: /connect by servername didn't work for c lines (from Eumel)
5165
5166Wed Feb 26 16:48:36 1997  Christophe Kalt
5167
5168	* s_bsd.c: removed (old) redundant code concerning VIF.
5169
5170	* config.h.dist: CLONE_MAX and CLONE_PERIOD could be undefined.
5171
5172	* common.c: match() cleanup.
5173
5174Thu Feb 13 17:27:53 1997  Christophe Kalt
5175
5176	* res.c, res_init.c, res_mkquery.c, ircd.c, s_bsd.c: renamed
5177	res_init() to ircd_res_init() to avoid conflict (ULTRIX).
5178
5179	* hash.c, struct.c: cleanup of hashing functions.
5180
5181	* match.c, parse.c, send.c, common.h, channel.c, hash.c, s_bsd.c,
5182	s_misc.c, s_serv.c, s_service.c, s_user.c, note.c, ignore.c:
5183
5184		*  _match() changed to match() and the check for maximum
5185		"recursion" slightly changed.
5186		*  match() and matches() removed (stubs from when match
5187		was recursive?).
5188		* All occurrences of matches() changed to match().
5189		* this saves one function call per match.
5190
5191	* send.c: Added 2 parameters to sendto_serv_butone().
5192
5193	* s_err.c, s_serv.c: Added one field to RPL_TRACELINK.
5194
5195Sun Jan 26 20:02:34 EET 1997  Vesa Ruokonen  (ruokonen@aapo.it.lut.fi)
5196
5197	* 2.9.3b8
5198
5199	* support.c, h.h, list.c: gcc -Wall cleanups.
5200	* h.h, struct.h, chkconf.c, s_conf.c, s_serv.c:
5201		created V:lines for checking connecting client parameters.
5202		passed as PASS command parameters. A matching V:line.
5203		refuses the connection (version number & compile flags).
5204	* struct.h, channel.c, s_debug.c:
5205		penalty threshold used for limiting KICK params.
5206	* struct.h: initial QUEUELEN calculation tuned. (->BUFFERPOOL).
5207	* c_msg.c: more verbose m_pong().
5208	* channel.c, s_serv.c, s_user.c, whowas.c:
5209		penalties tuned for commands generating global bcast.
5210	* hash.c: converted multiplication to hashtable lookup to speed.
5211		up function calls. (from Core)
5212	* ircd.c, s_bsd.c: added truncation for non-appended writes. (_root_)
5213	* s_user.c: prefix for voice capability in channel list of WHOIS reply
5214		changed from '+' to '!'.
5215	* s_user.c: drop PONGs with bad origin.
5216		store connection parameters from PASS temporarily to info
5217		field in contstant locations.
5218	* s_user.c: m_umode() fixed (from Core).
5219
5220Wed Jan 15 14:42:43 1997  Christophe Kalt
5221
5222	* s_bsd.c:
5223
5224		* mysk was initialized by empty password in M line.
5225
5226Tue Jan 14 24:62:34 EET 1997  Vesa Ruokonen  (ruokonen@aapo.it.lut.fi)
5227
5228	* parse.c, channel.c, s_user.c: cleanup of find_functions(),
5229		_nickserv replaced by _service.
5230	* h.h, : setup_ping() takes aConfItem pointer as parameter now.
5231	* sys.h: #elif expanded to #else #if for compability
5232	* s_bsd.c: inetport(P:line) changed to support VIFs better.
5233		More info about listening ports into /stats l.
5234		UDP ping is initialized from M:line, not anymore from P:line.
5235	* s_numeric.c: cleanups in numeric processing.
5236	* Makefile.in, Makefile.irc, Makefile.ircd: makedepend fix
5237	* configure.in: zlib check moved to end, as it can interfere
5238		other checks when libs aren't in default paths.
5239
5240Mon Jan 13 09:11:04 1997  Christophe Kalt
5241
5242	* ircd.c:
5243
5244		* made the display of version (flag -v) more verbose.
5245
5246	* regenerated configure (with autoconf 2.12; thanks digital).
5247
5248	* s_user.c:
5249
5250		* fixed, and extended KILL reasons for `standard'
5251		collisions. (both victims u@h are now shown).
5252
5253	* send.c:
5254
5255		* fixed the logic when sending mass message/notice to a
5256		server mask.
5257
5258	* configure.in, Makefile.in:
5259
5260		* fixed detection & use of zlib using the environment
5261		variable ZLIB_HOME (from Vesa).
5262
5263Thu Jan  9 13:09:36 1997  Christophe Kalt
5264
5265	* struct.h, ircd.c:
5266
5267		* added -b command line switch to let the server start
5268		even if the ircd.tune file is corrupted (mostly from
5269		Magnus Tjernstrom).
5270
5271	* s_conf.c:
5272
5273		* udp listen was setup even if port was defined to be 0.
5274
5275Wed Jan  8 12:35:03 1997  Christophe Kalt
5276
5277	* h.h, s_bsd.c, s_conf.c:
5278
5279		* port field in M configuration line is used again, now to
5280		define on which port the server will listen for UDP pings.
5281
5282	* hash.c:
5283
5284		* restricted commands to opers (from Vesa).
5285
5286	* send.c:
5287
5288		* sendto_match_butone() had a broken behaviour,
5289		brought back the old (2.8.21) behaviour.
5290
5291	* s_bsd.c:
5292
5293		* fixed negociation of compression for outgoing
5294		connections.
5295
5296		* moved the "rejected connection" notice to &LOCAL.
5297
5298		* SLOW_ACCEPT #ifdef's changed to #ifndef's to get what
5299		one should expect from the define name !
5300
5301		* made inetport() more readable, and added check on empty
5302		string parameter (from Vesa).
5303
5304		* highfd isn't defined when _DO_POLL_ is defined, so don't
5305		use it in debug notices (from Vesa).
5306
5307		* break changed to continue because ??? (from Vesa).
5308
5309	* s_user.c:
5310
5311		* fixed KILL notice sent on nick collision (was using
5312		ident reply for remote clients).
5313
5314		* allowed oper!user@host.foo to send global message/notice
5315		to #*.foo
5316
5317	* s_serv.c, s_user.c, s_bsd.c, s_debug.c:
5318
5319		* changed the PASS command semantic (from Vesa).
5320
5321Fri Jan  3 14:47:52 1997  Christophe Kalt
5322
5323	* s_bsd.c:
5324
5325		* completed virtual hosts support (M line).
5326
5327	* config.h.dist:
5328
5329		* AIX has poll(), use it.
5330
5331Mon Dec 30 15:08:20 1996  Christophe Kalt
5332
5333	* s_bsd.c, h.h:
5334
5335		* added support for virtual hosts (P line).
5336
5337Wed Dec 18 12:08:29 1996  Christophe Kalt
5338
5339	* bsd.c:
5340
5341		* fixed read_message() bugs resulting from the merge.
5342
5343	* channel.c:
5344
5345		* limited the number of possible kicks to MAXMODEPARAMS.
5346
5347Mon Dec 16 09:36:54 1996  Christophe Kalt
5348
5349	* list.c:
5350
5351		* don't free serv->user too early.
5352
5353		* removed duplicated(?) away memory count.
5354
5355Fri Dec 13 10:28:43 1996  Christophe Kalt - Hmm, Friday the 13th!
5356
5357	* config.h.dist, s_auth.c, s_user.c, s_debug.c:
5358
5359		* minor tuning.
5360
5361Thu Dec 12 10:34:47 1996  Christophe Kalt
5362
5363	* struct.h, s_auth.c, s_debug.c:
5364
5365		* added memory usage stats for ident replies.
5366
5367	* send.c, s_auth.c, s_misc.c:
5368
5369		* fixed boundaries problems with long ident replies.
5370
5371Wed Dec 11 17:42:29 1996  Christophe Kalt
5372
5373	* struct.h, send.c, s_auth.c, s_bsd.c, list.c, s_conf.c, s_misc.c,
5374	s_user.c:
5375
5376		* added auth field to struct Client to eventually store
5377		long `OTHER' ident replies.  It is only used in logs, and
5378		notices (not in matches against configuration lines).
5379
5380	* config.h.dist:
5381
5382		* added #define SLOW_ACCEPT (default).
5383
5384		* added #define CLONE_CHECK (default).
5385
5386	* s_bsd.c:
5387
5388		* fixed config line reference counter.
5389
5390		* added CLONE_CHECK code (check_clones() from
5391		pgoncalves@mail.telepac.pt (Pedro Goncalves)).
5392
5393		* added SLOW_ACCEPT (previous behaviour) code.
5394
5395		* merged the 2 versions of read_message(), fixing some
5396		(buggy) difference between them.
5397
5398		* merged two for() in read_message().
5399
5400
5401Mon Dec  2 11:02:54 1996  Christophe Kalt
5402
5403	* s_user.c:
5404
5405		* changed error notice
5406
5407	* send.c:
5408
5409		* #*.mask messages now propagated to other servers.
5410
5411	* s_service.c:
5412
5413		* added missing else.
5414
5415	* config.h.dist, s_debug.c, channel.c:
5416
5417		* removed all references to V28PlusOnly
5418		* made NoV28Link defined by default
5419
5420Wed Nov 27 18:09:42 1996  Christophe Kalt
5421
5422	* struct.h, class.c, ircd.c, s_bsd.c, s_conf.c, s_serv.c:
5423
5424		* added lowercase c config line
5425
5426Tue Oct  1 22:29:31 1996  Christophe Kalt
5427
5428	* added config.h to dependancies in Makefile.ircd
5429
5430	* config.h.dist, h.h, struct.h, packet.c, send.c, ircd.c, s_bsd.c,
5431	s_debug.c, s_serv.c, s_user.c, s_err.c, list.c,	Makefile.ircd,
5432	configure.in:
5433
5434		* added #define ZIP_LINKS and s_zip.c.
5435		* made configure look for the zlib (-lgz).
5436		* implemented server-server zlib compression.
5437