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 ¬ices. * 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 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 and then (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 Thronęs). * mod_rfc931.c: renamed _data structure which causes problems under Compaq Tru64 Unix 5.0 (from Roar Thronęs). 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 Jänkä). * 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 Thronęs). * os.h: INET6 fix for OSF (from Roar Thronęs). * 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 ) * iauth.c, a_io.c: added nonexistant INET6 code. * os.h, nameser_def.h, resolv_def.h: OSF portability fix from Roar Thronęs. * s_auth.c: added missing INET6 code. (Roar Thronęs) 1998-09-25 Christophe Kalt * configure.in: Check for IPv6 system type and update $LIBS (from KIKUCHI Takahiro ) * 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 Thronęs ) 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 ). 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 * 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 * 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 * s_user.c: prefix bugfix (reported by mrg). 2.10.0p1 Fri Sep 25 22:21:06 1998 Christophe Kalt * channel.c: check for +r mode before calling reop_channel(). 2.10.0 Wed Sep 23 19:55:14 1998 Christophe Kalt * 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 * 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 * config.h.dist, ircd.c: removed MYNAME. * Makefile.in, config.h.dist: SPATH/APATH cleanup. * parse.c: ABW fix (Leon Brouwers and purify). Sat Sep 12 18:53:39 1998 Christophe Kalt * 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 and purify) Tue Sep 8 21:23:27 1998 Christophe Kalt * 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 * 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 * 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 * 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 * ircd.c:, s_bsd.c: added -s switch. Sat Aug 8 14:21:20 1998 Christophe Kalt * 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 * mod_rfc931.c: added sanity check on replies. Fri Aug 7 00:03:45 1998 Christophe Kalt * 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 * 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 * 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 * 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 * ircd.c: fix for inetd support (from Jonathan Chapman ). * 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 * send.c, channel.c: '-' leftovers (Michael Neumayer ). Mon May 25 15:13:51 1998 Christophe Kalt * 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 ). * 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 & Magnus Tjernstrom ) * hash.c: bigger_prime() useless optimization from Magnus :-) Tue May 5 19:26:25 1998 Christophe Kalt * 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 * irc.c: missing refresh() (from Dave Hill ). * 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 * 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 * struct_def.h, packet.c, s_bsd.c: (never triggered) link compression bugfix (Roger Espel Llima ). * 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 * 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 * 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 ). 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 ). * 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 ) * 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.