2.11.2p2

2009-11-13  Piotr Kucharski

	* channel.c/set_mode(): don't swap keys and limits on netjoin.
	* s_misc.c/initruntimeconf(), config.h.dist: default and min. values
	  of SPLIT vars; lower defaults to better match IRCnet status.
	* struct_def.h, ircd.c/try_connections(), s_misc.c/check_split(),
	  s_serv.c/m_set(): add "SET ACONNECT ND" to disable autoconnect
	  after nickdelay expires (requested by BR); with nice sideeffect
	  of showing in "stats d" when server entered split mode.
	* s_conf.c/oline_flags_parse(), s_debug/serveropts[], config.h.dist:
	  add OPER_SQUIT_REMOTE define and use it in version string (requested
	  by BR to do V:line on it).

2009-04-30  Piotr Kucharski

	* s_conf.c/prep_kline(): check for erroneous netmasks in tkline.

2009-03-15  Piotr Kucharski

	* support.c/strtoken(): mysterious wallops from JP fix (kudos to jilles).
	* list.c/free_class(), patricia.c, patricia_ext.h, s_externs.h: tidy up.
	* s_conf.c/find_Oline(), s_user.c/m_oper(): better error msg for OPER
	  failed due to class limits.
	* s_user.c/register_user(): tiny fix for sunCC compiler.
	* res.c: fix compilation with DEBUG problem.
	* s_conf.c/find_Oline(): use user->sip.
	* list.c/make_client(), s_misc.c/read_motd(): MyMalloc() does outofmemory
	  on its own, no need to do that again.
	* channel.c/jp_chname(), support.c/strtoken(): if cn[1] is null, cn[2]
	  may access rubbish, reverse conditions to not allow it.
	* channel.c/clean_channelname(): if japanese channel name is incorrect,
	  return -1 to allow callee function to react; fix all functions that
	  call clean_channelname() to deal with erroneous channel names.

2.11.2p1

2008-06-24  Piotr Kucharski

	* res.c/proc_answer(), update_list(): fix incorrect caching of ips looked
	  up for C/N-lines (patch from fiction).
	* res.c/m_dns(): show flags for cache entries.
	* initconf(): allow '*' in username part of user@host field of C/N/S line
	  (reported by BR).
	* chkconf.c/openconf(), s_conf.c/openconf(): pass INET6 to m4, if defined
	  (patch from peder).
	* configure.in, configure, setup.h.in: check for GNU m4.
	* chkconf.c/openconf(), s_conf.c/openconf(): pass -I includedir to GNU m4
	  allowing easier configs (patch from peder).
	* chkconf.c/openconf(), s_conf.c/openconf(), setup.h.dist: define to use
	  "-P" flag for GNU m4 (courtesy to peder).
	* s_conf.c/check_split(): set default caccept value after first netjoin.

2008-06-23  Piotr Kucharski

	* res.c: more cleanup, so no v6 related code is in there for #undef INET6.

2008-06-22  Piotr Kucharski

	* class.c/add_class(), initclass(): don't set MaxBSendq if not explicitly
	  set in Y-line (client classes have no need for it anyway).
	* class.c/get_sendq(): don't use MaxBSendq if not set.
	* res.c/gethost_byname_type(), proc_answer(), update_list(), make_cache(),
	  find_cache_name(): add "valid" flags to cache entries, so we use cached
	  entry only when it was ok in both directions; this fixes problems with
	  dual v4/v6 names in dns and also some possible spoofs (patch from fiction).
	* res.c: while at it, little cleanup.

2008-06-21  Piotr Kucharski

	* s_err.c, s_serv.c/m_etrace(): turns out that more fields was granted 
	  different numeric in ratbox, so we change to match theirs; etrace now 
	  behave always like ratbox "etrace -full".
	* s_serv.c/m_sidtrace(): for local clients provide extra fields as well.
	* s_serv.c/m_etrace(): extend oper check to IsAnOper, like sidtrace has.

2008-06-20  Piotr Kucharski

	* s_err.c, s_serv.c/m_etrace(): add additional user fields to output.

2008-06-18  Piotr Kucharski

	* class.c/initclass(): add missing init for maxbsendq for class 0.

2008-06-15  Piotr Kucharski

	* hash.c/hash_find_ip(): stupid bug making iphash unusable (report by tlund).
	* s_serv.c/m_stats(): guard stats f with ACL_TRACE.

2.11.2

2008-06-13  Piotr Kucharski

	* s_err.c: change RPL_ETRACEEND numeric to 759.

2008-06-11  Piotr Kucharski

	* channel.c/m_njoin(): fix negative history count in stats z (by fiction).
	* s_serv.c/m_stats(), m_trace(): show unknown connections only to +w opers.
	* s_err.c, s_serv.c/m_etrace(), m_sidtracce(): use new RPL_ETRACEEND.

2008-06-10  Piotr Kucharski

	* channel.c/set_mode(): change every unset key to '*', so in a case of
	  desynch it will not get exposed on &CHANNEL.
	* struct_def.h: add EXITC_TKLINE.
	* s_conf.c/do_kline(): set properly EXITC_(T)KLINE (reported by BR).
	* s_conf.c/attach_conf(), config.h.dist: allow reverting to previous 
	  behaviour of Y-line host limits with #undef YLINE_LIMITS_IPHASH.
	* parse.c, hash.c, hash_def.h, hash_ext.h, ircd.c, s_user.c, s_misc.c,
	  config.h.dist: if ip hash or hostname hash is not needed, do not compile
	  it in (by the power of #ifdefs).

2.11.2b1

2008-06-09  Piotr Kucharski

	* configure.in, setup.h.in, os.h: check if strings.h can be included
	  along with string.h

2008-06-09  Jakub Vlasek

	* struct_def.h: add iphashv and iphnext used by the IP hash table.
	* hash.c, hash_def.h, hash_ext.h: add IP hash.
	* s_conf/attach_conf(): use hash_find_ip() to check for local and
	  global user limits.
	* s_user.c/register_client(): Add user to the IP hash.
	* s_misc.c/exit_one_client(): Remove user from the IP hash.

2008-06-08  Piotr Kucharski

	* channel.c/can_join(): if channel is opless, allow people matching
	  reoplist to join channel overriding channel limit.
	* s_misc.c, s_serv.c, s_service.c, s_service_ext.h, s_user.c: change
	  "server" argument of check_services_butone from char to aServer.
	* s_user.c/m_message(): allow services to send notices to uids.
	* s_service.c/check_services_butone(), m_service(), m_servset(), 
	  s_misc.c/exit_one_client(), s_serv.c/m_server_estab(), 
	  s_user.c/hunt_server(): allow distribution to be based on SID,
	  not only server name.
	* s_misc.c/get_client_host(): show IP, not hostname, in all those &LOCAL
	  notices about unauthorized access.
	* struct_def.h: increased TOPICLEN, MAXBANS and MAXBANLENGHT.
	* s_user.c/who_one(): show SID between hopcount and user info.
	* s_serv.c/m_stats(): allow multichar stats.
	* s_serv.c/m_stats(), s_debug.c/send_defines(): stats d5 return 005 as well.
	* s_user.c/m_oper(): different message for failed oper attempt if
	  attach_conf() failed with correct password (reported by MJRider).
	* s_user.c/attach_conf(): move checks around to save some cpu cycles.
	* services_def.h, send.c/sendto_flag(): add SERVICE_WANT_CLIENTS.
	* s_err.c: extend replies[] up to 1000 entries.
	* numeric_def.h, parse.c, struct_def.h, s_conf.c, s_err.c, s_serv_ext.h,
	  s_serv.c, config.h.dist: added ETRACE and SIDTRACE commands (from anfl).

2008-06-07  Piotr Kucharski

	* s_user.c/who_find(): service can request who as well and it does not have
	  user struct allocated => instant segv (reported by BR).
	* service_def.h: add SERVICE_WANT_KLINE; unfortunately I had to change value
	  of SERVICE_WANT_TKLINE, otherwise I'd have to rewrite a lot more for
	  strtol() to work.
	* s_user.c/is_allowed(): add kline acl for service.
	* parse.c/parse(): tell service if command is unknown.
	* struct_def.h: another field for aConf when XLINE (to keep hostmask/ip
	  to match against).
	* list.c/make_conf(), free_conf(): add new field.
	* list.c/free_conf(): source_ip stats confmem stats were not updated.
	* s_conf.c/initconf(): read new field if X-line conf (and change where
	  they end up to be a bit more logical).
	* s_user.c/register_user(): update changed fields and match on ip or
	  host of the user.
	* s_serv.c/report_x_lines(): update and add new field.

2.11.2a2

2008-06-06  Piotr Kucharski

	* patricia.c, patricia_ext.h: new files to do CIDR limits (from anfl).
	* class_def.h: new fields in class and macros for them (from anfl).
	* class_ext.h, class.c/add_class(): adding and changing limits (from anfl).
	* list.c/free_class(): freeing patricia (from anfl).
	* s_conf.c/add_cidr_limit(), remove_cidr_limit(): functions to maintain 
	  proper count for each CIDR subnet (from anfl).
	* s_conf.c/detach_conf(), attach_conf(): use above two functions in proper
	  places (from anfl).
	* s_conf.c/initconf(): read one more field for conf line and pass it to
	  add_class() (from anfl).
	* Makefile.in, config.h.dist: make it work (from anfl).
	* INSTALL.*: documentation for CIDR limits.
	* class.c/report_classes(): show CIDR limits if they exist.
	* s_err.c: change RPL_STATSYLINE format to output CIDR limits too.

2008-06-04  Piotr Kucharski

	* s_user.c/register_user(): improve CCL_CONNINFO to show all fields of
	  connecting USER.

2.11.2a1

2008-06-03  Piotr Kucharski

	* send.c, struct_def.h, support.c, channel.c, channel_ext.h, s_bsd.c,
	  s_debug.c, s_serv.c, config.h.dist: added JP patch (huge!).

2007-12-16  Piotr Kucharski

	* s_conf.c/prep_kline(): tiny bug squashed, added more checks.
	* os.h, send.c, struct_def.h, support.c, support_ext.h, res.c, s_auth.c, 
	  s_bsd.c, s_conf.c, s_misc.c, s_serv.c, s_user.c: clean mydummy stuff, 
	  use better descriptive name ipv6string and standard name and length for 
	  INET6_ADDRSTRLEN (patch from fiction).
	* s_serv.c/m_server_estab(), s_bsd.c/completed_connection(): make
	  sending additional options in PASS more compact.
	* channel_ext.h: define get_channelmask to rindex-find ':' in name.
	* send.c/sendto_match_servs(), send.c/sendto_match_servs_v(),
	  send.c/sendto_match_servs_notv(), channel.c/check_channelmask(),
	  channel.c/m_join(), channel.c/m_part(), s_send.c/esendto_match_servs():
	  use get_channelmask() instead of rindex() where appropriate.
	* channel.c: change name or parv to chptr->chname where appropriate;
	  tiny sideffect: clients will see channel names cased as created,
	  not as they issued.

2007-10-28  Jakub Vlasek

	* s_misc.c/exit_one_client(): Send QUITs of killed users to services
	  with SERVICE_WANTS_QUIT.

2007-04-10  Jakub Vlasek

	* struct_def.h: Added is_rreop to struct stats.
	* channel.c/set_mode(): Count number of remote reops.
	* s_misc.c/tstats(): Report number of remote reops seen.

2007-03-30  Jakub Vlasek

	* struct_def.h: Added is_reop to struct stats.
	* channel.c/reop_channel(): Keep count of local reops made.
	* s_misc.c/tstats(): Report number of local reops made. 

2007-03-15  Kurt Roeckx

	* common/os.h: Define _GNU_SOURCE on all systems making use
	  of glibc.  This should fix build problems on *BSD systems
	  using glibc.  Patch from Cyril Brulebois.

2006-08-30  Piotr Kucharski

	* ircd.c/try_connections(): maxlinks of 0 would incorrectly, even if only
	  temporarily, disable calling try_connections (noted by fiction).

2006-06-17  Piotr Kucharski

	* s_serv.c, s_serv_ext.h, ircd.c/main(): be a bit more verbose about
	  startup errors about server name.
	* s_serv.c/m_server_estab(): show "from my.server.name" in directly
	  received SERVER message, so it is the same as remote SERVER.
	* s_conf.c/attach_conf(), config.h.dist: new behaviour of Y-line limits.

2006-05-03  Piotr Kucharski

	* struct_def.h: extend ConfItem to have another text field.
	* struct_def.h: add UnregItem for temp storage of USER params.
	* s_conf.c/initconf(): read 5th field (ie. nick) of X-line.
	* s_user.c: remember 2nd and 3rd USER param in unregList.
	* s_user.c: move X-line check from m_user to register_user, use
	  unregList for it; also move exit_client for X-line up.
	* s_misc.c/exit_client(): remove client data from unregList.
	* list.c/make_conf(), free_conf(): update for name2 field.
	* struct_def.h, s_user.c: get rid of unregList and remember 2nd and 3rd
	  USER param directly in aClient struct, so it is accessible also after
	  register_user().
	* list.c/make_client(), free_client(): update for user2, user3 fields.
	* s_misc.c/exit_client(): get rid of unregList.
	* s_serv.c/report_x_lines(): show 5th field.

2006-04-30  Kurt Roeckx

	* s_bsd.c/CHECK_PFD(): Initialise revents to 0 too.

2006-04-28  Piotr Kucharski

	* ircd.c/main(): show IRCDCONF_DELIMITER in 'ircd -v'.

2006-04-26  Piotr Kucharski

	* channel.c/remove_user_from_channel(), set_mode(): make reop a bit random,
	  so not always one server wins.
	* struct_def.h, ircd.c/main(), try_connections(), s_misc.c/check_split(),
	  initruntimeconf(), s_serv.c/m_server(), m_connect(): standalone mode.
	* s_bsd.c/start_iauth(), s_conf.c/rehash(): "rehash a" restarts iauth
	  (no other way to reread iauth.conf currently).
	* s_conf.c/rehash(): "rehash d" reinitializes dns (rereads resolv.conf).
	* ircd.c/s_rehash(), io_loop(): deal with consecutive SIGHUPs properly.

2006-04-25  Piotr Kucharski

	* configure, configure.in: detect Solaris 10 properly.
	* mod_pipe.c/pipe_start(): pass chars, not integers (from Zobo).
	* s_debug.c/show_defines(): show compiled in SPLIT_SERVERS and SPLIT_USERS.
	* s_serv.c/m_eoback(): clear byuid so it won't notice oper later.

2005-12-27  Piotr Kucharski

	* list.c/free_client(): MyConnect is not a valid check in free_client()
	  (noticed by fiction).
	* bsd.c/deliver_it(): return correct errno eagain. (noticed by fiction).

2005-12-06  Piotr Kucharski

	* s_user.c/do_nick_name(), config.h.dist: MINLOCALNICKLEN allows
	  enforcing minimum length of nickname for local clients.
	* s_debug.c/send_defines(): show MINLOCALNICKLEN (as N0).

2005-12-05  Piotr Kucharski

	* bsd.c/deliver_it(): return correct errno (not always EPERM) also when
	  not in debug mode (noticed by fiction).

2005-11-17  Piotr Kucharski

	* s_conf.c, s_conf_ext.h: added m_kline().
	* s_conf.c/prep_kline(), do_kline(): updated for kline cmd.
	* parse.c: add KLINE cmd.
	* struct_def.h: add ACL_KLINE.
	* s_conf.c/oline_flags_to_string(), oline_flags_parse(): add ACL_KLINE.
	* Makefile.in: add KLINE_PATH define.
	* config.h.dist: add KLINE (default off) and OPER_KLINE defines.
	* s_conf.c/prep_kline(): u@h length checks.
	* s_conf.c/prep_kline(): writing klines to kline file.

2005-11-15  Piotr Kucharski

	* chkconf.c: compile warnings about redefining MyMalloc.
	* service.c/m_squery(): use UID as source if service wants UIDs.
	* s_conf.c: renamed do_tkline to do_kline, renamed m_tkline to
	  prep_kline, added small m_tkline calling prep_kline.

2005-09-02  Piotr Kucharski

	* s_serv.c/m_squit(): find_server() before searching among clients.

2005-07-10  Piotr Kucharski

	* channel.c/m_njoin(): get rid of ^V in mbuf, we never use it.
	* hash.c/bigger_hash_table(): don't add ME to uid hash.
	* s_bsd.c/connect_inet(): don't parse empty source ip (reported by
	  fantomas).
	* s_bsd.c/inetport(): do not sscanf null ipmask (reported by MJRider).

2005-06-01  Piotr Kucharski

	* s_serv.c/m_set(): manual SET CACCEPT ON activates delayed listeners.
	* s_bsd.c/init_sys(): set soft limit on core size to its hard value;
	  warn if not unlimited.

2.11.1p1

2005-05-27  Piotr Kucharski

	* channel.c/check_channelmask(): don't bother removing, simply
	  return error, when last char is colon.
	* channel.c/check_channelmask(): we no longer use \007, remove
	  and simplify.

2.11.1

2005-05-14  Piotr Kucharski

	* s_serv.c/m_server(): add_to_sid_hash must be after register_server.

2005-05-13  Piotr Kucharski

	* channel.c/check_channelmask(): remove all ':' from end of supplied
	  channelname, not only one.
	* INSTALL, ircd.8, 2.11-New, ircd.conf.example, RELEASE_LOG, 
	  RELEASE_NOTES: doc updates.
	* configure, configure.in, setup.h.in: try to find strlcpy().
	* config_read.c: as fileio.c uses strlcpy, define it to strncpyzt if
	  system does not have it.

2005-04-26  Piotr Kucharski

	* config_read.c/config_read(): use MyMalloc, not malloc (from kinlo).

2.11.1a2

2005-04-13  Piotr Kucharski

	* s_user.c/hunt_server(): aware of sid now.
	* s_conf.c/initconf(), config.h.dist: define to speed up rehash at 
	  the expense of memory (from anfl).
	* config.h.dist: increase some defaults to suit IRCnet better.
	* config.h.dist: increase default LOCALNICKLEN to 15.
	* configure, configure.in, Makefile.in: add --with-rundir (ircd pid
	  and tune files) option.
	* s_debug.c/send_defines(): show current istat.is_eobservers in
	  addition to SPLIT_SERVERS value (and similar for users).

2.11.1a1

2005-03-30  Piotr Kucharski

	* s_user.c/m_nick(): prevent (however unlikely) possibility to change
	  user nick to uid of another server.
	* channel.c/set_mode(): allow mixing +R and other modes.
	* ircd.c/setup_signals(), s_slave(): ignore (and not die) USR1 if
	  USE_IAUTH is not defined.
	* s_serv.c/m_links(), s_err.c: show SID after hopcount in LINKS.

2005-03-29  Piotr Kucharski

	* channel.c/m_join, m_part(), m_topic(), s_misc.c/exit_one_client(),
	  s_user.c/m_nick, m_unick(), m_away(), send_umode_out(), save_user():
	  use sid or uid as source of message, not nick.

2005-02-22  Piotr Kucharski

	* struct_def.h, send.c/setup_svchans(), sendto_flag(), logfiles_open(),
	  logfiles_close(), Makefile.in: possibility to log server channels.
	* res.c, config.h.dist: drop SIXBONE_HACK.
	* s_conf.c/m_tkline(): expand ipv6 short form addresses, so they work.
	* chkconf.c/validate(): use IRCDCONF_DELIMITER, not ':'.

2005-02-21  Piotr Kucharski

	* s_bsd.c/add_connection(): clone rejects were not properly logged.

2005-02-20  Piotr Kucharski

	* s_user.c/m_nick(): drop 2.10 related code (introducing new clients
	  from servers using NICK).
	* s_user.c/m_user(): drop 2.8 related code (passing new clients info
	  from servers using USER).

2005-02-19  Piotr Kucharski

	* channel.c/set_mode(): do not rebroadcast +lk if they come from server
	  and are already set.

2005-02-17  Piotr Kucharski

	* s_conf.c/do_tkline(), m_tkline(): use time_t, not int.
	* config.h.dist: limit TKLINE_MAXTIME to 99999999.

2005-02-15  Piotr Kucharski

	* s_conf.c/initconf(): use fdopen again.
	* fileio.c, fileio.h: new files imported from ircd-ratbox, for use
	  instead of buggy FILE functions on Sun.
	* config_read.c: redefine fopen() to ratbox fbopen() etc. when being
	  compiled on Sun.
	* s_user.c/m_oper(): honour LOGFILES_ALWAYS_CREATE for oper log too.
	* chkconf.c/initconf(): ignore tabs and spaces in flags field.
	* channel.c/reop_channel(): return 1 only when we did reop.

2005-02-11  Piotr Kucharski

	* s_conf.c/initconf(): do not use buggy fdopen.

2005-02-10  Piotr Kucharski

	* config.h.dist, s_bsd.c, s_debug.c, s_err.c, s_serv.c, s_user.c:
	  changed some define names to avoid confusion.
	* channel.c/set_mode(): remove not sending +R to old servers.
	* channel.c/m_join(), m_njoin(), m_kick(): remove calls to 
	  sendto_match_servs_notv() (and buffers around them).
	* send.c: ifdef-out unused pieces of code (sendto*_servs_notv).

2005-02-09  Piotr Kucharski

	* channel.c/m_join(): get rid of ^G hack; simplify, as we don't get
	  JOIN from other servers.
	* channel.c/m_join(): tiny bug, JOIN 0,#chan did not join #chan.
	* s_serv.c/get_version(): anything below 2.11.0b12 is too old.
	* s_serv.c/m_squit(): SV_OLDSQUIT is gone.
	* s_serv.c/m_server_estab(): drop too old servers.

2005-02-08  Piotr Kucharski

	* struct_def.h: removed ST_UID and ST_NOTUID.
	* parse.c, send.c, channel.c, s_misc.c, s_send.c, s_serv.c, s_user.c,
	  s_service.c: changed ST_UID to IsServer, changed ST_NOTUID to false.
	* send.c, send_ext.h: removed unneeded sendto_match_butone_old().
	* s_user.c/m_message(): removed sendto_match_butone_old().
	* channel.c/send_channel_modes(): no need for special case for +R.
	* s_misc.c/mark_blind_servers(), exit_client(), exit_one_client(),
	  s_serv.c/m_squit(), send_server(), m_server(), m_server_estab(),
	  m_eob(), s_service/m_service(), s_user.c/register_user(): removed
	  always matching conditions and never matching conditions and code.
	* parse.c/find_sender(), s_id.c/sid_valid(), s_serv.c/m_server(),
	  m_server_estab(), m_trace(): sid cannot have '$' anymore.
	* s_user.c/m_kill(): no "old" servers, no sendto_serv_notv() using.

2005-02-07  Piotr Kucharski

	* struct_def.h: removed HasUID macro.
	* channel.c, hash.c, s_bsd.c, s_misc.c, s_serv.c, s_service.c, s_user.c:
	  change HasUID to (x)->user.

2005-02-06  Piotr Kucharski

	* channel.c/set_mode(): allow -r on all channels.

2005-02-04  Piotr Kucharski

	* struct_def.h et al: change ONICKLEN to LOCALNICKLEN, which is allowed
	  from local clients.
	* config.h.dist: default LOCALNICKLEN 12.
	* common_def.h: removed isscandinavian() macro.
	* s_user.c/do_nick_name(): removed isscandinavian() checks, []{}\|
	  are again in use for nicks.
	* channel.c: removed convert_scandinavian(), []{}\| are again in
	  use for channel names.
	* match.c: ~ (tilde) is valid for nicks now.
	* s_user.c/do_nick_name(): no need for special case of ~ from servers.
	* channel.c/set_mode(): allow +R from all chanops.

2005-01-30  Piotr Kucharski

	* configure.in, configure: suncc adds space in front thus breaking grep.
	* s_bsd.c/free_server(): there should be cptr->name, not cptr.
	* s_serv.c/m_server_estab(): move clearing of burst state to m_eoback().
	* class_def.h: add bsendq (burst sendq).
	* s_err.c, class.c/report_classes(): show bsendq in STATSYLINE.
	* class_ext.h, class.c/get_sendq(): return bsendq or sendq depending on
	  new param "bursting".
	* send.c/send_message(), channel.c/m_list(): update get_sendq() call.
	* class.c/add_class(): new param bsendq (empty equal sendq)
	* send.c/initconf(): parse sendq.bsendq in conf.
	* send.c/send_message(): remove ignoring sendq exceeding during burst
	  as we now have burst sendq.
	* s_serv.c, s_serv_ext.h: remove do_emulated_eob().
	* s_user.c/m_pong(), s_numeric.c/do_numeric(): remove do_emulated_eob()
	  calls.
	* s_serv.c/m_server_estab(): don't PING anymore (EOB emulation).

2005-01-30  Piotr Kucharski, Kurt Roeckx

	* struct_def.h: removed stok, tok, ltok.
	* parse.c, parse_ext.h: removed find_tokserver().
	* hash.c,hash_def.h,hash_ext.h: removed SERVERSIZE (using SIDSIZE
	  on its own), removed serverTable hash, removed hash_find_stoken(),
	  clear_server_hash_table(), add_to_server_hash_table(),
	  del_from_server_hash_table(), functions and updated inithashtables(),
	  bigger_hash_table(), show_hash_bucket().
	* ircd.c/ircd_writetune(), ircd_readtune(): store and retrieve _SIDSIZE
	  instead of _SERVERSIZE.
	* list.c: removed used_tokens[] bit table.
	* list.c/make_server(): removed tokens.
	* s_misc.c/exit_one_client(): del_from_server_hash_table() call removed.
	* s_serv.c/m_server_estab(): removed sending old syntax SERVICE.
	* s_serv.c/m_server(), m_server_estab(): add_to_server_hash_table() call
	  removed.
	* s_serv.c/m_squit(), send_server(), m_server(), m_server_estab(),
	  m_smask(), m_eob(): removed sending, parsing and receiving tokens (use
	  sids, if possible) and compatibility sids.
	* s_serv.c/m_smask(), m_server(): make_server() cannot fail due to lack
	  of tokens, removed if-failure code.
	* service_def.h: removed SERVICE_WANT_TOKEN, added SERVICE_WANT_SID.
	* s_service.c/sendnum_toone(), m_service(), m_servset(): removed tokens
	  and 2.10 protocol.
	* s_user.c/register_user(): NICK introducing new client is no longer
	  used between servers.
	* s_user.c/m_user(): find_tokserver() call removed.

2005-01-27  Piotr Kucharski

	* mod_webproxy.c/proxy_init(): off-by-one config parse error.

2005-01-03  Kurt Roeckx

	* ircd.c/check_pings(): Initialise the reason variable.  It could be
	  used uninitialised when TIMEDKLINES is not defined.
	* configure, setup.h.in, os.h: Make configure detect the arguments of
	  accept() and use the 3rd argument for SOCK_LEN_TYPE, which should be
	  socklen_t in most cases.
	* mode_pipe.c/pipe_start(): Properly terminate the call to execlp()
	  with a (char *)NULL.
	* os.h, support.c, support_ext.h, a_io.c, nameser_def.h, res.c,
	  s_bsd.c: Don't use macro variables as #if VAR but use #ifdef VAR
	  or #if defined(VAR)
	* s_bsd.c, s_bsd_ext.h, send.c, mkpasswd.c, iauth.c, chkconf.c,
	  class.c, hash.c, ircd.c, list.c, res.c, res_init.c: Give all
	  definitions and declarations of function a proper prototype:
	  add void as parameter if none is used.
	* parse.c/find_target(): When using $SID, it checked the wrong
	  variable which was always NULL, resulting in it never finding 
	  those servers.

2005-01-02  Kurt Roeckx

	* configure.in/configure: Use AC_CHECK_LIB to check if pow needs -lm.
	* config.guess/config.sub: Update to latest versions.

2.11.0

2004-12-21  Piotr Kucharski

	* README, RELEASE_LOG, RELEASE_NOTES, iauth-internals.txt: update.

2004-12-16  Piotr Kucharski

	* iauth.conf.5: reason is all-module option, move docs around.

2004-12-15  Piotr Kucharski

	* channel.c/check_channelmask(): empty mask matches any, just in case
	  ':' is last char in channel name (problem reported by pigreco).
	* s_serv.c/m_set(): check for split after doing SET SPLIT (suggested
	  by fiction).

2.11.0b21

2004-12-12  Piotr Kucharski

	* s_user.c/m_nick(), m_user(): call exit_client with cptr, not NULL,
	  so it returns FLUSH_BUFFER to parse().
	* s_serv.c/report_myservers(): show version and zip.

2004-12-10  Piotr Kucharski

	* send.c/send_message(): tame notices about maxsendq exceeded, allow
	  for complete disabling via define.
	* config.h.dist: MAXSENDQ_NOTICES define.
	* config_read.c/config_error(): add "\n" when printing to stdout.

2.11.0b20

2004-12-06  Piotr Kucharski

	* config_read.c/config_read(): changed interface from mmap to fgets.
	* chkconf.c/showconf(), initconf(), s_conf.c/initconf(): adjustments
	  to config_read() change.
	* config.h.dist, configure.in, setup.h.in, os.h: removed mmap().
	* config_read.c/config_read(): more safety caps (snprintf and fdn).

2004-11-30  Piotr Kucharski

	* config_read.c/config_read(): add some guardians for border cases.

2.11.0b19

2004-11-29  Piotr Kucharski

	* send.c/send_message(): use to->name, not get_client_name in &notices.
	* s_user.c/m_nick(), config.h.dist: DISABLE_NICK0_REGISTRATION define.

2.11.0b18

2004-11-20  Piotr Kucharski

	* s_serv.c/check_link(): except remote services.
	* struct_def.h/msgtab[]: allow the same set of commands for services as
	  2.10 allowed.

2004-11-19  Piotr Kucharski

	* send.c/send_queued(): use strerror, not errno.
	* send.c, channel.c, config_read.c, hash.c, s_user.c, whowas.c: remove
	  some unused variables to get rid of warnings (compilation warnings of
	  today noted by Andreas Ley).
	* s_bsd.c/read_message(): move write_err declaration out to get rid of
	  some errors.
	* s_bsd.c: new function add_connection_refuse().
	* s_bsd.c/add_connection(): change gotos to inside block to function
	  call (to avoid compiler warnings).
	* struct_def.h: ConfItem->pref can be -1, so int, not u_int.
	* list.c/make_conf(): bzero IN_ADDR size for INET6 sake.
	* s_conf.c/match_ipmask(): badmask for ipv4 masks between 32 and 96
	  when INET6.
	* s_conf.c/do_tkline(), m_untkline(): send notices to config.h-defined
	  channel.

2004-11-16  Piotr Kucharski

	* send.c/dead_link(): make it va-aware, don't hardcode get_client_name,
	  let caller give all arguments it needs.
	* send.c: adjust to new dead_link().
	* bsd.c/deliver_it(): return errno from send.
	* send./send_queued(): put errno returned from deliver_it() in notices.
	* ircd.c/main(): allow -T without filename.
	* ircd.c/ircd_writetune(): return without error if empty filename.
	* ircd.c/bad_command(): make it void and update for -T change.

2004-11-15  Piotr Kucharski

	* os.h: typedefs incorrectly written.

2.11.0b17

2004-11-14  Piotr Kucharski

	* s_serv.c/m_server_estab(): send njoin dot for other server to lock
	  empty channel; also send modes for empty !channels.
	* ircd.c/check_pings(): don't check pings more often than once in 30s.
	* config.h.dist: default LISTENER_DELAY 1 for undefined SLOW_ACCEPT.

2004-11-13  Piotr Kucharski

	* config.h.dist: move L/DCTL to struct_def.h as they must not be ever
	  changed.
	* a_conf.c/conf_err(): exit with code 1, not 0.
	* configure.in, configure, setup.h.in, os.h: use newer AC_CHECK_TYPES
	  autoconf macro and use typedef instead of defines for types.
	* configure.in: AC_CHECK_TYPES now also includes <sys/bitypes.h> to fix
	  some configure/compilation errors on some platforms (problem noted by
	  Andreas Ley).
	* channel.c/m_njoin(): move get_channel() out of strtoken loop.
	* channel.c/m_njoin(): njoin dot hack for locking empty channels.

2004-11-11  Piotr Kucharski

	* send.c/send_message(): default define to allow increasing poolsize
	  all the time, not only during bursts.

2004-11-10  Piotr Kucharski

	* config.h.dist, s_bsd.c/read_listener(), read_message(): speed up
	  accepting new clients tenfold by default; make it configurable.
	* s_bsd.c/read_message(): keep existing (primary) error on cptr.
	* s_conf.c/initconf(): make sure sid is uppercase.
	* send.c/send_message(): no need to increase sendq and poolsize
	  for bursting clients when they exceed their maxsendq.
	* send.c/send_message(): no need to increase sendq when poolsize
	  is exceeded.

2004-11-09  Piotr Kucharski

	* a_conf.c/conf_err(): print errors to stderr.
	* configure: fix --disable-ip6.
	* struct_def.h: add ping to aClient.
	* ircd.c/check_pings(): use cptr->ping.
	* s_conf.c/attach_conf(): set cptr->ping.

2004-11-04  Piotr Kucharski

	* send.c/vsendpreprep(): do not use sockhost (breaks I-line 'M' flag).
	* send.c/vsendpreprep(): overall simplification.
	* s_misc.c/get_client_name(): use host for registered users, sockhost
	  for others (so make I-line 'M' flag working better); also use sip for
	  registered users.

2.11.0b16

2004-11-03  Piotr Kucharski

	* hash.c/bigger_hash_table(): fix serverTable grow bug.
	* channel.c/send_mode_list(), send_channel_modes(): use sid, not ME,
	  where appropriate.
	* ircd.c/setup_me(): set ourself SV_UID.

2004-11-02  Piotr Kucharski

	* s_conf.c/m_tkline(), config.h.dist: TKLINE_MAXTIME define.
	* s_serv.c/m_stats(), config.h.dist: DISABLE_STATSTKLINE define.
	* s_conf.c/m_tkline(): show tkline reason in notice.
	* send.c/svchans[], struct_def.h, channel.c/setup_server_channels():
	  added &OPER server channel.
	* s_serv.c/can_join(): make &OPER server channel oper only.
	* s_conf.c/do_tkline(): send TKLINE notices to &OPER.
	* res.c/get_res(): do not show nameserver IP in error message.
	* s_user.c, s_user_ext.h: new function send_away() (idea from fiction).
	* channel.c/m_invite(), s_user.c/m_message(): use send_away().
	* config.h.dist: AWAY_MOREINFO define.
	* hash.c: add guardians for possible loops in hashes.
	* s_conf.c/wdhms2sec(): !input there should be.
	* a_conf.c/conf_read(): fix negation for ip masks.

2004-11-01  Piotr Kucharski

	* Makefile.in: config file define for tkserv (not always ircd.conf).
	* tkconf.h.dist: use ".bak" suffix for config file backup.
	* s_conf.c/do_tkline(): show notice only if there were more than four
	  hits for a tkline.
	* Makefile.in: introduce IRCDCONF_DIR for chkconf and s_conf.o pointing
	  to dir where ircd.conf is located.
	* chkconf.c/showconf(), config_read.c/config_read(),config_error(): use
	  IRCDCONF_DIR instead of extracting it from IRCDCONF_PATH.
	* tkserv.c: use IRCDCONF_DELIMITER (from fiction).
	* tkserv.c/main(): updated registration for ircd 2.11.
	* s_conf.c: new function wdhms2sec() allowing to use 1w2d3h4m5s format
	  in tkline commands. Default (only number) is minutes.

2004-10-30  Piotr Kucharski

	* s_bsd.c/check_client(): nullify cptr->hostp when IP mismatch, so
	  "Unauthorized" shows IP, not an incorrect hostname (from fiction).
	* channel.c/m_topic(): simplified a bit.

2004-10-29  Piotr Kucharski

	* res.c/proc_answer(): allow any char in CNAME to allow RFC2317 reverse
	  delegation.

2004-10-27  Piotr Kucharski

	* match.c/match(): return NOMATCH for null masks too.
	* chkconf.c/initconf(): updated I-line flags, added O-line flags.
	* s_serv.c: change name of dump_sid_map to dump_map_sid.
	* s_serv.c/dump_map*(): add "mask" parameter to limit output.

2.11.0b15

2004-10-26  Piotr Kucharski

	* ircd.c/main(): move logfiles_open() below daemonize(), this fixes
	  bug of logs getting to a client (bug reported by dojo and Borys,
	  found by BitKoenig).
	* s_bsd.c/daemonize(): fclose(stderr), fclose(stdin) additionally;
	  also remove second local[0] setting.
	* send.c/logfiles_open(): clear local[] too, just to be safe.
	* s_serv.c/m_motd(): make motd work for unregistered clients.
	* s_serv.c/m_motd(): bigger penalty for unregistered clients.
	* config.h.dist, parse.c: add MOTD_UNREG define.
	* parse.c: require 2 params for ENCAP.
	* s_serv.c/m_encap(): broadcast ENCAP.
	* s_user.c/m_kill(): send killed user@host[serv/sid] to syslog too.

2004-10-23  Piotr Kucharski

	* struct_def.h: moved count, rcount, bytes from Message to Cmd struct,
	  also added rbytes.
	* parse.c/msgtab[], parse(): make stats (count, bytes) per handler, not
	  per command.
	* s_serv.c/m_stats(), s_err.c/replies[]: show per handler stats.

2004-10-21  Piotr Kucharski

	* configure: remove own checks for stdarg.
	* setup.h: remove USE_STDARG.
	* os.h: depend on HAVE_STDARG_H, not USE_STDARG.

2004-10-20  Piotr Kucharski

	* ircd.c/try_connections(): increase hold for best, so other servers
	  will have chance to be tried in next round.

2004-10-13  Piotr Kucharski

	* s_serv.c/m_set(): new "SET SPLIT".
	* config.h.dist: increased default SPLIT_SERVERS and SPLIT_USERS.
	* s_serv.c/m_map(): swap SID and usercount.

2004-10-09  Piotr Kucharski

	* send.c/logfiles_close(): set fd to -1 after closing.
	* s_send.c/esendto_channel_butone(): missing param (though function
	  not yet used).

2004-10-07  Piotr Kucharski

	* s_conf.c/do_tkline(): send a notice how many tklined.
	* s_user.c/m_ping(): revert removing unnecessary parts of code. Oops.

2.11.0b14

2004-10-06  Piotr Kucharski

	* common/numeric_def.h, config.h.dist, s_err.c, s_serv.c/m_users():
	  added USERS_RFC1459 define to choose between rfc1459 behaviour of
	  USERS and a new one.
	* s_serv.c: add send_users() used in LUSERS and new USERS.
	* s_serv.c/m_users(): new behaviour of USERS command if USERS_RFC1459
	  is not defined.
	* s_serv.c/m_lusers(): send 265 and 266 only if request was for all
	  clients (either no param or param "*").
	* channel.c/m_join(): disable '#' and '!' as first +channel name.
	* s_serv.c/m_stats(): stats k honours TXT_NOSTATSK define.
	* s_user.c/m_ping(): local PING is answered with PONG containing text
	  used as argument to PING; removed unnecessary parts of code.

2004-10-05  Piotr Kucharski

	* numeric_def.h, s_err.c, s_serv.c/m_lusers(): revert 251 and 255
	  numerics changes, readd 266 numeric, change format of 265 and 266
	  numerics to be alike 251 (but with numbers in front).

2004-10-04  Piotr Kucharski

	* moved support/iauth.conf to doc/iauth.conf.example and
	  renamed example.conf to ircd.conf.example
	* Makefile.in: appropriate changes.
	* struct_def.h: change Zdata->outbuf type to Bytef (as defined
	  in zlib headers).
	* s_zip.c: add some casts to get rid of warnings.
	* a_conf.c: add "exit" keyword.
	* s_serv.c/m_server_estab(), s_bsd.c/report_error(): find_uid() can
	  return NULL, better check before MyConnect().

2004-10-03  Piotr Kucharski

	* get rid of more warnings.

2.11.0b13

2004-10-01  Piotr Kucharski

	* struct_def.h, s_debug.c/send_defines(), s_misc.c/initruntimeconf():
	  add caccept to iconf structure.
	* s_serv.c/m_set(): "SET CACCEPT" with "ON", "OFF" and "SPLIT".
	* s_bsd.c/read_listener(): do not accept clients on delayed ports if
	  iconf.caccept if OFF or SPLIT when split.
	* s_serv.c/report_listeners(): when caccept is off (or split), mark
	  such ports "noaccept".
	* get rid of "rcsid defined but not used" warning.
	* send.c, send_ext.h: initanonymous() function to get rid of that
	  damn "missing braces around initializer" warning.
	* ircd.c/main(): run initanonymous().
	* a_defines.h: include common_def.h so isalpha/isdigit is consistent
	  with ircd (also gets rid of some warnings).
	* config.h.dist: SIXBONE_HACK default off.
	* os.h: include first <syslog.h> and then <sys/syslog.h> (for proper
	  declaration of syslog(), openlog() etc.)
	* got rid of most warnings.

2004-09-28  Piotr Kucharski

	* a_conf.c/conf_read(): allow rfc913 timeout be smaller (but warn).
	* configure.in, configure: --with-zlib takes param now, replacing
	  old --with-zlib-prefix (and removing --with-zlib-library and
	  --with-zlib-include).

2004-09-23  Piotr Kucharski

	* channel.c/reop_channel(): clear ->reop only when we did reop.

2004-09-21  Piotr Kucharski

	* mod_webproxy.c, mod_webproxy_ext.h: new files.
	* new command 'M' in ircd>iauth communication, passing ircd name.
	* a_conf.c: "port" setting mandatory for webproxy.
	* support/iauth.conf: more examples.

2004-09-20  Piotr Kucharski

	* a_conf.c: add "port" setting to modules (mandatory for socks).
	* mod_socks.c: use port from configuration, not hardcoded 1080.

2004-09-16  Piotr Kucharski

	* s_misc.c/exit_one_client(): squit bouncing back to 2.10 with incorrect
	  prefix resulted in "fake prefix" (reported by ZZyZZ).

2004-09-13  Piotr Kucharski

	* mod_socks.c: cleaned and simplified.

2004-09-12  Piotr Kucharski

	* changed LOCAL_KILL_ONLY to OPER_KILL_REMOTE and moved it to other
	  OPER_ defines in config.h.
	* s_auth.c/read_iauth(): allow iauth to kill clients after registration.
	* a_conf.c/conf_read(), iauth.conf.5, a_conf_def.h: "delayed" keyword.
	* a_io.c/next_io(): send fake "done" message to ircd for delayed
	  modules.
	* mod_socks.c/socks_init(): show in conf line if module is delayed.

2004-09-10  Piotr Kucharski

	* configure.in: logdir defaults to $(localstatedir)/log, not directly
	  PREFIX/var/log/ircd.
	* Makefile.in: ircd_var_dir (where .pid and .tune are kept) is again
	  $(localstatedir)/run.
	* Makefile.in: log file names changed from users, rejects, etc to
	  ircd.users, ircd.rejects, ircd.etc (and "ircd" part dependable on
	  $(IRCD) Makefile variable).
	* config_read.c: make quotes around filename in #include optional; also
	  allow for unlimited amount of whitechars around filename.

2004-09-08  Piotr Kucharski

	* send.c/sendto_flog(): save two function calls each log line written;
	  also add comments about logfile contents.
	* example.conf is installed as ircd.conf.example from now on.

2004-09-07  Piotr Kucharski

	* parse.c: allow HAZH without params to allow sending minihelp (noted
	  by fiction).
	* s_id.c, res_mkquery.c: compilation warnings for strict CC (reported
	  by Mark Visser).
	* Makefile.in: few tiny fixes (suggested by Olafur Osvaldsson).
	* config.h.dist: some cleanup (suggested by Core).

2.11.0b12

2004-08-31  Piotr Kucharski

	* s_serv.c/m_stats(): is_allowed I forgot to negate (caught by Borys).
	* struct_def.h: increased MAXBANS to 42.
	* support.c/make_isupport(): add R to MAXLIST.
	* config.h.dist: moved IRCDCONF_DELIMITER from os.h.
	* struct_def.h: increased NICKLEN to 15.

2004-08-27  Piotr Kucharski

	* channel.c/reop_channel(): do not abort reop mechanism if restricted
	  client is channel operator.

2004-08-21  Piotr Kucharski

	* s_serv.c/m_server(): register_server() must be called before
	  add_to_sid/server_hash_table (in case of growing hash tables).
	* s_user.c/m_nick(): silently cut longer nicks from clients (instead
	  of rejecting).
	* swap return values of is_allowed, 1 for ok, 0 for forbidden now.
	* s_serv.c/m_server_estab(): moved sending PASS/SERVER after checking
	  if server exists.

2004-08-18  Piotr Kucharski

	* s_conf.c/initconf(): o:line (local oper) did not revoke remote rights
	  like it should (noticed by Hans Engren).
	* channel.c/setup_server_channels(): make &CLIENTS invite-only.
	* channel.c/can_join(): reverse &CLIENTS join logic: if allowed, let
	  oper in regardless invite-only status, for all others behave normal.

2004-08-17  Piotr Kucharski

	* channel.c/set_mode(): also allow +R from servers. :)

2.11.0b11

2004-08-13  Piotr Kucharski

	* channel.c/set_mode(): allow +R from opers.
	* config.h.dist: allow undefining both SLOW_ACCEPT and CLONE_CHECK
	  (may speed server a bit if admin is aware of consequences).

2004-08-12  Piotr Kucharski

	* ircd.c/try_connections(), config.h.dist: DISABLE_DOUBLE_CONNECTS to
	  overcome problems with two autoconnects to each other.
	* ircd.c/main(): better check for tune filename length.
	* channel.c/m_invite(): as invite works different for existing and
	  non-existing channels, try best and search for shortname !channel
	  (from fiction).
	* s_serv.c/m_squit(): don't quit oper trying to squit ME (from fiction).
	* ircd.c/s_die(): send SDIE to 2.11 servers.
	* s_serv.c/m_sdie(): broadcast received SDIE to 2.11 servers.

2004-08-10  Piotr Kucharski

	* s_bsd.c/check_server(): as trace shows last attached class, attach
	  H: before C/N.
	* ircd.c/main(): check for tune filename length.

2004-08-10  Jakub Vlasek
	
	* s_bsd.c, s_bsd_ext.h: Moved actual cptr->fd closing code
	  to newly created close_client_fd().
	* s_bsd.c/close_connection(): Do not send stop to iauth for
	  outgoing server connections.
	* s_bsd.c, s_bsd_ext.h: Added open_listener() and reopen_listeners().
	* s_bsd.c/add_listener(): Moved actual listener fd related code
	  to open_listener(), do not remove listener if binding to socket fails.
	* s_bsd.c/close_listeners(): Close fd as soon as the listener
	  is marked illegal.
	* s_bsd.c/close_client_fd(): Set fd to -1 to allow inetport() work
	  again on given cptr.
	* s_conf.c/rehash(): Call reopen_listeners().

2004-08-10  Jakub Vlasek

	* s_bsd.c/close_connection(): Do not recurse listeners, remove only
	  unused listeners from ListenerLL.
	* s_conf.c/detach_conf(),rehash(): Check for negative client counts.

2004-08-04  Piotr Kucharski

	* s_user.c/m_quit(): if sptr is server, return at once; also use
	  MyConnect to surround quit reason with double quotes.

2004-08-03  Piotr Kucharski

	* channel.c/m_join(): empty part comment in JOIN 0.

2004-08-03  Jakub Vlasek

	* s_misc.c/read_motd(): Do not leak FD.

2004-08-02  Piotr Kucharski

	* channel.c/del_modeid(): missing parens (noted by Matyas Koszik).
	* channel.c/set_mode(): we change parv directly, so we have to restore
	  it, so another channel loop in m_mode could use it again (noted by
	  Matyas Koszik).

2004-08-02  Jakub Vlasek

	* ircd.c/setup_me(), main(): Call register_server.
	* list.c/free_server(): Don't change svrtop and take only one
	  argument.
	* list.c/free_user(): Take only one argument.
	* s_serv.c, s_serv_ext.h: Added register_server(), unregister_server()
	  and use it in m_server(), m_smask().
	* s_bsd.c, whowas.c, list_ext.h: free_user() and free_server() take
	  only one parameter from now on.
	* s_bsd.c/close_listeners(): Use ListenerLL.
	* config.h.dist: Remove UPHOST. (was used by client)

2004-07-26  Jakub Vlasek
	
	* list.c/free_user(): Call free_server() with the cptr of the server
	  itself, not the user we're currently freeing.

2004-07-15  Piotr Kucharski

	* chkconf.c/main(): missing declaration when in debug mode.
	* s_conf.c/do_tkline(): always send notice about new tkline.
	* s_conf.c/initconf(): fix core on empty ircd.conf.

2004-07-15  Piotr Kucharski

	* chkconf.c: use config_error() instead of fprintf(stderr... and adjust
	  wherever needed for changed filelist (different definition depending
	  on compile-time options).
	* chkconf.c: allow -d and -s, show filenames and linenumbers when -d1 -s.
	* config_read.c/config_read(): added CF_NONE level for printing without
	  filename:linenum prefix.
	* config_read.c, chkconf.c: tidy up.

2004-07-15  Jakub Vlasek
	
	* s_bsd.c/activate_delayed_listeners(): Use ListenerLL.

2004-07-14  Piotr Kucharski

	* chkconf.c/validate(): make it void.
	* chkconf.c: new function showconf() for printing config file as ircd
	  would see it.
	* chkconf.c/main(): new command line option -s.
	* config_read.c/config_read(): do not omit bad #include and comments,
	  put them in config so admin can see problems with `chkconf -s'.
	* config_read.c: new function config_error().
	* config_read.c: new struct aFile, changed struct aConfig.
	* config_read.c: new function new_config_file().
	* config_read.c/config_read(): keep track of line numbers in config.
	* config_read.c/config_read(): new parameter (config file name).
	* s_conf.c/initconf(), chkconf/showconf(), initconf(): config_read()
	  added parameter.
	* config_read.c/config_free(): free also config file stack.
	* config_read.c/config_read(): set file in each new aConfig.
	* config_read.c/config_error(): print traceback for chkconf.
	* config_read.c/config_read(): use config_error() for printing errors.
	* config_read.c/config_read(): don't print IRCDCONF_PATH if no need.
	* config_read.c/config_read(): detect loops.

2004-07-13  Piotr Kucharski

	* s_conf.c: move oper flags config.h restrictions from initconf() to
	  oline_flags_parse(); make flag 'A' equivalent to what's O: in 2.10.

2004-07-12  Piotr Kucharski

	* config_read.c/config_read(): if included file was empty we got core.

2004-07-11  Piotr Kucharski

	* config_read.c/config_read(): do not proceed if error occured, go to
	  next line instead (could be fatal with too long filename).

2004-07-11  Jakub Vlasek

	* ircd.c, ircd_ext.h: Define ListenerLL.
	* s_bsd.c/add_listener(), close_connection(): Use ListenerLL.
	* s_serv.c/report_listeners(): Use ListenerLL.

2004-07-07  Piotr Kucharski

	* configure.in, configure: fix --with-resconf, fix detecting -lm.

2004-07-05  Piotr Kucharski

	* s_conf.c/tkline_expire(): tklines were kept past their expire time.

2004-07-03  Piotr Kucharski

	* channel.c/match_modeid(): introducing ACL_CONNECTREMOTE surfaced year
	  old bug! (noticed by ZZyZZ).
	* struct_def.h: new ACL_NOPENALTY (P), ACL_CANFLOOD (p).
	* s_conf.c/oline_flags_parse(), oline_flags_to_string(): new flags.
	* parse.c/parse(): don't add penalty if ACL_NOPENALTY.
	* s_bsd.c/read_packet(): don't disconnect if ACL_CANFLOOD.
	* struct_def.h: new ACL_TRACE (t).
	* s_serv.c/m_trace(): ACL_TRACE guard.

2.11.0a10

2004-07-02  Piotr Kucharski

	* s_user.c/find_denied(): added reverse D: (disable AC when given server
	  is absent).
	* s_user.c/save_user(): send saved nick change to &CLIENTS as well.
	* s_service.c/m_servset(): send "EOB" after burst.
	* services_def.h: new SERVICE_WANT_UID.
	* s_service.c/check_services_butone(): if WANT_UID, send it, not nick.
	* s_service.c/sendnum_toone(): if WANT_UID, send appropriate UNICK.
	* s_service.c/m_service(): send 005 to services.
	* services_def.h: new SERVICE_WANT_TKLINE.
	* s_user.c/is_allowed(): check services for being allowed to TKLINE.

2004-07-01  Piotr Kucharski

	* class.c/get_client_class(): return last attached class, not highest.
	* class.c/get_sendq(): use sendq of last attached class, not highest.

2004-06-30  Piotr Kucharski

	* channel.c/match_modeid(): drop special case for '#' matching uids.
	* s_conf.c/initconf(): simplify X-line parsing: just take first 4 fields
	  from config, no flags.
	* s_user.c/m_user(): match on each field separately and also break when
	  all match.
	* s_serv.c/report_x_lines(): show all 4 fields of X-lines.
	* s_conf.c: remove xline_flags_to_string() and xline_flags_parse().
	* struct_def.h: removed no longer needed defines.
	* struct_def.h: xline exempt related defines added.
	* s_conf.c/iline_flags_parse(), iline_flags_to_string(): added 'e' flag
	  for X-line exempt.
	* s_conf.c/attach_Iline(): ClearXlined() if 'e' flag.
	* register_user(): get rid of IsKlineExempt around IsXlined, new flag
	  takes care of it now.
	* s_err.c, config.h.dist: customizable 381 reply.
	* numeric_def.h: new numeric 499.
	* config.h.dist, s_err.c: customizable 499 reply.
	* s_serv.c/m_stats(): if customizable 499 defined, send it to users instead
	  of reporting K-lines (useful for servers with huge list of K).

2004-06-30  Jakub Vlasek

	* struct_def.h: Added FLAGS_XLINED, CONF_XLINE, IsConfXlineWhole(),
	  IsXlined(), SetXlined() and EXITC_XLINE.
	* chkconf.c: recognize X-lines.
	* s_conf.c, s_conf_ext.h: Added xline_flags_to_string(),
	  xline_flags_parse().
	* s_conf.c/initconf(): Parse X-lines.
	* s_serv.c: Added report_x_lines for stats X.
	* s_user.c/register_user(): Exit X-lined clients.
	* s_user.c/m_user(): Check for X-lines.
	* config.h.dist: Added XLINE_EXIT_REASON and XLINE defines.

2004-06-29  Piotr Kucharski

	* s_service.c/m_service(): set FLAGS_CBURST on service.
	* send.c/send_message(): support bursting services.
	* s_misc.c/exit_client(): do not log service quits to users log.
	* send.c/sendto_flog(): revert from tabs to spaces in logs, do not
	  write ending "\n" to syslog and services.
	* s_bsd.c/inetport(): under Cygwin call set_non_blocking() here, not
	  after returning to add_listener() (from Q).
	* send.c/svchans[], struct_def.h, channel.c/setup_server_channels():
	  added &CLIENTS server channel.
	* struct_def.h: add ACL_CLIENTS.
	* channel.c/can_join(): allow join &CLIENTS only if is_allowed().
	* s_conf.c/oline_flags_to_string(), oline_flags_parse(): add '&' flag
	  for ACL_CLIENTS.
	* struct_def.h: CCL_mumble restrictions (for CLIENTS_CHANNEL).
	* config.h.dist: CLIENTS_CHANNEL (undefined) and CLIENTS_CHANNEL_LEVEL.
	* s_misc.c/exit_client(): log client quits to &CLIENTS.
	* s_user.c/register_user(): log client connects to &CLIENTS.
	* s_user.c/m_nick(): log client nick changes to &CLIENTS.

2004-06-28  Piotr Kucharski

	* s_user.c/is_allowed(): silly bug.
	* s_user.c/m_kill(): service can be killed, too, format &KILLS message
	  appropriately.
	* struct_def.h: SCH_* changed to enum.
	* send.c/setup_svchans(), send.c/sendto_flag(): adjustments to SCH
	  being enum (and starting from 0).

2004-06-27  Piotr Kucharski

	* s_serv.c/check_link(): make check_link() accept sptr, not cptr.
	* s_serv.c/check_link(): free opers from RPL_TRYAGAIN.
	* s_serv.c/m_stats(): change a little what's subject to RPL_TRYAGAIN
	  for users (now only stats i c k m t z).

2.11.0a9

2004-06-26  Piotr Kucharski

	* s_user.c/m_kill(): recent cleaning did too much, we must not cut the
	  path from remotes.

2004-06-25  Piotr Kucharski

	* config.h.dist, send.c/logfiles_open(): LOGFILES_ALWAYS_CREATE define.
	* s_serv.c/m_squit(): show server name, not sid, in wallops.
	* s_serv.c/m_close(), res.c/m_dns(), hash.c/m_hash(): add is_allowed().

2004-06-24  Piotr Kucharski

	* parse.c: require 2 params for KILL and SQUIT.
	* s_serv.c/m_squit(), s_user.c/m_kill(): remove code checking and
	  dealing with less than 2 params.
	* struct_def.h: remove ACL enum, use #define ACL_mumble.
	* s_conf.c: new functions oline_flags_to_string(), oline_flags_parse().
	* s_conf.c/initconf(): use oline_flags_parse().
	* s_err.c: add room for oline flags in STATSOLINE.
	* s_serv.c/report_configured_links(): use oline_flags_to_string() to
	  report O:line flags.
	* s_err.c: change 481 to not mention not being irc operator.
	* s_user.c/is_allowed(): use O:line flags to decide access.
	* s_debug.c: removed unused LOCOP_ defines.
	* s_serv.c/m_squit(): use ACL_SQUITREMOTE to decide if allowed.
	* s_serv.c/m_connect(): use ACL_CONNECT* to decide if allowed.
	* s_user.c/m_kill(): use ACL_KILL* to decide if allowed; also remove
	  #ifdef LOCAL_KILL_ONLY, initconf() takes care of guarding it.
	* config.h.dist: OPER_mumble all defined by default.
	* INSTALL: changed O: format and described O:line flags.

2004-06-22  Piotr Kucharski

	* Makefile.in: add implicit dependency for struct_def.h
	* struct_def.h: change definition of SetClient.
	* s_user.c/m_umode(): use SetClient macro.
	* s_conf.c/m_tkline(): moved tkline existence check and nexttkexpire
	  setting to do_tkline().
	* s_conf.c/do_tkline(): removed doall parameter (it always removes all
	  matching clients); also send notice only when new tkline is set. 

2004-06-21  Piotr Kucharski

	* parse.c/parse(): minparams check was flawed.
	* parse.c/parse(): status was computed too early.
	* class.c/initclass(): add default 1.1 limits.
	* s_user.c/m_umode(): incorrect STAT_CLIENT/STAT_OPER change.
	* config_read.c/config_read(): do not prepend ircd conf dir if filename
	  to include begins with slash; also drop <> convention, use only "".

2004-06-19  Piotr Kucharski

	* parse.c/parse(): don't check for min param count for commands which
	  are (for given caller) either ignored or insufficient privs, or unreg.
	* struct_def.h: CONF_TKILL, CONF_TOTHERKILL and ACL_TKLINE.
	* s_conf.c, s_conf_ext.h: new functions: m_tkline(), m_untkline(), 
	  tkline_expire(), do_tkline() and one variable tkconf added.
	* s_conf.c/find_kill(): support for tklines.
	* s_conf.c/rehash(): "rehash t" flushes all tklines.
	* s_user.c/is_allowed(): add ACL_TKLINE case.
	* config.h.dist: TKLINE related defines.
	* s_serv.c/report_configured_links(): aware of tklines (also shows
	  time to live of a tkline, not port).
	* s_serv.c/m_stats(): stats k reports tklines, stats K klines.
	* parse.c: TKLINE and UNTKLINE handlers.
	* ircd.c/io_loop(): call tkline_expire() from time to time.

2004-06-18  Piotr Kucharski

	* s_conf.c: move config_read() to new file.
	* config_read.c: new file with config_read() and config_free().
	* chkconf.c: work (almost) properly with ircd #include directive.
	* Makefile.in: s_conf.o and chkconf.o dependency on config_read.c.
	* s_serv.c/m_rehash(): use first char of first param to REHASH.
	* s_conf.c/rehash(): change sig==2 (was sign of 'q') to sig=='d'.

2004-06-17  Piotr Kucharski

	* s_err.c, s_serv.c: slightly changed LUSERS format (numbers in front,
	  but to ease transition, keep text with numbers too).
	* os.h: removed some client includes of nameser.h.
	* s_misc.c/exit_client(): exit_server() frees sptr, so we have to move
	  usage of sptr->name up.

2004-06-15  Piotr Kucharski

	* parse.c: incorrect minparams for SMASK.
	* parse.c/parse(): exit server when it sends us command with less than
	  minparams parameters.
	* s_serv.c: new function count_servers_users().
	* s_serv.c/trace_one(), report_myservers(): use count_servers_users().
	* s_serv.c/m_lusers(), config.h.dist: removed SHOW_INVISIBLE_LUSERS.
	* numeric_def.h, s_err.c, s_serv.c/m_lusers: RPL_LOCALUSERS and
	  RPL_GLOBALUSERS combined into one RPL_LUSERMAX.
	* s_serv.c/m_wallops(): client wallops are ignored during parse.

2004-06-13  Piotr Kucharski

	* channel.c/set_mode(): reset reop time when +r comes from server (or
	  channel will never get reopped).

2004-06-12  Piotr Kucharski

	* struct_def.h: new enum type ACL.
	* s_user.c: new function is_allowed() meant to replace #ifdef based
	  command restrictions.
	* parse.c, s_serv_ext.h, s_serv.c/m_rehash(), m_restart(), m_die(),
	  m_set(): remove #ifdef OPER_mumble.
	* s_user.c/m_kill(), s_serv.c/m_rehash(), m_restart(), m_die(),
	  m_set(): use is_allowed().
	* s_user.c/m_umode(): remove STAT_OPER status after -o/-O.
	
2004-06-11  Piotr Kucharski

	* struct_def.h: added minparams to Message struct.
	* parse.c/parse(): check for minparams and reject command without even
	  calling function.
	* irc/*, doc/irc.1: removed irc client.
	* match.c, support.c: remove c_*.h includes.
	* configure.in, configure, setup.h.in: adopted to autoheader.
	* acconfig.h: removed (now it's kind of in configure.in).
	* Makefile.in: adapted to no client.
	* s_user.c/m_message(): parse checks param count, removed.
	* msg_def.h: removed.
	* parse.c: merged msg_def.h
	* s_user.c/m_message(): no MSG_PRIVATE, simply "PRIVMSG".
	* removed unneeded occurrences of CLIENT_COMPILE.
	* parse.c/parse(): minparams check failed when it was 0.
	* parse.c, parse_ext.h: new functions: m_ignore, m_noprivileges,
	  m_unregistered and m_registered.

2004-06-08  Piotr Kucharski

	* channel.c/del_modeid(): do not free modeid.
	* channel.c/set_mode(): free modeid after del_modeid(), after using it.

2004-06-06  Piotr Kucharski

	* channel.c/set_mode(): allow +k even if there already is a key set.
	* channel.c/check_string(): use global static asterix.
	* channel.c/make_bei(): use check_string() before copying; also copy
	  at most max lens for each part (problem reported by Marcin Rozycki).
	* channel.c/set_mode(): get rid of make_nick_user_host(), use alist.
	* channel.c/make_nick_user_host(): removed whole function.
	* channel.c/set_mode(): possible tiny memleak fixed.
	* channel.c/make_bei(): alloc & strcpy minimal possible number of bytes.
	* s_user.c/m_user(): parse second USER parameter better, reducing
	  incorrectly assigned +r due to faulty clients.

2004-06-02  Piotr Kucharski

	* match.c/isvalidusername(): allow two non-alphanums in username.

2004-05-24  Piotr Kucharski

	* channel.c/set_mode(): use supplied key when removing, don't change it
	  before sending out to the one on the server.

2004-05-19  Piotr Kucharski

	* parse.c: new server commands: SDIE and ENCAP.
	* s_serv.c: new functions: m_sdie and m_encap (empty yet). 

2004-05-18  Piotr Kucharski

	* channel.c/m_njoin(): properly end buffers before sending.
	* channel.c/m_njoin(): send SID as source to 2.11 servers.
	* send.c/setup_svchans(), channel.c/setup_server_channels(),
	  struct_def.h: new server channel &WALLOPS.
	* send.c/sendto_ops_butone(): rewritten, not sending to +w users,
	  not traversing all fds, simply send to servers and &WALLOPS.
	* s_serv.c/m_squit(), m_server(), m_connect(), m_wallops(), 
	  s_user.c/m_unick(), m_umode(): parameters fix to match rewritten
	  sendto_ops_butone().
	* s_serv.c/m_wallops(): no more +wallops channel, just send notice
	  to &ERRORS about user-issued wallops.

2004-05-16  Piotr Kucharski

	* ircd.c/try_connections(): yet another condition, which could lead to
	  temporarily disabled AC.
	* ircd.c: new function calculate_preference().
	* ircd.c/try_connections(): tidied up, moved calculating preference
	  to new function.
	* ircd.c/try_connections(): move send_ping() to calculate_preference.
	* ircd.c/calculcate_preference(): skip non AC C-lines.

2.11.0a8

2004-05-14  Piotr Kucharski

	* msg_def.h, parse.c, s_serv.c, s_serv_ext.h: new command EOBACK
	  (so far only placeholder).
	* s_serv.c/m_eob(): send EOBACK.

2004-05-13  Piotr Kucharski

	* channel.c/m_njoin(): bug causing small desynch of big channels
	  (sometimes giving NJOIN protocol errors).

2004-05-12  Piotr Kucharski

	* s_user.c/m_kill(): show target user@host[server/sid].
	* class.c/report_classes(): show usage count in Y:lines.
	* s_err.c: add param for RPL_STATSYLINE, removed RPL_TRACECLASS.
	* s_serv.c: removed report_class_usage().
	* s_serv.c/m_stats(): change 'C' (removed) to 'Y'.

2004-05-09  Piotr Kucharski

	* configure, configure.in: more fixes.
	* config.h.dist: check for empty TIMEDKLINES define.

2004-05-07  Piotr Kucharski

	* configure, configure.in: update to work with autoconf 2.57.
	* configure, configure.in, setup.h.in, os.h: check for mmap().
	* s_conf.c, Makefile.in: new function config_read() parsing #include
	  directive in ircd.conf file without calling m4.
	* config.h.dist: new define CONFIG_DIRECTIVE_INCLUDE.
	* s_conf.c/initconf(): use config_read() if defined.

2004-04-18  Jakub Vlasek

	* s_bsd.c/read_message(): Do not check cptrs of delayed listeners.
	* list.c/free_client(): hopcount=1 of directly connected servers.
	* s_misc.c/exit_one_client(): incorrect SQUITs were sent to 2.10 which
	  resulted in strange remote client quits (looking as if whole net was
	  breaking apart).
	* s_misc.c/exit_server(): use from, not &me or else -- otherwise squits
	  get messed up for 2.10 (after all, that's what from is for, eh?)

2.11.0a7

2004-04-17  Piotr Kucharski

	* s_conf.c/match_ipmask(): show original mask in error.
	* s_bsd.c/start_iauth(): send data to iauth in big chunks to save on
	  metadata overhead (from BitKoenig).

2004-04-14  Piotr Kucharski

	* s_misc.c/exit_client(): if remote server matching C-line exits and
	  AC is temporarily disabled, enable it.
	* ircd.c/check_pings(): forgotten IsListener().
	* ircd.c/try_connections(): if no conf suitable for AC found, disable
	  AC temporarily.
	* s_bsd.c/close_connection(): if AC was temporarily disabled and local,
	  not matching C-line server quits, no need for enabling AC; however,
	  if it was in Handshake or Connecting state (not yet Server), enable
	  AC so it tries again.
	* s_bsd.c/get_my_name(): do not fill mysk with resolved hostname from
	  M-line.

2004-04-13  Piotr Kucharski

	* s_misc.c/initstats(): set localc, not remc.
	* list.c/remove_client_from_list(): negative remote client count bug,
	  as directly connected servers have hopcount of 1, not 0.

2004-04-10  Jakub Vlasek

	* config.h.dist: Made OPER_SET #define'd by default.

2004-04-10  Piotr Kucharski

	* channel.c/del_modeid(): memleak, it should've freed modeid.
	* channel.c/set_mode(): memleak, it should've freed tmp->value.alist
	  where it was not used or freed by add_modeid().
	* channel.c/add_modeid(): don't free modeid, let set_mode() do it.

2004-04-07  Piotr Kucharski

	* ircd.c, s_bsd.c, s_bsd_ext.h: reverting changes from 2004-03-07
	  regarding listeners[] table.
	* s_serv.c/report_listeners(): use local[], not listeners[].
	* channel.c/add_modeid(): allow redundant bans for it is users problem,
	  not server, to maintain banlist.
	* struct_def.h, ircd.c, s_bsd.c, s_serv.c: changed IsListening() macro
	  name to IsListener().

2004-03-29  Piotr Kucharski

	* s_user.c/do_nick_name(): allow '~' in nicks from servers.
	* common_def.h: exclude '^' from isscandinavian (no need to disable it).
	* s_user.c/m_nick(): if user used not allowed char in nick, inform him
	  about it, not silently cut given nick.

2004-03-25  Piotr Kucharski

	* s_service.c/m_service(): tiny yet fatal bug messing up hash tables
	  (introduced 2004-03-19).

2.11.0a6

2004-03-24  Piotr Kucharski

	* s_serv.c/m_trace(): code reporting classes usage moved out to
	  separate, new function report_class().
	* s_serv.c/m_stats(): stats C is used to call report_class().
	* s_serv.c/report_configured_links(): show password (reason) field
	  of Q-line.
	* s_serv.c/m_stats(): stats Z behave the same as stats z for non-opers
	  even in debug mode.

2004-03-23  Piotr Kucharski

	* res.c/init_resolver(): a hack to allow resolving inside FreeBSD
	  jail (patch from Gerhard Gonter).

2004-03-22  Jakub Vlasek

	* struct_def.h, s_bsd.c, s_serv.c: Rename IsListeningInactive and
	  SetListeningInactive macros to IsListenerInactive and
	  SetListenerInactive.
	* s_bsd.c, s_bsd_ext.h: Added activate_delayed_listeners().
	* s_misc.c/check_split(): Activate delayed listeners when the server
	  rejoins the network for first time.

2004-03-21  Jakub Vlasek
	
	* ircd.c, ircd_ext.h, s_misc.c/check_split(): Added firstrejoindone
	  variable. Set to 0 between server start and first network rejoin.
	* s_bsd.c/inetport(): Added dolisten parameter to make possible
	  making listeners without calling listen() on them.
	* struct_def.h: Added IsListeningInactive(), SetListeningInactive(),
	  ClearListenerInactive().

2004-03-20  Piotr Kucharski

	* s_conf.c/find_bounce(): allow negative classes in B:lines.
	* s_user.c/m_nick(), m_user(): reject user when it connects to
	  server-only P-line; use B:-1 for redirecting, if available.

2004-03-20  Jakub Vlasek

	* struct_def.h: Added PFLAG_DELAYED, PFLAG_SERVERONLY,
	  IsConfDelayed(), IsConfServeronly().
	* s_serv.c/report_listeners(): Report P-line flags.
	* s_conf.c: Added pline_flags_parse() and pline_flags_to_string().
	* s_conf.c/initconf(): Parse P-line flags.

2004-03-19  Jakub Vlasek

	* s_serv.c/m_server_estab(): Introduce services to 2.11 using new
	  protocol.
	* s_service.c/m_service.c(): Changed SERVICE protocol to send source
	  server as a prefix. Removed server token and hopcount parameters.

2004-03-18  Piotr Kucharski

	* s_conf.c/initconf(): update flags of I:lines in use to the new ones.

2004-03-17  Piotr Kucharski

	* channel.c/m_join(), m_njoin(): send "Fake" notice to &CHANNEL, when
	  member of channel joins it again; when NJOIN, do it when not bursting
	  otherwise keep sending NJOIN protocol error.
	* s_bsd.c/check_init(): don't set fake hostp for localhost clients.
	* ircd.s/setup_me(): no need for me.hostp
	* s_bsd.c/check_client(): no more fake me.hostp, no need to check.
	* s_bsd.c/unixport(): do not unlink unix socket, only report error
	  (other ircd may be using it).
	* send.c, s_bsd.c, s_misc.c, s_user.c, struct_def.h: guard all unix
	  socket uses by #ifdef UNIXPORT

2004-03-16  Piotr Kucharski

	* s_serv.c/m_server_estab(): moves related to namebuf change made
	  server name appear much earlier, thus making find_name() return
	  this, just introduced, server; this caused wrong "Server Exists".

2004-03-15  Piotr Kucharski

	* res_init.c/ircd_res_init(), res.c/init_resolver(), send_res_msg(),
	  get_res(), resolv_def.h: IPv6 nameservers.

2004-03-14  Piotr Kucharski

	* s_bsd.c/get_my_name(): mysk.s_addr was not initialized when M: ip
	  address field was empty.
	* s_bsd.c/check_client(): narrowed the scope of "local" (used in stats
	  t "local connections" and with NO_OPER_REMOTE); now this covers only
	  clients from 127/8, unixsocket or the same IP as in M-line; it works
	  now only when NO_OPER_REMOTE is defined.
	* s_misc.c/read_motd(): correctly parse motd file without ending \n.
	* c_numeric.c: removed RPL_TRACELOG from client.
	* config.h.dist, struct_def.h, ircd.c, s_conf.c, s_misc.c, s_misc_ext.h,
	  s_serv.c: removed CACHE_MOTD, it's default and not possible to turn
	  off; also fixed tiny bug of always reloading motd, not when changed.

2.11.0a5

2004-03-10  Piotr Kucharski

	* s_bsd.c, s_bsd_ext.h: added delay_close() function.
	* s_bsd.c/add_connection(): use delay_close for too rapid connections.
	* struct_def.h: counters wrt delay_close()
	* ircd.c/io_loop(), ircd_ext.h: calling delay_close() when needed.
	* s_debug.c: send DELAY_CLOSE value in stats d.
	* s_misc.c: send stats counters wrt delay_close in stats t.
	* s_serv.c/m_close(): close also all delayed fds.
	* config.h.dist: default DELAY_CLOSE, some sanity checks.
	* s_bsd.c/connect_server(): reversed params to memcpy resulting in
	  "Address family not supported..." errors when connecting.
	* list.c/remove_client_from_list(), free_server(): moved some server
	  related cleaning to free_server(), where it rather belongs.
	* s_bsd.c/add_connection(): we did not deal with aServer structure to
	  be released after make_server().
	* s_serv.c/m_server_estab(): send maskedby->serv->tok in NICK during
	  burst to 2.10 (from jv).
	* s_user.c/register_user(): send real tok to 2.11 servers, even if 
	  client is coming from 2.10, even behind the mask (noted by ZZyZZ,
	  patch from jv).
	* s_service/free_service(): unnecessary free_server() call.

2004-03-09  Piotr Kucharski

	* s_bsd.c/add_connection(): move check_clones() before DNS starts.
	* s_bsd.c/init_sys(): initalize listeners[]; also not bzero, just set
	  all to NULLs.

2004-03-08  Piotr Kucharski

	* s_user.c/m_nick(): DISABLE_NICKCHANGE_WHEN_BANNED, default undefined,
	  allows to do what advertised (only local clients affected, of course).
	* ircd.c/main(): check_servername(ME) added, this disallows things like
	  spaces in server name in M: etc.

2004-03-07  Piotr Kucharski

	* parse.c: DNS command is oper only from now.
	* class.c/get_sendq(): check also for NULL ->nline.
	* s_conf.c/attach_Iline(): make a case for UNIXPORT or else we need
	  "match any" I:line.
	* list.c/make_server(): check and eventually quit earlier, without
	  MyMalloc()ing.
	* struct_def.h, send.c, ircd.c, list.c, s_bsd.c, s_conf.c, s_serv.c,
	  s_service.c: changed cptr->name to pointer, added namebuf[]s of
	  proper sizes to cptr, cptr->serv and cptr->service; this saves us
	  in memory (HOSTLEN-NICKLEN) bytes per each client (5MB on IRCnet).
	* parse.c/remove_unknown(): SID can be source too, treat like server.
	* parse.c/find_sender(): fix core when unknown sid source.
	* s_id.c/check_uid(), s_user.c/m_unick(): check uid introduced if
	  matches source sid.
	* s_user.c/register_user(): not only remove client received in NICK
	  with improper servertok, but also the server that introduced it.
	* s_user.c/register_user(): when iterating over fdas, check for
	  null acptr and IsServer(apctr).
	* ircd.c, s_bsd.c, s_bsd_ext.h: moved listeners from local[] to
	  listeners[] table (preparation for better handling).
	* s_serv.c/report_listeners(): as stats l/L is not returning
	  listeners anymore, show them detailed in stats P.
	* ircd.c, s_bsd.c, s_debug.c, s_err.c, s_serv.c, numeric_def.h,
	  struct_def.h: removed ancient STAT_LOG (and RPL_TRACELOG).

2.11.0a4

2004-03-05  Piotr Kucharski

	* res.c/proc_answer(), get_res(): fix CNAMEs resolving; now we use the
	  name that client IP has "IN PTR" to, not the name that "IN A" 
	  points to client IP (patch from BitKoenig).
	* list.c/make_conf(): initialize flags to 0L.
	* struct_def.h, chkconf.c, s_conf.c, s_serv.c: got rid of CONF_RCLIENT
	  internally -- it's CONF_CLIENT with 'R' flag set.
	* s_conf.c/iline_flags_to_string(): return '-' when no flags.
	* s_serv.c/report_configured_links(): iline_flags_to_string() now
	  returns '-' for no flags, no need to check it here.
	* ircd.c/ircd_readtune(), ircd_writetune(), hash.c/inithashtables(),
	  hash_def.h: introduce UIDSIZE (instead of using HASHSIZE).
	* channel.c/m_kick(): don't send KICKs one by one to other servers,
	  use one KICK per channel; also put UIDs where appropriate.
	* struct_def.h, chkconf.c, s_conf.c: CONF_NORESOLVEMATCH ('M') I:line
	  flag: does not show clients hostname, but allows it to match in beIR.
	* s_user.c/register_user(): use IP for user->host, if 'M' I: flag.
	* channel.c/match_modeid(): try to match sockhost, if 'M' I: flag.
	* hash.c/hash_uid(): little, but still improvement.
	* s_user.c/register_user(): send a notice about disabled host resolving.

2004-03-04  Piotr Kucharski

	* s_conf.c/attach_Iline(): rewritten, now it requires both addr and name
	  to match (if you want old behaviour of "put x in name to disable 
	  clients resolve", just use 'N' flag).
	* s_conf.c/attach_Iline(): 'N' flag working now.
	* s_conf.c/attach_Iline(): moved strcpy/strcat out of aconf loop, that
	  should make it significantly faster.
	* s_conf.c/attach_Iline(): no longer match aconf->name to each alias
	  of a host, use only its hostname.

2004-02-29  Piotr Kucharski

	* s_serv.c/m_squit(): squit without comment bug (noted by Marcin Krol).
	* hash.c/bigger_hash_table(): uid hash table bug (endless loop).
	* s_user.c/m_nick(): another try, this time "NICK 0" seems to work
	  before USER (with help from fiction).
	* s_user.c/register_user(): add_to_client_hash_table() when registering
	  after "NICK 0".
	* struct_def.h, s_misc.c, s_user.c: is_save statistics.
	* channel.c/send_channel_members(): SID as source if ST_UID server.
	* channel.c/m_join(): not only send SID as source where appropriate,
	  but also client joining as UID, if it has one.

2004-02-27  Piotr Kucharski

	* s_bsd.c/add_unixconnection(): return value.
	* s_bsd.c/read_listener(): send notice on client connect.
	* s_user.c/m_unick(): check return value of do_nick_name().
	* s_user.c/m_nick(): don't copy more than ONICKLEN to nick for local
	  clients.

2004-02-24  Piotr Kucharski

	* parse.c, msg_def.h: add "POST" command being alias for "QUIT"
	  to cut w3cache abuse (idea from ircu).

2.11.0a3

2004-02-23  Piotr Kucharski

	* s_serv.c/m_squit(): do not send compatibility sids in SQUIT.
	* s_misc.c/exit_client(): moved adding "by whom" to comment of squit
	  to m_squit().
	* s_serv.c/m_squit(): add "by whom" to comment of squit.
	* parse.c/find_matching_client(): traverse server list from bottom
	  (ME) to up, so we find ourselves first (fixes trace bug).

2004-02-22  Jakub Vlasek

	* s_misc.c/exit_server(): moved "Received SQUIT", so the sequence on
	  &SERVERS is not reversed.
	* s_misc.c/exit_server(): added "from" parameter.
	* s_misc.c/exit_client(): use "from" in remote squit reason.

2004-02-22  Piotr Kucharski

	* s_misc.c/exit_client(): removed unnecessary "Sending SQUIT" notice.
	* s_serv.c/m_squit(): removed unnecessary "Received SQUIT", it's now
	  in exit_server().

2004-02-21  Piotr Kucharski

	* channel.c/m_kick(): "KICK # me,other" caused desync on remote servers:
	  it was sent in two consecutive KICKs, first one removed client from
	  channel and second one thus failed. No more "NJOIN protocol error".
	* s_user.c/register_user(): remove add_to_client_hash_table() when nick
	  was "0", let m_nick() do it.
	* s_user.c/m_nick(): reverted (wrong) fix from 2004-02-19 and disabled
	  "NICK 0" before "USER".

2004-02-19  Piotr Kucharski

	* Makefile.in: when jv rewrote m_hash on 2002-07-04, sums were removed.
	  no need to munch hash.c anymore.
	* s_user.c/m_nick(): we were calling add_to_client_hash_table() twice
	  with UID-nick! Hash tables get corrupted. It was caused by allowing
	  "NICK 0" during registration and was causing endless loop in hash.
	* s_user.c/m_unick(): fixed core in checking for collisions (local
	  unregistered clients have no ->user struct).

2004-02-18  Piotr Kucharski

	* channel.c/m_part(): canonize list of channels first; move comment
	  out of strtoken loop; allow empty comment, don't force it to be
	  user nick.
	* channel.c/m_part(): buffer overflow resulting in network desync.

2.11.0a2

2004-02-17  Piotr Kucharski

	* s_user.c/m_nick(): do not add to hash table nick of "0".
	* s_user.c/register_user(): when NICK 0 was before USER, wait until
	  USER is sent and we know UID -- then change this nick and add it
	  to hash table.
	* s_serv.c/m_stats(): cleanup of what to check_link (RPL_TRYAGAIN).
	* s_serv.c: new function report_listeners() showing P:lines (IP, port)
	  and number of clients using it.
	* s_serv.c: new stats (P) for report_listeners().

2004-02-16  Piotr Kucharski

	* s_serv.c/dump_sid_map(): add bursting time; also rewritten a bit.
	* s_serv.c/m_server_estab(): do not append own SID to "mass" EOB,
	  being source is enough.
	* channel.c/set_mode(): set ->reop when +R from server.

2004-02-15  Piotr Kucharski

	* s_serv.c/m_squit(): return when illegal port is found.
	* support.c/make_isupport(): removed CHARSET, changed CASEMAPPING
	  to ascii.
	* s_serv.c/m_squit(): fixed core (introduced 2004-02-13) when squit
	  issued by oper. ;)
	* s_bsd.c/add_local_domain(): remove ending dot from hname (so it
	  won't assume later it already is fqdn).
	* s_bsd.c/get_my_name(): dot check not needed, add_local_domain does it.
	* channel.c/m_njoin(): revive difference between netjoin and plain join.
	* channel.c/reop_channel(): use ->reop, not ->history, for checking if
	  channel reop is overdue.
	* s_serv.c/report_ping(): comment out debug message.

2004-02-14  Piotr Kucharski

	* s_user.c/m_join(): show nick in error, not UID, when restricted
	  clients does "NICK 0".

2.11.0a1

2004-02-13  Jakub Vlasek

	* s_serv.c/dump_map(): Make *prevserver NULL after processing it.
	* s_serv.c/m_squit(): Handle SQUIT sent by remote server. Send SID
	  to 2.11 servers in SQUIT message.
	* s_misc.c/exit_client(): Send SQUIT to remote server when closing
	  link.

2004-02-13  Piotr Kucharski

	* INSTALL.*, 2.11-New, RELEASE_NOTES, example.conf: update.
	* channel.c/m_join(): do not return "Too many channels" when client
	  tries to join channel he is already on.
	* s_bsd.c/add_local_domain(): fix localhost bug introduced in 2.10.3p5.
	* s_user.c/m_unick(): bug appearing in whowas (after squit users had
	  improper info in server field).
	* version.c.SH.in: INFO update.
	* s_conf.c, chkconf.c: removed U:lines.
	* s_err.c, s_user.c/save_user(): added UID to RPL_SAVENICK.

2004-02-12  Piotr Kucharski

	* s_user.c, s_debug.c, config.h.dist: removed OPER_REMOTE 
	  (now default), though left possibility to define NO_OPER_REMOTE,
	  for those who need it.
	* channel.c/remove_user_from_channel(): record reop time for all
	  channels, not only !chans.
	* s_misc.c, s_misc_ext.h: myrand() and mysrand() added.
	* channel.c/collect_channel_garbage(): a bit rewritten, and made
	  aware of IsSplit not to call reop_channel during split.
	* channel.c/reop_channel(): got rid of "small +r !channels get
	  all clients reopped", unified reop mechanism for both !channels
	  (+R and +r) and #channels (+R), made it more random and of course
	  matching +R.
	* ircd.c/main(), s_conf.c/rehash(): init srand.

2004-02-11  Piotr Kucharski

	* parse.c: unick requires registered connection (msgtab).
	* s_serv.c/m_eob(): show also server name in debug.
	* s_user.c/m_nick(): allow "NICK 0" during registration.

2004-02-10  Piotr Kucharski

	* s_service.c/m_service(): lacking parameter added.
	* channel.c/match_modeid(): bug in matching username part.

2004-02-09  Piotr Kucharski

	* s_conf.c/initconf(), s_serv.c: swap 'o' and 'O' to match umode.
	* ircd.c/setup_me(): SetEOB(me).
	* s_misc.c/check_split(): remove "+1", as &me is SetEOB now.
	* s_serv.c/m_version(), s_err.c: add SID to version output.
	* struct_def.h: TOPICLEN increased.
	* config.h.dist: MCPU increased.
	* RELEASE_NOTES: docs.
	* s_conf.c: erroneous IsIllegal() traps removed.
	* res.c/bad_hostname(): isalnum is enough.
	* s_serv.c/m_server(): move some SID checks earlier.
	* s_conf.c/find_conf_host_sid(): match SID mask (2nd field) in H:.
	* s_serv.c/m_server(): check new server for SID mask match.
	* s_serv.c/report_configured_links(): show SID mask field in STATS H.

2004-02-08  Piotr Kucharski

	* iauth.c: new function write_pidfile().
	* Makefile.in: added IAUTHPID_PATH.
	* s_user.c/m_quit(): enclose local users' supplied quit reasons with
	  double quotes; get rid of default "I Quit" message.
	* s_misc.c/exit_client(): take advantage of double quotes enclosing.
	* s_misc.c/exit_client(): do not call check_split() every client
	  quitting (leave it only every server quitting).
	* s_misc.c/check_split(): tiny unsigned bug.
	* channel.c/m_join(): no-op-on-split.

2004-01-20  Piotr Kucharski

	* channel.c/set_mode(): disallow +R from clients.

2004-01-02  Piotr Kucharski

	* reverting Kurt's changes #2 and #3 from 2004-01-01 (too much
	  champagne?)
	* channel.c/m_join(): allowing to join +q channels regardless
	  of MAXCHANNELSPERUSER.

2004-01-01  Jakub Vlasek

	* s_serv.c/do_emulated_eob(): The value of istat.is_eobservers should
	  have been incremented before SetEOB().
	
2004-01-01  Kurt Roeckx

	* support.c/make_isupport(): Replace MAXCHANNEL by CHANLIMIT.
	* channel.c:add_user_to_channel(), remove_user_from_channel()
		m_join(): Don't count &-channels for MAXCHANNELSPERUSER,
                instead of not counting +q channels.
	* channel.c: m_join(): Allow joining &-channels even when
		MAXCHANNELSPERUSER already reached.
	* support.c/make_isupport(): Replace CHIDLEN by IDCHAN.

2003-12-24  Kurt Roeckx

	* config.guess, config.sub: Newer versions.

2003-12-12  Piotr Kucharski

	* channel.c/match_modeid(): bug in nick check (noted by fiction).

2003-12-09  Piotr Kucharski

	* s_conf.c/find_denied(): try find_client with server name (from C:),
	  not server address.
	* s_bsd.c/close_connection(): when nextconnect was 0, it was not
	  reset when server closed connection. This bug made autoconnect
	  stop forever.
	* s_bsd.c/close_connection(): added another sanity check for the
	  benefit of nextconnect.
	  
2003-11-13  Piotr Kucharski

	* s_user.c/m_pass(): don't copy PASS params to info when issued 
	  after USER or SERVICE (noted by fiction).

2003-11-03  Piotr Kucharski

	* struct_def.h: MODE_REOPLIST was added, MODE_FLAGS needed updating.

2003-10-22  Jakub Vlasek

	* hash.c/m_hash(): Spelling fixes, hash_channel_name() takes 3 params
	  - removed the hashfunc from HashTables[].

2003-10-19  Kurt Roeckx

	* support.c/make_isupport(): Limit to sending 12 tokens in
	  005 numeric.

2003-10-18  Piotr Kucharski

	* ircd.c: new function delayed_kills() for checking kill-lines.
	* ircd.c/io_loop(): add delayed_kills next to check_pings().
	* s_conf.c/rehash(): add "queue" of rehash (when we get rehash
	  while previous delayed_kills did not finish yet).
	* s_conf.c/find_kill(), s_conf_ext.h: change param name, reversed
	  its meaning.
	* s_user.c/register_user(): find_kill param fix 
	* s_misc.c: removed old version of DK.
	* config.h.dist: added MAXDELAYEDKILLS define, removed DELAYED_KILLS.

2003-10-18  Kurt Roeckx

	* os.h: Removed the defenition of in6addr_any.
	* *.c: Remove all K&R syntax.
	* channel.c, str.c, mod_socks.c, list.c, s_id.c, send_ext.h, hash.c,
	  ircd.c, s_misc.c, s_serv.c, irc.c, s_bsd.c, parse.c, iauth.c
	  ircdwatch.c, mkpasswd.c, s_service.c, s_misc_ext.hi, nameser_def.h,
	  res_mkquery.c, s_auth.c, os.h, send.c, support.c:
	  Fix warnings.

2003-10-18  Jakub Vlasek
	
	* bsd.c, config.h.dist: Removed NOWRITEALARM.
	* dbuf.c: Removed VALLOC.
	* s_bsd.c: Removed SUN_GSO_BUG.
	* s_debug.c: Removed SUN_GSO_BUG, VALLOC, NPATH and NOWRITELALARM
	  from serveropts[]. (Not used anymore)
	* s_debug.c: Added TOPIC_WHO_TIME to serveropts[].

2003-10-18  Jakub Vlasek

	* msg_def.h: Added MSG_MAP.
	* numeric_def.h, s_err.c: Added MSG_MAPSTART, MSG_MAP and MSG_MAPEND.
	* parse.c, s_serv_ext.h: Added m_map.
	* s_serv.c: Added m_map(), dump_map() and dump_sid_map().
	* s_serv.c/m_trace(): Allow tracing of a SID.
	
2003-10-17  Kurt Roeckx

	* hash.c, list.c, s_id.c, s_serv.c, s_service.c: Fix warnings
	  (from Robbert Muller)
	* s_service.c/sendnum_toone(): Correctly send modes to the services
	  that requested it. (From Robbert Muller)
	* ircd.c/main(): cygwin (1.5?) can now use iauth.
	* s_bsd.c/daemonize(): Go in the background on cygwin too.
	* dbuf_ext.h, send_ext.h, class_ext.h, hash_ext.h, ircd.c, ircd_ext.h,
	  list_ext.h, res_ext.h, res_init_ext.h, s_auth_ext.h, s_bsd.c,
	  s_bsd_ext.h, s_conf_ext.h, s_id_ext.h, s_misc_ext.h, whowas_ext.h:
	  Fix compile warnings (From Robbert Muller)
	* ircd.c, ircd_ext.h: Get rid of PROFIL.
	* a_conf_ext.h, a_io_ext.h, a_log_ext.h, mkpasswd.c, support_ext.h,
	  channel.c, chkconf.c: Fix compile warnings (From Robbert Muller)
	* c_msg_ext.h, edit_ext.h, irc_ext.h, screen_ext.h: Fix compile
	  warnings (From Robbert Muller)
	* support.c, support_ext.h: Convert dumpcore() to use stdarg.
	* *_ext.h, os.h: Get rid of __P().


2003-10-15  Kurt Roeckx

	* parse.c, send_ext.h, ircdwatch.c, iauth.c, mod_lhex.c, mod_pipe.c,
	  mod_rfc931.c, mod_socks.c, channel.c, ircd.c, list.c, s_misc.c:
	  Fix some warnings (from Robbert Muller)

2003-10-14  Kurt Roeckx

	* send.c, a_conf.c, c_conf_ext.h, s_serv.c: More warning fixes (from
	  Robbert Muller)
	* send.c, ircdwatch.c, a_log.c, mod_rfc931.c, mod_socks.c, chkconf.c:
	  Even more warning fixes (from Robbert Muller)

2003-10-13  Piotr Kucharski

	* res.c/proc_answer(): possible buffer overflow.
	* res.c/get_res() : "wrong type" error for ipv4 server names 
	  on ipv6 servers.
	* res.c/do_query_number(), config.h.dist: SIXBONE_HACK.
	* config.h.dist: CLONE_CHECK is now default, not SLOW_ACCEPT.
	* s_user.c/m_nick(): username and hostname were erroneously empty
	  in legal collisions.
	* s_conf.c: some CONF_RCLIENT missing.
	* s_bsd.c/polludp(): remove confusing "udp port recvfrom()" message.
	* s_bsd.c/inetport(): check ipmask validity.

2003-10-13  Kurt Roeckx

	* match_ext.h, send_ext.h, c_conf.c, channel.c, hash.c, ircd.c, res.c,
	  s_auth.c, s_bsd.ci, s_bsd_ext.h, s_conf.c, s_conf_ext.h, s_debug.c,
	  s_err.c, s_misc.c, s_send.c, s_serv.c, s_user.c: Fix compiler
	  warnings and other general cleanup (From Robbert Muller)
	* struct_def.h, channel.c, s_misc.c: Clean up the invite linked list.

2003-10-12  Piotr Kucharski

	* channel.c/m_join(): join overflow bug.
	* s_auth.c/sendto_iauth(): iauth failing to restart (patch from Q).
	
2003-09-30  Piotr Kucharski

	* chkconf.c/initconf(): 'N' flag to I:line should be recognized too
	  (noted by fiction).
	* struct_def.h, chkconf.c/initconf(), s_conf.c/iline_flags_parse(),
	  iline_flags_to_string(), attach_Iline(), s_user.c/register_user():
	  add 'F' (fallthrough) flag to I:lines (from fiction).
	* struct_def.h: add EXITC_BADPASS.

2003-08-12  Piotr Kucharski

	* res.c/do_query_name(), s_bsd.c/add_local_domain(): fix possible
	  buffer overflow (noted by cras).

2003-08-10  Piotr Kucharski

	* s_serv.c/m_eob(): sid was not initialized, use sptr->serv->sid.
	* s_serv.c/m_eob(): deal with protocol errors (eob coming from 2.10).

2003-08-08  Piotr Kucharski

	* common_def.h: added isscandinavian() macro checking ~^{}[]|\ chars.
	* s_user.c/do_nick_name(): move check to isscandinavian() macro.
	* s_user.c/m_nick(): do do_nick_name() earlier, not to broadcast
	  ":old NICK old" message.
	* channel.c: added convert_scandinavian() function to change
	  chars {}\~ to []|^ in channel names in commands from local clients
	  or 2.10 servers; this will allow dropping scandinavian origin
	  in next version.
	* channel.c: m_mode(), m_join(), m_njoin(), m_part(), m_kick(),
	  m_topic(), m_invite(), m_names(): added convert_scandinavian() in
	  proper places (I hope no important function is missing).
	* channel.c/names_channel(): using strlen for checking if server is
	  bugus, proper is finding dot.
	* struct_def.h: increased NICKLEN to 12, added ONICKLEN=9 for keeping
	  compatibility.
	* support.c/make_isupport(), s_debug.c/send_defines(): use ONICKLEN,
	  as this is the nicklen allowed from clients.
	* s_user.c/do_nick_name(): allow ONICKLEN long nicks from clients
	  and NICKLEN long from servers.

2003-08-07  Piotr Kucharski

	* s_user.c/m_nick(): move around some code and add checking for
	  "NICK 0" or "NICK UID" from client already having UID nick and
	  discard it.
	* s_user.c/do_nick_name(): disallow {}\ in nicks, so we can later
	  drop scandinavian origin in match().
	* match.c: change upper- and lowertable, so {|}~ is no longer
	  lowercase of [\]^.
	* match.c: make ~ not valid in nicknames (however it was
	  forbidden in other place).

2003-08-06  Piotr Kucharski

	* numeric_def.h, struct_def.h, support.c/make_isupport(),
	  channel.c/send_channel_modes(),add_modeid(),send_mode_list(), 
          set_mode(), s_err.c: introduced R (reop) list (no reop yet).

2003-08-05  Piotr Kucharski

	* channel.c/can_join(): send a notice also when overriding limit.

2003-07-29  Piotr Kucharski

	* s_service.c/m_service(): removed metric variable; moved filling
	  hopcount earlier, so it does not break later in free_client(),
	  where it is used for local client check (noted by jv).
	* s_service.c/m_service(): changed !sp to sp==NULL, as the former
	  breaks in DEBUGMODE.

2003-07-28  Jakub Vlasek

	* struct_def.h: Added byuid to struct Server. Stores UID of remote
	  oper initiating the connection.
	* send.c/send_queued(), ircd.c/check_pings(), s_bsd.c/report_error(),
	  s_serv/m_server_estab(): Report the error to remote oper who
	  initiated server connection.

2003-07-24  Piotr Kucharski

	* s_id.c/next_uid(): changed pow() to #define constant; added
	  check if we need to find_uid() over newly found cid (not
	  needed if it's the first loop of cids).

2003-07-19  Piotr Kucharski

	* s_user.c/m_user(): changed unused (since 2.9.x) FLAGS_RILINE
	  to FLAGS_RESTRICT.
	* send.c/sendto_match_butone(),sendto_match_butone_old(): fixed
	  comments.
	* common/struct_def.h: added MATCH_OLDSYNTAX
	* s_user.c/m_message(): accept old syntax of $/#-mask, correctly
	  send both old and new syntax to old and new servers.

2003-07-18  Piotr Kucharski

	* irc_sprintf.c, irc_sprintf_body.c, irc_sprintf_ext.h: various
	  cleanups, typo fixes (from Zobo).
	* struct_def.h: removed unused flags, some cleanups.
	* s_bsd.c/close_connection(): schedule quick reconnect for a good
	  link only when cptr was aServer.
	* doc/ cleanup.
	* added ISO-3166-1 file (from NetBSD) for SID allocations.
	* struct_def.h: changed SIDLEN to 4. Yes, it's a waste, but at
	  least it takes off the burden of assigning SIDs. ISO-3166 now!
	  Also enlarged tok in Server struct to hold long tokens.
	* list.c: increased MAX210SERVERS to 46656.

2003-06-22  Kurt Roeckx

	* channel.c/m_join: Send RPL_TOPIC before RPL_TOPIC_WHO_TIME.
	* channel.c, s_send.c: Fix spelling of the anonymous user.
	* channel.c/m_join: Now always use NJOIN between servers.

2003-06-18  Kurt Roeckx

	* Update RPL_ISUPPORT to the latest draft.

2003-06-03  Piotr Kucharski

	* s_user.c/m_nick(): bad param count NICK coming from server must
	  be dealt with.

2003-04-13  Piotr Kucharski

	* channel.c/set_mode(): 'break' misplaced (reported by BitKoenig).

2003-02-22  Kurt Roeckx

	* os.h: Always include resolv.h when found.

2003-02-16  Jakub Vlasek

        * struct_def.h: Added IsSplit() macro. Added split variables to
          struct iconf_t.
        * s_debug.c: Report administrative state of autoconnect and split
          values in stats d.
        * s_misc.c,s_misc_ext.h: Added check_split().
        * s_misc.c/exit_client(): Added split detection.
        * s_misc.c/initruntimeconf(): Initialise split values.
        * s_serv.c/m_eob(), do_emulated_eob(): Call check_split().
        * s_user.c/register_user(): Call check_split(), send split notice
          to users upon connect.

2003-02-15  Piotr Kucharski

	* s_bsd.c/polludp(): sometimes garbage IP was shown in error message.
	* send.c/sendto_match_butone(): don't send to old servers.
	* send.c: new function sendto_match_butone_old() for sending $#/$$
	  mask message to old servers only.
	* s_user.c/m_message(): use sendto_match_butone_old().
	* struct_def.h: added ST_NOTUID() define.
	* s_misc.c, s_send.c, s_serv.c, s_service.c, s_user.c, send.c:
	  we miserably forgot about De Morgan laws, changing all
	  !ST_UID() to ST_NOTUID(); luckily in most, if not every, places it
	  was guarded by earlier IsServer or similar (talk about redundant
	  checks, eh?), so it didn't affect us badly (noted by Grega Pogacnik).

2003-02-14  Piotr Kucharski

	* channel.c/match_modeid(): wrong UID ban checks.
	* channel.c/set_mode(): removing key on channel with no key resulted
	  in desynch, when combined with other modes after -k (from Grega
	  Pogacnik).

2003-02-13  Piotr Kucharski

	* match.c/match(): added quick parsing of '*' mask; added '#'
	  wildcard matching only digits.
	* s_serv.c/m_stats(): be aware of '#' wildcard.
	* struct_def.h, channel.c/match_modeid(), add_modeid(), del_modeid(),
	  set_mode(), s_err.c: changed value.cp to struct holding nick, user,
	  host separately, this allowed for faster match()es and better beI
	  lists parsing.
	* channel.c: added make_bei() and free_bei() functions.
	* channel.c/match_modeid(): added full CIDR support for beI lists.

2003-02-13  Jakub Vlasek
	
	* s_user.c/m_user(): Parse user text modes sent in USER command
	  during registration.

2003-02-11  Piotr Kucharski

        * s_serv.c/m_stats(): stats l server client_not_on_this_server
          should not return bogus values (from Grega Pogacnik).

2003-02-10  Piotr Kucharski

        * channel.c/match_modeid(): added support for CIDR.
        * s_conf.c/match_ipmask(): added one param to ease using it
          with or without user@ part to match CIDRs;
        * Makefile.in: added install-ircd target.

2003-02-09  Jakub Vlasek
	
	* s_bsd.c/connect_inet(): Fixed compile error. (from Shigeru Okumura)

2002-12-28  Jakub Vlasek
	
	* msg_def.h, parse.c, s_serv.c, s_serv_ext.h: Added SET command.
	* config.h.dist: Added OPER_SET and LOCOP_SET defines.
	* s_misc.c: Added initruntimeconf() used for initialisation of
	  struct iconf.
	* ircd.c, ircd_ext.h: Added declaration of iconf. Structure used
	  for keeping run-time configuration data.
	* ircd.c/main(): Call initruntimeconf().
	* ircd.c/try_connections(): Do not autoconnect if autoconnect
	  disabled via SET.

2002-11-29  Jakub Vlasek

	* mkpasswd.c, contrib/mkpasswd/README: New version from W. Campbell.

2002-11-25  Jakub Vlasek
	
	* s_user.c/m_nick(): Allow user to set his nick to UID by specifying
	  nick 0 or his own UID.
	* s_serv.c/m_stats(): Made stats 'Z' and 'z' behave the same if 
	  DEBUGMODE not set.
	* s_err.c/RPL_YOURID: Send UID before the text of numerics.
	* chkconf.c: Enclosed debug messages with #ifdef DEBUGMODE.
	
2002-11-24  Jakub Vlasek

	* struct_def.h: Added source_ip to struct ConfItem.
	* list.c/make_conf(): set source_ip to NULL. 
	* list.c/free_conf(): Free source_ip.
	* s_bsd.c/connect_inet(): Use aconf->source_ip to bind correct IP
	  for outgoing connections.
	* s_conf.c/initconf(): Fill aconf->source_ip.
	* 2.11-New: Added.
	* s_serv.c/m_stats(), report_fd(): Support for stats F.

2002-11-23  Piotr Kucharski

	* ircd.c/check_pings(), s_misc.c/exit_client(), config.h.dist:
	  DelayedKills upon rehash.

2002-11-22  Jakub Vlasek

	* s_serv.c/m_stats(): Do not reply to stats requests with more than 
	  1 char.

2002-11-22  Piotr Kucharski

	* numeric_def.h, channel.c/m_join(),m_topic(), s_err.c, config.h.dist,
	  struct_def.h: who and when set the topic.
	* s_err.c, s_user.c/send_whois(), config.h.dist: signon time in whois.
	* numeric_def.h, s_serv.c/m_server_estab(),m_lusers(), struct_def.h,
	  s_err.c: info (numerics 265 and 266) and notices about max local/global
	  client count.
	* s_service.c, s_serv.c, s_user.c: keep stats about max client values.
	* struct_def.h, s_misc.c/initstats(),exit_client(), config.h.dist,
	  s_user.c/register_user(): notice on in/de-creasing local clients count.

2002-11-11  Jakub Vlasek
	
	* s_err.c: Changed text of ERR_TOOMANYMATCHES.
	* channel.c/m_list(): Terminate LIST output when the client has less 
	  than 10% of available sendQ free.
	
2002-10-13  Jakub Vlasek

	* ircdwatch.c/sig_handler(): Removed extra semicolon after #endif.

2002-10-09  Kurt Roeckx

	* support.c, support_ext.h, channel.c, list.c res.c, s_bsd.c, s_id.c,
	  s_misc.c, s_service.c, s_zip.c: MyFree now takes a void * as argument.

2002-09-29  Jakub Vlasek

	* iauth-internals.txt: Update for 2.11 protocol (added kill reason).
	* struct_def.h: Added reason to struct Client - used for storing
	  of extended information about client quit (like from iauth modules).
	* a_conf.c: Parse reason from iauth.conf
	* a_conf_def.h: Added reason to struct Instance.
	* mod_socks.h: Send kill reason to ircd.
	* list.c/free_client(): Free aClient->reason.
	* s_auth.c: Parse kill reason from iauth.
	* s_user.c/register_user(): Send kill reason from iauth to the client.

2002-09-13  Jakub Vlasek

	* ircd.c, s_ircd.c: Make -t (don't fork) available even when not
	  DEBUGMODE used.
	* s_serv.c/report_configured_links(): Show * in I-line flag
	  field if no flag defined.
	* s_user.c/m_oper(), config.h.dist: Added FAILED_OPERLOG to log
	  failed oper attempts.
	* s_debug.c: Added FAILED_OPERLOG to version output.

2002-09-08  Jakub Vlasek

	* channel.c/m_list(), config.h.dist: Added LIST_ALIS_NOTE.

2002-09-06  Piotr Kucharski

	* s_user.c/m_nick(): when checking for correct number of params
	  in NICK when it comes from server, prior to collision make
	  sure the other side sent proper number of params in NICK
	  and kill only the wrong side, as it is protocol error.

2002-08-25  Jakub Vlasek

	* parse.c/getfield(): Support quoting of delimiter in ircd.conf.
	* s_user.c/m_user(): Fixed crash introduced during last change 
	  (from Grega Pogacnik).
	  
2002-08-24  Piotr Kucharski

	* parse.c/remove_unknown(), channel.c/collect_channel_garbage(),
	  s_misc.c/exit_client(), s_serv.c/m_server(): move some messages from
	  SCH_LOCAL to SCH_NOTICES (from jv).
	* mod_socks.c/socks_init(): added 'megaparanoid' option, which denies
	  access to everything listening on 1080 and not answering explicitly
	  that it is closed proxy; that includes all protocol errors etc.
	* mod_socks.c/socks_read(), doc/iauth.conf.5: modified to use above.

2002-08-23  Piotr Kucharski

	* irc_sprintf.c,irc_sprintf_body.c,irc_sprint_ext.h: added irc_vsprintf;
	  irc_sprintf() now supports most of basic formats and modifiers (no
	  uid support yet).
	* s_user.c/m_message(): changed syntax for oper mass notices from
	  $/#-mask to $$/$#-mask (since it may go confused with channels).
	* channel.c/send_channel_modes(): allow mixing beI (compatibility
	  with 2.9, no longer needed).
	* s_serv.c/m_stats(): allow 'stats L nick' without penalizing with
	  RPL_TRYAGAIN.
	* res.c/proc_answer(): check if answer is matching the request (from Q).

2002-08-05  Piotr Kucharski

	* s_user.c/m_nick(): check for correct number of params in NICK when
	  it comes from server before checking for collisions.

2002-08-04  Piotr Kucharski

	* class.c/add_class(): typo in debug string.

2002-08-01  Piotr Kucharski

	* struct_def.h: added invLink struct, similar to Link, but keeps
	  also 'char *who'.
	* list.c, list_ext.h: make_invlink() and free_invlink() added.
	* channel.c/add_invite(): added sptr param for remembering who
	  invited us to every channel.
	* channel.c/del_invite(): also free memory allocated in add_invite().
	* channel.c/can_join(): announce to channel who invited banned user.

2002-07-31  Piotr Kucharski

	* hash.c/m_hash(): was '%Full', should've been '%%Full'.

2002-07-30  Piotr Kucharski

	* s_serv.c/trace_one(): don't send UID to local clients (from Zobo).

2002-07-29  Piotr Kucharski

	* got rid of !STDARG from everywhere.
	* got rid of R lines from everywhere.
	* got rid of SPRINTF define from everywhere.
	* added irc_sprintf() function, which will handle %y.

2002-07-06  Jakub Vlasek

	* struct_def.h: added defines for I: line flags. Added ->flags to
	  struct ConfItem (from Beeth).
	* ircd.c/check_pings(),s_user.c/register_user(): added support for
	  kline exemptions.
	* s_conf.c,s_conf_ext.h  iline_flags_parse(), iline_flags_to_string()
	  added.
	* s_conf.c/initconf(),attach_Iline: added support for kline exemptions.
	* s_err.c: Added string field to RPL_STATSILINE for iline flags.
	* s_serv.c/show_configured_links(): Show iline flags.
	
2002-07-05  Piotr Kucharski

	* s_serv.c/trace_one(): removed duplicated argument causing core.
	* channel.c/set_mode(): use ->uid only if it HasUID (from Zobo).
	* s_conf.c/find_kill(): don't check interval if TIMEDKLINE is not
	  defined.
	* s_conf.c/check_time_interval(): surround it by #ifdef TIMEDKLINE.

2002-07-04  Jakub Vlasek

	* hash.c/m_hash(): rewritten to support all hashes.
	* send.c/sendto_ops_butone(): Rewritten to use local[] instead
	  of client linked list.
	* s_sev.c/m_close(): Send message about closing to SCH_NOTICE too.
	* parse.c/find_userhost(): Enclose with CLIENT_COMPILE.
	
2002-06-11  Piotr Kucharski

	* channel.c/m_njoin(): use ->uid if HasUID, not ->name (from Zobo).
	* s_serv.c/m_eob(): missing argument (from Zobo).

2002-06-03  Jakub Vlasek

	* parse.c/find_userhost(): use hostname hash for faster lookup.

2002-06-01  Jakub Vlasek

	* struct_def.h: added hhashv,hhnext to struct User (used by hostname
	  hash).
	* hash.c, hash_def.h, hash_ext.h: added hostname hash.
	* s_conf.c/attach_conf(): use hostname hash for userhost limits.
	* s_user.c/register_user(): add user to hostname hash.
	* s_misc.c/exit_one_client(): remove user from hostname hash.
	* ircd.c/read_ircdtune(): initialise size of hostname hash to size
	  of client hash.

2002-06-01  Kurt Roeckx

	* class.c, class_ext.h, class_def.h: Make maxSendq an int.
	* send.c, channel.c, support.c: Add extra {} and () to stop compiler 
	  warnings.  Also removed some unused variables.
	* ircd.c: Make variables used in signal handlers volatile.

2002-06-01  Piotr Kucharski

	* a_conf.c/conf_err(): exit iauth on config error.
	* bsd.c, packet.c, struct_def.h, s_bsd.c, s_misc.c, s_serv.c, send.c:
	  got rid of receiveK and sendK from struct Client, got rid of is_cks,
	  is_ckr, is_sks, is_skr from struct stats, changed receiveB, sendB
	  is_cbs, is_cbr, is_sbs, is_sbr to unsigned long long.
	* list.c/make_client(): add initialization of stats variables.
	* send.c/sendto_flog(): new log format.
	* struct_def.h: more EXITC_ codes.
	* s_user.c, s_user_ext.h: got rid of ereject_user(), use exit_client()
	  instead.
	* ircd.c/check_pings(), s_bsd.c/add_connection(),
	  s_user.c/register_user(): set proper cptr->exitc, use exit_client()
	  instead of ereject_user(), get rid of duplicating sendto_flog()s.
	* s_misc.c/exit_client(): log everything from here, use sptr->exitc.
	* config.h.dist: add LOG_OLDFORMAT define.
	* s_id_ext.h: readded cid_ok() declaration, we use it (via macro) in
	  other files.

2002-05-26  Piotr Kucharski

	* send.c/sendto_flog(): ircd was not honouring SYSLOG_CONN and
	  SYSLOG_USERS being undefined (reported by Francesco).

2002-05-22  Jakub Vlasek

	* s_serv.c/m_server(): Show the name of the server which caused
	  server exists error in squit message.

2002-05-20  Piotr Kucharski

	* s_err.c: removed mistakenly changed format of I: and K:.

2002-05-20  Jakub Vlasek

	* s_conf.c/detach_conf(): remove config entry from conf linked list
	  while freeing it (reported by BitKoenig).
	* buildm4: added EXTRAPORT, SERVICE macros, fixed RESTRICTED and ME
	  macros (from W.Campbell.
	* m4macros: updated (from W. Campbell).
	
2002-05-19  Piotr Kucharski

	* channel.c/m_mode(): remove not needed chanop (from BitKoenig).

2002-05-19  Jakub Vlasek
	
	* s_user.c/who_find(): Initialise myoper to 0, show +i user
	  to himself (from BitKoenig).
	* s_serv.c/m_trace(): Fixed condition causing wrong users being
	  shown, added comments (from BitKoenig).

2002-04-23  Jakub Vlasek
	
	* s_conf.c/rehash(): Do not delist config entries which are still
	  used.

2002-04-19  Jakub Vlasek

	* res.c/bad_hostname(): added defineable more restrictive hostname
	checking (by Mario 'BitKoenig' Holbe)
	* config.h.in: added define RESTRICT_HOSTNAMES.

2002-04-16  Jakub Vlasek

	* parse.c, parse_ext.h: added find_matching_client().
	* struct_def.h: added usercnt[3] array to struct server for per-server
	  user counts.
	* channel.c, channel_ext.h: removed count_channels().
	* s_misc.c/exit_one_client(), s_user.c/register_user, m_oper():
	  Update per-server user count.
	* s_serv.c/m_trace(): splitted into two functions, m_trace
	  and trace_one().
	* s_serv.c/m_lusers(),m_trace(): Improved performance by using
	  per-server usercnt[], instead of counting users each time.

2002-04-11  Piotr Kucharski

	* s_user.c/register_user(): validusername() was checking also OTHER
	  type ident, which could have been encrypted.
	* s_id_ext.h: remove unused, add new extern declariations.
	* example.conf: update.

2002-04-06  Piotr Kucharski

	* s_serv.c/m_server_estab(),m_eob(): send empty EOB if we have no
	  leaf-servers EOB-ed.
	* parse.c,s_serv.c: add missing parameter to idtol().

2002-04-07  Jakub Vlasek

	* bsd.c/deliver_it(): Removed call to hold_server() (which has been
	  removed).
	* s_serv.c/m_eob(): Fix notices about received EOBs, warn about
	  multiple local EOBs.
	* support.c/inetntop(): Use the_size for bcopy() properly.
	* ircd.c/setup_me(): Copy PATCHLEVEL into me.serv->verstr.
	* ircd.c: Move add_to_sid_hash_table to setup_me() from main().

2002-04-06  Jakub Vlasek

	* s_user.c/save_user(): Send ME as source of RPL_SAVENICK if collision
	  is generated locally.
	* s_serv.c/m_eob(): Pass sid+1 as a parameter to find_tokserver()
	  for fake SIDs.

2002-04-05  Jakub Vlasek

	* s_service.c/m_service(),m_servset(),m_servlist(): Changed atoi()
	  to strtol() to allow hexadecimal arguments.
	* msg_dev.h: Added EOB, removed useless comments.
	* parse.c: Added m_eob to msgtab. Added find_target().
	* parse_ext.h: Added declaration of m_eob().
	* struct_def.h: Added IsBursting(), SetEOB() defines and FLAGS_EOB.
	  Added is_eobservers to istat array.
	* s_misc.c/exit_one_client(): Decrease istat.is_eobservers if EOBed
	  server quits.
	* s_numeric.c/do_numeric(): Added EOB emulation support, use
	  find_target().
	* s_serv.c/m_server(): Send PINGs on server introduction for EOB
	  emulation. m_server_estab(): Send EOB(s) after burst.
	  Added: m_eob(), do_emulated_eob(),
	* s_serv_ext.h: Added declaration for do_emulated_eob().
	* s_user.c/m_pong(): Added support for EOB emulation.

2002-03-29  Jakub Vlasek

	* channel.c/m_names(): Rewritten, channel names handling moved to
	  names_channel().
	* channel.c/m_list(): Partialy rewritten, don't send +p channels
	  user is not member of anymore.
	* s_user.c/who_find(): Rewritten.
	* s_user.c/m_who(): Moved colapse() down to fix bug which made
	  impossible to use WHO on channels with * in their name.

2002-03-24  Jakub Vlasek

	* s_user.c/m_oper(): Send +O after local oper opers and +o when global
	  opers to services - was reversed (reported by Olafur Osvaldsson).
	* s_user.c/send_umode_out(): Check for service distribution
	  (reported by Olafur Osvaldsson).
	* s_service.c/sendnum_toone(): Send user modes to services with
	  SERVICE_WANT_OPER (by Olafur Osvaldsson).

2002-03-23  Piotr Kucharski

	* s_serv.c/check_servername(): initialize all vars (problem reported
	  by ZZyZZ).

2002-03-14  Jakub Vlasek

	* ircd.c/setup_signals(): Ignore SIGTRAP on FreeBSD to prevent crash
	  after detaching ircd in gdb.
	* support.c: Added #ifndef CLIENT_COMPILE around make_isupport.

2002-03-15  Jakub Vlasek

	* support.c,s_conf.c: Read network name from ircd.conf.
	* s_conf.c/s_conf_ext.h: Added networkname global variable.
	* ircd.c: Added warning message about network name not being set.
	* config.h.dist: Removed SERVER_ID and NETWORK_NAME defines.
	
2002-03-14  Jakub Vlasek

	* s_bsd.c,s_bsd_ext.h: Moved daemonization from init_sys() into
	  daemonize().
	* ircd.c,ircd_ext.h,s_conf.c: Read SID from M-line instead of #define.
	* ircd.c,list.c,s_conf.c: Send error messages during server boot
	  to stderr. Show message that server successfuly started.
	* list.c/outofmemory(): Die instead of restart if the server
	  is booting.

2002-03-13  Jakub Vlasek

	* numeric_def.h, s_err.c, s_user.c/save_user(): Added RPL_SAVENICK
	  to inform user that his nick is being changed to UID after
	  nick collision.

2002-03-03  Jakub Vlasek

	* support.c: added make_isupport() used for 005 numeric generation.
	* s_user.c/register_user(): send 005 numeric.
	* numeric_def.h, support_ext.h, ircd.c, s_err.c,version.c.SH.in,
	  version_ext.h,config.h.dist: added support for 005 numeric.
	* struct_def.h, channel_def.h: moved MAXMODEPARAMS into
	  struct_def.
	* s_user.c/m_kill(): removed u@h from killpath.
	* s_user.c/m_save(): better argument checking.
	* s_user.c/m_oper(): changed missed err_str() to replies[].
	* s_bsd.c/init_sys(): setpgrp() takes no argument on cygwin.
	* s_serv.c/m_connect(): When doing 'CONNECT serv 0', look up proper
	  port from config file; if we find it negative (to prevent AC),
	  use absolute value of it.

2002-01-22  Jakub Vlasek

	* tkserv.c: Fixed potential overflow (from W.Campbell)

2002-01-07  Piotr Kucharski

	* list.c/make_server(): introduced used_tokens table and IsBitSet,
	  SetBit, ClearBit defines (from Q).
	* s_serv.c/m_links(): don't show masked servers.
	* s_id.c: moved CHIDNB define to struct_def.h (we need it in list.c).
	* list.c/make_server(): return NULL, do not abort, if used_tokens array
	  is exhausted.
	* s_serv.c/m_server(),m_smask(),m_server_estab(),ircd.c/setup_me(),
	  s_bsd.c/connect_server(): deal with return value of make_server().
	* list.c/make_server(),list_ext.h: remove unused 'add' parameter.

2002-01-06  Piotr Kucharski

	* s_serv.c/m_server_estab(),s_service.c/m_service(),
	  s_user.c/register_user(): if link we send NICK/UNICK/SERVICE to is
	  UID capable, send client->servp->tok, not me.serv->tok.
	* s_misc.c/exit_one_client(): don't decrease istat.is_serv when
	  server is masked.
	* s_misc.c/exit_server(): regenerate SQUITs to send them to &SERVERS.
	* s_serv.c/m_server(): squit link if no SID was given on a 2.11 link.
	* hash.c/bigger_hash_table(): add only ST_UID sptrs to sid_hash_table.
	* parse.c/find_sender(): strlen(sid)==SIDLEN, not sid[SIDLEN]=='\0'.
	* list.c/make_server(), s_serv.c/m_smask(), s_user.c/register_user():
	  fix bug of dropping unknown clients (NICKs) coming behind from 2.10
	  masked behind 2.11. *NOTE*: do it better, like add all servers to
	  svrtop or have token array. (from Q).

2002-01-05  Piotr Kucharski

	* parse.c/find_sender(): sid and fake sid aware now.
	* parse.c, msg_def.h: aware of m_smask().
	* struct_def.h: ismasked, left, right, down, servers to Server struct.
	* struct_def.h, ircd.c: changed FLAGS_RESTRICTED to FLAGS_RESTRICT,
	  used SetRestricted or IsRestricted wherever possible.
	* struct_def.h, send.c: changed FLAGS_DEADSOCKET to FLAGS_DEADSOCK,
	  used SetDead wherever possible.
	* hash.c/del_from_sid_hash_table(): remove unnecessary parameter,
	  use sptr, not cptr->server for sidhashv.
	* s_misc.c/mark_blind_servers(): use ptr to server, not server->name
	  as argument.
	* following work came from jv, cleaned by Q.
	* s_serv.c/m_squit(): made aware of sids; removed issuing additional
	  squit (we'll do it in exit_client); don't show received squits if
	  they come from masked servers.
	* ircd.c/setup_me(), s_bsd.c/connect_server(): initialize ->maskedby.
	* s_misc.c: added exit_server().
	* s_misc.c/exit_client(): rewritten to use exit_server().
	* s_misc.c/exit_one_client(): rewritten to be aware of SIDs and doing
	  proper SQUITs/QUITs; also added using servers' tree.
	* s_serv.c: added functions send_server(), introduce_server(), m_smask(),
	  send_server_burst(), add_server_to_tree(), remove_server_from_tree().
	* s_serv.c/m_server(): simplified checks of parameters; added checks
	  of SID we receive; add using servers' tree; removed checks of C/N
	  (should be in m_rehash).
	* s_serv.c/m_server_estab(): check masks to avoid same mask inside;
	  store temporarily version we received in PASS in hopcount; add
	  using servers' tree; fill in (compatibility) SIDs and ltok; change
	  some (repeating) code to functions (introduce_server).

2002-01-04  Piotr Kucharski

	* ircd.c/main(): check if SERVER_ID is valid.
	* config.h.dist: changed default SERVER_ID.
	* s_err.c: changed ERR_YOUREBANNEDCREEP format.
	* s_conf.c/find_kill(): show user@host in K:line error.
	* list.c/make_server(): add parameter used for deciding
	  whether to add server to tree or not.

2001-12-31  Piotr Kucharski

	* s_user.c/m_unick(): while creating client we messed with server
	  pointer, adding ->user struct to it, which later made m_server
	  reject servers (from jv).

2001-12-30  Piotr Kucharski

	* s_user.c/m_nick(): allow restricted users change nick from saved uid.
	* common_def.h, match.c, struct_def.h, s_user.c, config.h.dist: add
	  RESTRICT_USERNAME code to reject users with special chars in their
	  usernames. Also revamp char_atribs[] table.
	* match.c: added isvalidusername().

2001-12-29  Piotr Kucharski

	* s_user.c/register_user(): we assigned uid after we sent UNICK.
	* s_bsd.c/completed_connection(),s_serv.c/m_server(): send SID
	  in SERVER command.
	* s_user.c/register_user(): send user sid as source, not always ours.
	* s_id.c/check_uid(): use cid_ok() to check all chars, check len.
	* s_user.c/m_unick(): use check_uid(), not simple strlen(uid).
	* s_user.c/m_unick(): squit link feeding us with bad UID.
	* s_user.c/m_unick(),m_nick(): removed checking for collisions
	  with servers (this cannot happen).
	* config.h.dist, s_id.c, struct_def.h, s_debug.c: add UIDLEN and
	  use it wherever possible; this is for allowing longer nicks without
	  having to have longer uids.

2001-12-29  Kurt Roeckx

	* struct_def.h, ircd.c, s_bsd.c, s_misc.c, s_serv.c, s_service.c:
	  Convert up from a string to a pointer to a client. (from jv)

2001-12-28  Piotr Kucharski

	* s_conf.c/find_kill(): make K:user@host remove also +r clients
	  (that is, +user@host).
	* s_misc.c/get_sockhost(): don't trust input values, so we don't
	  accidentally copy on null.
	* s_user.c/m_unick(): cleanup, remove m_user() call, fill whatever
	  we need to fill in this function directly.
	* s_id.c/sid_valid(): allow fake sids.

2001-12-26  Kurt Roeckx

	* channel.c/m_kick(): Add support for UIDs in KICK.

2001-12-25  Kurt Roeckx

	* send.c, struct_def.h, channel.c, channel_ext.h, s_send.c,
	  s_serv.c: Removed some 2.9 protocol support. (From jv)

2001-12-24  Piotr Kucharski

	* s_user.c/m_unick(): changes, including ip, removing token and
	  hopcount

2001-12-24  Kurt Roeckx

	* channel.c/set_mode(): Only allow UIDs from the server.
	* s_user.c/m_message(): privmsg/notice now support UIDs.

2001-12-23  Kurt Roeckx

	* parse.c/find_sender(): Default parv[0] to sptr->from.

2001-12-22  Piotr Kucharski

	* s_bsd.c/check_server(): check for class being legal, so we
	  do not core later.
	* s_serv.c: introduced get_version() for easier reading; also
	  few changes to it.
	* parse.c: added find_sid().

2001-12-21  Kurt Roeckx

	* parse.c/parse(), find_sender():  Add support for UID as source of a
	  message. (From jv)
	* channel.c/m_mode(), set_mode(): Made MODE use UID when posible.

2001-12-20  Kurt Roeckx

	* msg_def.h, numeric_def.h, parse.c, send.c, struct_def.h, ircd.c, 
	  s_bsd.c, s_bsd_ext.h, s_err.c, s_misc.c, s_serv.c, s_serv_ext.h:
	  Get rid of reconnect.

2001-12-13  Piotr Kucharski

	* configure: a typo made FreeBSD 5.0 be taken for Solaris 2.0

2001-12-08  Kurt Roeckx

	* struct_def.h, hash.c, hash_ext.h, ircd.c: Add a sid hash table, and
	  add ourself to it. (From jv)
	* channel.c/m_njoin, send_channel_members(): Make NJOIN use UIDs
	  (based on work from Zobo)

2001-10-25  Piotr Kucharski

	* config.h.dist: minor explanatory changes

2001-06-09  Kurt Roeckx

	* s_err.c: Change RPL_BOUNCE to use a %d instead of %s

2001-02-26  Kurt Roeckx

	* struct_def.h, ircd.c, s_id.c, s_id_ext.h, s_misc.c, s_user.c, 
	  config.h.dist: Properly generate UID's, and SAVE user where we can.

2001-02-10  Kurt Roeckx

	* s_err.c, numeric_def.h: Change RPL_BOUNCE to numeric 010.

2001-01-15  Piotr Kucharski

	* s_user.c/m_unick(): fixed irritating typo (parv[7] vs. parv[8])

1999-09-21  Piotr Kucharski

	* channel.c, class.c, parse.c, s_bsd.c, s_conf.c, s_err.c,
	s_err_ext.h, s_misc.c, s_serv.c, s_service.c, s_user.c,
	struct_def.h, whowas.c: rewritten to use replies[] table
	directly, not rpl_str()/err_str().

1999-09-18  Christophe Kalt

	* wrote s_send.c to provide specialized functions equivalent to
	sendto_*() but dealing with UID issues and hiding them from above
	layers.

1999-08-31  Kurt Roeckx

	* s_user.c/m_kill: acptr wasn't initialised

1999-06-??  Christophe Kalt

	* hash_ext.h, msg_def.h, numeric_def.h, parse_ext.h, struct_def.h,
	s_id_ext.h, s_user_ext.h, channel.c, hash.c, ircd.c, list.c,
	parse.c, send.c, s_err.c, s_id.c, s_misc.c, s_serv.c, s_user.c:
	basic 2.11 functionnality: added uid hash tables, &SAVE channel,
	m_unick(), m_save(), save_user(), new numeric 42.

2.10.3p3

2001-01-19  Piotr Kucharski

	* s_misc.c,s_debug.c: changed %d or %u to %lu in various places.
	* s_serv.c/m_stats(): allow unlimited stats c for opers.
	* config.h.dist: define NOWRITEALARM by default, saves us calls.
	* mkpasswd: new version from Walter Campbell.

2001-10-18  Piotr Kucharski

	* res.c/make_cache(): bug allowing to spoof hosts (from Q).
	* a_defines.h, a_log_def.h: do not debug iauth by default (from jv).
	* send.c/sendto_flog(): format string bug.
	* send.c/send_message(): service exceeding sendq under some conditions
	  entered endless loop of errors (thus coring ircd) (reported by Gael).
	* send.c/send_message(): label 'tryagain' moved below zip_buffer,
	  so we don't zip already zipped buffer (from Oleg Medinsky).
	* s_user.c/m_umode(): clear local oper received from remote
	  servers (fixes wrong oper count!) (from Oleg Medinsky).
	* packet.c/dopacket(): me.receiveK wasn't updated properly (from jv).

2.10.3p2

2001-07-07  Piotr Kucharski

	* send.c/send_message(): once we adjusted pool size during
	  netjoin, we did not add to queue parts of burst (from jv).
	* channel.c/send_mode_list(), send_channel_modes(): reverted
	  change from 2001-02-07 (about space in MODEs); fixed
	  sending more than MAXMODEPARAMS modes (from Q).
	* s_user.c/send_whois(): get rid of one find_server(), we
	  don't need it.

2001-07-05  Piotr Kucharski

	* s_conf.c/initconf.c: set default u@h limits to 1.1, not 0.

2001-07-04  Piotr Kucharski

	* match.c: char_atribs table was missing one element (at least
	  nine year old bug!)

2001-07-02  Piotr Kucharski

	* channel.c/m_list(),m_names(): forwarding queries using
	  hunt_server() makes sense only with parc > 2

2001-06-30  Kurt Roeckx

	* s_bsd.c/add_connection: use fd instead of acptr->fd, which isn't set
	  yet

2001-06-29  Kurt Roeckx

	* s_user.c/m_who(): Only call who_one() when we found a client.
	* send.c: Removed a ; after an #endif
	* s_conf.c: Removed a ; after an #endif
	* s_debug.c/send_defines(): removed the space after LDCTL:
	* channel.c/m_njoin(): Don't send MODE +O to clients.

2001-06-06  Piotr Kucharski

	* channel.c/reop_channel(): fixed typo, which made sometimes
	  problems with that code; also changed 3 to MAXMODEPARAMS.

2001-05-31  Piotr Kucharski

	* support.c/inetntop(): logic flaw in checking for
	  ipv6_is_addr_v4mapped (":ffff:" case).

2001-05-30  Piotr Kucharski

	* s_serv.c/m_who(): almost complete rewrite to reduce unnecessary
	  showing all clients, hence to save CPU
	* mod_socks.c/socks_write(): missing mydata declaration.

2001-05-16  Piotr Kucharski

	* iauth.c/main(): read config before init_filelogs, which depends
	  for some logs on debuglvl variable (from Q)

2001-05-15  Piotr Kucharski

	* mod_socks.c/socks_write(): don't bother checking socks4 on ipv6
	  addresses, socks4 doesn't support it anyway.
	* mod_socks.c/socks_write(): if v4only option is set, don't switch
	  to socks5 check for ipv6
	* s_serv.c/m_trace(): don't send info about unknown connections to
	  clients who are not +w
	* support.c/inetntop(): check for :FFFF: as well

2001-05-14  Piotr Kucharski

	* send.c/sendto_common_channels(): use ->clist, not ->members; big
	  channels will benefit from it a lot (from jv).

2001-05-13  Piotr Kucharski

	* s_id.c/cache_chid(): an unfortunate typo making negative Cache
	  size in stats (from jv).
	* s_bsd.c/read_message(), packet.c/dopacket(): if client exceeded
	  sendq, say so, instead of "Dead Socket" (from jv).
	* s_service.c/check_services_butone(),check_services_num(): don't
	  loop over all fds when we have services linked list (from jv).
	* chkconf.c: it was not working properly if .conf was not using ':'.

2001-05-06  Piotr Kucharski

	* list.c/free_client(): we check for local client, since ->auth
	  is not allocated at all for remotes.
	* s_bsd.c/add_connection(): initialize lin.next with NULL.
	* ircd.c/ircd_readtune(): initialize buf with zeroes.
	* ircd.c/main(),server_reboot(): make syslog stamp ircd messages
	  only with basename(argv[0]) instead of argv[0].
	* channel.c/m_njoin(): we must initialize p used in strtoken.

2001-05-05  Piotr Kucharski

	* a_log.c/init_filelogs(): don't open iauth.log when debug level
	  is not set in iauth.conf.
	* whowas.c/m_whowas(): 'whowas nick1,nick2 x' was not showing
	  last x whowas for each nick, only for nick1.
	* res_def.h: increased DNS cache table size.
	* send.c/sendto_flog(): added syslog() support, fixed potential
	  buffer overflow.
	* s_user.c/ereject_user(),register_user(), s_bsd.c/add_connection(),
	  s_misc.c/exit_client(): removed those syslog() calls, which are
	  now in sendto_flog(); this also removed (old) bug in ereject_user()
	  logging via syslog, when we supplied more parameters than %s in
	  format, and superfluous param was not the last.

2001-05-04  Piotr Kucharski

	* s_misc.c/exit_client(),mark_blind_servers(): fixed squit routines
	  not to send QUITs, when SQUIT would do (fix from Jakub Vlasek)
	* s_bsd.c/polludp(): show IP upon recvfrom error.

2001-05-03  Piotr Kucharski

	* channel.c/m_kick(): multiply channel kicks are now handled
	  differently (one channel in a KICK sent), so that old servers
	  can parse them well.
	* ircd.c/main(): added chdir() before chroot().

2001-05-01  Piotr Kucharski

	* list.c/make_client(),s_auth.c/set_clean_username: revert change,
	  it can point to static buffer (saves memory), we just have to be
	  careful not to free() it.
	* send.c: added some comments.
	* sys_def.h: change MyFree() to set variable to NULL after free()

2001-04-11  Piotr Kucharski

	* s_misc.c: change sizeof(pointer) to strlen().

2001-04-06  Piotr Kucharski

	* whowas.c/m_whowas(): don't send away info.
	* s_auth.c: changing various sizeof(dynamic buffer) to strlen().
	* list.c/make_client(),s_auth.c/set_clean_username: use strdup().
	* a_conf.c/conf_read(): close iauth conf file.

2001-04-01  Kurt Roeckx

	* s_user.c/m_whois(): Fix a memory leak.
	* channel.c/m_kick(): Fix a memory leak.

2001-03-13  Piotr Kucharski

	* s_user.c, s_serv.c: pass whole aconf->pass to crypt(); this will
	  allow modern crypt() to deal with MD5, Blowfish and others.
	* contrib/mkpasswd: Walter Campbell's mkpasswd.c to generate also
	  MD5 passwords

2001-03-06  Piotr Kucharski

	* tkserv.c: potential buffer overflow fixes

2001-03-05  Piotr Kucharski

	* ircd.c/send_pings(): with getting rid of timed klines, we got rid
	  of checking klines after rehash; let's better reinstate it (from jv)

2001-03-04	Kurt Roeckx

	* bsd.c, s_bsd.c: Remove some sendto()s for ipv6, and use send() like
	  with ipv4.

2001-03-02  Piotr Kucharski

	* channel.c/m_kick(): 'KICK #chan1,#chan2 nick1,nick2' was not
	  working properly

2001-02-28  Piotr Kucharski

	* send.c/sendto_flog(),logfiles_open(),logfiles_close(),
	  s_conf.c/rehash(), ircd.c: Stop open-close logfiles ping-pong,
	  reopen only on HUP signal.
	* s_user.c/m_whois(): show all parameters in ENDOFWHOIS reply
	* ircd.c/send_pings(), s_conf.c, config.h.dist: another speedup
	  by getting rid of rarely used code (here: timed klines)

2001-02-27  Kurt Roeckx

	* c_msg.c/m_join(): Copy the name of the channel just joined.

2001-02-26  Kurt Roeckx

	* ircd.c/main(): Don't die when there is no listen port when called
	  from inetd.

2001-02-10  Kurt Roeckx

	* s_err.c, numeric_def.h: Undo the RPL_BOUNCE change.
	* s_serv.c/m_restart(): Create the buffer before we remove the
	  clients.
	* hash.c/hash_find_server(): Removed unused variable s.
	* s_bsd.c/close_connection(): Removed unused variable j.
	* s_mis.c/exit_client(): Removed unused variable asptr.
	* whowas.c/get_history(): Removed unused variable i.

2001-02-09  Kurt Roeckx

	* s_user.c, s_conf.c, s_conf_ext.h: Make O-lines work with CIDR masks.
	* config.h.dist: undefine ZIP_LINKS, if USE_ZLIB is undefined.
	* struct_def.h: Use long long to keep stats.
	* configure.in, Makefile.in: Don't assume we need the math lib.
	* irc.c: refresh() was called while using termcap.
	* config.guess, config.sub: Update to the latest version.
	* whowas.c: Only grow the locked array when we added at the end of it.
	* s_user.c/m_ping(): Make PING work with masked servers.
	* s_bsd.c/close_connection(): Don't remap the fd's.
	* s_serv.c/m_connect(): Fix a typo: irc.conf -> ircd.conf.
	* configure, configure.in: Add a cache check for the mathlib check,
	  and fix a typo.

2001-02-08  Kurt Roeckx

	* send.c/sendto_channel_butserv(): Use the clist, instead of members.
	* s_id.c/ltoid(): Build the right string.
	* s_user.c/m_nick(): put user@host in comment for nick change
	  collision.

2001-02-07  Kurt Roeckx

	* support.c/inetpton(): Do it different. (fixes a buffer overflow.)
	* configure, configure.in: Complain if neither strerror(), or 
          sys_errlist[] is found.
	* bsd.c, s_bsd.c, s_debug.c: Don't use sys_errlist[], use strerror().
	* s_misc.c/rehash(): Now only "REHASH q", will flush the dns cache.
	* s_service.c/best_service(): Return the closest, instead of the
	  latest.
	* channel.c: Remove en extra space while sending MODE, generated during
          bursts.
	* channel.c: Use MAXMODEPARAMS instead of 3.
	* tkserv.c: Added support for crypted passwords.
	* tkserv.c: Add support for ipv6.  Now uses '%', instead of ':' where
	  it should.
	* tkserv.c: Unix domain sockets weren't working properly.
	* c_numeric.c, numeric_def.h, s_err.c, s_user.c, s_service.c: Fixed
	  spelling of ERR_ERRONEOUSNICKNAME.
	* s_conf.c/match_ipmask(): Check if the mask contains a number.
	* s_err.c/rpl_str(), rep_err(): correctly send unknown error reply's.
	* s_err.c, numeric_def.h: change RPL_BOUNCE to numeric 010.

2000-12-11  Kurt Roeckx

	* res.c, res_ext.c: fixed resolver problem for host with both an 
	  IN A and IN AAAA record.

2000-12-08  Kurt Roeckx

	* chkconf.c/initconf(): complain about not finding mandatory lines.
	* chkconf.c/validate(): make chkconf return -1 when initconf()
	  failed.
	* ircd.c/main(): Make sure that there is an M-line.
	* res.c/proc_answer(): cp wasn't updated for unknown types.
	* support.c, support_ext.h, a_io.c, mod_socks.c, s_bsd.c, s_conf.c,
	  c_bsd.c: change inetntop(), and add inetpton(), to be able to use
	  ipv4 addresses, when using ipv6.
	* s_conf.c/match_ipmask(): Make sure that ipv4/mask still works when
	  using ipv6.
	* support.c/inetntop(): Debug() doesn't work for clients.

2000-12-01  Kurt Roeckx

	* whowas.c/find_history(), get_history(): it should be faster
	  by avoiding work we shouldn't do.
	* whowas.c, whowas_def.h: The locked array didn't keep the whole nick.
	* s_user.c/m_ison(): prevent a buffer overflow.

2000-10-22  Kurt Roeckx

	* channel.c/set_mode(): mode -i should only remove invites
	  if it's done by an op. (from Grega Pogacnik)
	* res.c: Always query for both IN A, and IN AAAA if INET6 is
	  defined.
	* res.c/get_res(): when it complained about a bad hostname, 
	  the ip's were not correct.
	* res.c/update_list(): Using old pointer after realloc()
	* channel.c/set_mode(): allow any key to be used to unset the key.

2000-09-28  Kurt Roeckx

	* s_debug.c/debug(): Format string fixes.
	* a_log.c/sendto_log(): Format string fixes.
	* a_defines.h: Change #if INET6 to #ifdef INET6, like it should.
	* mod_socks.c: Added support for socks check using ipv6.
	* support.c/MyMalloc(): MyMalloc() was using a wrong ofset.
	* send.c/sendto_flog(): Prevent a core if time was set back.
	  Check msg, instead of duration.
	* s_bsd.c/summon(): Made buffer bigger, could be overflowed.
	* s_conf.c/match_ipmask(): Make a mask of /0 work using ipv4.

2000-08-20  Piotr Kucharski

	* hash.c/bigger_prime(): no need to check even numbers (speed!)
	* hash.c/clear_*_hash_table(): initialize (ch,cl,sv)size to 0

2000-08-15  Piotr Kucharski

	* s_user.c/m_oper(), s_serv.c/m_server_estab(), mkpasswd.c:
	  sometimes crypt() returned NULL, crashing ircd little further
	* a_io.c/parse_ircd(): iauth having lower MAXCONNECTIONS than
	  ircd crashed giving no explanations
	* channel.c/set_mode(): comma used in channel key made joining
	  that channel impossible

2000-08-13  Piotr Kucharski

	* s_user.c/m_oper(): parens typo (noted by viha)

2.10.3p1

2000-05-29  Kurt Roeckx

	* s_bsd.c/setup_ping(): typo which caused compile to fail using IPv6
	* configure: removed warning about poll() with linux 2.0 and libc6
	* res.c/proc_answer(): Added check for too long hostnames
	* s_conf.c/find_bounce(): send to the fd instead of class

2000-05-16  Piotr Kucharski

	* s_bsd.c/start_iauth(), config.h.dist: increase socket buffers
	  for ircd-iauth communication
	* channel.c/send_user_joins(): use rindex to check for ':' in
 	  channel names
	* hash.c/bigger_hash_table(): removed some unnecessary code
	* hash.c/hash_find_*(): removed so called "performance optimization",
	  which only seemed to eat cpu
	* parse.c: require registration for using NJOIN

2000-05-05  Kurt Roeckx

	* a_conf.c/conf_read(): Check cfh properly
	* s_auth.c/read_iauth(): olen was calculated wrongly (off by 1)
	* s_auth.c/read_iauth(): olen could be != 0 when iauth is restarted

2000-04-09  Kurt Roeckx

	* README, ircdwatch.8, INSTALL: Changed some forgotten references
	  to @stealth.net to @irc.org
	* s_bsd.c/setup_ping(): missing parentheses caused it to listen to
	  all ip's instead of the selected.
	* s_user.c/register_user(): removed some debug message
	* channel.c/m_join(): call clean_channelname() faster.
	* hash.c/bigger_hash_table(): build client hast table from the old one.

2000-02-10  Kurt Roeckx

	* hash.c/hash_find_server(): prevent creation of illegal pointers
	* channel.c/m_join(): called exit_client with correct value's
	  for a local client
	* s_bsd.c/report_error(): calling it with cptr == NULL would cause
	  a core dump.
	* s_serv.c/m_stats(): cleanup of stats l
	* s_conf.c: Allow compressed notation in the config file, and
	  convert it to non-compressed when reading it
	* s_user.c/m_nick(): Extra penalty on nick-change if you can't
	  speak on a channel
	* s_err.c: Changed RPL_LUSERME to say how many users he has, it
	  said incorrectly that it where clients before.
	* configure: Try to do better checking for IPv6 capable systems

2000-02-04  Piotr Kucharski

	* mod_socks.c/socks_read(): when using "careful" option, iauth
	  should not close connection before checking ST_V5b (from
	  KIKUCHI Takahiro)

2000-02-03  Kurt Roeckx

	* Makefile.in: Added $(LDFLAGS) and $(LIBS) for ircdwatch
	* os.h, res.c, s_bsd.c: Removed all s6_laddr's because it's not 
	  portable
	* res.c, s_auth.c: added missing calls for inetntop, was using
	  ipv4 functions while it should be ipv6.
	* hash.c: check store to be non-NULL

2000-01-03  Kurt Roeckx

	* ircd.c/io_loop(): removed annoying debug message
	* res.c/update_list(): don't use addrcount in for loop
	* s_user.c/register_user(): don't cp the username if it's the same
	* a_conf.c/conf_read(): fixed missing some initialisation when ident
	  wasn't loaded

2000-01-01  Kurt Roeckx

	* configure, configure.in: check for md5, FreeBSD uses it.
	* match.c: mask can now be empty, and will then return no match
	* whowas.c, hash.c: prevent creation of illegal pointers
	* s_misc.c/date(): fix for the offset bug during year change
	* s_conf.c/match_ipmask(): now checks the username, changed algo
	  for ipv4, and added it for ipv6.
	* s_conf.c/lookup_confhost(): Now correctly checks for ipv6 ips
	* chkconf.c/initconf(): No longer free()'s non alloc()'d memory
	* res.c/update_list(): Fix for ipv6, and also cleans it up a little

2000-01-01  Piotr Kucharski

	* s_user.c/register_user(): moved some stuff around, so m_lusers
	show proper number of clients (including just registered user).

1999-11-11  Christophe Kalt

	* s_bsd.c/add_unixconnection(): needed to be iauth aware.

1999-11-10  Christophe Kalt

	* struct_def.h, channel.c/m_join(): added code to reject clients
	trying to join a channel used by the PrettyPark virus.  (This is a
	sad day).

1999-11-03  Christophe Kalt

	* configure.in: check for getipnodebyname() for IPv6.

	* c_bsd.c, resolv_def.h, res_init.c, s_bsd.c: updated code to
	follow RFC 2553 (from Roar Throns).

	* mod_rfc931.c: renamed _data structure which causes problems
	under Compaq Tru64 Unix 5.0 (from Roar Throns).

1999-10-30  Kurt Roeckx

	* irc.c/main(): me.info was not allocated big enough (off by 1)

1999-10-04  Kurt Roeckx

	* channel.c/reop_channel(): removed a '(' that was there too much
	* configure.in: only detect ipv6 as linux, if the header files
	  are there, and detect if the system has native ipv6 support
	* os.h: readded define for POLLRDNORM
	* os.h: only define in6addr_any under linux if glibc version is < 2.1
	* os.h: removed defenition for uint32_t, which isn't use anywhere.
	  you should use u_int32_t instead.
	* os.h: define s6_laddr as in6a_words, if found, else as s6_addr32
	* configure.in, setup.h.in, os.h: check for ncurses/ncurses.h

1999-10-03  Christophe Kalt

	* a_conf.c: OpenBSD doesn't have RTLD_NOW, only RTLD_LAZY (as
	reported by Phil Pennock).

1999-09-23  Piotr Kucharski

	* channel.c/reop_channel(): do not reop local restricted clients
	(patch from wnelson).

	* s_bsd.c/summon(): let summon know about /dev/pts too (from pht).

1999-09-05  Piotr Kucharski

	* whowas.c/m_whowas(): fixed two bad behaviours (reported by viha)

1999-08-30  Christophe Kalt

	* os.h: moved __GNU_SOURCE up (linux).

2.10.3

1999-08-13  Christophe Kalt

	* channel.c/match_modeid(): logic fix (reported by Michal Svoboda).

	* os.h: added YET ANOTHER KLUDGE for linux and poll().

	* ircd.c: assume "-s" option in CYGWIN environment.

	* configure.in: update for CYGWIN environment.

1999-08-13  Piotr Kucharski

	* mod_socks.c/socks_read(): allow more methods in socks5 check.

1999-08-01  Piotr Kucharski

	* ircd.c/bad_command(): -d command line option no longer exists,
	while -s was added.

1999-07-28  Christophe Kalt

	* struct_def.h: IsChannelName() macro cannot use cid_ok() for the
	client.
	
	* channel.c/m_njoin(): inverse condition prevented modes from
	being sent to users and 2.9 servers.

1999-07-27  Piotr Kucharski

	* s_id.c/cid_ok(): quite unfortunate typo which made joining
	!channels impossible (from Michal Svoboda).

1999-07-25  Christophe Kalt

	* channel.c: sanity checks to drop modes on +channels even when
	received from servers (from Michal Svoboda).

	* struct_def.h, channel.c, s_id.c: added checks to ensure !name
	validity (from Michal Svoboda).

1999-07-23  Christophe Kalt

	* s_bsd.c/inetport(): fixed test for IPv6 (from KIKUCHI Takahiro).

	* ircd.c:
		* better casting for sbrk() for OSF 4.0.
		* setup_me(): fixed syntax for IPv6.

1999-07-21  Piotr Kucharski

	* channel.c/set_mode(): send ERR_UNKNOWNMODE to 'mode O' issued
	on non-!channels.

1999-07-21  Christophe Kalt

	* s_misc.c/exit_one_client(): generate fake PARTs for users
	quitting anonymous channels.

	* send.c/sendto_common_channels(): skip anonymous channels.

	* Makefile.in: ircdwatch needs clsupport.o which needs clmatch.o.

	* channel.c: added notices to warn users about +a channels.

1999-07-20  Kurt Roeckx

	* channel.c:
		* m_njoin: send +v for uniqops in the right case
		* send_channel_members: send +v inside njoin for ops too
		* m_invite: send back numerics if the channel doesn't exist	

1999-07-18  Piotr Kucharski

	* channel.c/set_mode(), m_kick(): send ERR_NOTONCHANNEL, not 
	ERR_CHANOPRIVSNEEDED, thus disable stealth secret channel probing;
	furthermore, use rather sptr->name, not parv[0] in sending errors;

1999-07-17  Christophe Kalt

	* ircd.c/setup_me(), s_bsd.c: fixed that really old bug about the
	I line format to match connections received on the loopback
	interface (from Eugene L. Vorokov).

	* configure.in: fixed previous changes about poll() (reported by
	KIKUCHI Takahiro).

1999-07-17  Kurt Roeckx

        * s_user.c/m_kill(): killer could end up < path

1999-07-14  Christophe Kalt

	* configure.in, os.h: use ncurses.h (from KIKUCHI Takahiro).

	* configure.in: SunOS has poll(), but we don't want to use it
	(reported by KIKUCHI Takahiro).

	* mod_lhex.c: replaced strtoul() with sscanf().

1999-07-11  Christophe Kalt

	* a_defines.h was missing support_def.h (from KIKUCHI Takahiro).

	* Makefile.in: ircdwatch.c uses strerror(), needs clsupport.o
	(from KIKUCHI Takahiro).

	* config.h.dist, ircd.c, s_debug.c: renamed CONNECTTIMEOUT to
	ACCEPTTIMEOUT, and changed from 30 to 90.

1999-07-11  Piotr Kucharski

	* mod_socks.c:
		* socks_write(): a typo made iauth allow open proxies and
		caused a lot of BADPROTO warnings (from KIKUCHI Takahiro).
		* socks_init(): buffer overflow with tmpbuf[] being too
		small to hold too many iauth options (also from Takahiro).

1999-07-09  Christophe Kalt

	* configure.in, os.h, s_bsd.c: IPv6 updates (from KIKUCHI Takahiro).

1999-07-05  Christophe Kalt

	* s_bsd.c/read_message(): can't use iauth_options when USE_IAUTH
	is undefined.

1999-07-05  Piotr Kucharski

	* channel.c/m_invite(): invite to :-channels was sometimes 
	lost with no error.

1999-07-04  Christophe Kalt

	* a_conf_def.h, a_conf.c, a_io.c: added the "timeout" option.

	* mod_socks.c: added PROXY_BADPROTO & OPT_PROTOCOL to
	differentiate between unexpected and bad protocol.

	* s_id.c: fixed alphabet_id[] (noted by Michal Svoboda), and
	rewrote some code.

1999-07-04  Piotr Kucharski

	* s_user.c/m_nick(): fix performance bug introduced in code
	preventing insidious collisions

	* mod_socks.c/socks_open_proxy(): now reports in logs versions
	of open proxies found

1999-07-02  Kurt Roeckx

	* configure.in, Makefile.in: Added -I for inet6.

1999-07-02  Christophe Kalt

	* res.c/proc_answer(): portability fix from hybrid6.
	
	* send.c/sendto_match_butone(): finally looked closely at why this
	was sending $*.mask to the wrong servers, fixed.

	* struct_def.h, send.c/sendto_match_butone(), list_ext.h,
	list.c/make_client(), ircd.c/setup_me(), s_misc.c/exit_client(),
	s_serv.c, s_service.c/m_service(), s_user.c/m_user(): removed old
	code conditional to NO_USRTOP being undefined.
	
	* s_user.c:
		* m_nick(): new delay on nicks to prevent insidious
		collisions (from Piotr Kucharski).
		* m_private(): dropped restrictions on mass msg/notices.

	* s_auth.c/read_authports(): can't call set_clean_username with
	->auth pointing to ->username (from Piotr Kucharski).

	* mod_socks.c: couple typos.

	* a_conf.c/conf_read(): ->popt wasn't initialized.

1999-06-27  Christophe Kalt

	* s_misc.c/exit_one_client(): made BETTER_NDELAY a little more
	friendly (from Piotr Kucharski).

	* a_io.c/sendto_ircd(): added error output in write error notice.

	* hash.c/hash_channel_name(): added shortname parameter to disable
	guess and fix bug (From Q).

	* channel.c/m_join(): reject local user join for duplicates.

	* mod_socks.c: more options, less bugs (from Piotr Kucharski).

	* s_user.c:
		* m_nick(): kill nicks introduced by server if parc != 8
		instead of simply sending a notice.
		* register_user(): static variable wasn't declared as such.

	* ircd.c, s_serv.c: used mybasename();
	
	* support_ext.h, support.c: added mybasename();

1999-06-20  Christophe Kalt

	* mod_socks.c: added code to allow checks for v5 as well as v4,
	depending on configuration (from Piotr Kucharski).

	* configure.in, ircd.c/ircd_writetune(), s_serv.c/m_rehash(): use
	basename, and check if it needs libgen.

	* channel.c/m_njoin(): simple optimization resulting from change
	to sendto_match_servs_notv() below.

	* send_ext.h, send.c: sendto_serv_{not,}v and
	sendto_match_servs_{not,}v now return an integer.

1999-06-16  Christophe Kalt

	* iauth.c/main(): send version to ircd upon startup.

	* mod_rfc931.c/rfc931_work(): removed checks on weird chars, let
	ircd deal with this.

	* s_auth.c:
		* start_auth(): abort if getpeername() fails (problem
		reported by Wolfgang Scherer).
		* added set_clean_username(), used in read_iauth() and
		read_authports().
		* read_iauth(): added o message (a->i).
		* read_iauth(): added V message (a->i).

	* struct_def.h, s_serv.c: added SV_OLDSQUIT, and made m_squit()
	smarter (ugh, it's a kludge).

1999-06-07  Christophe Kalt

	* s_user.c:
		* m_nick(): added notice to warn of NICK messages coming
		from servers with parc != 8.
		* register_user(): fixed unaccurate notices about iauth.

	* config.h.dist: increased HANGONRETRYDELAY & HANGONGOODLINK values.

1999-06-06  Christophe Kalt

	* struct_def.h, send.c/sendto_match_butone(), list_ext.h,
	list.c/make_client(), ircd.c/setup_me(), s_misc.c/exit_client(),
	s_serv.c, s_service.c/m_service(), s_user.c/m_user(): added
	reorder_client_list() and NO_USRTOP defines.  This reduces memory
	usage  (Original code from Michal Svoboda).
	
	* channel.c/reop_channel(): desynched could be caused by server
	reops (channel mode +r) (reported by Thomas Kuiper).

1999-05-01  Christophe Kalt

	* s_conf_ext.h, s_conf.c, s_serv.c: added a new list for K/k lines
	only as an easy way to improve overall performance.

	* service_def.h: updated SERVICE_MASK_ALL.

1999-04-19  Christophe Kalt

	* channel.c/m_njoin(): need to use sendto_match_servs*(); duh!

	* send_ext.h, send.c: added sendto_match_servs_notv().

	* s_serv.c/m_squit(): fixed logic in previous change.

	* packet.c/dopacket(): fixed uncompression code.

1999-04-15  Christophe Kalt

	* service_def.h, channel.c/m_topic(), s_service.c/m_servset():
	added SERVICE_WANT_TOPIC.
	
	* s_serv.c/m_squit(): fixed serious and old bug that caused
	servers to be removed from memory (but not dependants!!!) while
	squit is going upstream.

	* s_debug.c/send_usage(): divide by zero bugfix (reported by Aaron
	Campbell).

	* channel.c/m_njoin(): ignore channels with an invalid mask.

	* common/parse.c: extended MSG_NOU to include services.

1999-04-10  Christophe Kalt

	* Makefile.in, a_conf_def.h, a_externs.h, a_conf.c, mod_lhex_ext.h,
	mod_lhex.c: New module (from Andrew Snare).

	* s_debug.c: increased size of debugbuf[] to avoid overflows (from
	Eugene L. Vorokov).

	* send.c/send_message(): catch more unlikely errors (from Eugene
	L. Vorokov).

	* s_bsd.c/set_sock_opts(): silently ignore errors for SO_SNDLOWAT.

	* common/os.h: FreeBSD portability (from KIKUCHI Takahiro).

	* s_bsd.c/read_message():
		* debug notice format bugfix (from Q).
		* INET6 fix (from KIKUCHI Takahiro).

	* s_conf.c:
		* initconf(): allow service type to be in hex in the
		configuration (from Thomas Kuiper).
		* find_conf_flags(): case sensitivity fix (from Q).

1999-03-19  Christophe Kalt

	* mod_socks.c/socks_work(): closed proxies would get rejected on
	first attempt and accepted later as the "closed" status was in the
	cache.

	* s_user.c/register_user(): fixed iauth failure notice timing bug.

1999-03-13  Christophe Kalt

	* struct_def.h, ircd.c, s_auth.c, s_bsd.c, s_user_ext.h, s_user.c,
	a_struct_def.h, iauth.c, a_conf.c, a_io.c: added XOPT_EARLYPARSE,
	`P' message for iauth, `extinfo' option for iauth.

	* a_io.c/next_io(): if xxx_start() returns 1, count module as left.

1999-03-11  Christophe Kalt

	* chkconf.c:
		* finally shut off MyFree() redefinition warning.
		* fixed undefined behaviour with ++ operator (effet de bord).

	* a_io.c/init_io(): bzero bugfix (reported by Tomas Edwardsson).

	* a_conf_def.h, a_conf.c:
		* conf_err(): send conf errors to ircd as well.
		* conf_match(): extended iauth.conf syntax for hostname
		and IP matching.
		* added conf_ipmask() to allow use of a.b.c.d/z format for IP.

	* configure.in: use "cc -Ae" on HPUX (reported by Jens Riecken).

	* ircd.c/main(): iauth's presence needs to be checked before
	setting up the signal handlers.

1999-03-09  Christophe Kalt

	* a_struct_def.h, a_conf_ext.h, a_conf_def.h, a_conf.c, a_io.c,
	mod_pipe.c, mod_rfc931.c, mod_socks.c: rewrote next_io() and
	conf_match() to use new more flexible logic.

	* os.h, a_conf.c, iauth.c, configure.in, Makefile.in, acconfig.h:
	added DSM support.

1999-03-08  Christophe Kalt

	* struct_def.h, a_conf.c, a_conf_ext.h, iauth.c, ircd.c, s_auth.c,
	s_auth_ext.h, s_bsd.c, s_user.c, s_user_exit.c: added
	XOPT_{REQUIRED,NOTIMEOUT,EXTWAIT}, added iauth_spawn counter;
	removed iauth_required variable.

	* struct_def.h, s_auth.c, s_user.c: added FLAGS_DONEXAUTH to get
	rid of the approximation from yesterday.

	* s_bsd.c/read_message(): use CLR_READ_EVENT() before modifying fd.

1999-03-07  Christophe Kalt

	* res_comp.c: added missing prototypes.
	
	* struct_def.h, a_conf.c, a_conf_ext.h, iauth.c, s_auth_ext.h,
	s_auth.c, s_user.c: added option to reject new user connections if
	iauth is dead (approximate!).

	* struct_def.h, ircd.c, res.c, s_auth.c, s_bsd.c: removed all
	references to {Set,Clear,Do}Access macros (unused for a LONG time).

	* ircd.c:
		* check_pings(): fixed "immediate ping timeout" bug.
		* main(): check for iauth's presence after changing [ug]id.

	* s_bsd.c/do_dns_async(): notify iauth when no PTR record is found.

	* Makefile.in: fix for M4 file path (Matthew Sullivan).

1999-03-04  Christophe Kalt

	* ircd.c/io_loop(), s_bsd.c/start_iauth(): keep trying to restart
	iauth (up to once every 90 seconds) to avoid being iauth-less.

	* struct_def.h, mod_socks.c, s_auth.c, s_user.c: added new message
	type from iauth to ircd to allow denying connections without any
	message sent to &AUTH; used by the socks module.

1999-02-22  Christophe Kalt

	* s_err.c: RPL_TRACESERVICE changed to show values in hexadecimal
	(from Thomas Kuiper).

	* s_service.c/m_service(): fixed error message.

1999-02-20  Christophe Kalt

	* configure, configure.in, Makefile.in, config.h.dist, buildm4,
	send.c, ircd.c, s_bsd.c, s_conf.c, s_misc.c, s_serv.c, s_user.c,
	chkconf.c, a_conf.c, a_log.c: paths overhaul.

	* c_msg_ext.h, c_msg.c: fixed m_server() prototype.

1999-02-19  Kurt Roeckx

	* packet.c/dopacket(), s_bsd.c/read_packet(): bugfix.

1999-02-18  Christophe Kalt

	* res.c/proc_answer(): fixed T_PTR processing (problem reported by
	Michal Svoboda).
	
	* channel.c:
		* del_modeid(): bugfix when called with NULL.
		* can_join(): readability (from Q).

	* s_serv.c/check_version():
		* removed code about 2.10.0[ab]*.
		* never used NJOIN with 0209* servers (bugfix).

	* s_err.c: removed extraneous %s in RPL_UNIQOPIS.

1999-02-09  Kurt Roeckx

	* hash.c/hash_find_channels(): cleanup.

	* ircd.c/main(), ircd_ext.h: various cleanups.

	* res_comp_ext.h: added prototype for ircd_getshort().

	* s_bsd.c/read_message(): typo fix (=! -> !=).

	* s_conf.c/attach_conf(): stops detecting listen sockets as
	clients from same IP address.

	* s_err.c: removed / from replies.

	* s_serv.c/m_links(): removed unused variable.

	* s_user.c/who_channel(): removed unused variables.

1999-02-05  Christophe Kalt

	* match.c/match(): removed predictable if's (from Tero Jnk).

	* s_serv.c/m_server_estab(): flush_connections() called once
	during burst.

	* s_debug.c: updated.

	* ircd.c/io_loop(), s_bsd.c/read_message(), s_bsd_ext.h, config.h:
	new logic inspired from irce, removed PREFER_SERVER.

	* s_bsd.c: 
		* added read_listeners().
		* set_sock_opts() now sets SO_SNDLOWAT.
		* add_connection() now sends a message to client being
		reject by the anti-clone crap.

	* send.c: added flush_fdary() function.

	* common_def.h, config.h, send.c: removed SENDQ_ALWAYS define,
	simplified code for when it was undefined as it is only used by
	the client now.

2.10.2

1999-02-03  Christophe Kalt

	* mod_rfc931.c/rfc931_work(): get rid of any \n in replies.
	
	* a_io.c/parse_ircd(): when receiving a "DNS timeout" message,
	inform ircd if we're already done (otherwise, it keeps waiting
	until timeout).

	* s_bsd.c/completed_connection(): tell iauth not to wait for DNS
	information for servers we connect to.

	* s_auth.c/read_iauth():
		* fixed "Garbage" notices to &AUTH.
		* send E message to iauth when parsing garbage.

1999-01-28  Christophe Kalt

	* s_serv.c/m_server_estab(): added notices to &DEBUG.

	* struct_def.h, s_auth.c: renamed MotdItem to LineItem and moved
	around some defines.

	* s_bsd_ext.h: added missing ';' for utmp_open() definition.

	* channel.c/m_list(): !shortname now reports +p/+s channels (but
	still hides member count and topic for +s channels).

	* match.c/match(): rearranged if test to suppress harmless read
	overflow errors (reported by Insure++).

	* s_user.c/m_nick(): lp needs to be initialized (reported by Insure++).

	* hash.c/hash_find_channels(): bugfix (spottoed by Q).

	* mod_rfc931.c/rfc931_init(): fix for a silly bug (from Piotr).

1999-01-19  Christophe Kalt

	* resolv_def.h, res_comp.c, res_init.c: updated (BIND 4.9.7-REL).

	* packet.c/dopacket(): don't call unzip_packet() without data at
	beginning of connection only! (from Q).

	* numeric_def.h, s_err.c, channel.c: added numerics RPL_UNIQOPIS
	(325), ERR_BANLISTFULL (478) and ERR_UNIQOPPRIVSNEEDED (485).

	* channel.c:
		* m_njoin(): missing return value (reported by Insure++).
		* m_mode(): use ERR_RESTRICTED for restricted clients.
		* m_join(): it's now possible to create	!!#foo if #foo exists.
		* m_list(): now works for !shortname.

	* hash_ext.h, hash.c: added hash_find_channels().

	* configure.in, os.h:
		* update for autoconf 2.13.
		* let's trust autoconf to decide to use poll() or not.

	* s_bsd.c: sendto_flags() doesn't exist, it's sendto_flag().

	* mod_rfc931.c:
		* stats weren't initialized.
		* added undocumented "protocol" option (it's boring!).

	* mod_socks.c:
		* fixed never occuring memory leak.
		* improved stats (from Piotr Kucharski).
	
	* s_user_ext.h, s_user.c, s_service.c: added a parameter to
	do_nick_name() [UID].

1999-01-12  Christophe Kalt

	* a_log_def.h, mod_pipe_ext.h, a_externs.h, mod_pipe.c, a_conf.c:
	finally wrote the pipe module.

	* struct_def.h, a_conf_def.h, a_io_ext.h, iauth.c, mod_rfc931.c,
	mod_socks.c, s_auth.c, s_auth_ext.h, s_misc.c: iauth now sends
	statistics to ircd, shown by /stats t.

	* a_conf_def.h, a_conf.c, a_log_def.h, mod_socks.c: SOCKS module
	overhaul: added caching, rewrote code to use v4 instead of v5, and
	to be smarter (Based on work from Piotr Kucharski).
	
	* s_user.c: do_nick_name() now rejects "anonymous".

	* packet.c/dopacket(): don't call unzip_packet() without data.

	* channel.c: extension to del_modeid() from Kaspar Landsberg.

	* s_bsd.c: don't call dopacket() again for compressed links just
	because the output buffer was filled up.

1998-12-31  Christophe Kalt

	* ircd.c: removed extraneous flush_connections() call in io_loop().
	
	* ircd.c, s_bsd.c, list.c, list_ext.h: removed unused 'active' code.

	* struct_def.h, parse.c: removed various unused aClient fields.

1998-12-24  Christophe Kalt

	* s_service.c: using FLAGS_CBURST for services has too many
	implications; reverted.
	
	* struct_def.h, s_bsd.c, s_zip.c: removed requirement for
	inflate() to never fill up the uncompression output buffer, an
	unlikely situation which is now dealt with. (mostly from Q).

1998-12-21  Christophe Kalt


	* s_user.c:
		* [RFC] suppressed an error reply for notices in m_message().
		* server notices to +n channels were failing. (Reported by Q).

	* a_defines.h: INET6 fix for OSF (from Roar Throns).

	* os.h: INET6 fix for OSF (from Roar Throns).

	* channel.c: added check against 'duplicate joins' in m_njoin().

1998-12-14  Christophe Kalt

	* channel.c:
		* yet another +a/+r fix in set_mode().
		* send_channel_modes() would occasionnally send duplicate
		bans. (Reported by Robert Martin-Legene <robert@irc.ircnet.dk>)

	* iauth.c, a_io.c: added nonexistant INET6 code.
	
	* os.h, nameser_def.h, resolv_def.h: OSF portability fix from Roar
	Throns.

	* s_auth.c: added missing INET6 code. (Roar Throns)

1998-09-25  Christophe Kalt
	
	* configure.in: Check for IPv6 system type and update $LIBS (from
	KIKUCHI Takahiro <kick@kyoto.wide.ad.jp>)

	* bsd.c, os.h, parse.c, struct_def.h, support.c, support_ext.h,
	c_bsd.c, c_version.c, c_version_ext.h, irc.c, swear.c, channel.c,
	chkconf.c, ircd.c, nameser_def.h, res.c, res_def.h, res_init.c,
	resolv_def.h, s_auth.c, s_bsd.c, s_conf.c, s_debug.c, s_misc.c,
	s_serv.c, s_user.c, acconfig.h, configure.in: merged 2.9.5+IPv6.

1998-04-12  Christophe Kalt

	* configure.in, s_debug.c: vsyslog() isn't necessarely available
	even if USE_STDARG is defined. (Digital Unix)

1998-04-04  Christophe Kalt

	* c_version_ext.h, c_version.c, irc.c, swear.c: Digital Unix 4.0B
	port (Roar Throns <roart@nvg.ntnu.no>)

1998-12-12  Christophe Kalt

	* channel.c: +a/+r fix for !channels.

1998-11-20  Christophe Kalt

	* irc.c: allocate me.info (fix by Helmut Franzke <hf@rp-online.de>).

2.10.1

1998-11-12  Christophe Kalt

	* Doc references to @stealth.net changed to @irc.org.

	* s_serv.c: report_ping() now sends some extra info to &DEBUG.

	* s_bsd.c: send_ping() window set to 20 minutes (instead of 10),
	and never close it.

1998-11-03  Christophe Kalt

	* s_serv.c: changed m_trace() to only show unknowns to opers and
	local clients.

	* a_io.c: fd remap processing bugfix (from kurt@roeckx.be).

	* s_bsd.c: fixed ircd/iauth problem with servers ircd connects to.

1998-10-31  Christophe Kalt

	* parse.c: reordered msgtab[].

	* s_serv.c: added more restrictions to m_links(), m_stats() [t],
	m_motd() and m_lusers() for remote clients. (*sigh*)

	* channel.c: fixed count_channels() not to count empty channels.

1998-10-28  Christophe Kalt

	* s_user.c: optimized m_whois() (pointed out by several people).

	* s_user.c, channel.c: channel creator flag is now removed on -o.

	* channel.c:
		* !channel creation is now done with !! rather than !#.
		* fixed channel counters (affects /lusers & /stats z).
		* m_njoin(): simple optimization.

Sat Oct 10 18:55:38 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* a_io.c: don't TST_* if cldata[i].?fd <= 0 in loop_io().

	* ircd.s, s_auth.c, s_bsd.c, s_bsd_ext.h: always attempt to
	restart iauth in start_iauth() after receiving a SIGUSR1.

	* s_service.c: reverted part of last change.

	* s_user.c: last change introduced a bug. (typo, reported by N. Aust)

	* channel.c: fixed match_modeid() to handle remote clients
	properly now that it's used from can_send().	

Thu Oct  8 18:33:50 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* configure.in: always compile with -g flag, and never strip.

	* channel.c:
		* renamed sub1_from_channel() to free_channel().
		* always send modes for empty channels during netjoin.
		* fixed old (2.9.x) memory leak in collect_channel_garbage().

	* s_id.c:
		* linked list corruption bugfix in collect_chid().
		* added logic to avoid excessive caching in cache_chid().

	* s_service.c: stdarg bugfix in check_service_butone (from O.G.).

Sun Sep 27 15:12:53 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_user.c: prefix bugfix (reported by mrg).

2.10.0p1

Fri Sep 25 22:21:06 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* channel.c: check for +r mode before calling reop_channel().

2.10.0

Wed Sep 23 19:55:14 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* configure.in, os.h: don't trust poll() to work if it exists.
	
	* channel.c:
		* removed FULLV2_10 ifdef's
		* don't send empty NJOIN in m_njoin() (Reported by Beeth).
	
	* channel.c, s_debug.c, config.h.dist: removed MIRC_KLUDGE.

	* chkconf.c: added warning about old V line format.

	* config.h.dist: OPER_DIE is now defined by default.

	* s_user.c: reverted last change, and hostnames are now truncated.

	* os.h: preprocessor syntax fix.

	* s_conf.c: stupid typo in match_ipmask().

	* s_auth.c: added a new debugging notice.

	* s_debug.c: flags update.

	* ircd.c:
		* added some debugging info in restart notice.
		* changed strdup() in mystrdup() (from Andrew Snare).

Sun Sep 20 15:22:25 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* os.h, configure.in: configure now checks for poll() existence to
	decide if it should be used.

	* res_init.c, s_conf.c: strncpy() bugfixes (from Q).

	* s_auth.c, mod_rfc931.c: '[' is no longer allowed in ident replies.

	* channel.c: don't let chanops set +a on !channels.

	* a_io.c: (weirdbug)fix.

	* s_err.c: numeric 004 update.

	* s_user.c: connections rejected by iauth are now shown as K-lined
	in &LOCAL.

	* s_bsd.c: new PASS syntax (Q).

Sun Sep 13 20:32:08 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* config.h.dist, ircd.c: removed MYNAME.
	
	* Makefile.in, config.h.dist: SPATH/APATH cleanup.

	* parse.c: ABW fix (Leon Brouwers <leonb@sci.kun.nl> and purify).

Sat Sep 12 18:53:39 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* ircd.c, s_bsd.c: SIGCHLD handling code to avoid zombies.
	
	* s_bsd.c:
 		* udpfd used in place of adfd in in read_message().
		* silently deal with linux accept() way of life.

	* a_io.c: loop_io() bugfix for select() systems.

	* ircd.c:
		* me.info from ircd.conf was overridden in setup_me().
		* server_reboot() created a zombie.

	* s_user.c: allow servers to speak on channels (reported by Q).

	* channel.c:
 		* NJOIN bugfix related to unique ops (reported by Q).
		* removed old core from msa.

	* various little cleanups.
	
	* res.c: buffer overflow fix. (thanks to Leon Brouwers
	<leonb@sci.kun.nl> and purify)

Tue Sep  8 21:23:27 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_user.c: user mode +a propagation bugfix.

	* ircd.c: die immediately if no listener exists after reading the conf.

	* send_ext.h, send.c, channel.c: backward compatibility fix for eI
	channel modes (added sendto_match_servs_v()).

Mon Sep  7 18:03:34 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_bsd.c: inversed test for -s in start_iauth().

	* channel.c:
		* keys starting with ':' don't propagate correctly.
		* m_njoin() didn't send modes properly to clients.

	* s_serv.c:
		* slightly changed the PASS syntax again.
		* 2.10 alphas didn't recognize peers as such (reported by Q).

Sun Aug 23 22:16:40 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* struct_def.h, ircd.c, list.c, list_ext.h, s_conf.c, s_serv.c,
	s_service.c, s_user.c: aClient's info is now dynamically allocated
	to overcome server handshake limitations.

Sat Aug 22 15:20:10 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* channel.c: fixed ^G bug (only triggered in channel creation)

	* struct_def.h, channel.c, s_err.c, s_user.c: AWAY is back.

Sun Aug 16 16:01:15 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* ircd.c:, s_bsd.c: added -s switch.

Sat Aug  8 14:21:20 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_serv.c: Roger's diff broke compression. (reported by Andre Koopal)

	* Makefile.in: iauth didn't know where to find zlib.h (reported
	by delta)

	* a_log.c: typos in parameter names (reported by delta).

Fri Aug  7 23:54:10 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* mod_rfc931.c: added sanity check on replies.

Fri Aug  7 00:03:45 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* mod_rfc931.c: read RFC 1413 and fixed the reply parser.

	* numeric_def.h, s_err.c, s_auth_ext.h, s_auth.c, s_serv.c: added
	/stats a to show iauth's configuation.

	* s_auth.c, a_*.[ch], mod_*.c:
		* SIGUSR2 will cause iauth to close and reopen log file(s).
		* worked around delayed messages from the iauth caused by
		ircd's fd remapping habit.
		* reduced memory usage by dynamically allocating `inbuffer'.
		* added G message (a->i).
		* added E message (i->a) and cleaned up errors messages in
		parse_ircd().
		* added a/A messages (a->i) to transmist configuration.
		* revisited next_io() and hopefully fixed the logic.

	* ircd.c, res.c, s_auth.c, s_auth_ext.h, s_bsd.c, s_user.c:
		* stdarg'ized sendto_iauth().	
		* iauth is now automatically restarted.
		* fixed bcopy() length in read_iauth().
		* added notices to track the "" username bug.

Tue Aug  4 21:43:53 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* a_io.c: numerous bug fixes..

	* mod_rfc931.c: fix to prevent crash when receiving data from
	broken ident servers.

	* a_conf.c, a_conf_def.h, a_externs.h, a_log_def.h: added module
	`socks'.  (Based on a 2.9.5 diff from Jonathan Chapman)

	* a_log.c: added timestamps to `auth' log.

	* s_misc.c: EXITC_AREF is a special case like EXITC_REF.

	* parse.c: penalty bugfix.

	* ircd.c, s_auth.c, s_bsd.c, s_bsd_ext.h:
 		* cleaned up iauth startup procedure, added start_iauth()
		which is called upon SIGUSR1.
		* various fixes in read_iauth().

Sun Aug  2 18:34:20 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_mist_ext.h, s_misc.c, support_ext.h, support.c: moved
	myctime() from s_misc.c to support.c.
	
	* s_bsd.c, a_io.c: added `R' message from ircd to iauth.

	* s_serv.c: updated check_version() not to use NJOIN with 2.9.5 links.

	* parse.c: restricted SQUERY to users.
	
	* channel.c: 
		* m_njoin(): conversion bugfix (Reported by Q).
		* added FULLV2_10 #if's.
	
	* struct_def.h, channel.c, s_err.c, s_misc.c: added channel mode `r'.
	
	* send.c: reference to NULL pointer in sendto_match_servs()
	(Reported by Core).

	* sys_def.c, chkconf.c: MyFree() redefinitions (from Core).

	* Makefile.in: "make install-server" path problems.

Sun Jul 19 15:32:48 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_conf.c, ircd.c: unitialized K line comment in check_pings().

	* channel.c:
		* beI modes to multiple channels were corrupted.
		* mode parameters starting with : don't propagate correctly.
		* !channel creation propagation was broken (reported by Eumel).

	* send.c, struct_def.h, channel.s, res.c, ircd.c, s_auth.c,
	s_auth_ext.h, s_bsd.c, s_bsd_ext.h, s_conf.c, s_user.c,
	Makefile.in, config.h.dist: added iauth.

Fri Jun 12 19:00:03 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* ircd.c: fix for inetd support (from Jonathan Chapman
	<jonathan@clover.net>).

	* parse.c, s_debug.c: more LOCOP_* fixes (from Michael Neumayer).

	* s_user.c: oper counter bugfix (from Magnus Tjernstrom).

	* channel.c:
		* fixed join #a,#b,.. desynch bug (reported by viha@vip.fi).
		* fixed netjoin +p/+s desynch problem (same).
	
Sun May 31 14:18:41 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* send.c, channel.c: '-' leftovers (Michael Neumayer <eumel@42.org>).

Mon May 25 15:13:51 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* struct_def.h, channel.c, hash.c, s_misc.c: changed new channels
	prefix to ! (instead of -).

	* parse.c: undefining LOCOP_* had no effect (reported by Eumel).

	* s_service.c: SERVICE_WANT_OPER burst fix (from Jonathan Chapman).

	* s_bsd.c: SO_LINGER patch (from Andrew Snare <ajs@pigpond.com>).

	* configure.in: better logic for --resconf.

	* channel.c:
		* m_invite() fix for &channels.
		* add_modeid() always used RPL_BANLIST.
		* bIe modes coming from a server were rejected
		add_modeid() if another mode with the same pattern existed.
	
	* c_debug_ext.h, c_debug.c, chkconf.c, s_misc.c, s_zip.c: fixes
	for DEBUGMODE (from Andrew Snare <ajs@pigpond.com> & Magnus
	Tjernstrom <d92-mtm@ludd.luth.se>)

	* hash.c: bigger_prime() useless optimization from Magnus :-)

Tue May  5 19:26:25 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* config.h.dist, Makefile.in, struct_def.h, s_externs.h, send.c,
	channel.c, hash.c, s_debug.c, s_err.c, s_misc.c, s_serv.c,
	s_user.c: implemented new channels.

	* struct_def.h, parse.c, channel.c, ircd.c, s_debug.c, s_misc.c,
	s_serv.c, s_user.c, whowas.c, config.h.dist: replaced BIG_NET #define.

Fri Apr 24 20:30:21 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* irc.c: missing refresh() (from Dave Hill <ddhill@zk3.dec.com>).

	* s_conf.c, s_service.c: portability fixes from Avalon.

	* channel.c, s_user.c: adapted undernet's Bquiet.

Sun Apr  5 17:50:08 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* configure, configure.in, config.h.dist: added --logdir option.
	
	* s_serv.c:
		* moved user wallops from #wallops to +wallops.
		* stricter m_server() check for unregistered users.

	* send.c: wallops were sent to services and unregistered clients.

Sat Apr  4 19:05:26 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* struct_def.h, packet.c, s_bsd.c: (never triggered) link
	compression bugfix (Roger Espel Llima <espel@llaic.u-clermont1.fr>).

	* config.h.dist, ircd.c, s_debug.c: added PREFER_SERVER #define.

	* s_user.c:
		* m_oper() notice bug fix (Michael 'Eumel' Neumayer).
		* completely disabled AWAY.

	* struct_def.h, parse.c, channel.c, ircd.c, s_debug.c, s_misc.c,
	s_serv.c, s_user.c, whowas.c, config.h.dist: added BIG_NET #define.

	* s_misc.c; Y2K fix.

Tue Mar 31 18:52:41 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* s_serv.c: removed now obsolete USE_NJOIN.

	* numeric_def.h, struct_def.h, channel.c, s_debug.c, s_err.c,
	s_serv.c: added channel modes +e (EFnet's exceptions to bans) and
	+I (invitations); raised MAXBANS (should be renamed) to 30.

	* support.c: extended make_version().

	* channel.c:
		* notify user when a ban is rejected because "redundant".
		* /invite (from chanop) now overrides bans & limit.

	* s_debug.c, s_serv.c: /stats r no longer restricted to DEBUGMODE.

	* s_bsd.c: getrlimit()/setrlimit() is now used regardless of
	poll() availibility.

Sun Mar 22 14:01:24 1998  Christophe Kalt  <kalt@millennium.stealth.net>

	* channel.c: MIRC_KLUDGE sent bogus modes on channel creation.

	* os.h, support.c, s_bsd.c: CYGWIN32 cleanup from Dave Miller.

	* s_user.c: hunt_server() cleanup.

	* s_conf.c: match_ipmask() choked on a.b.c.d/z (reported by Helmut
	Springer <delta@RUS.Uni-Stuttgart.DE>).

2.9.5

Tue Feb 17 21:25:02 1998  Christophe Kalt

	* s_bsd.c: w32 doesn't have a working fork().
	
	* ircd.c: deal with "getpwuid(getuid())" returning NULL.
	
	* configure.in, os.h, support.c: use our own truncate() when
	needed (CYGWIN32), and CYGWIN32 portability.  (Thanks to Dave
	Miller <yahoo@molalla.net>).

	* config.guess: update.

	* s_user.c: broadcast restriction wasn't right (Yegg).

	* send.c, ircd.c: removed noisy debugging notices.

Sat Feb  7 09:21:52 1998  Christophe Kalt

	* s_user.c:
		* oper log is now more verbose.
		* broadcast messages/notices are now less restricted.

	* hash.c: nitpicking (from Magnus Tjernstrom).

	* configure.in: quoting cleanup (from Alain).

	* send_ext.h, s_debug.h: STDARG prototyping cleanup (from Alain).

Fri Jan 23 17:39:17 1998  Christophe Kalt

	* os.h: linux 2.1 implements poll() but the header files are a
	mess (what did you expect?), kludge to get it work (from Vesa).
	
	* channel.c: fixes related to MIRC_KLUDGE.

	* s_conf.c:
		* find_kill() fix and cleanup (mostly from Vesa).
		* find_bounce() stricter check and fix (from Vesa).
	
	* parse.c: m_njoin() is only used by the server.

Fri Jan 23 17:38:36 1998  Christophe Kalt

	* channel.c:
		* buffer overflow fix.
		* bugfix from Avalon.
		* join/invite were propagated for &channels. (reported by DLR)
		* invite/kick were propagated beyond masks. (reported by DLR)
		* multiple kicks could desynch channels.
	
	* s_user.c: stricter check on unregistered NICK changes (Avalon).

	* hash.c: hash_find_server() didn't handle z.stealth.net (1
	letter) masked by *.stealth.net (DLR).

	* msg_def.h, struct_def.h, channel_ext.h, parse.c, channel.c,
	s_serv.c: added send_channel_members() and m_njoin().

	* send_ext.h, send.c: added sendto_serv_notv().

	* buidm4: yet another m4 booboo. (fix from Mario)

Wed Jan  7 11:40:59 1998  Christophe Kalt

	* s_user.c: strncpy() lameness.

	* s_conf.c: added match_ipmask() (from Vesa).

	* configure.in, send_ext.h: "checking for working stdarg" always
	failed because of a quoting problem.

Thu Dec 18 21:48:18 1997  Christophe Kalt

	* channel.c: abusive usage of /names now forbidden.

	* class.c: imposed a minimum of 60 seconds for connect frequencies.

	* struct_def.h, s_misc.c, s_serv.c: check_link() tuning and statistics.

Tue Dec 16 17:12:16 1997  Christophe Kalt

	* s_conf.c: finished D lines.

	* numeric_def.h, struct_def.h, list.c, s_err.c, s_serv.c: added
	check_link() to prevent server links from being flooded by replies
	to user requests.

	* s_bsd.c: try to prevent the server from flooding with UDP pings.

	* channel.c: #foo:*.tld modes were always sent during the burst.

Wed Nov 12 21:02:15 1997  Christophe Kalt

	* struct_def.h, s_conf_ext.h, s_conf.c, ircd.c, chkconf.c,
	numeric_def.h, s_err.c , s_serv.c: added D configuration
	lines. (/stats h)

	* send.c, s_service.c: allocate more dbufs during a service burst
	if needed.

	* channel.c: cosmetics, and fixed the use of MAXPENALTY in m_kick().

	* s_debug.c: too many parameters in a call to sendto_one().

2.9.4

Sat Oct 18 09:37:33 1997  Christophe Kalt

	* setup.h.in, configure.in: (Alain Nissen)
		* additional header files checked.
		* non-blocking system test fixed.

	* os.h: curses/termcap stuff is now only used for the client (AN).

	* swear_ext.h, swear.c: portability issues (Alain Nissen).

	* c_bsd.c, s_bsd.c, os.h: SELECT_FDSET_TYPE (defined in os.h) used
	as pointer type in select() calls; HPUX compilation problem
	fixed.  (Alain Nissen)

	* buildm4: typo & missing quote. (again!)	

Fri Oct 10 23:48:25 1997  Christophe Kalt

	* s_serv.c: improved m_die() and m_restart() in case a service is
	used for user log.

	* os.h, acconfig.h, configure.in, res.c, s_bsd.c: (Alain Nissen)
		* kludge to deal with broken hostent declaration in
		netdb.h on some linux systems.
		* test for sigaction & sigset functions added back; signal
		implementation test fixed.

	* s_conf.c:
		* more explicit K line message when reason specified in
		ircd.conf.
		* extended I lines syntax.

	* s_service_ext.h, s_service.c, s_misc.c: faster split handling is
	possible now that 2.8.x protocol is history.

	* channel.c:
		* m_join() was unefficient on net joins.
		* MIRC_KLUDGE would never show +ov modes.

	* s_user.c:
 		* services can now send to channels (if the modes allow it).
		* prefixes for restricted connections were gone.

	* buildm4: missing quote.

2.9.4b

Wed Oct  1 21:57:45 1997  Christophe Kalt

	* chkconf.c: added knowledge of B lines.

	* s_debug.c: more info on dbufs for better tuning.

	* channel.c: bans on IP are now matched against resolving clients.

	* s_conf.c: K lines on IP can now be matched against resolving clients.

	* buildm4: update for Y and K line macros, and added macros for
	B,V,i and k lines (Mario Holbe).

	* s_conf.c: Y global limit per host didn't work.

Wed Sep 24 18:25:45 1997  Christophe Kalt

	* acconfig.h, configure.in, setup.h.in, resolv_def.h, res_init.c:
	added --resconf=FILE option to configure (Alain Nissen).

	* s_conf.c: fixed bug with Y limits.

Tue Sep 23 11:36:30 1997  Christophe Kalt

	* common_def.h: added CHKCONF_COMPILE statement.

	* bsd_ext.h: incorrect declaration for writeb.

	* support_ext.h, support.c: dumpcore() was broken.

	* class_def.h, class_ext.h, class.c, s_conf.c, s_err.c: it's now
	possible to combine a limit per host and per user@host for the
	same class.

	* s_user.c:
		* RPL_ENDOFWHO wasn't correct.
		* who_find() / m_whois() didn't always respect +a mode.
		* @ restriction in username could be bypassed.
		* unlikely but nonetheless possible ghost generation.

	* ircd.c: setgid() was called after setuid() (reported by Nicole
	Haywood <kole@mail.usyd.edu.au>)

	* parse.c: avoid a match() call if possible.

Sun Sep 14 19:44:27 1997  Christophe Kalt

	* ircd.c: redundant/useless code commented out.

	* struct_def.h, parse.c, s_err.c, s_serv.c: `stats m' is more verbose.

	* os.h, Makefile.in: zlib.h was missing from includes.

	* s_user.c: 2 fixes (a NULL pointer, and a non reinitialized one).

Thu Sep 11 21:43:20 1997  Christophe Kalt

	* class_def.h, class_ext.h, class.c, s_bsd.c, s_conf.c, s_err.c,
	s_user.c: added 2 fields to Y lines and implemented [u@]h global
	limits.

	* service_def.h, channel.c, s_service.c: added SERVICE_WANT_VCHANNEL.

	* channel.c: server channels now have a topic.

	* s_conf.c: negative class numbers are now forbidden.

	* s_conf_ext.h, s_conf.c, s_bsd.c: new B lines format.

Sun Sep  7 20:02:50 1997  Christophe Kalt

	* s_conf.c: B lines now catch "unauthorized connections".
	
	* s_user.c: m_who() limit wasn't coded. fixed this and rewrote
	m_who() because recursivity and penalty don't go together.
	
	* s_err.c: REPL_SERVLIST type field is now in hexa.

	* service_def.h, send.c, s_misc.c, s_user.c: extended services
	capabilities so they can do logging.

	* s_serv.c, s_user.c: added MD5 support for crypt() (from Urvos Juvan).

	* res.c: hostnames containing * or ? are now rejected.

	* s_conf.c: service type field stripped from optional bits (in S
	lines).

	* s_serv.c: server token wasn't sent to services in m_server_estab().

	* s_service.c: SERVICE_WANT_PREFIX wasn't honored by m_squery().

	* struct_def.h, parse.c, s_serv.c, s_user.c:
               * added MyService() macro and updated several tests.
               * next_client() was ignoring services.

Tue Aug 19 08:38:54 1997  Christophe Kalt

	* channel.c: m_names() could still have a truncated reply.

	* more cleaning from Alain.Nissen@ulg.ac.be:

		* struct_def.h, bsd.c, s_bsd.c: removed references to "pyr".
		* res_comp.c: removed res_getshort() [never used].
		* removed all references to VMS.
	
Mon Aug 11 13:34:15 1997  Christophe Kalt

	* The following changes are from Alain.Nissen@ulg.ac.be

	* all files (in short):
		* include/ was removed.
		* all .c have a corresponding _ext.h to declare external
		variables and functions.
		* [sc]_externs.h are #includes *_ext.h.
		* [sc]_defines.h are #includes *_def.h.
		* all .c have the same list of #include.
		* os.h has all system #includes and portability tests.

	* Also, several bug and portability fixes:
	
		* c_bsd.c: move renamed in tcap_move (portability).
		* c_msg.c:
			* added test on DOCURSES before including it.
			* various casts.
		* edit.c:
			* return type of suspend_irc() changed to RETSIGTYPE.
			* added int argument to suspend_irc().
			* use of signal(SIGTSTP,...) now depends on
			whether the signal exists rather than the OS.
		* help.c: helplist rewritten properly.
		* irc.c:
			* strdup() replaced with mystrdup().
			* do_log() takes 2 arguments.
			* return type of quit_intr() changed to RETSIGTYPE.
			* added int argument to quit_intr().
		* screen.c: such a mess
			* LINES is only present under curses.
			* idem for refresh().
			* clear_to_eol() is supposed to take 2 arguments,
			but what are they?
		* swear.c: added to clients targets
		* channel.c: delch renamed in del_ch.
		* chkconf.c, parse.c: newline renamed in irc_newline.
		* ircd.c: s_monitor(), s_die(), s_rehash(), s_restart()
		return type changed from VOIDSIG to RETSIGTYPE.
		* res.c: now using SOCK_LEN_TYPE.
		* res_comp.c, res_init.c: various portability changes.
		* s_auth.c: now using SOCK_LEN_TYPE.
		* s_bsd.c: now using SOCK_LEN_TYPE.
		* s_conf.c: several portability fixes.
		* s_err.c: local_replies[] and local_replies[] rewritten.
		* s_service.c: changed test on USE_STDARG.
		* bsd.c:
			* return type for dummy() is now RETSIGTYPE.
			* dummy() now takes one int argument.
		* dbuf.c: removed unused DBUF_INIT.
		* support.c:
			* many changes concerning #if tests.
			* added solaris_gethostbyname() to use instead of
			Solaris 2.3 broken gethostbyname().
			* added irc_memcmp() to use if system's memcmp()
			is broken.
		* nameser.h: now using WORDS_BIGENDIAN.
		* configure.in:
			* simpler solaris 2.x detection when looking for zlib.
			* added test for cursesX.
			* added check for sys_errlist definition in sys/errno.h
			* and more...
		* Makefile.in: CFLAGS split in S_CFLAGS, C_CFLAGS and
		CC_CFLAGS (ircd, irc, chkconf).
	
Fri Aug  8 10:51:24 1997  Christophe Kalt

	* channel.c: m_names() behaviour wasn't consistent with m_who()
	concerning +p channels (Michael 'Eumel' Neumayer).

	* configure.in: minor changes (Alain Nissen).

	* s_user.c: missing argument to err_str() (Kai Seidler).

	* config.h.dist, h.h, struct.h, common.c, channel.c, s_bsd.c,
	s_debug.c, s_err.c, s_misc.c, s_serv.c, s_service.c, s_user.c:
	removed support for 2.8 protocol.

	* config.h.dist, msg.h, channel.c, note.c, s_bsd.c, s_debug.c,
	s_misd.c, s_user.c: removed NOTE.

	* s_bsd.c: wrong argument to bzero().

	* Makefile.in, buildm4: rev.sh replaced by config.guess and
	buildm4 wasn't ran by `make install-server'.

2.9.3

Wed Jul 23 11:23:30 1997  Christophe Kalt

	* res.c: queries were never resent when reaching timeout (C. Behrens).

	* acconfig.h, configure.in: better sys_errlist test (A. Nissen).

	* version.c.SH.in: portability (A. Nissen).

	* acconfig.h, configure.in, common.h, config.h.dist: AIX cleanup
	and optimization flags (A. Nissen).

	* configure.in: typo.

Thu Jul 17 23:04:48 1997  Christophe Kalt

	* c_numeric.c, irc.c: fixes from Vesa.

	* send.c: buffer overflow fix.

	* h.h, res_init.c: portability fixes.

Wed Jul 16 21:35:50 1997  Christophe Kalt

	* s_serv.c: m_die() referenced data after freeing it.

	* support.c, res.c: silly changes to make purify happier.

	* s_bsd.c: fixed memory corruption problem.

	* s_user.c: m_whois() voice flag changed back to + (from !).

	* h.h, support.c, configure.in: reverted back: use inet_* if
	present, use our own inet* if not.  Our functions must be
	different to avoid some crazy clash when bind 8.x is on installed
	the system.  Should we teach configure.in about -lbind?

Tue Jul 15 00:18:01 1997  Christophe Kalt

	* inet_addr.c moved to support.c, renamed functions (inet_addr,
	inet_aton, inet_ntoa, inet_netof) to avoid clashes; always used
	even if the system has it.

	* New configure and Makefile from Alain Nissen. (many many files
	changed, removed, created, rewritten)

	* buildm4: update (Mario Holbe).

	* struct.h, s_bsd.c: fixed the P line rehash bug(?).

	* h.h, ircd.c: let's be nice to SunOS' cc.

Mon Jun 30 21:41:11 1997  Christophe Kalt

	* dbuf.c, send.c: earlier changes broke the client.

	* config.h.dist, struct.h, dbuf.h, dbuf.c: new magic formula to
	compute BUFFERPOOL.  Added MAXSERVERS for this purpose.

	* s_serv.c: buffer overflow (Chris Behrens).

Thu Jun 26 19:18:24 1997  Christophe Kalt

	* struct.h, channel.c, hash.c, parse.c, send.c, s_misc.c,
	s_service.c:
		* cleanup.
		* added &SERVICES.

	* s_bsd.c: wrong buffer size given to getsockopt().

Thu Jun 19 18:35:37 1997  Christophe Kalt

	* h.h, struct.h, s_debug.c, send.c, dbuf.c:
		* dbuf stats.
		* send_message() #ifndef SENDQ_ALWAYS was not uptodate,
		tried to bring it back up to date.

	* res.c: fixed possible buffer overflow.
	
	* h.h, s_debug.c, send.c: fixes for STDARG (Olivier Galibert)

	* ircd.c: server_reboot() would crash when called because of "out
	of memory".

Mon Jun  9 20:49:55 1997  Christophe Kalt

	* config.h.dist, h.h, struct.h, send.c, ircd.c, list.c, s_debug.c,
	s_serv.c, s_user.c: removed #define KRYS, it is now always `defined'.
	
	* config.h.dist, h.h, common.h, service.h, sys.h, configure.in,
	send.c, support.c, s_auth.c, s_service.c, s_debug.c, s_conf.c:
	removed references to varargs, added support for stdargs.
	It is controlled by #define USE_STDARG set by configure. (adapted
	from Olivier Galibert)

	* ircd.c: CHROOT is really called CHROOTDIR.

	* s_user.c:
		* extended m_message() to accept n!u@h as recipient.
		* removed notice for bogus PONG.

	* s_serv.c: /SQUIT now requires 2 arguments from opers.

Sun Jun  1 16:57:39 1997  Christophe Kalt

	* dbuf.h, dbuf.c: #define DBUF_TAIL is back.
	
	* s_conf.c: fixed B lines behaviour, port number is now mandatory.

	* send.c: missing arg to dead_link(). (Olivier Galibert)

	* s_serv.c, numeric.h, s_err.c: added /stats B to see B lines (and
	fixed /stats V reply).

	* service.h, channel.c, s_misc.c, s_service.c, s_serv.c, s_user.c:
		* numerous bugfixes related to local services (if
		USE_SERVICES is defined).
		* extended services option to allow 2.9 NICK syntax, and
		let them see tokens if they want. (adapted from O.Galibert) 

Wed May 21 21:17:51 1997  Christophe Kalt

	* channel.c, s_service.c, service.h: finished service code (whee).
		
	* s_serv.c: services were incorrectly sent during burst.

	* s_bsd.c: ident MUST be done before anything else is read from a
	client.

Thu May 15 16:27:13 1997  Christophe Kalt

	* struct.h, s_conf.h, s_serv.c: created k: lines to be able to
	deny access based on OTHER ident replies.

	* s_user.c: changed 001 reply to return n!u@h (more zen).

	* s_serv.c:
		* if A: is bogus, trash it and complain instead of crashing.
		* get_client_name() is non-reentrant. *sigh*
	
Wed May  7 22:11:04 1997  Christophe Kalt

	* s_user.c: nick chasing kill bug fix. (Chris Behrens)

	* h.h, ircd.c, s_conf.c, s_user.c: K-lined users now exit
	displaying the Kline comment, if any.

	* s_conf.c: fixed notice ERR_YOUWILLBEBANNED, and don't disconnect
	then.

	* inet.h, nameser.h, resolv.h, inet_addr.c, portability.h, res.c,
	res_comp.c, res_init.c, res_mkquery.c: updated. (BIND 4.9.5-P1)

	* channel.c: notice for service could use free'ed memory.

Sun Apr 27 16:40:08 1997  Christophe Kalt

	* send.c: fixed couple buglets (added by Chris Behrens :^).

	* s_user.c: removed dummy m_note() which was unused and buggy, and
	would let any oper _broadcast_ NOTE queries to the net.

	* m_note.c: Modified m_note() in note.c not to send any NOTE
	commands to other servers.

	This is lame, someone help me and port note to be a service. 
	Then, I'll finally take it out of the server !! :-)

Thu Apr 24 18:51:25 1997  Christophe Kalt

	* send.c: better (faster) sendto_common_channel() (from Chris Behrens).

	* s_serv.c: fixed connected burst for services with hostmasks.

	* s_user.c: fixed origin check in m_pong().

	* res.c: added a check on hostnames. (From Darren Reed)

Sun Apr 20 20:30:21 1997  Christophe Kalt

	* s_conf.c: find_bounce() had an inversed test. (how could it work
	when I tested it??)

	* s_serv.c: SERVER message would occasionnally (and incorrectly)
	be dropped.

	* s_misc.c: simple optimization in exit_client().

	* s_service.c, s_serv.c: things looked wrong, SERVICE syntax
	inchorent. Minor memory leak.

	* s_bsd.c, s_misc.c: various "typos" fixed. (UDP & non POLL)

	* send.c, h.h: removed sendto_all_butone(). (unused)

Tue Apr 15 19:41:32 1997  Christophe Kalt

	* sock.h: added a check to make sure FD_SETSIZE is big enough.

	* s_bsd.c, struct.h, s_misc.c: added more UDP stats.

	* s_bsd.c: fixed udp_pfd/res_pfd mess, and cleaned the code. (whee)

	* h.h, struct.h, numeric.h, s_err.c, s_conf.c, s_bsd.c: added B lines.

	* channel.c: defining USE_SERVICE would cause buffer corruption
	when propagating channel modes to servers. (Found by Michael Neumayer)

Wed Apr  2 15:25:54 1997  Christophe Kalt

	* list.c, s_serv.c: added some error notices for users without server.

	* s_bsd.c: fixed UDP port binding when no IP is given.

	* configure.in: add -cckr to CFLAGS on SGI when using cc(1)

Thu Mar 27 19:03:09 1997  Christophe Kalt

	* h.h, send.c, s_bsd.c, s_user.c, s_serv.c: amount of transferred
	data added to file logs.

	* config.h.dist: define SVR4 if __svr4__ is there.

	* packet.c: drop server sending an unknown command.

	* s_user.c: changed m_who() for better performance (from Chris
	Behrens), also put a limit on its number of arguments.

	* h.h, struct.h, list.c: better IsMember (from Chris Behrens).

	* s_serv.c: don't let a user introduce a new server.

Fri Mar 21 19:53:36 1997  Christophe Kalt

	* h.h, struct.h, ircd.c, s_conf.c, s_misc.c, s_serv.c,
	config.h.dist: server can now cache the MOTD in memory (from Chris
	Behrens).  See CACHED_MOTD #define.

	* service.h, channel.c, s_serv.c, s_service.c, s_user.c: additions
	for services.

	* s_misc.c: added missing parameter for check_service_butone().

	* INSTALL completed and converted to sgml

	* s_serv.c: MyRealloc(NULL, size) isn't portable.

Tue Mar 18 17:59:26 1997  Christophe Kalt

	* 2.9.3b10
	
	* channel.c, hash.c, res.c, s_serv.c, s_service.c, s_user.c,
	whowas.c: penalties tuned again. (added Volker Paulsen's anti SPAM
	hack).
	
	* s_err.c, s_serv.c: minor changes to RPL_STATS*

	* s_bsd.c: authclnts[] was not always initialized.
	
	* ircd.c: buffer in ircd_readtune() lacked initialization.
	
	* s_service.c: fixed buffer overflow.

	* send.c, support.c: # of arguments cleanup.
	
	* list.c, res.c, s_service.c: casts to suppress warnings.

	* h.h, dbuf.c: bufalloc, dbufblocks, poolsize now
	unsigned. (some checks might be needed, poolsize can really get
	big).

	* s_misc.c: removed duplicate code in exit_client().

	* parse.c:
 	
		* Added more notices when generating SQUITs for unknown
		servers.
		* removed bogus else.

Fri Feb 28 09:34:36 1997  Christophe Kalt

	* s_err.c, s_serv.c: Added 2 more fields to RPL_TRACELINK.

Thu Feb 27 14:50:37 1997  Christophe Kalt

	* s_serv.c: /connect by servername didn't work for c lines (from Eumel)

Wed Feb 26 16:48:36 1997  Christophe Kalt

	* s_bsd.c: removed (old) redundant code concerning VIF.

	* config.h.dist: CLONE_MAX and CLONE_PERIOD could be undefined.

	* common.c: match() cleanup.

Thu Feb 13 17:27:53 1997  Christophe Kalt

	* res.c, res_init.c, res_mkquery.c, ircd.c, s_bsd.c: renamed
	res_init() to ircd_res_init() to avoid conflict (ULTRIX).

	* hash.c, struct.c: cleanup of hashing functions.

	* match.c, parse.c, send.c, common.h, channel.c, hash.c, s_bsd.c,
	s_misc.c, s_serv.c, s_service.c, s_user.c, note.c, ignore.c:

		*  _match() changed to match() and the check for maximum
		"recursion" slightly changed.
		*  match() and matches() removed (stubs from when match
		was recursive?).
		* All occurrences of matches() changed to match().
		* this saves one function call per match.

	* send.c: Added 2 parameters to sendto_serv_butone().

	* s_err.c, s_serv.c: Added one field to RPL_TRACELINK.

Sun Jan 26 20:02:34 EET 1997  Vesa Ruokonen  (ruokonen@aapo.it.lut.fi)

	* 2.9.3b8

	* support.c, h.h, list.c: gcc -Wall cleanups.
	* h.h, struct.h, chkconf.c, s_conf.c, s_serv.c:
		created V:lines for checking connecting client parameters.
		passed as PASS command parameters. A matching V:line.
		refuses the connection (version number & compile flags).
	* struct.h, channel.c, s_debug.c:
		penalty threshold used for limiting KICK params.
	* struct.h: initial QUEUELEN calculation tuned. (->BUFFERPOOL).
	* c_msg.c: more verbose m_pong().
	* channel.c, s_serv.c, s_user.c, whowas.c:
		penalties tuned for commands generating global bcast.
	* hash.c: converted multiplication to hashtable lookup to speed.
		up function calls. (from Core)
	* ircd.c, s_bsd.c: added truncation for non-appended writes. (_root_)
	* s_user.c: prefix for voice capability in channel list of WHOIS reply
		changed from '+' to '!'.
	* s_user.c: drop PONGs with bad origin.
		store connection parameters from PASS temporarily to info
		field in contstant locations.
	* s_user.c: m_umode() fixed (from Core).

Wed Jan 15 14:42:43 1997  Christophe Kalt

	* s_bsd.c:

		* mysk was initialized by empty password in M line.

Tue Jan 14 24:62:34 EET 1997  Vesa Ruokonen  (ruokonen@aapo.it.lut.fi)

	* parse.c, channel.c, s_user.c: cleanup of find_functions(),
		_nickserv replaced by _service.
	* h.h, : setup_ping() takes aConfItem pointer as parameter now.
	* sys.h: #elif expanded to #else #if for compability
	* s_bsd.c: inetport(P:line) changed to support VIFs better.
		More info about listening ports into /stats l.
		UDP ping is initialized from M:line, not anymore from P:line.
	* s_numeric.c: cleanups in numeric processing.
	* Makefile.in, Makefile.irc, Makefile.ircd: makedepend fix
	* configure.in: zlib check moved to end, as it can interfere
		other checks when libs aren't in default paths.

Mon Jan 13 09:11:04 1997  Christophe Kalt

	* ircd.c:

		* made the display of version (flag -v) more verbose.

	* regenerated configure (with autoconf 2.12; thanks digital).

	* s_user.c:

		* fixed, and extended KILL reasons for `standard'
		collisions. (both victims u@h are now shown).

	* send.c:

		* fixed the logic when sending mass message/notice to a
		server mask.

	* configure.in, Makefile.in:

		* fixed detection & use of zlib using the environment
		variable ZLIB_HOME (from Vesa).

Thu Jan  9 13:09:36 1997  Christophe Kalt

	* struct.h, ircd.c:

		* added -b command line switch to let the server start
		even if the ircd.tune file is corrupted (mostly from
		Magnus Tjernstrom).		

	* s_conf.c:

		* udp listen was setup even if port was defined to be 0.

Wed Jan  8 12:35:03 1997  Christophe Kalt

	* h.h, s_bsd.c, s_conf.c:

		* port field in M configuration line is used again, now to
		define on which port the server will listen for UDP pings.

	* hash.c:

		* restricted commands to opers (from Vesa).

	* send.c:

		* sendto_match_butone() had a broken behaviour, 
		brought back the old (2.8.21) behaviour.	
	
	* s_bsd.c:

		* fixed negociation of compression for outgoing
		connections.

		* moved the "rejected connection" notice to &LOCAL.

		* SLOW_ACCEPT #ifdef's changed to #ifndef's to get what
		one should expect from the define name !

		* made inetport() more readable, and added check on empty
		string parameter (from Vesa).

		* highfd isn't defined when _DO_POLL_ is defined, so don't
		use it in debug notices (from Vesa).

		* break changed to continue because ??? (from Vesa).

	* s_user.c:

		* fixed KILL notice sent on nick collision (was using
		ident reply for remote clients).

		* allowed oper!user@host.foo to send global message/notice
		to #*.foo

	* s_serv.c, s_user.c, s_bsd.c, s_debug.c:
	
		* changed the PASS command semantic (from Vesa).

Fri Jan  3 14:47:52 1997  Christophe Kalt

	* s_bsd.c:

		* completed virtual hosts support (M line).

	* config.h.dist:

		* AIX has poll(), use it.

Mon Dec 30 15:08:20 1996  Christophe Kalt

	* s_bsd.c, h.h:

		* added support for virtual hosts (P line).

Wed Dec 18 12:08:29 1996  Christophe Kalt

	* bsd.c:

		* fixed read_message() bugs resulting from the merge.

	* channel.c:

		* limited the number of possible kicks to MAXMODEPARAMS.

Mon Dec 16 09:36:54 1996  Christophe Kalt
	
	* list.c:

		* don't free serv->user too early.

		* removed duplicated(?) away memory count.
	
Fri Dec 13 10:28:43 1996  Christophe Kalt - Hmm, Friday the 13th!

	* config.h.dist, s_auth.c, s_user.c, s_debug.c:

		* minor tuning.

Thu Dec 12 10:34:47 1996  Christophe Kalt

	* struct.h, s_auth.c, s_debug.c:

		* added memory usage stats for ident replies.

	* send.c, s_auth.c, s_misc.c:

		* fixed boundaries problems with long ident replies.

Wed Dec 11 17:42:29 1996  Christophe Kalt

	* struct.h, send.c, s_auth.c, s_bsd.c, list.c, s_conf.c, s_misc.c,
	s_user.c:

		* added auth field to struct Client to eventually store
		long `OTHER' ident replies.  It is only used in logs, and
		notices (not in matches against configuration lines).
	
	* config.h.dist:

		* added #define SLOW_ACCEPT (default).

		* added #define CLONE_CHECK (default).
	
	* s_bsd.c:

		* fixed config line reference counter.
	
		* added CLONE_CHECK code (check_clones() from
		pgoncalves@mail.telepac.pt (Pedro Goncalves)).
		
		* added SLOW_ACCEPT (previous behaviour) code.

		* merged the 2 versions of read_message(), fixing some
		(buggy) difference between them.

		* merged two for() in read_message().


Mon Dec  2 11:02:54 1996  Christophe Kalt

	* s_user.c:

		* changed error notice
	
	* send.c:

		* #*.mask messages now propagated to other servers.
	
	* s_service.c:

		* added missing else.

	* config.h.dist, s_debug.c, channel.c:

		* removed all references to V28PlusOnly
		* made NoV28Link defined by default

Wed Nov 27 18:09:42 1996  Christophe Kalt

	* struct.h, class.c, ircd.c, s_bsd.c, s_conf.c, s_serv.c:

		* added lowercase c config line

Tue Oct  1 22:29:31 1996  Christophe Kalt

	* added config.h to dependancies in Makefile.ircd

	* config.h.dist, h.h, struct.h, packet.c, send.c, ircd.c, s_bsd.c,
	s_debug.c, s_serv.c, s_user.c, s_err.c, list.c,	Makefile.ircd,
	configure.in:

		* added #define ZIP_LINKS and s_zip.c.
		* made configure look for the zlib (-lgz).
		* implemented server-server zlib compression.
