From c3727b053aa20cecf3984cc0c9c23b0140edf52c Mon Sep 17 00:00:00 2001 From: pk910 Date: Tue, 28 Jun 2011 15:17:43 +0200 Subject: [PATCH] ircu2.10.12 pk910 fork --- .indent.pro | 50 + ChangeLog | 10675 ++++++++++++++++++++++ ChangeLog.11 | 4169 +++++++++ Doxyfile | 1078 +++ INSTALL | 61 + INSTALL_FR | 169 + LICENSE | 249 + Makefile.in | 139 + README | 140 + RELEASE.NOTES | 222 + acinclude.m4 | 202 + aclocal.m4 | 37 + autom4te.cache/output.0 | 12623 ++++++++++++++++++++++++++ autom4te.cache/output.1 | 12623 ++++++++++++++++++++++++++ autom4te.cache/requests | 94 + autom4te.cache/traces.0 | 409 + autom4te.cache/traces.1 | 699 ++ clean | 12 + config.guess | 1476 +++ config.h.in | 232 + config.sub | 1605 ++++ configure | 12623 ++++++++++++++++++++++++++ configure.in | 824 ++ doc/Authors | 225 + doc/Makefile | 52 + doc/Makefile.in | 52 + doc/api/api.txt | 105 + doc/api/events.txt | 816 ++ doc/api/features.txt | 230 + doc/api/gline.txt | 283 + doc/api/ircd_snprintf.txt | 268 + doc/api/joinbuf.txt | 92 + doc/api/jupe.txt | 161 + doc/api/log.txt | 240 + doc/api/modebuf.txt | 282 + doc/api/motd.txt | 73 + doc/api/msgq.txt | 195 + doc/api/privileges.txt | 91 + doc/api/send.txt | 231 + doc/debug_memleak_gc.patch | 54 + doc/example.conf | 953 ++ doc/fda.txt | 151 + doc/features.txt | 208 + doc/freebsd.txt | 28 + doc/history/2.4.notes | 478 + doc/history/2.7-New | 128 + doc/history/ChangeLog.07 | 32 + doc/history/ChangeLog.10 | 696 ++ doc/history/ChangeLog.11 | 4169 +++++++++ doc/history/ChangeLog.12 | 11526 +++++++++++++++++++++++ doc/history/Manual | 316 + doc/history/README-2.6 | 71 + doc/history/README.patches | 1901 ++++ doc/history/history.pre24 | 51 + doc/history/overview.u2.9 | 206 + doc/irc.1 | 82 + doc/ircd.8 | 111 + doc/iso-time.html | 535 ++ doc/linux-poll.patch | 52 + doc/p10.html | 1184 +++ doc/readme.asll | 25 + doc/readme.chroot | 91 + doc/readme.crules | 126 + doc/readme.cvs | 42 + doc/readme.features | 936 ++ doc/readme.gline | 124 + doc/readme.iauth | 456 + doc/readme.indent | 9 + doc/readme.jupe | 57 + doc/readme.log | 194 + doc/readme.who | 288 + doc/readme.www | 23 + doc/rfc1413.txt | 451 + doc/rfc1459.unet | 3657 ++++++++ doc/snomask.html | 221 + doc/strings.txt | 33 + include/IPcheck.h | 27 + include/capab.h | 52 + include/channel.h | 470 + include/class.h | 121 + include/client.h | 863 ++ include/crule.h | 21 + include/dbuf.h | 62 + include/destruct_event.h | 38 + include/fileio.h | 56 + include/gline.h | 147 + include/handlers.h | 245 + include/hash.h | 95 + include/ircd.h | 64 + include/ircd_alloc.h | 81 + include/ircd_chattr.h | 130 + include/ircd_crypt.h | 70 + include/ircd_crypt_native.h | 12 + include/ircd_crypt_plain.h | 31 + include/ircd_crypt_smd5.h | 29 + include/ircd_defs.h | 102 + include/ircd_events.h | 314 + include/ircd_features.h | 197 + include/ircd_handler.h | 53 + include/ircd_log.h | 157 + include/ircd_md5.h | 43 + include/ircd_osdep.h | 59 + include/ircd_relay.h | 49 + include/ircd_reply.h | 36 + include/ircd_reslib.h | 75 + include/ircd_signal.h | 16 + include/ircd_snprintf.h | 321 + include/ircd_string.h | 117 + include/jupe.h | 87 + include/list.h | 63 + include/listener.h | 96 + include/match.h | 34 + include/memdebug.h | 8 + include/motd.h | 110 + include/msg.h | 443 + include/msgq.h | 90 + include/numeric.h | 504 + include/numnicks.h | 91 + include/opercmds.h | 28 + include/packet.h | 22 + include/parse.h | 23 + include/patchlevel.h | 38 + include/patchlist.h | 2 + include/querycmds.h | 99 + include/random.h | 19 + include/res.h | 158 + include/s_auth.h | 57 + include/s_bsd.h | 78 + include/s_conf.h | 230 + include/s_debug.h | 68 + include/s_misc.h | 94 + include/s_numeric.h | 17 + include/s_serv.h | 27 + include/s_stats.h | 65 + include/s_user.h | 116 + include/send.h | 123 + include/ssl.h | 75 + include/struct.h | 93 + include/supported.h | 72 + include/sys.h | 34 + include/umkpasswd.h | 44 + include/uping.h | 82 + include/userload.h | 55 + include/version.h | 15 + include/whocmds.h | 92 + include/whowas.h | 83 + install-sh | 250 + ircd-patch | 226 + ircd/IPcheck.c | 564 ++ ircd/Makefile.in | 1517 ++++ ircd/channel.c | 4113 +++++++++ ircd/chattr.tab.c | 175 + ircd/class.c | 309 + ircd/client.c | 316 + ircd/convert-conf.c | 675 ++ ircd/crule.c | 867 ++ ircd/dbuf.c | 389 + ircd/destruct_event.c | 158 + ircd/engine_devpoll.c | 450 + ircd/engine_epoll.c | 350 + ircd/engine_kqueue.c | 452 + ircd/engine_poll.c | 439 + ircd/engine_select.c | 425 + ircd/fileio.c | 238 + ircd/gline.c | 1309 +++ ircd/hash.c | 485 + ircd/ircd.c | 770 ++ ircd/ircd_alloc.c | 105 + ircd/ircd_crypt.c | 246 + ircd/ircd_crypt_native.c | 85 + ircd/ircd_crypt_plain.c | 85 + ircd/ircd_crypt_smd5.c | 233 + ircd/ircd_events.c | 899 ++ ircd/ircd_features.c | 918 ++ ircd/ircd_lexer.l | 275 + ircd/ircd_log.c | 990 ++ ircd/ircd_md5.c | 266 + ircd/ircd_parser.y | 1303 +++ ircd/ircd_relay.c | 711 ++ ircd/ircd_reply.c | 118 + ircd/ircd_res.c | 952 ++ ircd/ircd_reslib.c | 1204 +++ ircd/ircd_signal.c | 267 + ircd/ircd_snprintf.c | 2169 +++++ ircd/ircd_string.c | 655 ++ ircd/jupe.c | 420 + ircd/lex.yy.c | 2027 +++++ ircd/list.c | 543 ++ ircd/listener.c | 531 ++ ircd/m_account.c | 160 + ircd/m_admin.c | 165 + ircd/m_asll.c | 182 + ircd/m_away.c | 201 + ircd/m_burst.c | 653 ++ ircd/m_cap.c | 360 + ircd/m_check.c | 498 + ircd/m_clearmode.c | 316 + ircd/m_close.c | 106 + ircd/m_connect.c | 343 + ircd/m_cprivmsg.c | 130 + ircd/m_create.c | 233 + ircd/m_defaults.c | 121 + ircd/m_destruct.c | 198 + ircd/m_desynch.c | 115 + ircd/m_die.c | 129 + ircd/m_endburst.c | 160 + ircd/m_error.c | 159 + ircd/m_fakehost.c | 300 + ircd/m_get.c | 103 + ircd/m_gline.c | 652 ++ ircd/m_help.c | 108 + ircd/m_hidehost.c | 122 + ircd/m_info.c | 181 + ircd/m_invite.c | 303 + ircd/m_ison.c | 144 + ircd/m_join.c | 509 ++ ircd/m_jupe.c | 276 + ircd/m_kick.c | 283 + ircd/m_kill.c | 291 + ircd/m_links.c | 194 + ircd/m_list.c | 421 + ircd/m_lusers.c | 167 + ircd/m_map.c | 198 + ircd/m_mode.c | 264 + ircd/m_motd.c | 147 + ircd/m_names.c | 326 + ircd/m_nick.c | 501 + ircd/m_notice.c | 246 + ircd/m_oper.c | 234 + ircd/m_opmode.c | 189 + ircd/m_part.c | 209 + ircd/m_pass.c | 124 + ircd/m_ping.c | 278 + ircd/m_pong.c | 185 + ircd/m_privmsg.c | 243 + ircd/m_privs.c | 102 + ircd/m_proto.c | 156 + ircd/m_pseudo.c | 141 + ircd/m_quit.c | 140 + ircd/m_rehash.c | 209 + ircd/m_relay.c | 202 + ircd/m_reset.c | 103 + ircd/m_restart.c | 114 + ircd/m_rping.c | 237 + ircd/m_rpong.c | 148 + ircd/m_server.c | 785 ++ ircd/m_set.c | 103 + ircd/m_settime.c | 265 + ircd/m_silence.c | 332 + ircd/m_squit.c | 164 + ircd/m_stats.c | 166 + ircd/m_svsjoin.c | 166 + ircd/m_svsmode.c | 192 + ircd/m_svsnick.c | 269 + ircd/m_time.c | 114 + ircd/m_tmpl.c | 128 + ircd/m_topic.c | 206 + ircd/m_trace.c | 344 + ircd/m_uping.c | 243 + ircd/m_user.c | 169 + ircd/m_userhost.c | 124 + ircd/m_userip.c | 125 + ircd/m_version.c | 187 + ircd/m_wallchops.c | 157 + ircd/m_wallops.c | 125 + ircd/m_wallusers.c | 130 + ircd/m_wallvoices.c | 156 + ircd/m_webirc.c | 250 + ircd/m_who.c | 477 + ircd/m_whois.c | 524 ++ ircd/m_whowas.c | 164 + ircd/match.c | 864 ++ ircd/memdebug.c | 235 + ircd/motd.c | 488 + ircd/msgq.c | 628 ++ ircd/numnicks.c | 527 ++ ircd/opercmds.c | 118 + ircd/os_generic.c | 717 ++ ircd/packet.c | 188 + ircd/parse.c | 1447 +++ ircd/querycmds.c | 42 + ircd/random.c | 109 + ircd/s_auth.c | 2658 ++++++ ircd/s_bsd.c | 983 ++ ircd/s_conf.c | 1296 +++ ircd/s_debug.c | 396 + ircd/s_err.c | 1273 +++ ircd/s_misc.c | 608 ++ ircd/s_numeric.c | 105 + ircd/s_serv.c | 270 + ircd/s_stats.c | 710 ++ ircd/s_user.c | 1808 ++++ ircd/send.c | 872 ++ ircd/ssl.c | 1326 +++ ircd/table_gen.c | 349 + ircd/test/Makefile | 81 + ircd/test/Makefile.in | 81 + ircd/test/channel-1.cmd | 74 + ircd/test/client-1.cmd | 25 + ircd/test/commands-1.cmd | 43 + ircd/test/die.cmd | 5 + ircd/test/feature-1.cmd | 18 + ircd/test/gline-1.cmd | 29 + ircd/test/ircd-t1-2.conf | 93 + ircd/test/ircd-t1.conf | 107 + ircd/test/ircd-t2.conf | 95 + ircd/test/ircd_chattr.0.dat | 16 + ircd/test/ircd_chattr_t.c | 160 + ircd/test/ircd_in_addr_t.c | 168 + ircd/test/ircd_match_t.c | 74 + ircd/test/ircd_string_t.c | 58 + ircd/test/jupe-1.cmd | 8 + ircd/test/kill-block-1.cmd | 6 + ircd/test/run-tests.sh | 30 + ircd/test/stats-1.cmd | 97 + ircd/test/test-driver.pl | 545 ++ ircd/test/test_stub.c | 41 + ircd/umkpasswd.c | 460 + ircd/uping.c | 484 + ircd/userload.c | 270 + ircd/version.c | 60 + ircd/version.c.SH | 94 + ircd/whocmds.c | 278 + ircd/whowas.c | 401 + ircd/y.tab.c | 4106 +++++++++ ircd/y.tab.h | 305 + patches/diffs/lazy.diff | 913 ++ patches/diffs/login-on-connect.diff | 576 ++ patches/diffs/sline.diff | 221 + stamp-h.in | 1 + tests/bug-1640796.cmd | 35 + tests/bug-1674539.cmd | 33 + tests/ircd-2.conf | 38 + tests/ircd-3.conf | 38 + tests/ircd.conf | 39 + tests/readme.txt | 21 + tests/test-driver.pl | 527 ++ tools/Bounce/Bounce.cpp | 504 + tools/Bounce/Bounce.h | 117 + tools/Bounce/bounce.conf | 7 + tools/Bounce/build | 1 + tools/autodoc.py | 70 + tools/hashtoy | 92 + tools/iauth-test | 237 + tools/linesync/linesync.conf | 17 + tools/linesync/linesync.sh | 241 + tools/mkchroot | 99 + tools/ringlog.c | 341 + tools/ringlog.pl | 187 + tools/untabify | 10 + tools/wrapper.c | 220 + 351 files changed, 180497 insertions(+) create mode 100644 .indent.pro create mode 100644 ChangeLog create mode 100644 ChangeLog.11 create mode 100644 Doxyfile create mode 100644 INSTALL create mode 100644 INSTALL_FR create mode 100644 LICENSE create mode 100644 Makefile.in create mode 100644 README create mode 100644 RELEASE.NOTES create mode 100644 acinclude.m4 create mode 100644 aclocal.m4 create mode 100644 autom4te.cache/output.0 create mode 100644 autom4te.cache/output.1 create mode 100644 autom4te.cache/requests create mode 100644 autom4te.cache/traces.0 create mode 100644 autom4te.cache/traces.1 create mode 100644 clean create mode 100644 config.guess create mode 100644 config.h.in create mode 100644 config.sub create mode 100644 configure create mode 100644 configure.in create mode 100644 doc/Authors create mode 100644 doc/Makefile create mode 100644 doc/Makefile.in create mode 100644 doc/api/api.txt create mode 100644 doc/api/events.txt create mode 100644 doc/api/features.txt create mode 100644 doc/api/gline.txt create mode 100644 doc/api/ircd_snprintf.txt create mode 100644 doc/api/joinbuf.txt create mode 100644 doc/api/jupe.txt create mode 100644 doc/api/log.txt create mode 100644 doc/api/modebuf.txt create mode 100644 doc/api/motd.txt create mode 100644 doc/api/msgq.txt create mode 100644 doc/api/privileges.txt create mode 100644 doc/api/send.txt create mode 100644 doc/debug_memleak_gc.patch create mode 100644 doc/example.conf create mode 100644 doc/fda.txt create mode 100644 doc/features.txt create mode 100644 doc/freebsd.txt create mode 100644 doc/history/2.4.notes create mode 100644 doc/history/2.7-New create mode 100644 doc/history/ChangeLog.07 create mode 100644 doc/history/ChangeLog.10 create mode 100644 doc/history/ChangeLog.11 create mode 100644 doc/history/ChangeLog.12 create mode 100644 doc/history/Manual create mode 100644 doc/history/README-2.6 create mode 100644 doc/history/README.patches create mode 100644 doc/history/history.pre24 create mode 100644 doc/history/overview.u2.9 create mode 100644 doc/irc.1 create mode 100644 doc/ircd.8 create mode 100644 doc/iso-time.html create mode 100644 doc/linux-poll.patch create mode 100644 doc/p10.html create mode 100644 doc/readme.asll create mode 100644 doc/readme.chroot create mode 100644 doc/readme.crules create mode 100644 doc/readme.cvs create mode 100644 doc/readme.features create mode 100644 doc/readme.gline create mode 100644 doc/readme.iauth create mode 100644 doc/readme.indent create mode 100644 doc/readme.jupe create mode 100644 doc/readme.log create mode 100644 doc/readme.who create mode 100644 doc/readme.www create mode 100644 doc/rfc1413.txt create mode 100644 doc/rfc1459.unet create mode 100644 doc/snomask.html create mode 100644 doc/strings.txt create mode 100644 include/IPcheck.h create mode 100644 include/capab.h create mode 100644 include/channel.h create mode 100644 include/class.h create mode 100644 include/client.h create mode 100644 include/crule.h create mode 100644 include/dbuf.h create mode 100644 include/destruct_event.h create mode 100644 include/fileio.h create mode 100644 include/gline.h create mode 100644 include/handlers.h create mode 100644 include/hash.h create mode 100644 include/ircd.h create mode 100644 include/ircd_alloc.h create mode 100644 include/ircd_chattr.h create mode 100644 include/ircd_crypt.h create mode 100644 include/ircd_crypt_native.h create mode 100644 include/ircd_crypt_plain.h create mode 100644 include/ircd_crypt_smd5.h create mode 100644 include/ircd_defs.h create mode 100644 include/ircd_events.h create mode 100644 include/ircd_features.h create mode 100644 include/ircd_handler.h create mode 100644 include/ircd_log.h create mode 100644 include/ircd_md5.h create mode 100644 include/ircd_osdep.h create mode 100644 include/ircd_relay.h create mode 100644 include/ircd_reply.h create mode 100644 include/ircd_reslib.h create mode 100644 include/ircd_signal.h create mode 100644 include/ircd_snprintf.h create mode 100644 include/ircd_string.h create mode 100644 include/jupe.h create mode 100644 include/list.h create mode 100644 include/listener.h create mode 100644 include/match.h create mode 100644 include/memdebug.h create mode 100644 include/motd.h create mode 100644 include/msg.h create mode 100644 include/msgq.h create mode 100644 include/numeric.h create mode 100644 include/numnicks.h create mode 100644 include/opercmds.h create mode 100644 include/packet.h create mode 100644 include/parse.h create mode 100644 include/patchlevel.h create mode 100644 include/patchlist.h create mode 100644 include/querycmds.h create mode 100644 include/random.h create mode 100644 include/res.h create mode 100644 include/s_auth.h create mode 100644 include/s_bsd.h create mode 100644 include/s_conf.h create mode 100644 include/s_debug.h create mode 100644 include/s_misc.h create mode 100644 include/s_numeric.h create mode 100644 include/s_serv.h create mode 100644 include/s_stats.h create mode 100644 include/s_user.h create mode 100644 include/send.h create mode 100644 include/ssl.h create mode 100644 include/struct.h create mode 100644 include/supported.h create mode 100644 include/sys.h create mode 100644 include/umkpasswd.h create mode 100644 include/uping.h create mode 100644 include/userload.h create mode 100644 include/version.h create mode 100644 include/whocmds.h create mode 100644 include/whowas.h create mode 100644 install-sh create mode 100644 ircd-patch create mode 100644 ircd/IPcheck.c create mode 100644 ircd/Makefile.in create mode 100644 ircd/channel.c create mode 100644 ircd/chattr.tab.c create mode 100644 ircd/class.c create mode 100644 ircd/client.c create mode 100644 ircd/convert-conf.c create mode 100644 ircd/crule.c create mode 100644 ircd/dbuf.c create mode 100644 ircd/destruct_event.c create mode 100644 ircd/engine_devpoll.c create mode 100644 ircd/engine_epoll.c create mode 100644 ircd/engine_kqueue.c create mode 100644 ircd/engine_poll.c create mode 100644 ircd/engine_select.c create mode 100644 ircd/fileio.c create mode 100644 ircd/gline.c create mode 100644 ircd/hash.c create mode 100644 ircd/ircd.c create mode 100644 ircd/ircd_alloc.c create mode 100644 ircd/ircd_crypt.c create mode 100644 ircd/ircd_crypt_native.c create mode 100644 ircd/ircd_crypt_plain.c create mode 100644 ircd/ircd_crypt_smd5.c create mode 100644 ircd/ircd_events.c create mode 100644 ircd/ircd_features.c create mode 100644 ircd/ircd_lexer.l create mode 100644 ircd/ircd_log.c create mode 100644 ircd/ircd_md5.c create mode 100644 ircd/ircd_parser.y create mode 100644 ircd/ircd_relay.c create mode 100644 ircd/ircd_reply.c create mode 100644 ircd/ircd_res.c create mode 100644 ircd/ircd_reslib.c create mode 100644 ircd/ircd_signal.c create mode 100644 ircd/ircd_snprintf.c create mode 100644 ircd/ircd_string.c create mode 100644 ircd/jupe.c create mode 100644 ircd/lex.yy.c create mode 100644 ircd/list.c create mode 100644 ircd/listener.c create mode 100644 ircd/m_account.c create mode 100644 ircd/m_admin.c create mode 100644 ircd/m_asll.c create mode 100644 ircd/m_away.c create mode 100644 ircd/m_burst.c create mode 100644 ircd/m_cap.c create mode 100644 ircd/m_check.c create mode 100644 ircd/m_clearmode.c create mode 100644 ircd/m_close.c create mode 100644 ircd/m_connect.c create mode 100644 ircd/m_cprivmsg.c create mode 100644 ircd/m_create.c create mode 100644 ircd/m_defaults.c create mode 100644 ircd/m_destruct.c create mode 100644 ircd/m_desynch.c create mode 100644 ircd/m_die.c create mode 100644 ircd/m_endburst.c create mode 100644 ircd/m_error.c create mode 100644 ircd/m_fakehost.c create mode 100644 ircd/m_get.c create mode 100644 ircd/m_gline.c create mode 100644 ircd/m_help.c create mode 100644 ircd/m_hidehost.c create mode 100644 ircd/m_info.c create mode 100644 ircd/m_invite.c create mode 100644 ircd/m_ison.c create mode 100644 ircd/m_join.c create mode 100644 ircd/m_jupe.c create mode 100644 ircd/m_kick.c create mode 100644 ircd/m_kill.c create mode 100644 ircd/m_links.c create mode 100644 ircd/m_list.c create mode 100644 ircd/m_lusers.c create mode 100644 ircd/m_map.c create mode 100644 ircd/m_mode.c create mode 100644 ircd/m_motd.c create mode 100644 ircd/m_names.c create mode 100644 ircd/m_nick.c create mode 100644 ircd/m_notice.c create mode 100644 ircd/m_oper.c create mode 100644 ircd/m_opmode.c create mode 100644 ircd/m_part.c create mode 100644 ircd/m_pass.c create mode 100644 ircd/m_ping.c create mode 100644 ircd/m_pong.c create mode 100644 ircd/m_privmsg.c create mode 100644 ircd/m_privs.c create mode 100644 ircd/m_proto.c create mode 100644 ircd/m_pseudo.c create mode 100644 ircd/m_quit.c create mode 100644 ircd/m_rehash.c create mode 100644 ircd/m_relay.c create mode 100644 ircd/m_reset.c create mode 100644 ircd/m_restart.c create mode 100644 ircd/m_rping.c create mode 100644 ircd/m_rpong.c create mode 100644 ircd/m_server.c create mode 100644 ircd/m_set.c create mode 100644 ircd/m_settime.c create mode 100644 ircd/m_silence.c create mode 100644 ircd/m_squit.c create mode 100644 ircd/m_stats.c create mode 100644 ircd/m_svsjoin.c create mode 100644 ircd/m_svsmode.c create mode 100644 ircd/m_svsnick.c create mode 100644 ircd/m_time.c create mode 100644 ircd/m_tmpl.c create mode 100644 ircd/m_topic.c create mode 100644 ircd/m_trace.c create mode 100644 ircd/m_uping.c create mode 100644 ircd/m_user.c create mode 100644 ircd/m_userhost.c create mode 100644 ircd/m_userip.c create mode 100644 ircd/m_version.c create mode 100644 ircd/m_wallchops.c create mode 100644 ircd/m_wallops.c create mode 100644 ircd/m_wallusers.c create mode 100644 ircd/m_wallvoices.c create mode 100644 ircd/m_webirc.c create mode 100644 ircd/m_who.c create mode 100644 ircd/m_whois.c create mode 100644 ircd/m_whowas.c create mode 100644 ircd/match.c create mode 100644 ircd/memdebug.c create mode 100644 ircd/motd.c create mode 100644 ircd/msgq.c create mode 100644 ircd/numnicks.c create mode 100644 ircd/opercmds.c create mode 100644 ircd/os_generic.c create mode 100644 ircd/packet.c create mode 100644 ircd/parse.c create mode 100644 ircd/querycmds.c create mode 100644 ircd/random.c create mode 100644 ircd/s_auth.c create mode 100644 ircd/s_bsd.c create mode 100644 ircd/s_conf.c create mode 100644 ircd/s_debug.c create mode 100644 ircd/s_err.c create mode 100644 ircd/s_misc.c create mode 100644 ircd/s_numeric.c create mode 100644 ircd/s_serv.c create mode 100644 ircd/s_stats.c create mode 100644 ircd/s_user.c create mode 100644 ircd/send.c create mode 100644 ircd/ssl.c create mode 100644 ircd/table_gen.c create mode 100644 ircd/test/Makefile create mode 100644 ircd/test/Makefile.in create mode 100644 ircd/test/channel-1.cmd create mode 100644 ircd/test/client-1.cmd create mode 100644 ircd/test/commands-1.cmd create mode 100644 ircd/test/die.cmd create mode 100644 ircd/test/feature-1.cmd create mode 100644 ircd/test/gline-1.cmd create mode 100644 ircd/test/ircd-t1-2.conf create mode 100644 ircd/test/ircd-t1.conf create mode 100644 ircd/test/ircd-t2.conf create mode 100644 ircd/test/ircd_chattr.0.dat create mode 100644 ircd/test/ircd_chattr_t.c create mode 100644 ircd/test/ircd_in_addr_t.c create mode 100644 ircd/test/ircd_match_t.c create mode 100644 ircd/test/ircd_string_t.c create mode 100644 ircd/test/jupe-1.cmd create mode 100644 ircd/test/kill-block-1.cmd create mode 100644 ircd/test/run-tests.sh create mode 100644 ircd/test/stats-1.cmd create mode 100644 ircd/test/test-driver.pl create mode 100644 ircd/test/test_stub.c create mode 100644 ircd/umkpasswd.c create mode 100644 ircd/uping.c create mode 100644 ircd/userload.c create mode 100644 ircd/version.c create mode 100644 ircd/version.c.SH create mode 100644 ircd/whocmds.c create mode 100644 ircd/whowas.c create mode 100644 ircd/y.tab.c create mode 100644 ircd/y.tab.h create mode 100644 patches/diffs/lazy.diff create mode 100644 patches/diffs/login-on-connect.diff create mode 100644 patches/diffs/sline.diff create mode 100644 stamp-h.in create mode 100644 tests/bug-1640796.cmd create mode 100644 tests/bug-1674539.cmd create mode 100644 tests/ircd-2.conf create mode 100644 tests/ircd-3.conf create mode 100644 tests/ircd.conf create mode 100644 tests/readme.txt create mode 100644 tests/test-driver.pl create mode 100644 tools/Bounce/Bounce.cpp create mode 100644 tools/Bounce/Bounce.h create mode 100644 tools/Bounce/bounce.conf create mode 100644 tools/Bounce/build create mode 100644 tools/autodoc.py create mode 100644 tools/hashtoy create mode 100644 tools/iauth-test create mode 100644 tools/linesync/linesync.conf create mode 100644 tools/linesync/linesync.sh create mode 100644 tools/mkchroot create mode 100644 tools/ringlog.c create mode 100644 tools/ringlog.pl create mode 100644 tools/untabify create mode 100644 tools/wrapper.c diff --git a/.indent.pro b/.indent.pro new file mode 100644 index 0000000..84ea6ad --- /dev/null +++ b/.indent.pro @@ -0,0 +1,50 @@ +--leave-preprocessor-space +--dont-break-procedure-type +--no-space-after-function-call-names +--brace-indent0 +--indent-level2 +--dont-line-up-parentheses +--continuation-indentation4 +--case-indentation2 +--no-space-after-casts +--blank-lines-after-procedures +--no-blank-lines-after-declarations +--braces-on-struct-decl-line +--paren-indentation0 +--case-brace-indentation0 +--line-length80 +--declaration-indentation4 +-T size_t +-T aClass +-T aClient +-T aServer +-T anUser +-T aChannel +-T Mode +-T aConfItem +-T aMessage +-T aMessageTree +-T aGline +-T aListingArgs +-T snomask_t +-T n_short +-T n_long +-T n_time +-T u_char +-T u_short +-T u_long +-T u_int +-T dbuf +-T dbufbuf +-T aHashEntry +-T Link +-T Dlink +-T VOIDSIG +-T aHostent +-T ResRQ +-T aCache +-T CacheTable +-T cainfo +-T reinfo +-T RETSIGTYPE +-T OPT_TYPE diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..49c5f51 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,10675 @@ +2007-03-09 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for u2.10.12.10 release. + +2007-03-05 Michael Poole + + * ircd/m_privs.c (ms_privs): Use the correct source when + forwarding the PRIVS request. + + * tests/bug-1674539.cmd: New file to test for this. + + * tests/test-driver.pl: Recognize "oper" command from scripts. + +2007-03-05 Michael Poole + + * tests/ircd.conf: Make into a hub. + + * tests/ircd-2.conf: New file, for a second server. + + * tests/ircd-3.conf: Configuration for a third server. + +2007-03-04 Michael Poole + + * ircd/whocmds.c (count_users): Fix length of ipbuf. (Spotted by + paulr.) + +2007-02-28 Michael Poole + + * ircd/os_generic.c (sockaddr_from_irc): Zero out socket address + before setting family, and regardless of whether we have an + irc_sockaddr template. + +2007-02-25 Michael Poole + + * doc/example.conf: Document new options for General block. + + * include/res.h (clear_nameservers): Declare new function. + (add_nameserver): Declare previously static function. + + * include/s_bsd.h (VirtualHost_dns_v4): Declare. + (VirtualHost_dns_v6): Likewise. + + * ircd/ircd_lexer.l (DNS): Recognize new token. + + * ircd/ircd_parser.y (DNS): Declare new token. + (generalitem): Allow new items for dns vhost(s) and dns servers. + (generaldnsvhost): New production. + (generaldnsserver): New production. + + * ircd/ircd_res.c (VirtualHost_dns_v4): New variable. + (VirtualHost_dns_v6): Likewise. + (clear_nameservers): New function. + (restart_resolver): Scan specified servers so we only try to open + DNS client sockets that we need. + + * ircd/ircd_reslib.c (irc_nscount): Remove redundant initializer. + (irc_res_init): Only read the resolver config file if there are no + nameservers provided. + (add_nameserver): Make non-static. Remove off-by-one check + against IRCD_MAXNS. + + * ircd/s_conf.c (read_configuration_file): Clear nameserver list + before reading the config file. + +2007-01-27 Jeannot Langlois + + * doc/example.conf (Features): Illustrate URLREG feature. + + * doc/readme.features (URLREG): Define new feature. + + * include/ircd_features.h (Feature): Add FEAT_URLREG. + + * ircd/ircd_features.c (features): Set the default value. + + * ircd/m_join.c (m_join): For ERR_NEEDREGGEDNICK, include the + URLREG value as a format argument. + + * ircd/s_err.c (replyTable): Update ERR_NEEDREGGEDNICK + appropriately. + +2007-02-03 Michael Poole + + * ircd/ircd_reply.c (protocol_violation): Avoid reusing the + va_list in vd. + + * ircd/send.c (sendcmdto_channel_butone): Warn against using %v in + the pattern -- that will cause incorrect behavior. + (sendwallto_group_butone): Likewise. + (sendcmdto_match_butone): Likewise. + +2007-01-22 Michael Poole + + * ircd/channel.c (find_delayed_joins): New function. + (modebuf_flush): Handle +D-D and related cases. + (mode_parse_mode): It is too early to handle +D here, so don't. + (CheckDelayedJoins): Use find_delayed_joins(). + +2007-01-22 Michael Poole + + * tests: New subdirectory for test framework. + + * tests/ircd.conf: Helper file for testing. + + * tests/readme.txt: Simple documentation of test framework. + + * tests/test-driver.pl: Testing script interpreter. + +2007-01-22 Michael Poole + + * doc/example.conf: Fix potentially confusing comment about ip + mask syntax. + +2007-01-22 Michael Poole + + * INSTALL: Mention source directory naming; update the reference + to the config file converter (hah); update CVS directions. + +2007-01-22 Michael Poole + + * include/supported.h: Move parameters from FEATURES1 to FEATURES2 + so that neither ISUPPORT line has more than 15 parameters. (Some + clients are picky about this.) + +2007-01-21 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for pre10 development. + +2007-01-20 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.09 release. + +2007-01-15 Michael Poole + + * doc/readme.iauth (U): Document extended fields. + + * include/s_auth.h (auth_set_user): Declare new parameters. + + * ircd/m_user.c (m_user): Pass new parameters. + + * ircd/s_auth.c (auth_set_user): Accept new parameters. When + using Undernet extensions, forward them to the iauth process. + +2007-01-14 Michael Poole + + * ircd/os_generic.c (os_recv_nonb): Set errno to zero when + returning IO_FAILURE due to a closed connection. + +2006-12-31 Michael Poole + + * ircd/m_mode.c (ms_mode): Bounce modes from deopped members. + +2006-12-30 Michael Poole + + * ircd/ircd_string.c (ircd_strncpy): Make sure the output buffer + is terminated. We don't rely on the arguable strncpy semantics. + +2006-12-30 Michael Poole + + * include/struct.h (struct Server): Add asll_last field. + + * ircd/ircd.c (check_pings): Add check for asll_last. When a + server doesn't ping, use an old-style ping rather than AsLL ping. + + * ircd/m_pong.c (ms_pong): Use ClearPingSent() rather than + ClrFlag(). Set asll_last to current time. + (mr_pong): Use ClearPingSent() rather than ClrFlag(). + (m_pong): Likewise. + + * ircd/s_bsd.c (completed_connection): Likewise. + (read_packet): Likewise. Update cli_lasttime for servers in + addition to clients. + +2006-01-13 Michael Poole + + * ircd/m_burst.c (ms_burst): Properly handle member mode :ov. + +2006-01-13 Michael Poole + + * ircd/m_create.c (ms_create): Add channel name to the protocol + violation notice for a redundant CREATE. + +2006-01-13 Michael Poole + + * ircd/s_user.c (set_nick_name): Use user's account name rather + than the account parameter, in case the parameter contains a colon + (i.e. "account:1234" format). + +2006-01-13 Michael Poole + + * doc/readme.who: Document 'd' user-matching flag. + +2006-12-18 Michael Poole + + * ircd/m_jupe.c (mo_jupe): Fix which privilege is tested. + +2006-12-07 Michael Poole + + * ircd/listener.c (show_ports): Update to show '4' and/or '6' as + flags in response, with a '-' suffix if either one fails to open. + +2006-12-07 Michael Poole + + * doc/example.conf (Port): Document the method to select IPv4 or + IPv6 restriction for a port. + + * include/listener.h (LISTEN_IPV4): New listener flag. + (LISTEN_IPV6): New listener flag. + (struct Listener): Split 'fd' and 'socket' fields into two each. + + * ircd/ircd_lexer.l (gb): Move to be alphabetical. + (gigabytes): Likewise. + (ipv4): New token. + (ipv6): Likewise. + Adapted word matcher to handle digits in the non-leading character. + + * ircd/ircd_parser.y (USE_IPV4): New macro. + (USE_IPV6): Likewise. + (TOK_IPV4): New token. + (TOK_IPV6): Likewise. + (address_family): New non-terminal rule. + (portblock): Default to listening on both IPv4 and IPv6. + (portnumber): Add address_family element and use it. + (portvhost): Likewise. + + * ircd/listener.c (make_listener): Adjust for newly split fields + in struct Listener. + (inetport): Likewise. Adjust return value as well. + (add_listener): Update to handle both IPv4 and IPV6 support. + (close_listener): Likewise. + (accept_connection): Because each listener has two sockets, it is + no longer safe to free the listener when one is destroyed -- so + don't. Also accept() on the file descriptor from the incoming + event rather than on a fixed fd. + + * ircd/os_generic.c (os_socket): For platforms with IPV6_V6ONLY, + enable it for AF_INET6 sockets rather than disabling it for + unspecified sockets. + +2006-12-06 Michael Poole + + * include/listener.h (enum ListenerFlag): New enum. + (struct Listener): Convert "active", "hidden" and "server" to a + flagset. + (add_listener): Convert "is_server" and "is_hidden" arguments to + use the same flagset structure. + + * ircd/ircd_parser.y (listen_flags): New variable. + (general_vhost): Consolidate references to $3 to use a variable. + (portblock): Use listen_flags instead of tconn and tping. + (portserver): Likewise. + (porthidden): Likewise. + + * ircd/listener.c (show_ports): Use new field in Listener. + (set_listener_options): New function. + (inetport): Use it. + (add_listener): Use new field in Listener. When reusing an extant + listener, call set_listener_options() so the options are updated. + (mark_listeners_closing): Use new field in Listener. + (close_listeners): Use new helper macro to check activeness. + (release_listener): Likewise. + (accept_connection): Likewise. + + * ircd/s_bsd.c (report_error): Use the standard snotice rate + limiting here. + (add_connection): Use new helper macro to check serverness. + +2006-11-04 Michael Poole + + * ircd/m_nick.c (m_nick): If we get NICK on a server port, tell + the client to go away. + +2006-11-04 Michael Poole + + * ircd/version.c.SH: Skip version.c. + +2006-11-04 Michael Poole + + * doc/readme.who: Document new 'o' field flag. + + * include/whocmds.h (WHO_FIELD_OPL): New flag. + + * ircd/channel.c (send_channel_modes): Rename feat_oplevels to + send_oplevels and determine it automatically. + (modebuf_flush_int): Pass along oplevel if it's less than + MAXOPLEVEL. + (mode_process_clients): Allow oplevels to be inherited for -A + channels. Inherit the opper's oplevel if >= MAXOPLEVEL. + + * ircd/m_who.c (m_who): Recognize 'o' flag as WHO_FIELD_OPL. + + * ircd/whocmds.c (do_who): Send oplevel for WHO_FIELD_OPL, but + only show up to the requester's own oplevel. + +2006-10-21 Michael Poole + + * ircd/convert-conf.c (finish_connects): Fix error display for + missing C: lines when an H: line is present. + +2006-08-02 Michael Poole + + * ircd/ircd_parser.y (connectblock): Check for too-long password. + (operblock): Comment why we don't check password length. Move + PRIV_PROPAGATE test earlier (so a buggy edit, rehash, /oper will + not crash). + (clientblock): Check for too-long password. + +2006-08-02 Michael Poole + + * include/channel.h (struct Ban): Fix typo in doxygen comment. + +2006-07-09 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for pre09. + +2006-07-09 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for 2.10.12.08 release. + +2006-07-05 Michael Poole + + * ircd/s_auth.c (auth_freelist): New static variable. + (check_auth_finished): Move call to destroy_auth_request(). + (destroy_auth_request): Prepend auth request to freelist. + (start_auth): Use struct from auth freelist if possible. + +2006-06-30 Michael Poole + + * ircd/ircd_parser.y (iauth*): Avoid leaking program name string. + +2006-06-30 Michael Poole + + * ircd/s_auth.c (check_auth_finished): Free auth structure when + done with it. + (sendto_iauth): Free message buffer when done with it. + +2006-06-26 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for pre08. + +2006-06-26 Michael Poole + + * include/patchlevel.h (PATCHEVEL): Bump for release. + +2006-06-17 Michael Poole + + * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe. + +2006-06-08 Michael Poole + + * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local) + channels for locops as well as global opers. + +2006-06-08 Michael Poole + + * ircd/m_gline.c (ms_gline): Use final argument as G-line reason. + +2006-06-08 Michael Poole + + * ircd/gline.c (gline_stats): Show activation state in /stats g. + + * ircd/s_err.c (RPL_STATSGLINE): Update format string to match. + +2006-06-07 Michael Poole + + * doc/example.conf: Document the list_chan privilege. + + * ircd/ircd_lexer.l: Recognize the token. + + * ircd/ircd_parser.y: Treat it appropriately. + +2006-06-07 Michael Poole + + * ircd/s_auth.c (auth_ping_timeout): If the client never had an + auth request, kill them on ping timeout. + +2006-06-05 Michael Poole + + * ircd/s_auth.c (auth_timeout_callback): Clear AR_DNS_PENDING when + destroying the lookup and reporting DNS failure. + +2006-05-28 Michael Poole + + * doc/readme.features (MAXBANS): Update default value. + (NICKLEN): Likewise. + (HIS_STATS_*): Sort alphabetically. + + * ircd/m_stats.c (m_stats): Describe the intention so that there + are not further questions about local opers and remote /stats. + Fix places that use cptr instead of sptr. + +2006-05-24 Michael Poole + + * ircd/s_auth.c (auth_dns_callback): Be more careful about + handling failed DNS lookups. Use a more standard function to + disconnect clients for IP mismatches. + (start_auth): Use a more standard function to disconnect clients + for peer or local socket address lookup failures. + +2006-05-17 Michael Poole + + * ircd/s_auth.c (auth_ping_timeout): Fix off-by-one error. + +2006-05-17 Michael Poole + + * ircd/Makefile.in (install-*): Install convert-conf. Install + umkpasswd when ${BINDIR}/ircd is not a symlink. + +2006-05-15 Michael Poole + + * ircd/s_auth.c (check_auth_finished): Only check passwords on + user ports. + +2006-05-14 Michael Poole + + * doc/example.conf (Connect): Mention the vhost option. + +2006-05-08 Michael Poole + + * ircd/m_pong.c (mr_pong): Move cli_lasttime update from here... + + * ircd/s_auth.c (auth_set_pong): ... to here. + +2006-05-07 Michael Poole + + * include/s_auth.h (auth_ping_timeout): Declare new function. + + * ircd/ircd.c (check_pings): Move auth timeout logic into that new + function. + + * ircd/s_auth.c (HeaderMessages): Insert new message. + (auth_ping_timeout): Define new function. + (auth_timeout_callback): Remove "hurry" notification from here. + +2006-05-07 Michael Poole + + * include/s_auth.h (destroy_auth_request): Remove second argument. + + * ircd/list.c (free_client): Update to match. + + * ircd/s_auth.c (check_auth_finished): Remove second argument and + update call to destroy_auth_request(). + (send_auth_query): Update call to destroy_auth_request(). + (destroy_auth_request): Remove second argument. + (auth_timeout_callback): Send timeout failure messages here + instead. Update call to check_auth_finished(). + (auth_dns_callback): Update call to check_auth_finished(). + (start_auth): Likewise. + (auth_set_pong): Likewise. + (auth_set_user): Likewise. + (auth_set_nick): Likewise. + (auth_cap_done): Likewise. + (iauth_parse): Likewise. + +2006-05-06 Michael Poole + + * ircd/s_auth.c (AuthRequestFlag): Add AR_PASSWORD_CHECKED. + (check_auth_finished): Move password check out of iauth-only part + and use AR_PASSWORD_CHECKED to make sure we only check it once. + +2006-04-28 Michael Poole + + * ircd/s_auth.c (AuthRequest): Clarify comment on 'timeout' field. + (check_auth_finished): Fix timeout update. + (destroy_auth_request): Only delete timer if it is active. + (auth_timeout_callback): Do not disconnect client on timeout, so + that the user can finish sending NICK/USER or doing iauth. + +2006-04-28 Michael Poole + + * doc/example.conf (Admin): Fix documentation of which line can be + listed twice. + + * ircd/ircd_parser.y (adminblock): Allow admin information to be + changed via /rehash. + +2006-04-06 Michael Poole + + * ircd/s_auth.c (start_auth): Add client to list after getting + endpoint names (which can apparently fail for some reason). + +2006-04-06 Michael Poole + + * ircd/ircd_snprintf.c: Use SIZEOF_LONG_LONG (which is 0 for + unknown types) instead of the never-defined HAVE_LONG_LONG. + +2006-04-06 Michael Poole + + * doc/example.conf (IAuth): Update to reflect new syntax. + + * doc/readme.who: Fix typo in metasyntactic variable name. + +2006-04-04 Michael Poole + + * include/patchlevel.h: Update for pre07. + +2006-04-04 Michael Poole + + * include/patchlevel.h: Update for u2.10.12.06 release. + +2006-04-03 Michael Poole + + * ircd/channel.c (bmatch): If ipmask_check() indicates old_ban is + a CIDR-wise superset of new_ban, check whether new_ban is a + text-wise superset of old_ban. + +2006-03-31 Michael Poole + + * tools/iauth-test (send_server_notice): Use a colon prefix before + the message. + (%handlers): Likewise. + +2006-03-24 Michael Poole + + * ircd/ircd_signal.c (alloc_crec): Zero-fill returned + ChildRecord structs. + + * ircd/jupe.c (make_jupe): Zero-fill newly allocated jupes. + + * ircd/list.c (make_link): Zero-fill returned SLink structs. + + * ircd/whowas.c (whowas_init): Delete function. + (whowas_alloc): Rewrite to follow the more common pattern and to + zero-fill returned Whowas structs. + +2006-03-23 Kevin L. Mitchell + + * ircd/s_auth.c: rewrite iauth_read(), spliting out the parsing + into iauth_parse(); change parsing to separate parameters and deal + with the ':' sentinel; send sentinel in multi-word parameters; fix + iauth_cmd_config() and iauth_cmd_stats() to clear the 'next' + pointer in the SLink structure; fix buffering in + iauth_read_stderr(); remove carriage returns from STDERR contents + as well + + * doc/readme.iauth: fix a minor typo in comments for 'd' and 'N' + server messages + +2006-03-18 Michael Poole + + * ircd/convert-conf.c (finish_features): Do not emit a feature + setting that has no values. + +2006-03-18 Michael Poole + + * ircd/channel.c (mode_parse_key): Outside of burst, allow + overwriting of keys by a service when a key is already set. + (mode_parse_upass): Likewise. Instead, ignore new Upass during + burst if it is lexicographically greater than the current one. + (mode_parse_apas): Likewise for Apass, but only allow overwiting + an existing Apass in a BURST. + +2006-03-18 Michael Poole + + * ircd/channel.c (modebuf_flush_int): Fix typo about changing + oplevels. Send correct channel TS for modes to other servers. + (mode_parse): Accept timestamps on modes from users on other + servers. If the received timestamp is too large, handle that. + + * ircd/m_create.c (ms_create): Mention the CREATE-during-burst + case and handle it. + + * ircd/m_mode.c (ms_mode): Put back HACK(3) when oplevels are off. + +2006-03-14 Wouter Coekarts + + * ircd/s_err.c (RPL_STATSILINE): Add two %s to the first field. + + * ircd/s_stats.c (stats_configured_links): Use the new %s's to + show username masks for I: lines that have them. + (stats_access): Likewise. + +2006-03-13 Michael Poole + + * ircd/msgq.c (msgq_vmake): Try to clear msgbuf freelist after + killing clients, so that that case does not lead immediately to a + server panic. + (msgq_count_memory): Report total buffer text used as a way to + determine whether the BUFFERPOOL value is marginal. + +2006-03-02 Michael Poole + + * include/ircd_osdep.h (os_socket): New parameter. + + * include/res.h (irc_in_addr_unspec): New macro. + + * ircd/ircd_res.c (restart_resolver): Set family appropriately. + + * ircd/listener.c (inetport): Let os_ library pick socket family. + + * ircd/os_generic.c: Do not #define _XOPEN_SOURCE on FreeBSD 5+. + (sockaddr_from_irc): New parameter. + (os_sendto_nonb): Use new parameter to sockaddr_from_irc(). + (os_socket): New parameter. Try to turn off IPV6_V6ONLY on + sockets that listen on unspecified addresses. + (os_connect_nonb): Use new parameter to sockaddr_from_irc(). + + * ircd/s_auth.c (start_auth_query): Let os_ library pick socket + family. + + * ircd/s_bsd.c (connect_inet): If we pick the IPv4 vhost, specify + family for os_socket() as AF_INET. + + * ircd/uping.c (uping_init): Set socket family appropriately. + (uping_server): Likewise. + (uping_end): Fix format strings (the ms_* fields are int, not + long, and this causes bad results on LP64 machines). + +2006-02-22 Michael Poole + + * ircd/m_silence.c (apply_silence): Refuse to apply silences for + local users that are broader than an IPv4 /16 or an IPv6 /32, + unless they match every host indiscriminately. + +2006-02-22 Michael Poole + + * ircd/s_auth.c (check_auth_finished): Give non-iauth clients + connection classes, too. + (auth_close_unused): Remove redundant check for iauth != NULL. + (report_iauth_conf): Check iauth != NULL before deref'ing it. + (report_iauth_stats): Likewise. + +2006-02-22 Kevin L. Mitchell + + * ircd/s_auth.c: fix macros to not dereference a NULL pointer when + iauth is not connected + +2006-02-17 Alex Badea + + * ircd/s_auth.c (auth_set_username): Check if the last + character of the username is alphanumeric, instead of the + '\0' terminator. + + * ircd/m_pong.c (mr_pong): Parse cookie with strtoul(), + since atol() causes signedness problems. + +2006-02-15 Michael Poole + + * include/res.h (NXDOMAIN): Define. + + * ircd/ircd_res.c (res_readreply): Treat NXDOMAIN just like + SERVFAIL. Patch courtesy of Dianora. + + * tools/iauth-test (Carp): This doesn't actually use Carp. + +2006-02-15 Michael Poole + + * doc/example.conf: Include new HIS_STATS_IAUTH feature. + + * doc/readme.features: Document the feature. + + * doc/readme.iauth: Rewrite to reflect the new progressive iauth + protocol, based on IRCnet's iauth. + + * doc/snomask.html: Document SNO_AUTH server notice flag. + + * include/client.h (FLAG_IAUTHED): Delete. + (con_cookie): Delete. + (con_unreg): Delete. + (con_auth): Make comment capitalization consistent. + (con_iauth): Delete. + (CLIREG_*): Delete. + (cli_unreg): Delete. + (cli_cookie): Delete. + (cli_iauth): Delete. + (con_unreg): Delete. + (con_iauth): Delete. + (IsIAuthed): Delete. + (SetIAuthed): Delete. + (SNO_AUTH): New server notice flag. + (SNO_ALL): Update to include SNO_AUTH. + (SNO_OPER): Update to include SNO_AUTH. + + * include/ircd_auth.h: Delete file. + + * include/ircd_features.h (HIS_STATS_IAUTH): New feature. + + * include/s_auth.h: Rewrite almost everything for new auth system. + + * include/s_user.h (COOKIE_VERIFIED): Delete. + (register_user): Remove redundant nick and username arguments. + + * ircd/ircd_auth.c: Delete file. + + * ircd/ircd_features.c (HIS_STATS_IAUTH): New feature. + + * ircd/ircd_lexer.l (PROGRAM): New token in grammar. + + * ircd/ircd_log.c (masks): Add SNO_AUTH flag. + + * ircd/ircd_parser.y (stringlist): Simplify production. + (iauthblock): Revise to only include a PROGRAM production. + + * ircd/list.c (make_client): Do not assign to deleted field. + + * ircd/m_cap.c (cap_ls): Use auth_cap_start() instead of + cli_unreg(). + (cap_req): Likewise. + (cap_end): Use auth_cap_done() instead of cli_unreg(). + + * ircd/m_pass.c (mr_pass): Merge arguments to PASS. Use + auth_set_password() to notify iauth of password. + + * ircd/m_pong.c (mr_pong): Use auth_set_pong() instead of + cli_cookie() and cli_unreg(). + + * ircd/m_user.c (m_user): Use auth_set_user() instead of + cli_unreg(), etc. + + * ircd/s_auth.c: Rewrite most of the infrastructure for the new + auth system. + + * ircd/s_conf.c (rehash): Call auth_*() instead of iauth_*(). + + * ircd/s_misc.c (exit_one_client): Do not use iauth_exit_client(). + (exit_client): Use auth_send_exit() instead. + + * ircd/s_stats.c (statsinfo): Include iauth and iauthconf. + + * ircd/s_user.c (clean_user_id): Delete (moved into s_auth.c). + (register_user): Remove nick and username parameters; move conf + interactions and username validation to s_auth.c. + (set_nick_name): Use auth_set_nick() instead of cli_cookie(), + cli_unreg(), etc. + + * tools/iauth-test: Implementation of iauth for testing purposes. + +2006-02-15 Michael Poole + + * ircd/ircd_snprintf.c (doprintf): Fix typecast for %hu. + +2006-02-15 Michael Poole + + * include/ircd_signal.h (SigChldCallBack): New typedef. + (register_child): Declare. + (unregister_child): Declare. + (reap_children): Declare. + + * ircd/ircd_signal.c (alloc_crec): New function. + (release_crec): New function. + (register_child): New function. + (do_unregister_child): New function. + (unregister_child): New function. + (sigchld_callback): New function. + (setup_signals): Hook SIGCHLD. + (reap_children): New function. + + * ircd/ircd.c (server_restart): Call reap_children() on exit. + +2006-02-15 Michael Poole + + * include/ircd_osdep.h (os_socketpair): Declare. + + * ircd/os_generic.c (is_blocked): New local function. + (os_*): Use is_blocked() instead of cut-and-pasted code. + (os_socketpair): New function. + +2006-02-15 Michael Poole + + * ircd/match.c (match): Fix backtracking bug after an escape + (reported by Michael, I think). + +2006-02-04 Michael Poole + + * ircd/ircd.c (try_connections): Scan all Connect blocks for the + earliest hold time (suggested by Michael). + +2006-02-04 Michael Poole + + * ircd/m_join.c (m_join): Remove #if 0 code and update comment. + + * ircd/m_mode.c (ms_mode): Remove self-op support. + +2006-01-12 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for 2.10.12.pre06. + +2006-01-12 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for release. + +2006-01-11 Michael Poole + + * doc/Makefile.in: Make install target VPATH-safe. + + * doc/example.conf: Comment out example IAuth block. + + * ircd/m_burst.c (ms_burst): Change isdigit() to IsDigit(), + silencing a warning on Solaris. + +2006-01-09 Michael Poole + + * ircd/s_user.c (register_user): Do not send +r flag to user when + they first connect. + +2006-01-09 Michael Poole + + * include/ircd_features.h (FEAT_ZANNELS): Actually, put it back. + + * ircd/ircd_features.c (FEAT_ZANNELS): Likewise. + +2006-01-06 Michael Poole + + * ircd/channel.c (mode_process_clients): Do not reveal zombies who + are being opped (MODE and KICK crossed). Reported by coekie. + +2006-01-06 Michael Poole + + * ircd/m_join.c (ms_join): Wipe out all modes (not just chanops) + when replacing a resurrected channel. + + * ircd/convert-conf.c (dupstring): Fix probable off-by-one size + passed to memcpy(). + +2006-01-03 Michael Poole + + * ircd/channel.c (modebuf_flush_int): Also send timestamp when &me + originates the MODE going to other servers (currently just when a + client joins a zannel or uses an A/U password). + +2006-01-02 Michael Poole + + * include/ircd_features.h (FEAT_ZANNELS): Remove. + + * ircd/channel.c (sub1_from_channel): Remove reference to + FEAT_ZANNELS. + + * ircd/ircd_features.c (FEAT_ZANNELS): Remove. + + * ircd/m_destruct.c (ms_destruct): Do not try to remove a destruct + event for channels that do not have them (created by BURSTing a + zannel but not yet destroyed by EOB). + +2005-12-31 Michael Poole + + * ircd/m_whowas.c (m_whowas): Mention that IP is untracked in WHOWAS. + Spotted by Progs. + +2005-12-30 Michael Poole + + * ircd/m_topic.c: Remove block comment about sptr, cptr, etc. + (do_settopic): Add doxygen comment. Move permissions checks.. + (m_topic): .. to here. Update doxygen comment. + (ms_topic): Update doxygen comment here too. + +2005-12-30 Michael Poole + + * ircd/s_conf.c (conf_debug_iline): Fix display of null passwords. + +2005-12-30 Michael Poole + + * RELEASE.NOTES: Mention removal of HIS_STATS_h. + + * ircd/convert-conf.c (removed_features): Add AUTOHIDE, + HIS_DESYNCS and TIMESEC. + (get_connect): Do not downcase connection name on insert. + (do_feature): Do not upcase feature name (cf HIS_STATS_k). + +2005-12-30 Michael Poole + + * ircd/engine_devpoll.c (engine_loop): Remove bogus assert. + +2005-12-31 Perry Lorier + + * convert-conf.c: Skip with a warning, H:'s that are missing a + corresponding C: + +2005-12-28 Michael Poole + + * ircd-patch: Do not use [ for test, and do not use $[] for expr. + (Solaris /bin/sh, among others, have problems with those.) + +2005-12-23 Michael Poole + + * config.guess: Update to current version. + + * config.sub: Likewise. + +2005-12-23 Kevin L. Mitchell + + * ircd/m_join.c: get rid of MAGIC_REMOTE_JOIN_TS; perform the + deop-other-users loop only when creation < channel timestamp or + when the channel in question happens to be a zannel; actually deop + users, don't just say we are and not do it + + * ircd/m_create.c (ms_create): get rid of MAGIC_REMOTE_JOIN_TS + + * include/channel.h: get rid of MAGIC_REMOTE_JOIN_TS + +2005-12-13 Michael Poole + + * configure.in: Define a macro when compiling on Solaris. + + * ircd/ircd_crypt_native.c (_XOPEN_SOURCE): Turn down to 500 so + that Solaris doesn't complain that SUSv3 requires C99. + + * ircd/os_generic.c (_XOPEN_SOURCE): Likewise, but leave it at 600 + on non-Solaris platforms so that IPv6 stays supported. + +2005-12-13 Michael Poole + + * ircd/m_join.c (ms_join): Prevent net rides allowed by moving the + channel timestamp backwards in time without deopping current ops. + (Reported by Wouter Coekaerts.) + +2005-12-13 Michael Poole + + * doc/example.conf: Remove extraneous "Other" Client block. + + * ircd/convert-conf.c (finish_operators): Fix operator precedence + bug. + + * ircd/ircd_parser.y (clientclass): Fix typo in error message. + +2005-11-27 Michael Poole + + * ircd/Makefile.in (version.c): version.c also depends on + version.h, patchlevel.h and source files. + +2005-11-27 Michael Poole + + * ircd/m_join.c (m_join): Count a join to a new channel as a + target change. + +2005-11-19 Michael Poole + + * ircd/s_stats.c (stats_servers_verbose): Display IPv6 support + flag with the other per-server flags. + +2005-11-19 Michael Poole + + * ircd/convert-conf.c (finish_features): Only emit "Features {" + once in the converted configuration file. Display the original + input line for each feature line in the output. + +2005-11-18 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for pre05. + +2005-11-18 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for release. + +2005-11-15 Brian Cline + + * doc/example.conf: Add new line for HIS_MODEWHO feature. + + * doc/readme.features: Document new HIS_MODEWHO feature. + + * include/ircd_features.h: Declare new HIS_MODEWHO feature. + + * ircd/channel.c (modebuf_flush_int): Use new HIS_MODEWHO feature + to show or hide the server name that performed a channel mode change. + + * ircd/ircd_features.c: Place new HIS_MODEWHO setting in the feature + table and give it a default value of true, which will hide the + originating server name. + +2005-11-16 Michael Poole + + * doc/example.conf (Features): Mention ZANNELS default. + + * doc/readme.features: Document OPLEVELS and ZANNELS. + +2005-11-17 Carlo Wood + + * include/ircd_features.h (Feature): Add ZANNELS. + * ircd/ircd_features.c (FeatureDesc): idem. + * ircd/channel.c (sub1_from_channel): Don't keep zannels + around when ZANNELS and OPLEVELS are FALSE. + * ircd/m_destruct.c (ms_destruct): Use JOIN instead of + CREATE to recreate a non-empty channel after DESTRUCT. + +2005-11-16 Michael Poole + + * tools/convert-conf.py: Delete obsolete code. + +2005-11-16 Michael Poole + + * ircd/m_names.c (m_names): Fix handling of NAMES #a,#b. + (ms_names): Likewise. + +2005-11-15 Michael Poole + + * ircd/m_nick.c (ms_nick): Clarify message when an older nick + overrules a newer nick. When killing a client for a nick + collision, make sure to use the numnick as the first argument. + +2005-11-14 Michael Poole + + * ircd/channel.c (member_can_send_to_channel): After prodding from + reed, always allow remote users to send to a channel. He also + pointed out a bug in the first version of this change. + +2005-11-14 Carlo Wood + + * ircd/channel.c (modebuf_flush_int): Fix test for limitdel. + (modebuf_mode_uint): Make sure the limit is included as an + argument when necessary (and only when necessary) in a bounce. + + * ircd/m_destruct.c (ms_destruct): Generate a mode bounce instead + of burst to resynchronize a non-empty destructed channel. + +2005-11-14 Michael Poole + + * ircd/channel.c (find_no_nickchange_channel): Disallow nick + changes by voiceless no-account users on a +r channel. + +2005-11-14 Michael Poole + + * ircd/m_kick.c (ms_kick): Fix test for whether a client's own + server is kicking him. + +2005-11-13 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for pre04. + +2005-11-13 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for release. + +2005-11-13 Carlo Wood + + * ircd/m_create (ms_create): Accept CREATE for zannels. + + * ircd/m_join.c (m_join): MODE +o for a zannel must come from the + server for compatibility with older versions. + +2005-11-12 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Bump for pre03. + +2005-11-12 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update for release. + +2005-11-11 Michael Poole + + * ircd/ircd_res.c (proc_answer): Follow CNAME when doing A + and AAAA lookups as well as PTR. + +2005-11-07 Michael Poole + + * ircd/channel.c (mode_parse_client): Allow clients to specify + oplevel in MODE #channel +o. + (mode_process_clients): Allow oplevel 999 to deop another 999. + + * ircd/kick.c (m_kick): Allow oplevel 999 to kick another 999. + +2005-10-31 Michael Poole + (Based on a patch by Romain Bignon ) + + * ircd/channel.c: Some modes (currently only WASDELJOINS) should + not be propagated to remote servers. + +2005-10-30 Michael Poole + + * ircd/channel.c (mode_parse_apass): Move all send_reply() errors + inside an if (MyUser(state->sptr)) test. + + * ircd/m_join.c (m_join): Reorganize zannel join check to match + surrounding code. + +2005-10-30 Carlo Wood + + * ircd/channel.c (sub1_from_channel): Delay destruction for -A + channels. They become zombie channels (zannels). + (mode_parse_upass): Add duration to ERR_NOMANAGER message. + (mode_parse_apass): Likewise. Unconditionally set the member who + sets Apass as oplevel 0. Clear Upass when clearing Apass. + (joinbuf_join): Remove code to pass oplevel in JOIN. + + * ircd/m_burst.c (ms_burst): Handle zannels. + + * ircd/m_join.c (m_join): Handle a join to a zannel. If the user + is joining with ops and/or an oplevel, send those. + (ms_join): Stop trying to parse oplevels in JOIN. Copy join + timestamp when a user joins a zannel. + + * ircd/m_mode.c (ms_mode): Never generate HACK3. Silently allow a + user to op himself if he is the only one in a channel. + + * ircd/s_err.c (ERR_UPASSSET): Remove extra space. + (ERR_UPASSNOTSET): Likewise. + (ERR_NOMANAGER): Add field for channel lifetime. + +2005-10-30 Michael Poole + + * ircd/m_join.c (m_join): Fix check for OVERRIDE when the real + channel key is OVERRIDE. (Reworked patch from a1kmm.) + +2005-10-30 Michael Poole + + * .cvsignore: Add autom4te.cache. + + * ircd/.cvsignore: Add convert-conf. + + * ircd/test/.cvsignore: Add ircd_match_t. + + * patches/.cvsignore: Add marks. + +2005-10-28 Alex Badea + + * ircd/m_kick.c (ms_kick): Fix format string typo (bug #1339538) + +2005-10-17 Diane Bruce + + * ircd/ircd_res.c: Don't send retries if the client did + not resolve (SERVFAIL); this fixes a bug causing a flurry + of retries in this case + +2005-10-14 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update to pre02. + +2005-10-14 Michael Poole + + * doc/readme.cvs: Document tag name consistently with the release + name. + + * include/patchlevel.h (PATCHLEVEL): Bump patchlevel for release + of 2.10.12.01. + +2005-10-12 Michael Poole + + * doc/example.conf: Update documentation to match this change. + + * ircd/client.c (client_set_privs): Make default global oper + privileges match what was in 2.10.11. + +2005-10-11 Michael Poole + + * ircd/os_generic.c (os_get_rusage): Make conditional on DEBUGMODE + to mitigate bug #1313429. + +2005-10-12 Perry Lorier + + * include/s_stats.h: Add new "Local" only flag to /stats. + + * ircd/m_stats.c: Consult it. + + * ircd/s_stats.c: Use the flag. + +2004-01-04 Kevin L Mitchell + + * ircd/s_numeric.c (do_numeric): fix a crash when a numeric is + sent to a channel... + +2005-10-06 Michael Poole + + * ircd/m_join.c (m_join): Report too-long channel names as + non-existent. + +2005-10-05 Michael Poole + + * ircd/m_names.c (m_names): Fix format string when forwarding + /names -D to other servers. + (ms_names): Likewise. Add support for remote /names -D. + +2005-10-05 Michael Poole + + * ircd/class.c (do_find_class): Fix bug from previous commit. + + * ircd/ircd_parser.y (clientblock): Allow setting Client port. + + * ircd/s_conf.c (check_limit_and_attach): Merge into attach_iline. + (attach_iline): Only set FLAG_DOID when we are sure we will attach + this Client block to the client. [Credit: Jukka Ollila and others] + +2005-10-04 Michael Poole + [Based on a patch by Jukka Ollila] + + * include/class.h (find_class): Rename to do_find_class(). + + * ircd/class.c (class_delete_marked): Keep invalid classes in list + until next rehash. + (add_class): Use new parameter to do_find_class() to allow a class + to be "resurrected". + (find_class): Rename. + (report_classes): Use 'y' instead of 'Y' when reporting invalid + classes. + +2005-10-01 Michael Poole + + * ircd/m_kick.c (ms_kick): If the kick target is join-delayed, + only send the KICK to the kicker. Spotted by Cesar_. + +2005-10-01 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Update to pre1. + + * ircd/class.c (init_class): Only set default class's ->next + pointer when first allocating it. + +2005-09-30 Michael Poole + + * ircd/m_who.c (m_who): Handle matchsel & WHO_FIELD_ACC when + matching users. + +2005-09-30 Michael Poole + + * include/patchlevel.h: Update for release. + +2005-09-28 Michael Poole + + * ircd/m_kick.c (ms_kick): Use correct oplevel when bouncing a + chanop being kicked. + +2005-09-26 Michael Poole + + * ircd/whocmds.c (do_who): Fix uninitialized variable warning + about 'chan'. + +2005-09-26 Michael Poole + + * ircd/parse.c (del_msg_element): Only delete empty subtrees, and + leave subtrees that may still contain data. + +2005-09-26 Michael Poole + + * include/channel.h (struct ModeBuf): Add mbm_oplevel to args + array. + (MB_OPLEVEL): New corresponding macro. + (modebuf_mode_client): Add corresponding argument. + + * ircd/channel.c (modebuf_flush_int): Adjust worst-case buffer + usage to include :999 suffix. Change format for oplevel passing. + (modebuf_mode_client): Set oplevel field in mbuf args array. + (struct ParseState): Add oplevel field to cli_change array. + (mode_parse_client): Accept and record oplevel suffix from + servers; fix it up if we're bouncing a deop. + (mode_process_clients): If a valid oplevel was parsed, use it. + + * ircd/m_burst.c (ms_burst): Pass oplevel to modebuf_mode_client(). + + * ircd/m_clearmode.c (do_clearmode): Likewise. + + * ircd/m_create.c (ms_create): Likewise. + + * ircd/m_kick.c (ms_kick): Likewise. + +2005-09-23 Michael Poole + + * include/whocmds.h (WHOSELECT_DELAY): Define new constant. + + * ircd/m_who.c (m_who): Accept 'd'/'D' as a way to set + WHOSELECT_DELAY, just like 'o' for WHOSELECT_OPER. Do not skip + join-delayed users if WHOSELECT_DELAY is set. + + * ircd/whocmds.c (do_who): Remember membership for shared channel + if one exists. Use it when displaying flags, adding '<' for + join-delayed users. + +2005-09-22 Michael Poole + + * ircd/channel.c (mode_parse_key): Only accept the new key when + the current one is empty or "greater" than the new one. + (mode_parse_upass): Likewise, for upass. + (mode_parse_apass): Likewise, for apass. + +2005-09-22 Michael Poole + + * ircd/gline.c (gline_checkmask): Add missing digit in mask length + check. + +2005-09-21 Michael Poole + + * doc/example.conf: Remove confused and outdated references to + Martians. + +2005-09-20 Michael Poole + + * ircd/Makefile.in: Regenerate "make depend" dependencies. + + * ircd/test/Makefile.in: Likewise. + +2005-09-16 Kevin L. Mitchell + + * ircd/m_join.c (last0): fix problem leading to protocol + violations on certain combinations of /join 0 from remote servers + (probably from local users, too) [bug #1291029]; remove redundant + !IsChannelChar() check + +2005-09-14 Michael Poole + + * doc/readme.cvs: Document the branching scheme for 2.10.12. + +2005-09-14 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Increment to reflect the + pre-release code freeze. + +2005-09-14 Michael Poole + + * ircd/channel.c (find_ban): Fix the sense of another check. + +2005-09-13 Michael Poole + + * include/channel.h (clean_channelname): Remove prototype. + + * ircd/m_invite.c (m_invite): Do not clean channel name; just + reject invalid channel names. + + * ircd/m_join.c (m_join): Likewise. + + * ircd/m_mode.c (m_mode): Do not clean channel name. + + * ircd/m_names.c (m_names): Likewise. + + * ircd/m_opmode.c (mo_opmode): Likewise. + +2005-09-13 Michael Poole + + * ircd/channel.c (find_ban): Revert to older style of comparison, + fixing the sense of one check. Spotted by Alex Badea. + +2005-09-13 Alex Badea + + * ircd/ircd.c (try_connections): modify autoreconnect logic to + allow FEAT_CONNECTFREQUENCY to be smaller than Class connectfreq + +2005-09-13 Alex Badea + + * ircd/s_conf.c (close_mappings): NULL out GlobalServiceMapList, + otherwise the linked list has an invalid ending sentinel on rehash + +2005-09-12 Michael Poole + + * ircd/channel.c (find_ban): Compare ban mask against hostname + even when it looks like an IP, to match things like *!*@1.* when + users have a hostname like 1.2.3.example.com. + +2005-09-12 Michael Poole + + * RELEASE.NOTES: Note the resolution of ambiguous ipmasks. + + * ircd/ircd_string.c (ipmask_parse): Implement it. + +2005-09-12 Michael Poole + + * ircd/m_join.c (m_join): If we find an empty key, null out the + key pointer. + +2005-09-11 Michael Poole + + * RELEASE.NOTES: Mention the side benefits of this change. + + * include/ircd_string.h (ipmask_parse): Declare function here. + (ircd_aton): Becomes a special case of ipmask_parse(). + + * include/match.h (check_if_ipmask): Undeclare function. + (ipmask_parse): Remove function prototype from this file. + + * ircd/ircd_string.c (ircd_aton_ip4): Add nullable pbits parameter + to accept ipmask length. Rework to fill that in. + (ircd_aton): Rework into... + (ipmask_parse): this function, which knows how to fill in its own + pbits parameter. + + * ircd/m_burst.c (ms_burst): Rely on make_ban() to set the ban + flags correctly, to avoid call to check_if_ipmask(). + + * ircd/match.c (ipmask_parse_ipv4): Delete function. + (check_if_ipmask): Likewise. + (ipmask_parse): Delete this version in favor of ircd_string.c's. + + * ircd/test/ircd_in_addr_t.c (ipmask_test): New struct type. + (test_masks): New array of ipmask_test. + (test_ipmask): Function to run one of those tests. + (main): Call test_ipmask(). + +2005-09-11 Alex Badea + + * ircd/m_ping.c (ms_ping, mo_ping): misplaced chunk of code + (probably during the forward port) which broke AsLL; fixed. + +2005-09-01 Michael Poole + + * ircd/gline.c (make_gline): Remove debug output from when IPv6 + support was being debugged. + (do_gline): Likewise. + (gline_lookup): Likewise, plus remove redundant code. + +2005-09-01 Michael Poole + + * ircd/channel.c (joinbuf_join): Ignore joinbuf type when joining + 0, since no other call passes a null channel. + + * ircd/m_join.c: Remove comment discussing argument meanings. + (last0): Make this also handle the JOIN 0 logic, doxyfy. + (join0): Merge into last0. + (m_join): Doxygenate. Remove check for join0. Further + reorganize, so new versus old channel handling are moved to just + one place each within this function. + (ms_join): Doxygenate. Remove check for join0. + +2005-09-01 Michael Poole + + * RELEASE.NOTES: Bump revision date and highlight this change. + + * include/channel.h (MAGIC_OPER_OVERRIDE): Remove. + (can_join): Remove declaration. + + * ircd/channel.c (compall): Remove. + (can_join): Remove. + + * ircd/m_join.c (m_join): Remove redundant check for control + characters (clean_channelname() will get them). Reorganize initial + flags calculation. Accept channel keys like RFC 1459 says; this + requires the old compall()/can_join() logic to modify 'keys', so + inline the code and reorganize it. + +2005-08-30 Michael Poole + + * include/channel.h (PASSLEN): Remove; use KEYLEN instead. + + * ircd/channel.c (mode_parse_upass): Likewise. + (mode_parse_apass): Likewise. + The inconsistency (in clean_key()) was reported by Reed. + +2005-08-30 Michael Poole + + * RELEASE.NOTES: Document +D and +d channel modes. + +2005-08-29 Michael Poole + + * include/numeric.h (ERR_NOMANAGER_LONG): Undefine. + (ERR_NOMANAGER_SHORT): Rename to ERR_NOMANAGER. + + * ircd/s_err.c (replyTable): Change to reflect that. + + * ircd/channel.c (clean_key): New function. + (mode_parse_key): Use it, and check that keys do not start with :. + (mode_parse_upass): Likewise, and adjust for ERR_NOMANAGER. + (mode_parse_apass): Likewise. + The key and password changes fix bugs reported by coekie. + +2005-08-27 Michael Poole + + * ircd/channel.c (add_user_to_channel): Use SetOpLevel() instead + of assigning directly to member->oplevel. + (mode_parse_apass): Likewise. + (mode_process_clients): Users opped by outsiders should get + oplevel 1, since they are not channel managers. + + * ircd/m_burst.c (ms_burst): Use SetOpLevel() instead of assigning + directly to member->oplevel. + +2005-08-25 Michael Poole + + * ircd/channel.c (member_can_send_to_channel): At coekie's + suggestion, disallow channel manager talking after Apass is set, + so they set and use Upass sooner. + + * ircd/class.c (init_class): Default class should have 1 link. + (report_classes): Return links count minus one to match old output. + + * ircd/m_trace.c (do_trace): Fix links count here, too (spotted by + Reed). + +2005-08-25 Michael Poole + + * ircd/channel.c (mode_parse): Accept +A/+U from servers + regardless of FEAT_OPLEVELS. + +2005-08-24 Michael Poole + + * ircd/ircd.c (parse_command_line): Mention epoll engine when run + with -v. + +2005-08-24 Michael Poole + + * include/patchlevel.h (PATCHLEVEL): Increment. + + * ircd/channel.c (joinbuf_join): Double check that oplevel is 0 or + 1 when propagating JOIN :#channel, to avoid PV on receiver. + + * ircd/engine_epoll.c: Add system call numbers for more CPU types. + + * ircd/ircd_log.c (log_open): Remove NFS-oriented alarm() calls; + anyone who writes logs over NFS is mental. (Thanks to D. Bruce.) + +2005-08-21 Michael Poole + + * include/s_conf.h (free_mapping): Declare new function. + + * ircd/ircd_parser.y (pseudoblock): Use it. + + * ircd/s_conf.c (free_mapping): Define it. + (close_mappings): New function. + (rehash): Call close_mappings() before reading file. + + * ircd/m_kill.c (do_kill): Revert 2005-08-18 change. + +2005-08-19 Michael Poole + + * ircd/parse.c (tok_tree): Re-add token tree structure. + (initmsgtree): Populate it. + (parse_server): Prefer it to full message tree. + +2005-08-18 Michael Poole + + * ircd/m_kill.c (do_kill): When FEAT_HIS_KILLWHO, change apparent + source of KILLs to &his instead of &me. + +2005-08-16 Michael Poole + + * ircd/channel.c (mode_parse_ban): Avoid overwriting part of + newban->banstr[] when the source is a server. (Spotted by jcq.) + +2005-08-16 Michael Poole + + * ircd/channel.c (joinbuf_join): Switch to &his instead of &me for + announcements to local users in a channel. + + * ircd/m_burst.c (ms_burst): Likewise. + + * ircd/m_invite.c (m_invite): Likewise. + (ms_invite): Likewise. + + * ircd/m_kick.c (ms_kick): Likewise. + + * ircd/m_topic.c (do_settopic): Another &me -> &his change for + HIS, and use that apparent source for the channel localcast. + +2005-08-16 Jukka Ollila + + * ircd/s_user.c (hide_hostmask): Use HIS_SERVERNAME instead of the + real thing for the post-mode-x rejoin. + +2005-08-15 Michael Poole + + * include/supported.h (FEATURESVALUES2): Add +d channel mode. + + * ircd/IPcheck.c (ip_registry_new_entry): Clarify that this is not + a varadic function. (Suggested by Ian Kumlien.) + + * ircd/convert-conf.c (finish_operators): Likewise. + + * ircd/listener.c (close_listeners): Likewise. + + * ircd/channel.c (CheckDelayedJoins): Use HIS server name to + remove channel mode +d. + +2005-08-12 Michael Poole + + * ircd/channel.c (pretty_mask): Recognize ':' as unique to the + host part of a ban mask. + +2005-08-03 Jan Krueger + + * ircd/m_kick.c (m_kick): Send JOIN prior to confirming KICK on + invisible member. + +2005-08-08 Michael Poole + + * ircd/channel.c (find_ban): For non-IPmask bans, match the ban + string against the string form of the client's IP address. + +2005-07-16 Michael Poole + + * configure.in: Apply a test for socklen_t that Reed found. + + * configure: Regenerate. + +2005-07-16 Michael Poole + + * RELEASE.NOTES: Mention that 2.10.11 does not support oplevels. + + * README.FreeBSD: Remove (merged into README). + + * README.Solaris: Remove (merged into README). + + * README: Merge in the above; also update for 2.10.12. + + * doc/example.conf: Change mention of K-lines to say Kill blocks + instead. + + * doc/iauth.txt: Remove (out of date). + + * doc/readme.features: Update to reflect that 2.10.11 is not the + current release. Change mention of various config lines to use + the equivalent config entries or blocks instead. + + * doc/readme.log: Likewise. + + * doc/api/features.txt: Change F-line mentions to say Feature + entry instead. + + * doc/api/modebuf.txt: Change U-line mention to say Uworld entry. + + * doc/api/motd.txt: Change T-line mentions to say Motd entry. + +2005-07-15 Michael Poole + + * ircd/ircd_features.c (feature_init): Always call + feature_notify_server*() so that 'his' is initialized. + + * ircd/m_whois.c (do_whois): Unswap sense of comparison to choose + between user->server and &his. + +2005-07-14 Michael Poole + + * ircd/channel.c (mode_parse_apass): Update oplevels when setting + or removing the +A password. Partial credit goes to Reed Loden. + +2005-07-14 Michael Poole + + * include/ircd_features.h: Declare new "his" pseudo-server to hold + FEAT_HIS_SERVERNAME and FEAT_HIS_SERVERINFO in a convenient place. + + * ircd/ircd_features.c: Initialize and update it. + + * ircd/channel.c (modebuf_flush_int): Use it as the apparent + source for opmodes and server mode changes (also when the source + is me). + + * ircd/m_burst.c (ms_burst): Use it as the apparent source for net + rider kicks. + + * ircd/m_whois.c (do_whois): Use it to simplify code here. + + * ircd/s_misc.c (exit_client): Use it as the apparent killer. + +2005-07-14 Michael Poole + + * doc/example.conf (General): Update comment about vhost to match + the code change below. + + * ircd/ircd_parser.y (generalvhost): Accept vhost="*"; as a + synonym for the default behavior (for backwards compatibility). + Spotted by Kev. + + * ircd/channel.c (sub1_from_channel): Remove stale code and + comment, replacing with an up-to-date comment. Spotted by skx. + +2005-07-11 Michael Poole + + * ircd/engine_select.c: Remove outdated comment about USE_POLL. + + * ircd/parse.c (msgtab): #if out CAP handler until we have caps. + + * RELEASE.NOTES: Remove mention of capabilities for now. + +2005-07-11 Stephan Peijnik + + * ircd/gline.c (gline_add): It's only a protocol violation when a + server issues a "whacky" gline. If it's an oper, only tell opers + with SNO_GLINE. + + * ircd/ircd_auth.c (iauth_protocol_violation): Likewise, the whole + network is not likely to care about IAuth PVs, so only tell opers + with SNO_CONNEXIT. + +2005-07-11 Michael Poole + + * doc/readme.features: Document FEAT_CHANNELLEN. + + * doc/example.conf: Give an example of it. + + * ircd/m_join.c (ms_join): Do not clean channel names from remote + servers, to avoid desynchs. + + * ircd/m_names.c (ms_names): Likewise. + +2005-07-11 Stephan Peijnik + + * include/ircd_features.h: Declare new FEAT_CHANNELLEN. + + * include/supported.h: Add it to the ISUPPORT display. + + * ircd/channel.c (clean_channelname): Impose the lower limit + between FEAT_CHANNELLEN and CHANNELLEN. + + * ircd/ircd_features.c: Define FEAT_CHANNELLEN. + +2005-07-11 Reed Loden + + * include/sys.h: Move FD_SETSIZE redefinition to engine_select.c. + + * ircd/s_bsd.c: Move FD_SETSIZE sanity check to engine_select.c + Remove unused #include . + + * ircd/engine_select.c: Put FD_SETSIZE redefinition and sanity + checks here, since they are not used elsewhere in the daemon. + [Order slightly changed by Michael Poole to compile.] + +2005-07-03 Michael Poole + + * ircd/convert-conf.c: New file. + + * ircd/Makefile: Compile it. + +2005-06-27 Michael Poole + + * ircd/s_bsd.c (add_connection): Split logic for server versus + client listeners; only do IPcheck for client connections. + + * ircd/s_serv.c (server_estab): There is no longer a need to + remove IPcheck reference, so don't. + +2005-06-27 Michael Poole + + * include/client.h (struct Connection): Remove con_dns_reply (and + associated macros). + + * include/res.h (gethost_byname): Change calling signature to + clarify memory ownership. + (gethost_byaddr): Likewise. + + * include/s_bsd.h (release_dns_reply): Remove function. + + * ircd/hash.c: #include "match.h" to quash warning. + + * ircd/ircd_auth.c (struct IAuth): Remove i_query field. + (iauth_dns_callback): Adjust for new gethost_byname signature. + (iauth_reconnect): Likewise. + + * ircd/ircd_res.c (struct reslist): Make elements of query field + inline rather than in a contained structure. + (make_request): Reflect removal of DNSQuery. + (do_query_name): Likewise. + (do_query_number): Likewise. + (make_dnsreply): Remove now-unused function. + (timeout_resolver): Adjust to new callback signature. + (delete_resolver_queries): Reflect removal of DNSQuery. + (gethost_byname): Update to new signature. + (gethost_byaddr): Likewise. + (res_readreply): Reflect removal of DNSReply. + + * ircd/list.c (dealloc_connection): con_dns_reply no longer + exists, so do not free it. + + * ircd/s_auth.c (auth_verify_hostname): constify. + (auth_dns_callback): Adjust to new callback signature. + (start_auth): Adjust to new gethost_byaddr() signature. + + * ircd/s_bsd.c (connect_dns_callback): Adjust to new callback + signature. + (release_dns_reply): Remove unused function. + (connect_server): Adjust to new gethost_byname() signature. + + * ircd/s_conf.c (conf_dns_callback): Adjust to new callback + signature. + (conf_dns_lookup): Adjust to new gethost_byname() signature. + (attach_iline): Use cli_sockhost() instead of DNS reply. + (conf_check_server): Simplify use of DNS results. + + * ircd/s_serv.c (server_estab): Remove call to removed function. + + * ircd/s_user.c (register_user): Remove call to removed function. + +2005-06-27 Michael Poole + + * include/s_misc.h (get_sockhost): Remove the unused (and + deceptively named) get_sockhost(). + + * ircd/s_misc.c (get_sockhost): Likewise. + +2005-06-25 Andrew Miller + + * ircd/ircd_crypt.c (ircd_crypt): strdup is not allowed, change to + DupStr so memdebug works. + + * doc/debug_memleak_gc.patch : Update to gc6.5 + +2005-06-24 Andrew Miller + * ircd/m_invite.c (m_invite): Don't propagate invites to local channels. + +2005-06-21 Andrew Miller + + * ircd/m_list.c (param_parse): Add support for channel wildcards. + * ircd/m_list.c (show_usage): Document the new format. + * ircd/hash.c (list_next_channels): Check channel wildcard in list. + * include/channel.h (ListingArgs): Add the wildcard member. + +2005-06-19 Andrew Miller + + * ircd/ircd_res.c (proc_answer): Deal with unexpected record types more + gracefully. + + * ircd/ircd_res.c (res_readreply): Check res_ourserver before walking + the pending request list, to make DoS attacks harder. + + * ircd/m_invite.c (m_invite): Give no such channel rather than not on + channel when the channel being invited to does not exist. + +2005-06-18 Michael Poole + + * ircd/s_debug.c (count_memory): Consolidate several lines; make + initial letter capitalization consistent. + +2005-06-19 Andrew Miller + + * ircd/s_stats.c: Remove the "debug only" label on memusage stats, + since it no longer applies. + +2005-05-16 Michael Poole + + * include/channel.h (struct Ban): Make 'who' and 'banstr' direct + arrays, rather than pointers. + + * ircd/channel.c (bans_alloc): New variable to count number of ban + structures allocated. + (bans_inuse): New variable to count number of ban structures + currently in use. + (set_banmask): Adapt to changes in struct Ban. + (make_ban): Likewise, and update ban counts. + (free_ban): Likewise. + (bans_send_meminfo): New function. + (apply_ban): Adapt to changes in struct Ban. + (mode_parse_ban): Likewise. + (mode_process_bans): Likewise. + (mode_parse): Likewise. + (RevealDelayedJoin): Fix brace placement. + (CheckDelayedJoins): Fix brace placement and whitespace. + + * ircd/list.c (struct liststats): Add new fields to eliminate the + separate count variables. + (init_list): Adapt to those changes. + (alloc_client): Likewise. + (dealloc_client): Likewise. + (alloc_connection): Likewise. + (dealloc_connection): Likewise. + (make_server): Likewise. + (remove_client_from_list): Likewise. + (verify_client_list): Likewise. + (make_link): Likewise. + (free_link): Likewise. + (send_liststats): New function. + (send_listinfo): Rewrite to use new struct liststats layout. + + * ircd/m_burst.c (ms_burst): Adapt to changes in struct Ban. + + * ircd/m_clearmode.c (do_clearmode): Adapt to changes in struct + Ban. + + * ircd/s_stats.c (stats_meminfo): Define unconditionally and call + bans_send_meminfo(). + (statsinfo): Always give access to stats_meminfo. + +2005-06-16 Michael Poole + + * include/ircd_string.h: Include necessary header. + + * ircd/test/.cvsignore: Ignore log output files. + + * ircd/test/Makefile.in: Remove log output files. + + * ircd/test/kill-block-1.cmd: Add sleeps to try to trigger Kills. + + * ircd/test/run-tests.sh: Switch sense of argument. Send an IRC + debug dump to log files. + +2005-06-13 Michael Poole + + * ircd/s_user.c (make_user): Unconditionally increment userCount. + (free_user): Unconditionally decrement it here. + + * ircd/s_conf.c (make_conf): Unconditionally increment + GlobalConfCount. + (free_conf): Unconditionally decrement it here. + + * ircd/s_debug.c (count_memory): Fix termination condition for + ban-walking loop. Add missing "e" to "members". + + +2005-06-10 Michael Poole + + * ircd/match.c (check_if_ipmask): Strings that contain '?' cannot + be true IP masks. + +2005-05-30 Michael Poole + + * ircd/test/Makefile.in: Add LDFLAGS variable for profiling purposes. + + * ircd/test/ircd_match_t.c: Test recovery from backtracking. + + * ircd/test/channel-1.cmd: Modify to improve code coverage. + + * ircd/test/client-1.cmd: Likewise. + + * ircd/test/gline-1.cmd: Likewise. + + * ircd/test/ircd-t1.conf: Likewise. + + * ircd/test/stats-1.cmd: Likewise. + + * ircd/test/run-tests.sh: Explicitly start ircds. Add new test scripts. + + * ircd/test/test-driver.pl: Silently handle more signals from IRC. + + * ircd/test/commands-1.cmd: New test script. + + * ircd/test/feature-1.cmd: New test script. + + * ircd/test/jupe-1.cmd: New test script. + + * ircd/test/kill-block-1.cmd: New test script. + + * ircd/test/ircd-t1-2.conf: New configuration file for test scripts. + + * ircd/test/ircd-t2.conf: Likewise. + +2005-05-30 Michael Poole + + * ircd/s_debug.c (count_memory): Use count_listener_memory() to + report memory used by listener structures. + +2005-05-30 Michael Poole + + * include/class.h (get_con_freq): Remove unused function. + + * include/list.h (find_user_link): Remove unused function. + + * include/class.c (get_con_freq): Remove. + + * ircd/list.c (find_user_link): Remove. + + * include/string.h (string_is_hostname, string_is_address, + strnChattr): Remove unused functions. + (init_string): Remove function that becomes a noop. + + * ircd/string.h (init_string): Remove. + (string_is_hostname, string_is_address, strnChattr): Likewise. + + * ircd/ircd.c (main): Remove call to init_string(). + +2005-05-30 Michael Poole + + * include/numeric.h (RPL_TRACELOG, RPL_MYPORTIS, + RPL_NOTOPERANYMORE): Undefine unused numeric replies. + + * ircd/s_err.c (replyTable): Fix format fields for certain numeric + arguments. Remove some unused entries. + + * ircd/s_stats.c (stats_configured_links): Move invariant + parameters to message format string. + +2005-05-30 Michael Poole + + * ircd/client.c (privtab): Add missing LIST_CHAN privilege, move + WIDE_GLINE to reflect its enumerated value. + + * ircd/s_debug.c (count_memory): Use user_count_memory() function + to count User structs in-use. + + * ircd/m_server.c (mr_server): Change "C:line" to "Connect block". + + * ircd/s_bsd.c (connect_server): Likewise. + + * ircd/s_conf.c (conf_check_server): Likewise. + + * ircd/s_err.c (replyTable): Change "O-lines" to "Operator block". + +2005-05-30 Michael Poole + + * ircd/match.c (match): Rewrite to handle globs that end in an + escaped wildcard (and hopefully clarify the code). + + * ircd/test/Makefile.in: Add new ircd_match_t test program. + + * ircd/test/ircd_match_t.c: New file. + + * ircd/test/test_stub.c: Emite newlines after log and debug + messages. + +2005-05-25 Reed Loden + + * ircd/s_err.c (replyTable): Allow for the specification of 'O' or + 'o' in RPL_STATSOLINE. + + * ircd/s_stats.c (stats_configured_links): In /stats o/O, display + 'O' if either the oper block or the connection class has + PRIV_PROPAGATE (global oper) and 'o' if neither has PRIV_PROPAGATE + (local oper). + +2005-05-30 Michael Poole + + * ircd/IPcheck.c: Add Debug()s to try to track why the connected + count underflows. + + * ircd/m_endburst.c (ms_endofburst): Avoid dereferencing 'chan' + after it may be freed (in sub1_from_channel). + + * ircd/s_user.c (register_user): Rearrange code to reduce number + of "if (MyConnect(sptr))" checks. + +2005-05-12 Michael Poole + + * configure.in: Do not try to outsmart the default CFLAGS. + Simply add parameters explicitly requested by the user. + + * configure: Regenerate. + + * ircd/ircd_crypt_native.c: Use _XOPEN_SOURCE 600 (which is + used in os_generic.c) to get crypt() on NetBSD. + +2005-05-11 Kevin L. Mitchell + + * ircd/ircd.c: if debugging is enabled (both DEBUGMODE defined and + -x given), reserve fd 2 for the use of the debugging log; + otherwise, some engines may attempt to use fd 2, which would end + up getting closed by debug_init() (actually, by + log_debug_reopen(), called by log_debug_init(), called by + debug_init()) + +2005-08-10 Michael Poole + + * ircd/channel.c (joinbuf_join): Do not send a MODE +o when a + local user creates a channel. + + * ircd/umkpasswd.c (crypt_pass): Allocate the proper amount of + memory for the tagged output string. + + * ircd/test/test-driver.pl: Add -vhost=... option. + + * ircd/test/ircd-t1.conf: Add new Operator blocks. + + * ircd/test/*.cmd: Rearrange and add more coverage tests. + +2005-08-09 Michael Poole + + * ircd/ircd_parser.y: Move error tokens to top level of parse, and + make ';' a synchronizing token for them. This avoids crashes in + situations like missing ';' between two Kill blocks. Move several + ';'s earlier for earlier detection of syntax errors. + + * ircd/motd.c (motd_memory_count): Use size_t for memory counts to + match the format strings used for those variables. + + * ircd/msgq.c (msgq_histogram): tmp.sizes[] is an array of + unsigned int, not unsigned long; use correct format string. + + * ircd/s_stats.c (stats_crule_list): Restore display of 'D' vs 'd' + based on crule type, rather than query type. + (statsinfo): Remove STAT_FLAG_VARPARAM from the "modules" and + "help" stats, which don't use the varparam. + + * ircd/test/test-driver.pl: Interpreter for test scripts.b + + * ircd/test/ircd-t1.conf: Configuration file for test scripts. + + * ircd/test/*.cmd: New test scripts for test-driver.pl. + +2005-05-08 Jukka Ollila + (Adapted slightly by Michael Poole.) + + * ircd/os_generic.c (sockaddr_to_irc): Change to use v4compat + addresses event when !defined(IPV6). + +2005-05-07 Michael Poole + + * ircd/channel.c (joinbuf_join): Be smarter about what source to + use when opping a user that joins a channel. + +2005-05-04 Reed Loden + + * ircd/m_trace.c (do_trace): Show the real nickname instead of the + numnick. + +2005-05-02 Jan Krueger + + * ircd/channel.c (member_can_send_to_channel): if the channel can only + be joined by users with accounts (+r), do not allow users without + accounts to speak. + +2005-05-07 Michael Poole + + * ircd/numnicks.c (base64toip): Fix bugs in parsing IPv6 + addresses. + * ircd/test/ircd_in_addr_t.c (test_addrs): Add new entry. + (test_address): Test base64toip() as well. + +2005-05-05 Michael Poole + + * ircd/s_user.c (umode_str): Only clear the operator flag when not + propagating; never set it. + +2005-05-04 Michael Poole + + * ircd/channel.c (joinbuf_join): Include channel manager flag in + determination of oplevel. If opping the user for a non-local + non-create, include oplevel in message to other servers. Send + "MODE +o " to local users whenever opping the client. + + * ircd/m_join.c (m_join): Remove logic that moved into + joinbuf_join(). + (ms_join): Look for level 0 and 1 joins from remote servers + and adjust value of 'flags' appropriately. + +2005-05-04 Michael Poole + + * include/numeric.h: Remap oplevel numerics to new range. + + * ircd/s_err.c: Likewise. + +2005-05-03 Michael Poole + + * ircd/s_stats.c (stats_access): Update to use new CONF_CLIENT + fields, fixing crash found by nighty. + +2005-05-02 Michael Poole + + * include/numeric.h (ERR_UPASS_SAME_APASS): New error message when + trying to set +U pass to the same as the +A pass. + + * ircd/channel.c (mode_parse_upass): Use it. + + * ircd/ircd_auth.c (iauth_exit_client): Only send ExitUser if + there is an active IAuth connection, fixing PR#1193808. + (iauth_dispose_request): Only delete the timer if it is active. + + * ircd/m_invite.c (m_invite): Always forward the invite in the + correct direction, and then skip it as 'one' if announcing. + (ms_invite): Likewise. + + * ircd/numnicks.c (base64toip): Do not interpret AAAAAA as + ::ffff:0.0.0.0; keep it as ::. + + * ircd/s_err.c (replyTable): Add ERR_UPASS_SAME_APASS. + +2005-05-01 Michael Poole + + * doc/readme.log: Document IAUTH log target, remove docs for + OLDLOG log target. + + * include/ircd_log.h: Add LS_IAUTH target, remove LS_OLDLOG. + + * ircd/ircd_log.c (logDesc): Likewise. + + * ircd/engine_epoll.c (engine_loop): Handle EPOLLHUP for all + sockets (e.g. when connecting) and do not generate read/write + events in the same pass as error or EOF events. + + * ircd/ircd_auth.c: Convert old sendto and debug messages to use + the LS_IAUTH log target. Consistently use IAUTH_CONNECTED flag + instead of comparing fd to -1. + (iauth_reconnect): If already connected, disconnect and schedule a + reconnect later, since an immediate reconnect can cause assertion + failure in the event engine. Also schedule a reconnect when the + connection attempt fails. + (iauth_read): Reconnect on IO_FAILURE. + (iauth_sock_callback): Disconnect and schedule a reconnect on both + error (after reporting the error) and EOF. + (iauth_start_client): Record the IAuth request in the client. + (iauth_exit_client): Report the client exit. + + * ircd/s_misc.c (exit_one_client): Fix formatting. + +2005-04-30 Michael Poole + + * ircd/ircd_auth.c (iauth_connect): Initialize (but do not add) + timer here and set fd to -1. + (iauth_schedule_reconnect): Rewrite to handle previously + initialized timer. + (iauth_reconnect): If server is connected, disconnect first. + Update socket generator fd before calling socket_add(). + (iauth_read): When reading 0 bytes (EOF), reconnect. + +2005-04-27 Michael Poole + + * ircd/ircd_parser.y: Report non-existent class names as errors + earlier, and do not fall back to "default" for Client blocks. + +2005-04-25 Reed Loden + + * ircd/ircd_lexer.l: Add missing header to squash a warning. + +2005-04-25 Michael Poole + + * ircd/s_user.c (register_user): Replace call with set_user_mode() + with a direct parsing of user modes. To match this, revert the + initial display of usermode to how it was done before. + +2005-04-24 Michael Poole + + * doc/example.conf: Document new autoconnect field of Connect. + + * include/s_conf.h: Add CONF_AUTOCONNECT and field for it. + + * ircd/ircd.c (try_connections): Skip non-autoconnect servers. + + * ircd/ircd_lexer.l: Recognize autoconnect token. + + * ircd/ircd_parser.y: Add autoconnect= option to Connect block. + + * ircd/m_invite.c (m_invite): Avoid sending channel timestamp to + user being invited. + (ms_invite): Likewise. + + * ircd/s_user.c (register_user): Show class name rather than + pointer-as-integer. + +2005-04-24 Michael Poole + + * ircd/ircd_parser.y: Rewrite so each error condition gets its own + error message, and so that invalid parameters are printed out. + +2005-04-23 Michael Poole + + * ircd/channel.c (apply_ban): Consistently free newban->banstr + when the function fails. + (mode_process_bans): Free banstr for all BAN_DEL bans. + + * ircd/ircd_parser.y: Fix a few memory leaks from previous commit. + +2005-04-23 Michael Poole + + * include/patchlevel.h: Bump to being a beta. + + * ircd/ircd_lexer.l (QSTRING): Return a copy of the string so that + parser actions don't have to be immediately after a QSTRING. + + * ircd/ircd_parser.y (FNAME): Remove unused token. + (QSTRING): Adjust for QSTRING being an already-copied version. + +2005-04-23 Michael Poole + + * doc/example.conf (UWorld): Illustrate new config extension. + + * ircd/ircd_parser.y (uworldblock): Do the expected thing when + multiple name= entries are present. + +2005-04-22 Michael Poole + + * RELEASE.NOTES: Silence exceptions use ~, not -. Oops! + + * doc/example.conf: Fix typo in example Kill block. + + * ircd/channel.c (mode_parse_ban): Use correct test for flag_p. + + * ircd/m_silence.c (apply_silence): Make mask pretty so that later + processing does not convert * to @ (and match no one). + +2005-04-21 Kevin L. Mitchell + + * ircd/m_userip.c (userip_formatter): /userip should *never* + report the user's real IP unless its answering the user + him/herself + + * ircd/m_userhost.c (userhost_formatter): /userhost should *never* + report the user's real host unless its answering the user + him/herself + +2005-04-20 Michael Poole + + * ircd/ircd.c (parse_command_line): Update usage text. + + * ircd/numnicks.c (base64toip): Use v4mapped address range instead + of v4compat address range, fixing IPv4-based /who. + +2005-04-19 Michael Poole + + * configure.in: When --enable-profile, add -pg to LDFLAGS. + + * configure: Regenerate. + +2005-04-19 Michael Poole + + * ircd/match.c (check_if_ipmask): Fix brown-paper-bag typo. + + * ircd/s_conf.c (conf_debug_iline): Look for matching Kill blocks + once a matching Client block is found. + + * ircd/m_whowas.c (m_whowas): Change strcmp() to ircd_strcmp(). + +2005-04-18 Michael Poole + + * ircd/match.c (check_if_ipmask): Do not interpret masks that + start with . or / as IP-based host masks. + +2005-04-17 Michael Poole + + * ircd/channel.c (mode_process_clients): Only prohibit deops of + users with the same or higher oplevel where apass is set. + Likewise, when opping users, give them MAXOPLEVEL for non-apass + channels. + (joinbuf_join): Give new ops MAXOPLEVEL for non-apass channels. + + * ircd/m_kick.c (m_kick): Only prohibit kicks of users with the + same or higher oplevel where apass is set. + + * ircd/s_user.c (register_user): Fix order of server version vs + various mode strings. + + * tools/linesync/linesync.sh: Add revision id field. + +2005-04-17 Michael Poole + + * tools/linesync/linesync.sh: Fix typo comment. Check for + multiple blocks per line in the linesync input. + +2005-04-17 Dan + + * tools/linesync/linesync.sh: Update to support new syntax and to + avoid rehashing the ircd when the config is the same. + + * tools/linesync/linesync.conf: Update allowed conf items. + +2005-04-16 Michael Poole + + * doc/example.conf (Kill): Document newly supported syntax. + + * include/s_conf.h (DenyConf): Split realname mask into its own + field. Remove the unused DENY_FLAGS_{IP,REALNAME}. + + * ircd/ircd_parser.y (Kill): Only require one of usermask, + hostmask, realmask to be set for a valid block. + (killitem): Add new production killusername. + + * ircd/s_conf.c (conf_erase_deny_list): Free realmask field. + (find_kill): Rearrange slightly to clarify control flow. + + * ircd/s_err.c (RPL_STATSKLINE): Stick usermask before hostmask, + so the old usermask field can be adopted for realname mask. Add + double quotes around the realmask field. + + * ircd/s_stats.c (report_deny_list): Do so. + (stats_klines): Likewise. + +2005-04-17 Perry Lorier + + * tools/convert-conf.py: Fix lots of conversion problems with + oper privielges (now they are converted), + features (deprecated features commented out, most converted to + priviliges), + realname klines (also add host= lines) + quarintines (generate blocks for them), + connect blocks (don't generate empty port config lines) + etc... + +2005-04-16 Michael Poole + + * ircd/gline.c (do_gline): Fix typo when activating IP-based + G-lines. + +2005-04-16 Michael Poole + + * ircd/class.c (free_class): Free default_umode field. + + * ircd/ircd_parser.y (classblock): Free default_umode field before + overwriting it. + + * ircd/s_conf.c (free_conf): Free username, origin_name, hub_limit + fields. + (find_kill): Realname Kill blocks no longer have $R at the start, + so do not skip over the first two characters of the mask. + +2005-04-15 Michael Poole + + * doc/example.conf (Operator): Properly qualify plaintext password. + (Quarantine): Document (new) syntax. + + * ircd/ircd.c: Add to make compile + correctly on BSDs. + + * ircd/ircd_parser.y (qconf): Remove global variable. + (killuhost): Null terminate username when present. + (quarantineblock): Replace with a syntax that works. + + * ircd/s_stats.c: #include for UserStats. + (stats_server_verbose): Reinstate check for UserStats. + +2005-04-09 Kevin L. Mitchell + + * ircd/ircd.c: conditionally include sys/resource.h; otherwise, + RLIMIT_CORE will not be defined and so set_core_limit() will never + be defined, much less run. + + * configure.in: add sys/resource.h to the list of headers to + search for + + * configure: regenerate configure + + * config.h.in: rerun autoheader to add HAVE_SYS_RESOURCE_H to + config.h.in + +2005-04-08 Michael Poole + + * include/s_conf.h (conf_debug_iline): Declare new function. + + * ircd/ircd.c (dbg_client): New file-scoped variable. + (parse_command_line): Set it from the new -c option. + (main): If dbg_client is set during chkconf, use it. + + * ircd/ircd_string.c (ircd_aton): Generate IPv4-mapped addresses, + not IPv4-compatible addresses, to match ipmask_parse(). + + * ircd/m_whowas.c (m_whowas): Split display of real host to a + separate line, in hopes of not confusing opers in the future. + + * ircd/s_conf.c (conf_debug_iline): Implement new function. + +2005-04-06 Michael Poole + + * ircd/m_burst.c (ms_burst): Clear channel manager bit when wiping + out locally opped and voiced channel members. + +2005-04-06 Michael Poole + + * include/numeric.h (RPL_APASSWARN): Replace with three distinct + values. + (ERR_NOMANAGER_LONG): Assign new numeric. + (ERR_NOMANAGER_SHORT): Assign new numeric. + + * ircd/channel.c (parse_mode_upass): Adapt to new formats for + ERR_NOTMANAGER separation. + (parse_mode_apass): Likewise. Also adapt to RPL_APASSWARN split. + + * ircd/s_err.c (RPL_APASSWARN): Replace with three message + strings, to avoid embedding long message strings in the logic + implementation. + (ERR_NOTMANAGER): Likewise (but not the same strings). + +2005-04-06 Michael Poole + + * ircd/ircd_parser.y (clientblock): Use the password field. + + * ircd/s_user.c (register_user): Allow aconf->password to be a + single digit, since per-IP limit is now in a separate field. + +2005-04-06 Michael Poole + + * acinclude.m4 (unet_PIPE_CFLAGS): Remove; -pipe is obsolete in + current gcc releases and is slower than files for previous + releases on most OSes. + + * configure.in (AC_PREREQ): Bump to 2.59 because of AS_HELP_STRING. + (unet_PIPE_CFLAGS): Remove use of macro. + + * aclocal.m4: Regenerate. + + * configure: Likewise. + +2005-04-04 Michael Poole + + * configure.in: For developers' ease, allow passing an option to + configure to persistently set optimization CFLAGS. + + * configure: Regenerate. + +2005-04-04 Michael Poole + + * doc/example.conf (Jupe): Make the default Jupe block follow + CFV-0255. (Thanks to FrankP for pointing me at this and to DinTn + for getting me a copy of the CFV.) + +2005-04-04 Michael Poole + + * include/capab.h (CAPFL_STICKY): Define. + (CAPLIST): Remove the entries used for testing. + + * include/client.h (Connection): Clarify comment about the + distinction between con_capab and con_active. + + * ircd/m_cap.c: Add doxygen comments and replace the long + discussion of m_handler functions with an xref to it. + (send_caplist): Add new parameters and change the terminal vs + non-terminal line distinction to make compliant with current draft + specification. + (cap_empty): Rename to cap_ls(). + (cap_req): Track modified capabilities bitwise, so that the + responding ACK contains all the appropriate flags. + (cap_ack): Add comment explaining why there is no response. + (cap_clear): Build and send a list of cleared capabilities, as + required by the current draft. + (cap_list): Send capability list using LIST subcommand. + (cmdlist): Add handler for LS subcommand. Remove entries for the + empty and LSL subcommands, which are no longer allowed. + (m_cap): Require at least one argument from user. + +2005-04-01 Michael Poole + + * include/s_conf.h (SMAP_FAST): Define. + (s_map): Add 'flags' field. + + * ircd/ircd_lexer.l: Recognize 'FAST' token. + + * ircd/ircd_parser.y (FAST): New token. + (pseudoitem): Add pseudoflags alternative. + (pseudoflags): New production, recognizing FAST token. + + * ircd/parse.c (register_mapping): Set MFLG_SLOW conditionally. + Remove outdated comment. + +2005-04-01 Michael Poole + + * include/handlers.h (ms_privs): Declare. + + * include/msg.h (TOK_PRIVS): Assign token. + (CMD_PRIVS): Define. + + * ircd/m_privs.c: Add doxygen comments and replace the long + discussion of m_handler functions with an xref to it. + (mo_privs): Forward requests for non-local users + to their own server. + (ms_privs): Implement. + + * ircd/parse.c (PRIVS): Dispatch to ms_privs when a server sends + the message. + +2005-03-30 Michael Poole + + * include/client.h (struct Client): Explain where cli_username + comes from. + + * include/struct.h (struct User): Explain where this username + comes from, too + + * ircd/ircd_res.c (timeout_resolver): Update parameter name in + Doxygen comment, too. + + * ircd/s_misc.c (get_client_name): Reorganize to have less + indentation and behave like 2.10.11 when client is not idented. + +2005-03-29 Michael Poole + + * doc/example.conf: Remove no-longer-used HIS_STATS_h. + + * doc/readme.features: Likewise. + + * include/ircd_features.h: Likewise. + + * ircd/ircd_features.c: Likewise. + +2005-03-20 Reed Loden + + * include/ircd_features.h: Alphabetize HIS_STATS_? features. + + * ircd/ircd_features.c: Likewise. + +2005-03-29 Michael Poole + (The previously unapplied part of another patch (by Carlo Wood?).) + + * ircd/m_part.c (ms_part): Remove a check that should already be + done by the user's own server. + +2005-03-29 Michael Poole + + * doc/example.conf: Add HIS_STATS_J entry. + + * doc/readme.features: Likewise. + +2005-03-25 Reed Loden + + * include/hash.h: Add needed prototypes for new + stats_nickjupes() function. + + * include/ircd_features.h: Add FEAT_HIS_STATS_J. + + * include/numeric.h: Add RPL_STATSJLINE (222) for new nick + jupes stats. Correct a typo in a comment. + + * ircd/hash.c: Add stats_nickjupes() function to report all + nick jupes to an oper. Because of the nature of hash tables, + there is no way to sort this list so the results look weird. + + * ircd/ircd_features.c: Add FEAT_HIS_STATS_J (default: TRUE). + + * ircd/s_err.c: Add RPL_STATSJLINE (222) for new nick jupes + stats. + + * ircd/s_stats.c: Add RPL_STATSJLINE (222) for new nick jupes + stats. Make 'j' case sensitive. Modify the comment for stats + uworld. + +2005-03-27 Michael Poole + + * ircd/m_burst.c (ms_burst): Do not send numeric oplevels in a -A + channel when forwarding a channel burst line. + +2005-03-25 Michael Poole + + * ircd/m_server.c (set_server_flags): New function. Unlike the + old code, this recognizes the IPv6 flag. (Spotted by Reed.) + (mr_server): Use the new function. + (ms_server): Likewise. Also don't show "Net junction:" message if + any closer server is still bursting (also spotted by Reed). + Finally, forward the +6 flag to other servers. + + * ircd/s_serv.c (server_estab): Forward the +6 flag here, too. + + * ircd/s_bsd.c (client_sock_callback): Re-set cli_error() after it + may be cleared by completed_connection(). + +2005-03-23 Michael Poole + + * ircd/m_burst.c (ms_burst): Remove limit and keys when a channel + is wiped out during burst. + +2005-03-22 Michael Poole + + * ircd/ircd_res.c (check_resolver_timeout): I give up. Use the + kludgy earlier version of the timeout fix. + +2005-03-22 Michael Poole + + * ircd/channel.c (send_channel_modes): Fix test for when to send + membership mode suffix, to avoid sending it more than once. + +2005-03-22 Michael Poole + (Many thanks to nex and Reed for helping hunt this down and + doing the testing of various patches.) + + * ircd/ircd_events.c (timer_chg): Properly change a timer that is + in the middle of executing its expiration event. + + * ircd/ircd_res.c (check_resolver_timeout): Simplify the test for + whether to use timer_chg() or timer_add(). + On second thought, use timer_add() unconditionally; the server + connection loop does. + (timeout_resolver): Do not try to re-schedule the DNS timeout + unless it is the expiration event. + (do_query_number): Properly initialize request->state. + (res_readreply): Mention the response code that was bad. + +2005-03-22 Michael Poole + + * ircd/engine_kqueue.c (engine_delete): The kernel removes + close()'d FDs from the activity list, so don't try to remove the + FD here (the caller may have already close()'d it). + +2005-03-20 Michael Poole + + * ircd/IPcheck.c: Fix typos in comments and strings to reduce + future slumming for credit. + + * ircd/channel.c, ircd/crule.c, ircd/engine_epoll.c: Likewise. + * ircd/fileio.c, ircd/hash.c, ircd/ircd.c: Likewise. + * ircd/ircd_auth.c, ircd/ircd_crypt.c: Likewise. + * ircd/ircd_crypt_native.c, ircd/ircd_crypt_smd5.c: Likewise. + * ircd/ircd_features.c, ircd/ircd_log.c: Likewise. + * ircd/ircd_parser.y, ircd/ircd_res.c: Likewise. + * ircd/ircd_reslib.c, ircd/ircd_string.c, ircd/list.c: Likewise. + * ircd/m_burst.c, ircd/m_clearmode.c, ircd/m_destruct.c: Likewise. + * ircd/m_invite.c, ircd/m_ison.c, ircd/m_kill.c: Likewise. + * ircd/m_server.c, ircd/m_squit.c, ircd/m_topic.c: Likewise. + * ircd/m_who.c, ircd/m_whois.c, ircd/m_whowas.c: Likewise. + * ircd/match.c, ircd/msgq.c, ircd/numnicks.c: Likewise. + * ircd/os_generic.c, ircd/parse.c, ircd/s_auth.c: Likewise. + * ircd/s_bsd.c, ircd/s_conf.c, ircd/s_debug.c: Likewise. + * ircd/s_misc.c, ircd/s_numeric.c, ircd/s_serv.c: Likewise. + * ircd/s_stats.c, ircd/s_user.c, ircd/table_gen.c: Likewise. + * ircd/umkpasswd.c, ircd/uping.c, ircd/whowas.c: Likewise. + + * ircd/test/test_stub.c: Make exit_client() argument list + consistent with that in s_misc.c so doxygen is not confused. + +2005-03-20 Michael Poole + (Thanks to Reed Loden for pointing these out.) + + * ircd/channel.c: Fix typos in comments. + + * ircd/m_create.c: Likewise. + + * ircd/m_list.c: Likewise. + + * ircd/m_names.c: Likewise. + + * ircd/numnicks.c: Likewise. + + * ircd/s_bsd.c: Likewise. + +2005-03-20 Michael Poole + (Thanks to Reed Loden for pointing these out.) + + * doc/Configure.help: Remove outdated file. + + * doc/exaconf.2: Likewise. + + * doc/snomask.html: Add missing , SNO_AUTO, SNO_DEBUG, and + update SNO_OPERDEFAULT list. + + * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd + instead). + + * tools/Makefile.crypt: Remove outdated file. + + * tools/mkpasswd.c: Likewise. + + * tools/transition: Likewise. + +2005-03-19 Michael Poole + + * ircd/channel.c (sub1_from_channel): Check apass rather than mode + to determine whether an apass is set (MODE_KEY/APASS/UPASS are not + set in mode.mode). + (send_channel_modes): Use the same change when determining how to + send oplevels for channels. + +2005-03-19 Michael Poole + + * include/IPcheck.h (IPcheck_connect_fail): Take a Client + parameter instead of irc_in_addr. + + * ircd/IPcheck.c (IPcheck_connect_fail): Likewise. Assert that + the client has been IP-checked. + (IPcheck_remote_connect): Assert that the client has not yet been + charged for connecting. + (IPcheck_connect_succeeded): Assert that the client has been + charged for connecting. + (IPcheck_disconnect): Likewise. + + * ircd/m_nick.c (m_nick): Pass rejected client to + IPcheck_connect_fail() when somebody takes the nick first. + (ms_nick): Likewise. + + * ircd/s_serv.c (server_estab): Pass new server to + IPcheck_connect_fail(). + + * ircd/s_user.c (register_user): When rejecting a user, pass + the struct Client to IPcheck_connect_fail(). + +2005-03-19 Michael Poole + + * doc/example.conf (Connect): Remove a buggy comment about leaf + directives; refer the reader to the Connect block instead. + + * tools/convert-conf.py: Set "leaf;" rather than "leaf = yes;" + +2005-03-19 Michael Poole + + * doc/example.conf (Operator): Correct the comment explaining + hashed passwords. + + * ircd/m_oper.c (oper_password_match): Check correct variable to + determine whether the hashed password matched. + +2005-03-08 Michael Poole + + * ircd/match.c (ipmask_parse): Explicitly zero-initialize the mask + and bit count for "*". + (ipmask_check): Make more robust to similar errors. + +2005-03-07 Michael Poole + + * configure.in: Consistently use a constant in AC_DEFINE(). + + * configure: Regenerate. + + * doc/example.conf (Port): Add comment about the mask option. + (Port): Fix the vhosted Port example. + + * ircd/ircd_parser.y (clientblock): Correctly initialize the IP + address and addrbits for a Client block with no IP mask. + + * ircd/match.c (ipmask_parse): Accept * as a zero-bit mask. + + * ircd/s_auth.c (start_auth_query): Count socket allocation + failure as a failed auth check, as .11 does. + + * ircd/s_debug.c (debug_serveropts): Add '6' to server options + when compiled with IPv6 support. + +2005-02-23 Michael Poole + + * doc/example.conf: Explain apass_opmode privilege, pointing out + that, unlike previous privs, the default is OFF for global opers. + + * include/client.h (PRIV_APASS_OPMODE): Define new privilege. + + * ircd/channel.c (mode_parse_upass): Only prevent local opers + without the apass_opmode privilege from forcing a +U change. + (mode_parse_apass): Likewise, for +A. + + * ircd/client.c (client_set_privs): Turn off PRIV_APASS_OPMODE in + the default privileges for global opers. + + * ircd/ircd_lexer.l (apass_opmode): Recognize keyword. + + * ircd/ircd_parser.y (TPRIV_APASS_OPMODE): New token. + (privtype): Fix typo for local_badchan privilege value. + Accept apass_opmode token. + +2005-02-23 Michael Poole + + * doc/example.conf: Fix comment's description of "whox" privilege. + +2005-02-21 Michael Poole + + * include/channel.h (ShowChannel): Remove PRIV_LIST_CHAN check + from here, so /whois does not show secret global channels. + + * ircd/m_list.c (param_parse): Require PRIV_LIST_CHAN to use + "/list s". + (m_list): Allow opers with PRIV_LIST_CHAN to see secret channels. + +2005-02-21 Perry Lorier + + * ircd/s_stats.c: Hide the hub IP's. They're kinda important. + +2005-02-20 Perry Lorier + + * ircd/ircd_parser.y: Moved some parse errors from log_write()'s to + parse_error()'s so that ./ircd -k will display them. Also clarified + the warning about oper blocks. + +2005-02-20 Perry Lorier + + * tools/convert-conf.py: A multitude of changes to deal with parsing + mistakes, generate a newer config file, better error handling, + being smarter about what config elements you generate etc. + +2005-02-20 Perry Lorier + + * ircd/engine_epoll.c: Change a size_t to socklen_t to match + getsockopt prototype, so it compiles without warning on amd64 + +2005-02-19 Michael Poole + + * ircd/ircd_parser.y (clientblock): Parse IP address before + allocating ConfItem; if the parse fails, generate an error. + + * ircd/s_err.c (RPL_STATSCLINE): Add format field to prefix IPv6 + addresses starting with ':'. + (RPL_STATSILINE): Likewise. + (RPL_STATSOLINE): Add format field for username. + + * ircd/s_stats.c (stats_configured_links): Pass the appropriate + argument for the RPL_STATSxLINE changes. + Change RPL_STATSILINE to use * instead of when IP or host + is null. + +2005-02-18 Michael Poole + + * ircd/IPcheck.c (ip_registry_find): Use canonical form of IP + address to look up and compare against hash entries. + + * ircd/channel.c (apply_ban): Do not free a succesful BAN_DEL ban. + + * ircd/ircd_parser.y (clientblock): Stash IP string in aconf->name. + (clienthost): Split hosts that contain '@' into username and host. + (clientip): Split IPs that contain '@' into username and IP. + (killreason): Add missing ~ to mask off DENY_FLAGS_FILE. + + * ircd/m_silence.c (forward_silences): When we reject a silence, + splice it out of the ban list. Warn the user if he is local. + + * ircd/s_bsd.c (connect_inet): Set IP TOS for outbound server + connections. + + * ircd/s_stats.c (stats_configured_links): Display correct field + when listing CONF_UWORLD entries. + +2005-02-09 Michael Poole + + * configure.in (YACC): Only warn if we cannot get a version number + from $YACC. + + * configure: Regenerate. + + * ircd/ircd_res.c (check_resolver_timeout): Try another way to + avoid timer_chg() on a non-queued/active timer. + + * ircd/ircd_string.c (ircd_aton): Set part_start to handle input + strings like "::127.0.0.1". + + * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that. + +2005-02-02 Michael Poole + + * Makefile.in (install): Do not create ${prefix}/include since it + is no longer used. + + * ircd/Makefile.in (install-*): Remove commented-out code to touch + and chown MPATH and RPATH. + + * ircd/gline.c (gline_find): Allow searching for host-based + G-lines by plain hostname (not *@host), thus preventing "GLINE + test ..." from inserting duplicate G-lines. + + * ircd/motd.c (motd_create): Null out new Motd's hostmask when + appropriate, avoiding an uninitialized or stale pointer. + +2005-01-26 Michael Poole + + * include/ircd_alloc.h (DoMallocZero): Parenthesize macro + arguments, fixing operator precedence problems. + (DoFree): Make debug version also overwrite p. + + * include/memdebug.h (fda_get_byte_count, fda_get_block_count): + Declare functions used outside memdebug.c. + + * ircd/Makefile.in (UMKPASSWD_SRC): Add memdebug.c. + + * ircd/ircd_alloc.c (DoMalloc, DoMallocZero, DoRealloc): Do not + use these if using the memdebug version. + + * ircd/memdebug.c: #include "send.h" and to get + declarations for certain functions. + + * ircd/umkpasswd.c (CurrentTime): Define in case of memdebug. + (sendto_opmask_butone): Likewise. + +2005-01-25 Michael Poole + + * configure.in: Fix typos and thinkos in previous commut. + + * configure: Regenerate. + + * doc/example.conf: Change class name in Connect block to be + consistent with earlier Class block. + + * ircd/ircd.c (try_connections): Consider Connect blocks with hold + time of 0. Fix Links() vs MaxLinks() comparison to reflect ref + count starting at 1. + + * ircd/ircd_parser.y (cruleblock, iauthblock): Clear unused + variables after use. + +2005-01-24 Michael Poole + + * configure.in: Make sure that $LEX and $YACC are reasonable and + actually run. + + * configure: Regenerate. + + * ircd/ircd_res.c (check_resolver_timeout): Use correct macro to + test whether the timer is already pending. + +2005-01-23 Michael Poole + + * doc/example.conf (Kill): Fix typo in realname Kill block + + * include/client.h (infousermodes): Fix typo in comment. + + * ircd/ircd.c (parse_command_line): -k implies BOOT_TTY. + (main): Move daemon_init() before event_init() to work around BSD + lameness. + +2005-01-23 Michael Poole + + * ircd/test/Makefile.in: Add missing "install" target. Make + compatible with BSD make (which has no $^ and no $(CPPFLAGS) in + its default .c.o rule). + +2005-01-21 Michael Poole + + * ircd/engine_kqueue.c: Move earlier to fix build on + FreeBSD 5.x (which needs it for ). + + * ircd/fileio.c (fbopen): Replace BSDism S_IREAD, S_IWRITE with + portable equivalents. + + * ircd/ircd_log.c (log_open): Likewise. + + * ircd/os_generic.c (_XOPEN_SOURCE): Increase to 600 (SuSv3?) so + that IPv6 definitions become visible on FreeBSD 5.3. + + * ircd/s_auth.c: Remove apparently unused because + it fails to compile on FreeBSD 5.3. + +2005-01-22 Perry Lorier + + * ircd/ircd_parser.y: Fix missing ; + +2005-01-19 Michael Poole + + * ircd/m_invite.c (m_invite, ms_invite): Include timestamp in + outbound INVITE messages. On incoming INVITEs, ignore if the + timestamp is too recent or if the timestamp is missing and the + peer server is in burst. + +2005-01-15 Michael Poole + + * RELEASE.NOTES: Mention CIDR support for Client, Operator, bans + and silences. Mention net.rider kick change. + + * doc/example.conf (Class): Add documentation for restart and + local_opmode privileges. Fix name of local_jupe privilege. + + * ircd/ircd_lexer.l: Recognize local_opmode privilege. + +2005-01-14 Michael Poole + + * RELEASE.NOTES: Further updates (mention Pseudo blocks, clarify + CAP comment, mention named /stats, list config heteromorphisms. + + * doc/readme.features: Document HIS_STATS_a, HIS_STATS_L, + HIS_STATS_R, LOCAL_CHANNELS, TOPIC_BURST. + + * ircd/channel.c (mode_parse_apass): Change old mention of +u mode + to say +U. + +2005-01-13 Michael Poole + + * RELEASE.NOTES: Update for 2.10.12. + +2005-01-08 Michael Poole + + * ircd/channel.c (@page zombie): Add synopsis to explain what + zombies are supposed to do. + + * doc/example.conf (Features): Transfer recommended LOG features + from 2.10.11 example.conf. + +2005-01-03 Michael Poole + + * ircd/ircd.c (try_connections): Test Connect hold time before + updating it (spotted by Kev). + +2005-01-03 Michael Poole + + * Makefile.in: Add ircd/test as a subdirectory. + + * ircd/.cvsignore: Ignore umkpasswd binary. + + * ircd/Makefile.in: Update dependencies. + + * ircd/test/.cvsignore: New file. + + * ircd/test/Makefile.in: Use ${} instead of $(). Add build, + depend, distclean targets to integrate with rest of build system. + +2005-01-03 Michael Poole + + * ircd/IPcheck.c (ip_registry_check_remote): Do not count clones + that have an invalid IP address. + + * ircd/ircd.c (try_connections): Update Connect hold time before + skipping it, to prevent infinite loops. + +2005-01-03 Kevin L Mitchell + + * ircd/s_user.c (is_silenced): is_silenced() would core if sptr + was a server; fixed to skip servers + +2004-12-28 Michael Poole + + * include/s_bsd.h (VirtualHost): Replace with separate variables + for IPv4 and IPv6 virtual hosts. + + * include/uping.h (uping_echo): Remove declaration. + + * ircd/ircd_auth.c (iauth_reconnect): Select VirtualHost_v4 or + VirtualHost_v6 based on iauth server address family. + + * ircd/ircd_lexer.l: Do not recognize RESOLVER token. + + * ircd/ircd_parser.y (ResolverAddr): Remove declaration. + (RESOLVER): Remove definition. + (generalresolver): Remove. + (generalvhost): Assign address to either VirtualHost_v4 or + VirtualHost_v6, depending on format. + + * ircd/ircd_res.c (res_socket): Replace with separate variables + for IPv4 and IPv6 resolver sockets. + (ResolverAddr): Remove definition. + (restart_resolver): Attempt to set up both IPv4 and IPv6 sockets. + (send_res_msg): Select outbound FD based on resolver address type. + (res_readreply): Recognize either inbound socket FD. + + * ircd/os_generic.c (sockaddr_from_irc): Require irc != NULL. + (os_socket): Require local != NULL. + + * ircd/s_bsd.c (VirtualHost): Replace with separate variables + for IPv4 and IPv6 virtual hosts. + (connect_inet): Select virtual host based on destination address. + + * ircd/uping.c (UPingFIleDescriptor): Remove. + (upingSock): Split into separate IPv4 and IPv6 variables. + (uping_echo_callback): Incorporate uping_echo() body here, so the + proper socket FD can be used. + (uping_init): Attempt to set up both v4 and v6 UPING sockets. + (uping_server): Create uping socket with appropriate local address. + + * doc/example.conf (General): Update example config file to + reflect removal of Resolver setting and support for separate IPv4 + and IPv6 VHost settings. + +2004-12-28 Michael Poole + + * ircd/sys.h (BITS_ZERO_ON_*, HAVE_RELIABLE_SIGNALS, DOCURSES, + DOTERMCAP, IRC_UID, IRC_GID, LIMIT_FMT, FALSE, TRUE): Remove + unused macros. + + * ircd/ircd_auth.c, ircd/listener.c, ircd/s_auth.c, ircd/s_bsd.c, + ircd/s_conf.c, ircd/uping.c, ircd/whocmds.c: Remove obsolete + #include . + +2004-12-28 Michael Poole + + * ircd/match.c: Remove obsolete #include . + (ipmask_parse_ipv4): We already parse the dotted quads from the + input string, so use them instead of inet_addr() to populate + out->s_addr. + + * ircd/gline.c: Remove obsolete #includes , "sys.h". + (do_gline): Pass SHOW_IP instead of TRUE as argument to + get_client_name(). + + * ircd/ircd.c (try_connections): Revise to use fewer temporary + variables. + +2004-12-28 Michael Poole + + * include/res.h: Implement irc_in_addr_* as macros. + + * ircd/ircd_res.c: Remove the function bodies. + + * ircd/ircd_string.c (irc_in_addr_is_ipv4): Remove body. + (ircd_ntoa_r): Do not append extra ':' when unparsing 0::. + (ircd_aton): Accept IPv6 addresses with all eight segments + specified (e.g. 0:0:0:0:0:0:0:0). Correctly parse addresses + with IPv4 bits at the end (e.g. ::FFFF:127.0.0.1). + + * ircd/test/ircd_in_addr_t.c, ircd/test/test_stub.c: New files. + + * ircd/test/Makefile: Convert to Makefile.in for proper VPATH + support. Add test_stub.c and ircd_in_addr_t.c references. + + * configure.in: Generate ircd/test/Makefile as an output file. + + * configure: Update. + +2004-12-18 Michael Poole + + * include/client.h: Move unreg, privs, capab and active fields + from struct Client to struct Connection since that is how they + are really associated. Adjust macros to match. + (SetPriv, ClrPriv): New macros. + + * ircd/client.c (client_set_privs): Exit earlier for remote + clients. Adjust macro use to correspond. + + * ircd/m_server.c (mr_server): Grant all privileges except + PRIV_SET to peer servers. + +2004-12-18 Michael Poole + + * ircd/s_user.c (hide_hostmask): Add a missing "break;" to fix bug + #1087461. + +2004-12-18 Michael Poole + + * ircd/engine_kqueue.c (engine_loop): Remove an assertion that the + socket's FD is the same after processing as it was before; local + clients apparently have s_fd() == -1 after close. + +2004-12-18 Kevin L Mitchell + + * ircd/s_user.c: make absolutely certain register_user() is never + called with cli_unreg non-zero; transition set_nick_name() over to + the new way of determining whether client is ready for + register_user() + + * ircd/s_err.c: add ERR_UNKNOWNCAPCMD for reporting failure to + understand a given CAP subcommand + + * ircd/parse.c: add "CAP" command + + * ircd/m_user.c (m_user): transition over to new way of + determining whether client is ready for register_user() + + * ircd/m_pong.c (mr_pong): transition over to new way of + determining whether client is ready for register_user() + + * ircd/m_cap.c: implementation of the IRC capabilities draft + + * ircd/list.c (make_client): initialize cli_unreg element of + client structure + + * ircd/ircd_string.c: correct old bugs in ircd_strn?cmp() + functions that were never found because cross-case ordering has + not been needed until now + + * ircd/Makefile.in: add m_cap.c to list of .c files + + * include/numeric.h (ERR_UNKNOWNCAPCMD): define new error reply to + indicate an unknown CAP subcommand + + * include/msg.h: add "CAP" command + + * include/handlers.h: add m_cap() to list of handlers + + * include/client.h: add support for client capabilities; rototill + the registration mechanism to dovetail well with the capability + system--i.e., allow the capability system to suspend registration + if the user issues one of the CAP commands + + * include/capab.h: header file to define client capabilities + +2004-12-17 Michael Poole + + * ircd/channel.h (apply_ban): Add new flag to indicate whether + newban should be free()'d after it is used. + + * ircd/channel.c (apply_ban): Likewise. Also set BAN_DEL flag + when setting BAN_OVERLAPPED, and free newban when BAN_DEL. + (mode_parse_ban): Delete buggy shortcut when channel banlist is + empty. + (mode_process_bans): Always give ownership of ban->banstr to the + mode buffer, avoiding a memory leak. + + * ircd/m_silence.c (apply_silence): Pass new parameter to + apply_ban. + +2004-12-17 Michael Poole + + * ircd/channel.c (sub1_from_channel): Immediately destroy + non-Apass channels when oplevels are enabled; otherwise, they can + stay opless for a considerable period. + (mode_parse_ban): Initialize banstr to NULL so that set_ban_mask() + does not try to free() an invalid pointer. + + * ircd/ircd_parser.y (uworldblock): Put UWorld server name into + aconf->host, not aconf->name. + + * ircd/m_server.c (mr_server, ms_server): Attach CONF_UWORLD items + by host here.. + + * ircd/s_conf.c (conf_check_server): .. rather than by name here. + (attach_conf_uworld): New function to attach CONF_UWORLD items. + (rehash): Use attach_conf_uworld() instead of attaching by name. + +2004-12-15 Michael Poole + + * ircd/m_topic.c (do_settopic): Allow +k services to set topics on + channels they are not joined. + +2004-12-15 Michael Poole + + * ircd/IPcheck.c (IPTargetEntry): Make count unsigned to squash + warning. + (ip_registry_canonicalize): New function to convert an IP address + into a canonical form for clone checks. + (ip_registry_hash): Update to reflect canonical form. + (ip_registry_find): Use ip_registry_canonicalize(). + (ip_registry_check_local, ip_registry_check_remote): Likewise. + + * ircd/numnicks.c (iptobase64): Map 6to4 addresses to IPv4 when + sending them to a non-IPv6 server. + +2004-02-17 Michael Poole + + * ircd/s_user.c (hide_hostmask): Preserve user's visibility in a + +D channel when they hide their hostmask. + +2004-12-15 Michael Poole + + * doc/example.conf: Remove the example Server blocks since they + are no longer used (were merged into Connect). + + * ircd/ircd_res.c (restart_resolver): Fix typo in previous commit. + + * ircd/m_server.c (check_loop_and_lh): Use a different argument to + test whether an introduced server is directly connected or not. + +2004-12-14 Michael Poole + + * include/client.h (FLAG_IPV6): New value for enum Flag. + (IsIPv6, SetIPv6): Accessor macros for it. + + * include/numnicks.h (iptobase64): Add flag indicating whether to + use full IPv6 addresses or fake them in an IPv4-compatible way. + + * ircd/numnicks.c (iptobase64): Use the new flag. + + * include/send.h (sendcmdto_flag_serv_butone): New function to + send different lines to servers based on flags (like FLAG_IPV6). + + * ircd/send.c (sendcmdto_flag_serv_butone): Implement it. + + * ircd/s_bsd.c (completed_connection): Advertise IPv6 support in + our server flags. + + * ircd/s_serv.c (server_estab): Likewise. Also make sure we send + compatible IP addresses for the new server. + + * ircd/s_user.c (register_user): Only send full IPv6 addresses to + links that have FLAG_IPV6 set. + +2004-12-13 Michael Poole + + * doc/example.conf: Update General block comment to mention + new RESOLVER option and to explain IPv6 support. + + * ircd/ircd_lexer.l: Recognize RESOLVER token. + + * ircd/ircd_parser.y: Declare RESOLVER token and use it in an + alternative for generalitem. + + * ircd/ircd_res.c: Define global ResolverAddr variable. If it is + valid, use it instead of VirtualHost in restart_resolver(). + +2004-12-13 Michael Poole + + * doc/example.conf: Update configuration to move Client block + comment after sample Class blocks, and update entries in it. + + * ircd/ircd_lexer.y: Recognize IP and USERNAME tokens. + + * ircd/ircd_parser.y: Add ip and username global variables and IP + and USERNAME tokens. Add clientip and clientusername alternatives + for clientitem, and update clientblock to correspond. + + * ircd/ircd_res.c (delete_resolver_queries): Do not try to walk + the request_list before request_list is initialized. + (cres_mem): Likewise. + + * ircd/os_generic.c (sockaddr_from_irc): Improve guessing of + proper address family. + + * ircd/s_conf.c (attach_iline): Allow aconf->host == NULL, which + means DNS reply is optional. If aconf->addrbits >= 0, test it. + + * tools/crypter: Delete. + +2004-12-11 Kevin L Mitchell + + * ircd/*.c: use new assert() in ircd_log.h in preference to system + assert() + + * ircd/umkpasswd.c: use new assert in ircd_log.h; add necessary + glue so that umkpasswd will successfully compile and link + + * ircd/test/ircd_chattr_t.c: comment out include of assert.h since + there are no calls to assert() + + * ircd/ircd_log.c: add sentinel (log_inassert) to prevent assert() + from looping should there be an assertion failure somewhere in the + logging subsystem + + * include/ircd_log.h: custom implementation of assert() that calls + log_write() + +2004-11-21 Michael Poole + + * ircd/channel.c (mode_parse_upass): Allow forced mode changes to + be done by non-channel-managers, fixing a crash from OPMODE. + (mode_parse_apass): Likewise. + +2004-11-20 Michael Poole + + * ircd/m_create.c (ms_create): Complain if a user tries to CREATE + a channel they are already in, but do not add them again. + +2004-11-09 Michael Poole + + * include/res.h (init_resolver): Delete, and initialize lazily. + + * ircd/ircd.c (main): Do not call init_resolver(). + + * ircd/ircd_res.c (restart_resolver): Use default VirtualHost for + local resolver socket address. + (init_resolver): Delete. + (make_request): Call restart_resolver() if necessary. + (query_name): Use ircrandom() instead of rand(). + + * ircd/os_generic.c (sockaddr_from_irc): Convert last argument to + a file descriptor that indicates the socket family to use. + (os_sendto_nonb,os_socket,os_connect_nonb): Update to match. + +2004-11-09 Michael Poole + + * ircd/engine_epoll.c (engine_delete): Do not attempt to remove a + socket from epoll on delete, since the kernel does that for us. + +2004-11-07 Michael Poole + + * ircd/m_server.c (m_server, ms_server): Assign timestamp before + it might be used in exit_new_server(). + +2004-11-07 Michael Poole + + * aclocal.m4, config.h.in, configure, ircd/Makefile.in: Regenerate + to reflect the changes since these files' last rebuild. + +2004-11-07 Michael Poole + + * include/ircd_crypt.h (ircd_crypt): This should return char*, not + const char*, since it does not own the returned pointer. + + * ircd/ircd_crypt.c (ircd_crypt): Change return type. + + * ircd/ircd_crypt_smd5.c (irc_crypt_smd5): Make passwd a static + field since it is returned but this function must own the buffer. + + * ircd/m_oper.c (oper_password_match): Free the string returned by + ircd_crypt(). + + * ircd/engine_epoll.c (engine_loop): Fix a memory leak. + +2004-11-07 Michael Poole + + * acinclude.m4: Look for a 64-bit integer type. + + * configure.in: Look for inttypes.h, since some systems have that + but not stdint.h (and define 64-bit integers therein). + + * include/client.h: Delete con_sendK, con_receiveK. Make + con_sendB and con_receiveB 64 bits wide. + + * include/s_misc.h: Delete is_cks, is_ckr, is_sks, is_skr. + Convert the other byte counters and the connected time counters to + 64 bits wide. + + * ircd/ircd_snprintf.c (doprintf): Unconditionalize the + HAVE_LONG_LONG bits, and use the 64-bit integer types from above. + + * ircd/packet.c (update_bytes_received): Remove use of + cli_receiveK(). + + * ircd/s_bsd.c (deliver_it): Likewise. + (close_connection): Likewise. + + * ircd/s_misc.c (tstats): Likewise. Update format strings to use + %Lu for 64-bit integer parameters. + + * ircd/s_stats (stats_links): Convert cli_sendK() and + cli_receiveK() use shifted versions of the byte counters, and + update format strings to use %Lu for 64-bit integer parameters. + +2004-11-07 Michael Poole + + * include/s_user.h (add_silence): Delete. + (del_silence): Delete. + + * include/struct.h (struct User): Convert silence list to struct Ban. + + * ircd/m_silence.c (apply_silence, forward_silences): New functions. + (m_silence): Use forward_silences() instead of add_silence(). + (ms_silence): Likewise. + + * ircd/s_err.c (replyTable): Update RPL_SILELIST. + + * ircd/s_misc.c (exit_one_client): Update to new silence list type. + + * ircd/s_user.c (is_silenced): Use find_ban() to search for + silences. If one is found, send it plus any silence exceptions. + (del_silence): Delete. + (add_silence): Delete. + +2004-11-07 Michael Poole + + * include/channel.h: Remove declarations for undefined functions + cancel_mode(), add_token_to_sendbuf(), IsMember(). Delete + add_banid(), next_removed_overlapped_ban(). Add BAN_EXCEPTION + flag and new functions find_ban(), apply_ban(). + + * ircd/channel.c (PartFmt*, next_ban, prev_ban, removed_bans_list, + LocalChanOperMode): Remove unused variable definitions. + (make_nick_user_host): Delete. + (add_banid): Delete. + (next_removed_overlapped_ban): Delete. + (find_ban): New function, which knows about exceptions. + (is_banned): Use find_ban() and only work on a struct Membership. + (bmatch): New function, which knows about CIDR bans. + (apply_ban): New function to replace add_banid(). + (mode_parse_ban): Use apply_ban(). + +2004-10-28 Michael Poole + + * configure.in (AC_PREREQ): Depend on autoconf 2.50 since we use + new macros like AC_LINK_IFELSE and AC_LANG_PROGRAM. + +2004-10-22 Michael Poole + + * ircd/m_invite.c (m_invite, ms_invite): Fix INVITE forwarding + with announcements enabled (do not "announce" to the recipient, + and unconditionally send to the recipient). + + * ircd/send.c (sendcmdto_channel_servers_butone): Properly skip + the "from" client and implement SKIP_NONOPS and SKIP_NONVOICES. + +2004-10-21 Michael Poole + + * include/channel.h (Ban): Add fields address, nu_len, addrbits to + support netmask-based bans. + + * ircd/channel.c (set_ban_mask): New function to parse a ban as + either netmask-based or not. + (make_ban): Use set_ban_mask(). + (make_nick_user_ip): Becomes unused; remove it. + (is_banned): Rewrite to match only once against the nick!user part + of a ban, and compare addresses if BAN_IPMASK is set. + (mode_parse_ban): Use set_ban_mask(). + +2004-10-21 Michael Poole + + * ircd/s_conf.c (attach_iline): Test resolved host names against + aconf->host, not the (NULL) aconf->name. + +2004-10-19 Michael Poole + + * include/channel.h: Move ban flags out of channel flags and + rename to reflect this. + + * ircd/channel.c: Update ban constant names. + + * ircd/m_burst.c: Likewise. + +2004-10-18 Michael Poole + + * include/list.h (SLink): Remove ban elements from here... + + * include/channel.h (Ban): And move to the new struct Ban. + (Channel): Update banlist field to match. + (next_removed_overlapped_ban): Update return type to match. + (make_ban, free_ban): New functions. + + * ircd/channel.c (next_ban, prev_ban, removed_bans_list): Update + list types. + (free_bans): New variable to hold unused Ban elements. + (make_ban, free_ban): New functions. + (destruct_channel, add_banid, next_removed_overlapped_ban): Update + to use struct Ban. + (is_banned, send_channel_modes, send_ban_list): Likewise. + (ParseState, mode_parse_ban, mode_process_bans): Likewise. + (mode_parse): Likewise. + + * ircd/m_burst.c (ms_burst): Update to use struct Ban. + + * ircd/m_clearmode.c (do_clearmode): Update to use struct Ban. + + * ircd/s_debug.c (count_memory): Update to use struct Ban. + +2004-10-18 Kevin L Mitchell + + * ircd/gline.c (gline_find): unless we're looking for an exact + match, we should call match() on hostnames, not ircd_strcmp() + +2004-10-17 Michael Poole + + * include/s_conf.h (ConfItem): Add new field username. Replace + unused field bits with addrbits. + (find_conf_exact): Replace user and host arguments with cptr. + (find_conf_name, read_tlines, find_restrict): Remove declaration + for undefined functions. + (conf_parse_userhost): New function. + + * ircd/m_oper.c (m_oper): Update calls to find_conf_exact(): both + resolved hostname and IP are matched in one pass now. + + * ircd/s_bsd.c (close_connection): Update call to find_conf_exact(). + + * ircd/s_conf.c (conf_parse_userhost): New function. + (check_limit_and_attach): Use correct ConfItem field to determine + maximum connections per IP. + (attach_iline): Replace user@host matching with shorter, clearer + matching against username and host/IP fields. + (find_conf_exact): Likewise. + + * ircd/ircd_parser.y: Replace assignment to aconf->host for + CONF_CLIENT and CONF_OPERATOR with calls the CIDR-aware + conf_parse_userhost(). This means CONF_CLIENT ConfItems no longer + use the name field or the IP token. Remove the latter. + + * ircd/ircd_lexer.l: Remove unused token IP. + +2004-10-17 Michael Poole + + * ircd/crule.c (crule_via): Simplify the lookup for the directly + connected server name. + +2004-10-16 Michael Poole + + * ircd/class.c: Make find_class() return NULL for unknown classes, + rather than returning the start of connClassList. + + * ircd/match.c (parse_ipmask): Translate IPv4 masks as + IPv4-compatible addresses. + (check_ipmask): Fix comparison of IP masks. + + * ircd/motd.h, ircd/motd.c: Add a new MOTD type, MOTD_IPMASK, that + uses CIDR style masks in the hostname field of a Motd block. + +2004-10-16 Michael Poole + + * ircd/numeric.h: Remove the unused RPL_STATMEM and + RPL_STATMEMTOT. Move the RPL_BOUNCE comment to its current + value (the former RPL_STATMEM). + + * ircd/s_err.c: Remove format strings for RPL_STATMEM and + RPL_STATMEMTOT. + +2004-10-16 Michael Poole + + * ircd/m_server.c: Look up server configuration by name of our + directly connected peer rather than the server being introduced. + +2004-10-13 Michael Poole + + * include/channel.h: Delete MODE_LISTED and is_listed(). Replace + ListingArgs.chptr with ListingArgs.bucket. Move declaration of + list_next_channels() to.. + + * include/hash.h: here, and drop the "nr" argument. + + * ircd/channel.c: Remove redundant scan of local clients for + channels being listed. Delete list_next_channels() function. + + * ircd/hash.c: Add list_next_channels() here, revising to not use + MODE_LISTED and to use ListingArgs.bucket instead of chptr. Also + decide when to stop sending RPL_LISTs based on a half-full sendq. + + * ircd/m_burst.c, ircd/s_misc.c: Delete mention of MODE_LISTED. + + * ircd/m_list.c: Delete mention of MODE_LISTED. Unconditionally + call list_next_channels(sptr). + + * ircd/s_bsd.c: Remove the "nr" argument to list_next_channels(). + + * ircd/Makefile.in: Update dependencies (for hash.c). + +2004-10-13 Michael Poole + + * ircd/ircd_parser.y: Consistently zero out global variables after + they are used (prevents double frees and other problems). + +2004-10-12 Michael Poole + + * include/client.h: Rename FLAGSET_ISSET, _SET, _CLEAR to FlagHas, + Set, Clr respectively. Get rid of FLAG_CHKACCESS and FLAG_LOCAL. + Delete con_fd (get from con_socket) and con_port. Move sentalong + from send.c to struct Connection, and cli_lasttime and cli_since + from struct Client to struct Connection. Update cli_*() macros to + use con_*(cli_connect(cli)). + + * ircd/client.c: Replace PrivSet() with FlagSet(), PrivClr() with + FlagClr(), PrivHas() with FlagHas(). + + * ircd/ircd_parser.y: Likewise. + + * ircd/list.c: Remove assignment to cli_local() since it is now a + calculated value. + + * ircd/s_bsd.c: Remove uses of cli_port(). + + * ircd/s_conf.c: Remove uses of ClearAccess(). + + * ircd/send.c: Delete sentalong array and replace with references + to con_sentalong(). + +2004-10-12 Michael Poole + + * doc/example.conf: Update example config to reflect the changes + made in the remainder of this patch. + + * include/list.h: Make make_conf() take a type argument. + + * include/s_conf.h: Delete CONF_LEAF and CONF_HUB. Add "maximum" + and "hub_limit" to ConfItem to compensate. + + * ircd/ircd_lexer.l: Recognize MAXHOPS token. + + * ircd/ircd_parser.y: Get rid of aconf global variable and add + hub_limit global variable. Add MAXHOPS token, and productions + inside connectblock to recognize it and hub masks. Allow maxlinks + field in a Client block, rather than overloading password field. + Convert serverblock to uworldblock and remove extraneous fields. + + * ircd/m_server.c: Make check_loop_and_lh() look up ConfItem and + calculate LHcptr and active_lh_line. Merge some duplicated code + so handling active_lh_line cases is clearer. + + * ircd/s_conf.c: Make make_conf() take a type argument. Delete + CONF_LEAF and CONF_HUB. Do not overwrite server name with what + is specified in the config file. + + * ircd/s_err.c: Remove the unused RPL_STATSNLINE and + RPL_STATSHLINE. Remove useless parameters and format fields from + RPL_STATSCLINE, RPL_STATSILINE, RPL_STATSLLINE, RPL_STATSOLINE and + RPL_STATSULINE. + + * ircd/s_serv.c: Delete CONF_LEAF and CONF_HUB. + + * ircd/s_stats.c: Get rid of report_array and make + stats_configured_links() directly use RPL_STATSxLINE (adding the + new fields for Server and Client blocks). Remove /stats h, since + that has no meaning. + +2004-10-12 Michael Poole + + * ircd/m_burst.c: Mask off channel modes in a wiped-out channel by + default rather than by listing which should be wiped out. + +2004-10-09 Michael Poole + + * ircd/m_server.c: Forward port checks for leaf and hub config + rules, and reorganize mr_server() and ms_server() by moving out + common code. Add doxygen comments for the file. + +2004-10-09 Michael Poole + + * ircd/hash.c: Fix thinko in hash function: It is not indexed + simply by character value, so we cannot just remap the values + by case. + +2004-10-05 Michael Poole + + * ircd/hash.c: Replace the old hash function with one based on + randomized CRC-32. The new one avoids a big table from the old + function. + +2004-10-05 Michael Poole + + * ircd/random.c: Convert to use ircd_md5 interface and hopefully + keep more internal random state. + +2004-10-05 Michael Poole + + * include/ircd_md5.h, ircd/ircd_md5.c, ircd_crypt_smd5.c, + ircd/umkpasswd.c: Get rid of the GoodMD5xxx/BrokenMD5xxx + prefixes. + +2004-10-05 Michael Poole + + * adns, lib/adns: Remove unused adns library. + +2004-10-05 Michael Poole , hikari , Perry Lorier + + * include/*.h, ircd/*.c: Convert comments to Doxygen-compatible + format, and add new comments where needed. + + * Doxyfile: New file to tell Doxygen how to run. + +2004-09-21 Michael Poole + + * ircd/s_auth.c (HeaderMessages): Make the compiler, not the + programmer, generate magic numbers. + (AuthIncompleteList): Remove. + (AuthPollList): Remove. + +2004-09-19 Michael Poole + + * acinclude.m4: Clean up AC_DEFINE()s so we no longer need + acconfig.h. + + * acconfig.h: Remove since it is now redundant. + + * aclocal.m4, config.h.in, configure: Regenerate. + +2004-09-19 hikari + + * configure.in: Fixed configure script rules to fail if (f)lex or yacc/bison + aren't found as they're essential for compilation. Regenerated files with + autreconf. + +2004-09-18 Michael Poole + + * doc/example.conf: Add NETWORK feature example. Fix typos in + eaxmples for HANGONGOODLINK and IRCD_RES_TIMEOUT. + + * include.class.h: Make max_links and ref_count unsigned ints. + Make ping_freq and conn_freq unsigned short. (No more negative + numbers in /stats y.) + + * ircd/ircd.c: Report configuration file name for "ircd -k". + +2004-09-18 hikari + + * ircd/Makefile.in: Fixed a missing internal build dependency. + +2004-09-16 Michael Poole + + * INSTALL: Fix name of example.conf and mention its installed + location. + + * include/supported.h (FEATURESVALUES2): Fix a reference to + channel mode +u that escaped earlier rename attempts. + + * ircd/ircd_auth.c (iauth_connect): Assign port number after + zeroing out the destination address. + Add some additional debug statements to help follow operations. + + * ircd/ircd_parser.y (iauthblock): Do not require "name" to be set. + +2004-09-11 Bas Steendijk + + * include/channel.h, include/supported.h, ircd/channel.c, + ircd/s_err.c: Use +U instead of +u for user keys. + +2004-09-13 Michael Poole + + * doc/example.conf: Remove sample VIRTUAL_HOST setting. + + * doc/readme.features: Remove VIRTUAL_HOST documentation, and + update NODNS documentation to match current behavior. + + * include/s_conf.h: Remove now-unused vhost_address field and + set_virtual_host() function. + + * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c: + Remove VIRTUAL_HOST. + + * ircd/ircd_auth.c, ircd/s_bsd.c: Use VirtualHost as local address + if we do not have a more specific alternate. + + * ircd/ircd_parser.y: Check for sanity in General blocks (from old + conf_add_local()) and assign vhost directly to VirtualHost. + + * ircd/ircd_res.c (irc_in_addr_valid): Fix thinko; obviously any + value will be either != 0 or != 0xffff. + + * ircd/os_generic.c: Use AF_INET instead of AF_INET6 when the + local addresses are specified as IPv4 addresses. + + * ircd/s_conf.c: Remove unused conf_add_local() and + set_virtual_host(). + +2004-09-13 Michael Poole + + * ircd/listener.c (add_listener): Consolidate duplicated code, and + make sure listener->server is set before calling inetport() on it. + +2004-09-12 Michael Poole + + * include/channel.c (mode_parse_upass, mode_parse_apass): Only let + services (not normal opers) force a change of +A or +u. + +2004-09-11 Michael Poole + + * include/s_stats.h: Add sd_name to struct StatDesc. Stop + publishing the statsinfo and statsmap arrays; replace them with + stats_find(). Change argument list of StatFunc() to work with + names. + + * ircd/m_stats.c: Use stats_find() instead of statsmap[]. Use the + full argument instead of just the first character in reports. + + * ircd/s_stats.c: Adapt individual stats handler functions to new + argument list. Add long names to statsinfo[]. Add new functions + stats_cmp(), stats_search(), stats_find(). Sort statsinfo[] in + stats_init(). + + * ircd/s_err.c: Change ENDOFSTATS to display a string rather than + a single character. + + * ircd/s_user.c: Send an error to the user when a message loses + its target in transit. + + * include/class.h include/gline.h include/ircd_features.h + include/listener.h include/motd.h include/msgq.h include/res.h + include/s_debug.h include/s_misc.h include/userload.h ircd/class.c + ircd/gline.c ircd/ircd_features.c ircd/ircd_res.c ircd/listener.c + ircd/motd.c ircd/msgq.c ircd/s_debug.c ircd/s_misc.c + ircd/userload.c: Adjust stats handlers to new argument list. + +2004-09-11 Michael Poole + + * include/numeric.h, ircd/s_err.c: Remove RPL_TRACEPING, and + replace with RPL_TRACEEND. + + * ircd/s_trace.c: Move all the duplicated code in m*_trace() to + do_trace(). Implement RPL_TRACEEND, per RFE#830291. + +2003-06-20 Alexander Maassen + + * ircd/m_topic.c : Don't allow banned users to set a topic in a + channel. + +2004-09-11 Kevin L Mitchell + + * config.h.in, tools/Makefile.crypt: Remove wrong pathname from + comment in header. + + * ircd/m_clearmode.c, ircd/m_opmode.c: Fix wrong pathname in + header comment. + + * ircd/m_away.c, ircd/m_kill.c, ircd/m_notice.c, ircd/m_ping.c, + ircd/m_pong.c, ircd/m_privmsg.c, ircd/m_quit.c, ircd/m_topic.c, + ircd/m_version.c: Remove "template" moniker from comments. + + * ircd/test/ircd_chattr.0.dat (IsChannelPrefix): Drop + from + channel prefix list. + +2004-09-11 Michael Poole + + * doc/example.conf: Add examples for FEAT_HIS_* features. + +2003-06-08 Matthias Crauwels + [Feature renamed to FEAT_HIS_WHOIS_LOCALCHAN by Michael Poole.] + + * include/ircd_features.h: new feature FEAT_HIS_LOCAL_CHAN_WHOIS + + * ircd/ircd_features.c: new feature FEAT_HIS_LOCAL_CHAN_WHOIS + + * ircd/m_whois.c: hide local channels in local WHOIS, this breaks HIS + + * doc/readme.features: documented FEAT_HIS_LOCAL_CHAN_WHOIS + + * doc/ircd.conf.sample: default value for FEAT_HIS_LOCAL_CHAN_WHOIS + +2004-09-11 Michael Poole + + * ircd/ircd_relay.c (server_relay_channel_message, + server_relay_channel_notice): Do not allow other servers to send + or relay to local channels. + + * ircd/m_wallchops (ms_wallchops): Likewise. + + * ircd/m_wallvoices (ms_wallvoices): Likewise. + +2004-09-11 Kevin L Mitchell + + * ircd/gline.c (gline_add): fix GLINE logging (Bug #750927) + + * ircd/channel.c: removing limits shouldn't gobble an argument; + this was a subtle interaction issue with modebuf...fixed by adding + MODE_LIMIT to modebuf_flush_int() and short-circuiting + modebuf_mode_uint() to add MODE_LIMIT to mbuf->mb_rem in the + removal case. Note that this is not proof against the sequence, + "modebuf_mode_uint(mbuf, MODE_ADD | MODE_LIMIT, 10); + modebuf_mode_uint(mbuf, MODE_DEL | MODE_LIMIT, 10);" + (Bug #916138) + +2004-09-11 Michael Poole + + * include/supported.h: Kev pointed out I misinterpreted the + meaning of CHANMODES; fix this. Also define CHANNELLEN and + STATUSMSG from the ISUPPORT draft. + +2004-09-10 Michael Poole + + * include/supported.h (FEATURESVALUES2): Include A,u, in CHANMODES + when oplevels are enabled. + +2004-09-10 Michael Poole + + * ircd/channel.c (send_channel_modes): Only send oplevels for + channels that actually use them -- for -A channels, send chanops + as :o even if OPLEVELS is enabled. + + * ircd/ircd.c: Fix -k (chkconf mode) and show in usage help. + + * ircd/numnicks.c (base64toip): Fill in the right number of 0 + words when we see _ in a base64-encoded IPv6 address. + +2004-09-10 Michael Poole + + * ircd/ircd.c: Add -k as a chkconf-like option to exit after + reading the configuration file. + + * ircd/chkconf.c: Remove as unused. + + * ircd/Makefile.in: Remove last mentions of chkconf from Makefile. + +2004-09-10 Michael Poole + + * doc/example.conf: Remove examples for unused features (TIMESEC, + CRYPT_OPER_PASSWORD) and add for new feature (ANNOUNCE_INVITES). + + * doc/readme.features: Remove documentation for unused features + (TIMESEC, CRYPT_OPER_PASSWORD, oper/locop privileges, + HIS_DESYNCS), update defaults for SOCKSENDBUF and SOCKRECVBUF, and + add documentation for ANNOUNCE_INVITES. + + * include/ircd_features.h: Remove unused features (TIMESEC, + CRYPT_OPER_PASSWORD, LIST_CHAN, HIS_DESYNCS). + + * include/ircd_features.c: Likewise. + + * ircd/ircd_res.c: Actually use FEAT_IRCD_RES_RETRIES and + FEAT_IRCD_RES_TIMEOUT where appropriate. + + * ircd/s_debug.c: Do not display setting of unused (and now + non-existent) FEAT_CRYPT_OPER_PASSWORD. + +2004-09-10 Michael Poole + + * ircd/os_generic.c (sockaddr_from_irc): Fix IPv4 implementation + to use the correct address family and IP offset. + +2004-09-10 Michael Poole + + * include/s_conf.h (struct ConfItem): Add origin and origin_name + fields. + + * ircd/ircd_parser.y: Add new global variable "origin." Add a new + "connectionvhost" production that accepts vhost = "IP" inside a + Connect block and assigns the IP to origin_name. + + * ircd/s_bsd (connect_inet): If aconf has a valid origin, use it + as the local address. Otherwise, fall back to the old logic (if + VIRTUAL_HOST="TRUE", use the virtual host setting). + + * ircd/s_conf.c (lookup_confhost): If the ConfItem has an + origin_name, try to parse it as an IP address. + +2004-04-17 Isomer + * ircd/parse.c: Don't rate limit /gline messages + +2004-09-10 Michael Poole + + * ircd/ircd_parser.y: Replace references to yylval.whatever with + references to the appropriate term. This fixes bugs like + "1 hour 30 minutes" being misrecognized as 30 seconds. + +2004-09-10 Michael Poole + + * ircd/ircd_features.c (features): Change default values for + SOCKSENDBUF and SOCKRECVBUF to SERVER_TCP_WINDOW, so that users + need not specify them in ircd.conf. + +2004-09-10 Michael Poole + + * ircd/ircd_parser.y (serverblock): Server blocks should default + to CONF_LEAF status. + + * doc/example.conf: Update example to reflect this. + +2004-09-10 Michael Poole + + * ircd/parse.c (msg_tree_parse): Reject commands that contain + non-alphabetic characters. + +2004-09-09 Michael Poole + + * config.h.in: Remove duplicated and unused macro definitions. + +2004-08-24 Michael Poole + + * ircd/client.h: Properly parenthesize "flag" argument to + FLAGSET_INDEX() and FLAGSET_MASK() macros. + +2004-08-22 Michael Poole + + * ircd/channel.c (send_channel_modes): If oplevels are disabled, + send 'o' for chanops instead of the member's oplevel. + +2004-08-22 Michael Poole + + * ircd/s_conf.c: find_conf_byip() should use irc_in_addr_cmp() + instead of memcmp(). (Fixes IPv4 servers linking to an IPv6 + server.) + +2004-08-22 Alex Badea + + * include/ircd_defs.h: increased SOCKIPLEN to fit ipv6 addresses + +2004-08-19 Michael Poole + + * include/res.h: Remove unused function gethost_byname_type(). + + * ircd/ircd_res.c: Likewise, and clean up some small functions + only used once (remove_dlink(), timeout_resolver()). Use rand() + for random request IDs instead of the deprecated *rand48(). Make + resolver timeout event fire only when needed instead of once a + second. + +2004-08-17 Michael Poole + + IPv6 support, with lots of code and design borrowed from a patch + by Alex Badea. + + * config.h.in: Add place to #define IPV6 support. + + * configure.in: Check for struct sockaddr_in6, and use that as + the default choice for IPv6 support. + + * configure: Regenerate. + + * include/IPcheck.h, include/client.h, include/gline.h, + include/ircd_string.h, include/listener.h, include/match.h, + include/res.h, include/s_bsd.h: Convert from struct in_addr (from + ) to struct irc_in_addr (from "res.h"). + + * include/ircd_osdep.h, include/s_conf.h, include/uping.h: Convert + from struct sockaddr_in (from ) to struct + irc_sockaddr (from "res.h"). Add new functions os_socket(), + os_accept(), os_sendto_nonb() to help abstract away actual + sockaddr types. + + * include/ircd_chattr.h, ircd/table_gen.c: Define new bit to mark + characters valid in IPv6 addresses. + + * include/numnicks.h, ircd/numnicks.c: New functions iptobase64() + and base64toip() to convert from base64 to struct irc_in_addr. + + * ircd/IPcheck.c, ircd/channel.c, ircd/m_nick.c, ircd/m_oper.c, + ircd/m_userip.c, ircd/m_who.c, ircd/m_whois.c, ircd/s_misc.c, + ircd/s_serv.c, ircd/s_user.c, ircd/whocmds.c: Use struct + irc_in_addr instead of unsigned int or struct in_addr. + + * ircd/gline.c: Use new more-generic ipmask functions. + + * ircd/ircd.c: Use struct irc_sockaddr instead of separate port + fields. + + * ircd/ircd_reslib.c: Use struct irc_sockaddr and ircd_aton() + instead of irc_ssaddr and irc_getaddrinfo(). + + * ircd/ircd_string.c: Implement new functions: IPv6-capable + ircd_ntoa_r(), ircd_aton_ip4(), ircd_aton(). + + * ircd/match.c: Delete IPv4-only matchcompIP(). Replace with + IPv6-capable ipmask_parse() and ipmask_check(). + + * ircd/numnicks.c: Implement new functions: iptobase64() and + base64toip(). + + * ircd/os_generic: Convert external parameters to be struct + irc_addrinfo. When using IPv6 support, sockaddr_in6 is native. + Implement new functions os_sendto_nonb(), os_socket() and + os_accept(). + + * ircd/ircd_auth.c, ircd/ircd_parser.y, ircd/ircd_res.c, + ircd/listener.c, ircd/m_connect.c, ircd/s_auth.c, ircd/s_bsd.c, + ircd/s_conf.c, ircd/s_stats.c, ircd/uping.c: Use struct + irc_sockaddr instead of separate in_addr and port fields and new + OS support functions. + + * include/ircd_addrinfo.h, ircd/ircd_getaddrinfo.c, + ircd/ircd_getnameinfo.c: Remove, since these functions are no + longer used. + + * ircd/os_bsd.c, ircd/os_linux.c, ircd/os_openbsd.c, + ircd/os_solaris.c, ircd/res_adns.c, ircd/res_libresolv.c: Remove, + since these are unused and not compatible with IPv6 support. + + * ircd/Makefile.in: Remove references to ircd_getXxxxinfo.c. + Regenerate dependencies. + +2004-08-17 Michael Poole + + * ircd/ircd_lexer.l: Change tokenizer to reduce number of lexer + states and be case-insensitive again. + +2004-08-15 Michael Poole + + * aclocal.m4: Check for uintNN_t instead of u_intNN_t, since the + former is from C99 (and the latter is absent on Solaris). + + * configure.in: Remove check for inttypes.h (which is a C99 format + string header); replace with check for stdint.h. Add checks for + sys/param.h and sys/socket.h. Check for socklen_t being defined + (OS X does not set it). Run program tests for lex and yacc, and + use them rather than assuming flex and bison. Remove OSDEP_C and + mention to adns. Remove check for res_mkquery(). + + * config.h.in: Update u_intNN_t #undef lines. Add #undef + socklen_t so configure test can set it. + + * configure: Regenerate. + + * include/ircd_addrinfo.h: #include headers needed for netdb.h and + to define struct addrinfo and uintNN_t. + + * include/ircd_reslib.h: Replace u_intNN_t with uintNN_t. + + * include/res.h: #include "ircd_addrinfo.h" to get proper type + definitions. #define INADDR_NONE if it is not defined (as on + Solaris). + + * ircd/Makefile.in: Replace LEX and YACC definitions. Remove + OSDEP_C and OSDEP_SRC; always compile os_generic.c. Remove adns + directory from CPPFLAGS. Regenerate dependencies. + + * ircd/client.c: Return when no propagation set for oper, to + squash warning about use of "defaults" before it is set. + + * ircd/engine_epoll.c: #include correct C99 integer header. + + * ircd/engine_poll.c: Last argument to getsockopt() should be of + socklen_t, not size_t; fix. + + * ircd/engine_select.c: Squash warning about bzero(). + + * ircd/ircd_auth.c: OS X does not define in_addr_t, so replace it + with uint32_t. We need for that, so include it. + + * ircd/ircd_getnameinfo.c, ircd/memdebug.c: Replace u_int32_t with + uint32_t. + + * ircd/ircd_lexer.l: Replace flex-isms with portable syntax. + There is no portable way to do %option, so remove that. lex on + Solaris needs several of its internal tables to be bigger, so + increase those sizes. + + * ircd/ircd_parser.y: Remove the second declarations of two + tokens, since standard yacc warns about changing precedence. + + * ircd/os_generic.c: Make this compile on common OSes (Linux, + Solaris, OS X, FreeBSD, OpenBSD). + + * ircd/table_gen.c: Make arguments to isprint() all unsigned char + to squash warnings on Solaris that array index is "char." + + * ircd/umkpasswd.c: Remove #include since it is not + portable, and replace basename() with an equivalent. + + * ircd/uping.c: Typecast printf arguments for 64-bit OSes. + +2004-07-27 Michael Poole + + * ircd/m_burst.c: Add new netride_modes() function to check + which modes could be used in a net.ride. Use this instead + of the old check for just +i or +k. + (Based on patches by beware and pomac.) + +2004-07-25 Michael Poole + + * ircd/ircd_parser.y: Remove redundant semicolon; it causes + errors on some versions of yacc. + +2004-07-21 Michael Poole + + * include/client.h, ircd/ircd_auth.c, ircd/ircd_crypt_smd5.c, + ircd/ircd_reslib.c: Fix warnings from gcc -pedantic. + +2004-07-21 Michael Poole + + New DNS resolver code, courtesy of Dianora and the rest of the + Hybrid team. (Bugs are of course my fault.) + + * configure.in, Makefile.in, ircd/Makefile.in: Remove adns and + libresolv from the build process. Update dependencies. + + * configure: Regenerate. + + * include/client.h: Change connection's DNS reply type. + + * include/ircd_features.h, ircd/ircd_features.c: New HIS_STATS_a. + + * include/numeric.h, ircd/s_err.c, ircd/s_stats.c: Add new + RPL_STATSALINE and /stats a to list DNS servers. + + * include/ircd_addrinfo.h, include/ircd_reslib.h, include/res.h, + ircd/ircd_getaddrinfo.c, ircd/ircd_getnameinfo.c, ircd/ircd_res.c, + ircd/ircd_reslib.c: New resolver files. + + * ircd/ircd_auth.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c: + Update to new resolver callback interface and to only deal with + one IP and one name per DNS reply. + + * ircd/parse.c: Remove /DNS command, since new resolver does not + track those statistics. + +2004-07-20 Michael Poole + + * doc/readme.features: Change references to O:, Y:, etc lines into + references to the appropriate block types. + +2004-07-01 Michael Poole + + * include/fileio.h: Elaborate on "works for any file descriptor." + + * include/iauth.h: Remove unused file. + +2004-07-01 Michael Poole + + * include/map.h, ircd/map.c: Remove unused code. + + * ircd/m_links.c, ircd/m_map.c, ircd/s_misc.c: Remove includes of + map.h and a call to map_update(). + + * ircd/Makefile.in: Remove map.c and regenerate dependencies. + + * ircd/ircd_parser.y: Recognize Diane Bruce as a copyright holder + for the new config parser. + + * ircd/match.c: Remove pointless pointer dereference (Reed points + out that this generates a warning with old gcc). + + * ircd/s_user.c: Display connection class in CONNEXIT connection + notice as a string rather than an integer. + + * tools/ringlog.c, tools/ringlog.pl: At Kevin's request, remove + lines (falsely) identifying ringlog as related to IRC; the files + are general purpose. + + * configure.in, include/ircd_snprintf.h: Add checks for + va_copy()-like alternatives and use them if va_copy() is missing. + + * configure, config.h.in: Regenerate. + +2004-02-01 beware + + * ircd/channel.c: Check bans that look like IP bans against user's + hostname just in case they have a host like 1234.domain.tld. + +2003-12-18 Timothy Grant Vogelsang + + * ircd/ircd_log.c, ircd/send.c: va_list is not a scalar type + +2004-04-02 Gavin Grieve + + * ircd/ircd_parser.y: Fix rehash warnings for servername and + numeric so they only warn if changed in the config file. + +2004-06-30 Michael Poole + + * doc/readme.iauth, include/ircd_auth.h, ircd/ircd_auth.c: New + files. + + * doc/example.conf: Illustrate IAUTH configuration. + + * include/client.h: Add fields to record IAUTH status. + + * ircd/Makefile.in: Add ircd_auth.c to Makefile. + + * ircd/ircd_lexer.l, ircd/ircd_parser.y: Add new IAUTH section. + + * ircd/s_conf.c: Notify IAUTH code when reloading a configuration + so that an obsolete connection can be abandoned. + + * ircd/s_misc.c: Report client exits via IAUTH. + + * ircd/s_user.c: If IAUTH is active and a connecting user has not + been checked against it, interrogate the IAUTH server. + +2004-06-25 Michael Poole + + * configure.in: Check for crypt.h as well. + + * configure: Regenerate. + + * ircd/ircd_crypt_native.c: Move XOPEN defines earlier so they + affect the first includes of system headers. Include crypt.h if + it is available. + + * ircd/umkpasswd.c: Quash a gcc warning. + +2004-06-23 Michael Poole + + * doc/Authors: Add contributors to ircu2.10.11 and myself. + + * ircd/gline.c: Fix buglet in my forward port of Alex Badea's fix. + + * configure.in: Add missing check for inttypes.h; remove obsolete + display of Head-in-sand, add display of epoll() engine. + + * INSTALL, INSTALL_FR, doc/readme.cvs: Update descriptions of how + to use SourceForge's CVS server, from the u2.10.11 branch. + +2003-11-09 beware + + * ircd/s_user.c: move assigning a numeric to a local client from + when nick is set, to when connection becomes client, to not waste + numerics. + +2004-06-08 Kevin L Mitchell + + * ircd/parse.c: don't let rank-and-file users escape HIS + limitations with /jupe... + +2004-06-18 Alex Badea + + * ircd/gline.c (gline_lookup): only return a gline if it's + active + + * ircd/s_conf.c (find_kill): don't check for active gline, + since gline_lookup does now + +2002-11-11 hikari + * ircd/ircd.c: added call to irc_crypt_init() - someone hurry up and + modularise :P + + * ircd/ircd_xopen.c: removed, superseded by new crypto system. + + * ircd/ircd_crypt.c: wrote scary ircd_crypt() interface function, + wrote ircd_crypt_mech_register() function, various other bits + designed to create a near-pluggable crypto system for ircu. currently + this code also loads the various mechanisms i've written code for. + + * ircd/ircd_crypt_smd5.c: imported the crypt_md5 function from + elsewhere, manipulated to suit ircu, returns a salted MD5 password. + + * ircd/ircd_crypt_native.c: replaces the old ircd_xopen.c file, + generate a crypted password using the systems native crypt() function. + + * ircd/ircd_crypt_plain.c: plain text crypt mechanism, should really + only be used for testing purposes. + + * ircd/ircd_md5.c: main gubbins of the MD5 hashing code, lifted from + elsewhere, ircuified. + + * ircd/umkpasswd.c: mkpasswd program for ircu. + + * include/ircd_xopen.h: removed, superseded by new crypto system. + + * include/ircd_crypt.h: external definitions for the new ircd_crypt() + function and definition of the ircd_crypt_mech structure for containing + crypto mechanism data. + + * include/ircd_crypt_smd5.h: sundary definitions for the salted MD5 + mechanism. + + * include/ircd_crypt_native.h: sundary definitions for the native + crypt() mechanism. + + * include/ircd_crypt_plain.h: sundary definitions for the plain text + mechanism. + + * include/umkpasswd.h: fluff for umkpasswd. + +2003-03-11 Landon Fuller (landonf) + + * configure.in: allow ircu to build on OS X. + +2004-05-24 Michael Poole + + * ircd/m_invite.c (m_invite): Include channel name in invitation + announcements. + (ms_invite): Likewise, and also fix a use-before-assignment bug in + them. + +2004-05-18 Michael Poole + + Announce invitations to other channel operators. + + * include/ircd_features.h, ircd/ircd_features.c + (ANNOUNCE_INVITES): Add new boolean feature, default off. + + * include/numeric.h, ircd/s_err.c (RPL_ISSUEDINVITE): Add new + reply. + + * include/send.h, ircd/send.c (sendcmdto_channel_butserv_butone): + Add 'skip' parameter that is needed elsewhere. + (sendcmdto_channel_servers_butone): New function. + + * ircd/channel.c, ircd/m_burst.c, ircd/m_kick.c, ircd/m_topic.c, + ircd/s_user.c: Add argument for 'skip' to calls to s_c_b_b. + + * ircd/m_invite.c (m_invite, ms_invite): If ANNOUNCE_INVITES, send + the INVITE message to all interested servers, and send a numeric + to all local chanops. + +2004-05-18 Michael Poole + + * ircd/res_adns.c (res_ourserver): Remove unused function. + (validate_name): Likewise. + +2004-05-17 Michael Poole + + * include/ircd_features.h, ircd/ircd_features.c, ircd/s_debug.c: + Rip out feature settings related to oper privileges. + + * include/client.h: Comment a few unexplained privileges. + + * ircd/ircd_lexer.l: Rename privilege keywords to match their + names in code and /PRIVS output. Add support for two "new" + privileges (FORCE_OPMODE, FORCE_LOCAL_OPMODE). + + * include/class.h, ircd/client.c, ircd/ircd_parser.y, + ircd/m_oper.c: Replace the removed feature settings with + per-connection class operator privileges. + + * doc/example.conf: Document the change. + + * ircd/ircd_parser.y (portblock): Fix slight memory leak. + +2004-05-16 Michael Poole + + * doc/example.conf: Make this show the new NICKLEN default. + +2004-05-14 Kevin L Mitchell + + * ircd/ircd_features.c: per CFV-0243, NICKLEN default is increased + to 12 + +2004-05-14 Kevin L Mitchell + + * ircd/s_user.c: process account creation timestamp if present in + user mode portion of a N protocol message; add account creation + timestamp to outgoing N protocol messages if that timestamp is + non-zero + + * ircd/m_account.c: process account creation timestamp if present + in AC protocol message + + * include/struct.h: add account creation timestamp + +2004-05-16 Michael Poole + + * doc/example.conf: Document operator privilege settings. + +2004-05-16 Michael Poole + + Get rid of CONF_LOCOP; use PRIV_PROPAGATE instead. + + * ircd/ircd_parser.y (invert): New variable. + (operlocal): Remove production. + (operpriv): Use "invert" variable. + (privtype): Add LOCAL alternative production. + + * ircd/m_oper.c (m_oper): Remove references to CONF_LOCOP; replace + with CONF_OPERATOR or PRIV_PROPAGATE checks, as appropriate. + + * ircd/s_conf.c (AuthorizationCheckResult, find_conf_exact): + Likewise. + + * ircd/s_stats.c (report_array, statsinfo): Likewise. + + * ircd/s_user.c (set_user_mode): Likewise. + +2004-05-15 Michael Poole + + * patches/diffs/astralnet.diff, patches/diffs/nocfv.diff: Remove + patches obsoleted by F: lines. + + * patches/diffs/topicburst.diff: Remove patch that was integrated + into the main code. + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-05 -MDP] + + * ircd/m_whois.c: On remote whois, show +s local channels with a * + prefix to opers. + +2004-05-15 Michael Poole + + * include/gline.h, ircd/gline.c, ircd/s_err.c: Forward port a lot + of gline-related fixes from 2.10.11. Things that work are due to + Kev, Isomer, Spike, hikari, and probably others; CVS makes it hard + to figure out who did what. Any mistakes are mine. + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-05 -MDP] + + * ircd/s_misc.c, ircd/s_user.c: added numnick to SNO_CONNEXIT + messages (so you can match EXIT's to CONN's) + +2004-05-15 Reed Loden + + [Original ChangeLog date: 2003-05-01 -MDP] + + * ircd/s_err.c: Added network to text and edited 001 a bit. + + * ircd/s_user.c: Send network with 001. + +2004-05-15 Michael Poole + + * ircd/s_user.c (add_target): Move free target invite check... + + * ircd/s_user.c (check_target_limit): to here, matching 2.10.11's + behavior. + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-23 -MDP] + + * ircd/s_user.c: Don't credit users with an extra attempt if they + are klined/glined, throttle them! + +2004-05-15 Jeekay + + [Original ChangeLog date: 2003-04-24 -MDP] + + * ircd/s_user.c: Altered (K-lined) to depend on find_kill type + +2004-05-15 splidge + + [Original ChangeLog date: 2003-09-03 -MDP] + + * ircd/s_user.c: Made hide_hostmask() not show bogus joins for + channels where the user is a zombie. + +2004-05-15 beware + + [Original ChangeLog date: 2003-10-25 -MDP] + + * ircd/m_whois.c: Fixed /whois comma separated list with wildcards + cpu hog bug + +2004-05-15 Michael Poole + + * ircd/s_conf.c (rehash): Call clear_quarantines on rehash since + 2.10.11 does. Show ident and IP for clients being killed by new + G-lines and K-lines. + +2004-05-15 hikari + + [Original ChangeLog date: 2003-06-27 -MDP] + + * ircd/ircd.c: After thought, update the next check time based on + when an unregistered client should expire. + +2004-05-15 hikari + + [Original ChangeLog date: 2003-06-22 -MDP] + + * ircd/ircd.c: Fixed check_pings() - shouldn't be any problem with + clients not being able to connect anymore. + +2004-05-15 Michael Poole + + * ircd/channel.c (can_join): Revert to using IsInvited() rather + than walking the list directly. + (modebuf_flush_int): Fix errant HEAD_IN_SAND_SNOTICES check to + use feature_bool(FEAT_HIS_SNOTICES) instead. + +2004-05-15 Kevin L Mitchell + + [Original ChangeLog date: 2004-01-31 -MDP] + + * ircd/channel.c (mode_parse_key): don't allow , in keys! + +2003-04-12 David Mansell (splidge) + + [Original ChangeLog date: 2003-04-14 -MDP] + + * ircd/channel.c: When keys and limits conflict on burst, the key + which is first alphabetically or the limit which is lower will be + used by both servers. This matches pre-2.10.11 behaviour. + Closes: (#713930) + +2004-05-15 David Mansell + + [Original ChangeLog date: 2002-12-28 -MDP] + + * ircd/channel.c (mode_parse_limit): don't allow -l when no limit is + set, don't allow -l with negative parameter (or unsigned >2^31). + +2004-05-15 David Mansell + + [Original ChangeLog date: 2002-12-31 -MDP] + + * ircd/m_burst.c (ms_burst): when kicking net riders, clear + invites too. + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-04 -MDP] + + * ircd/s_serv.c: Burst glines/jupes early + +2004-05-15 volta + + [Original ChangeLog date: 2003-04-26 -MDP] + + * ircd/m_userip.c, ircd/m_userhost.c: Small fix, that + allows users to see their own ip & hostname. (Should solve + all problems with dcc) + +2004-05-15 Kevin L Mitchell + + [Original ChangeLog date: 2003-06-13 -MDP] + + * ircd/m_settime.c: it's supposed to be %ld, not %l + +2004-05-15 Isomer + + [Original ChangeLog date: 2004-03-20 -MDP] + + * ircd/m_invite.c: Disallow invites to non existant channels + +2004-05-15 David Mansell + + [Original ChangeLog date: 2003-04-26 -MDP] + + * ircd/m_invite.c: let +k users invite into channels they aren't on. + +2004-05-15 hikari + + [Original ChangeLog date: 2003-07-13 -MDP] + + * ircd/IPcheck.c: Fixed (another) overflow problem in + ip_registry_check_local() + + [Original ChangeLog date: 2003-06-29 -MDP] + + * ircd/IPcheck.c: Fixed overflow problem in + ip_registry_connect_fail() + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-05-02 -MDP] + + * ircd/IPcheck.c: Added assert()'s to check for underflow + +2004-05-15 Kevin L Mitchell + + [Original ChangeLog date: 2003-11-22 -MDP] + + * tools/wrapper.c: commit uid on chroot fix from ubra + + * ircd/version.c.SH: fix generation generation + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-23 -MDP] + + * ircd/os_*.c, ircd/ircd_features.c: Default changing window sizes + to off. if an admin is smart enough to understand these features + they can enable them manually. + +2004-05-15 splidge + + [Original ChangeLog date: 2003-03-26 -MDP] + + * ircd/include/ircd_features.h, include/ircd_osdep.h, + ircd/ircd_features.c, ircd/listener.c, ircd/os_bsd.c, + ircd/os_generic.c, ircd/os_linux.c, ircd/os_openbsd.c + ircd/os_solaris.c, ircd/s_bsd.c: Patch to allow socket bufs to be + altered via F: lines + +2004-05-15 Isomer + + [Original ChangeLog date: 2003-11-18 -MDP] + + * ircd/s_auth.c, ircd/res_libresolv.c, ircd/res_adns.c: Clean up + the preregistration subsystem allowing customisation of timers, + make the dns resolver stats oper only, and make it much more clear + what all the numbers are. + +2004-05-15 Spike + + [Original ChangeLog date: 2003-11-23 -MDP] + + * ircd/IPcheck.c: Make IPcheck constants configurable + +2004-05-14 Kevin L Mitchell + + [Original ChangeLog date: 2003-11-22 -MDP] + + * ircd/m_nick.c (m_nick): truncate the nickname to the minimum of + the maximum allowed length (NICKLEN) or the allowed nickname + length specified as the NICKLEN feature + + * ircd/ircd_features.c: declare NICKLEN and set its default value + to 9 + + * include/supported.h: add MAXNICKLEN to ISUPPORT and do a little + rearranging... + + * include/ircd_features.h: add NICKLEN feature + + * include/ircd_defs.h (NICKLEN): raise max NICKLEN to 15 + + * doc/readme.features: document new NICKLEN feature + + * doc/example.conf: list new NICKLEN F-line + +2004-05-14 Matthias Crauwels + + [Original ChangeLog date: 2003-06-08 -MDP] + + * ircd/gline.c: fixed the counting bug in gline_memory_count + + * ircd/jupe.c: fixed the counting bug in jupe_memory_count + +2004-05-14 Michael Poole + + * ircd/m_mode.c (ms_mode): Do not always try to call + set_user_mode() when parv[1] is a channel name. + +2004-05-10 Michael Poole + + Implement a per-connection-class default usermode option. + + * doc/example.conf: Illustrate how to use the option. + + * include/class.h (struct ConnectionClass): New "default_umode" + field. + (ConfUmode): New macro. + + * include/client.h (client_get_default_umode): New function. + + * ircd/client.c (client_get_default_umode): Implement it. + + * ircd/ircd_lexer.l (usermode): New token. + + * ircd/ircd_parser.y (classblock, etc): New syntax. + + * ircd/s_user.c (register_user): Set default user modes for user. + This sends the new mode to the user, so the explicit send later + is no longer necessary. + +2004-05-10 Michael Poole + + Forward port of asuka-topicburst.patch from Quakenet's "Asuka" + patch set. + + * include/ircd_features.h (FEAT_TOPIC_BURST): Add new feature. + + * ircd/channel.c (send_channel_modes): If F:TOPIC_BURST:TRUE, + also send a TOPIC to the peer. + + * ircd/ircd_features.c (FEAT_TOPIC_BURST): Add new boolean + feature, defaulting to FALSE. + + * ircd/m_topic.c (do_settopic): Add argument for topic timestamp, + and allow F:HIS_BANWHO to hide the originator of the topic. + (ms_topic): Parse optional timestamp arguments to TOPIC, and use + them to decide whether to ignore the topic. + +2004-05-10 Michael Poole + + Forward port of delayed-join.patch from Quakenet's "Asuka" patch + set (which was a port of code I wrote for the other ircu). + + * include/channel.h (CHFL_DELAYED): New membership flag. + (MODE_DELJOINS, MODE_WASDELJOINS): New channel modes. + (infochanmodes): Add +D to list of supported channel modes. + (IsDelayedJoin, SetDelayedJoin, ClearDelayedJoin): New macros. + (member_can_send_to_channel, client_can_send_to_channel): Add + "reveal" parameter to indicate whether a request should cause + a join-delayed user to become visible. + (RevealDelayedJoin, CheckDelayedJoins): New functions. + + * include/numeric.h (RPL_DELNAMREPLY): New numeric. + + * include/s_user.h (NAMES_DEL): New flag for do_names(). + + * include/supported.h (FEATURESVALUES2): Add +D to list of + supported channel modes. + + * ircd/channel.c (remove_member_from_channel, + member_can_send_to_channel, client_can_send_to_channel, + joinbuf_join): Handle join-delayed users. + (channel_modes, modebuf_flush_int, modebuf_mode, modebuf_flush, + modebuf_extract, mode_process_clients, mode_parse_mode, + mode_parse): Handle delayed-join channels. + (RevealDelayedJoin, CheckDelayedJoins): New functions. + + * ircd/ircd_relay.c (relay_channel_message, relay_channel_notice, + server_relay_channel_message, server_relay_channel_notice): Add + argument for "reveal" parameter to client_can_send_to_channel(). + + * ircd/m_burst.c (ms_burst): Support MODE_DELJOINS channels. + + * ircd/m_clearmode.c (do_clearmode): Support clearing mode +D. + + * ircd/m_join.c (join0): Pass the CHFL_DELAYED flag when parting a + channel with JOIN 0. + + * ircd/m_kick.c (m_kick): For join-delayed members, only send the + KICK to the kicker and kickee. Then check whether +d can be + removed. + + * ircd/m_names.c (do_names): Show join-delayed users if and only + if the NAMES_DEL flag is given. If NAMES_DEL is given, also use + RPL_DELNAMREPLY instead of RPL_NAMREPLY. + (m_names): If NAMES -D, pass NAMES_DEL to do_names(). + + * ircd/m_part.c (m_part, ms_part): Add "reveal" argument for + member_can_send_to_channel(). Set CHFL_DELAYED join in joinbuf if + the user is join-delayed. + + * ircd/m_quit.c (m_quit): Handle join-delayed users and new + argument for member_can_send_to_channel(). + + * ircd/m_topic.c (do_settopic): If a join-delayed channel member + changes the topic, reveal the member. + + * ircd/m_wallchops.c (m_wallchops, ms_wallchops): Add argument for + "reveal" parameter to client_can_send_to_channel(). + + * ircd/m_wallvoices.c (m_wallvoices, ms_wallvoices): Likewise. + + * ircd/m_who.c (m_who): Skip join-delayed members where we skip + zombies. + + * ircd/m_whois.c (do_whois): Use '<' as a prefix for join-delayed + users. Use slightly more efficient macros rather than function + calls to test for ops and voice. + + * ircd/s_err.c (RPL_DELNAMREPLY): New numeric response string. + + * ircd/s_user.c (hide_hostmask): For users with no modes in a + join-delayed channel, do not send JOIN to other members after the + QUIT :Registered. + + * ircd/send.c (sendcmdto_common_channels_butone): Skip + join-delayed users where we skip zombies. + +2004-05-10 Michael Poole + + * ircd/ircd_events.c: Actually reference and try to use the epoll + event engine. Omitted from yesterday's commit. + +2004-05-09 Michael Poole + + Forward port of Paul "Zoot" Chang's pseudo-command.patch and + pseudo-support.patch. + + * doc/example.conf: Illustrate how to use the feature. + + * include/handlers.h (m_pseudo): Declare new handler function. + + * include/ircd_features.h (HIS_STATS_R): Add a feature to control + user visibility of the pseudo-commands. + + * include/msg.h: Add flag and field for the extra information used + to select a pseudo-command's target. + + * include/numeric.h (RPL_STATSRLINE, ERR_SERVICESDOWN): Add + definitions. + + * include/parse.h (register_mapping, unregister_mapping): Declare. + + * include/s_conf.h (struct nick_host, struct s_map, + GlobalServiceMapList): Define. + + * ircd/Makefile.in: Add m_pseudo.c to IRCD_SRC. Add generated + files to "make depend" dependency list. Update dependencies. + + * ircd/ircd_features.c (HIS_STATS_R): Define feature type and + default value. + + * ircd/ircd_lexer.l (pseudo, prepend): Recognize new tokens. + + * ircd/ircd_parser.y: Support "Pseudo" configuration blocks. + + * ircd/parse.c (msgtab): Add initializer for field "extra" to all + commands. + (msg_tree_insert, msg_tree_remove, register_mapping, + unregister_mapping): New functions. + (parse_client): Implement MFLG_EXTRA extra argument passing. + + * ircd/s_conf.c (GlobalServiceMapList): New variable. + + * ircd/s_err.c (RPL_STATRLINE, ERR_SERVICESDOWN): Add format + strings for new numeric responses. + + * ircd/s_stats.c (stats_mapping): New function. + (statsinfo): Add entry for /stats R and make old /stats r entry + case-sensitive. + +2004-05-09 Michael Poole + + * ircd/ircd_parser.y (parse_error): Convert to being a wrapper for + yyerror() so that configuration errors all go to the same place. + + * ircd/s_conf.c: New variables conf_error and conf_already_read. + conf_error is cleared by read_configuration_file() and set by + yyerror(); conf_already_read is set by read_configuration_file() + and never cleared. Make yyerror() display error to stderr before + conf_already_read is set. Make configuration errors a fatal + condition in init_conf(). + +2004-05-09 Michael Poole + + * ircd/Makefile.in: Pass the source directory as an argument to + version.c.SH so it knows where to find the source files for an + out-of-srcdir build. + + * ircd/version.c.SH: Use that information. + +2004-05-09 Michael Poole + + * Makefile.in: Ensure ${prefix}/include exists, since the adns + install puts files in that directory. (The adns Makefile does + not use configure's ${includedir}.) + +2004-05-09 Michael Poole + + * doc/readme.features: The logic for F:AUTOHIDE was removed, but + not its documentation. Fix that omission. + + * include/ircd_features.h, ircd/ircd_features.c: Remove the unused + definitions for FEATURE_AUTOHIDE. + +2004-05-09 Michael Poole + + * doc/readme.who: Document the support for account matching and + display in the WHO command. + +2004-05-09 Michael Poole + + * ircd/ircd.c (main): Move check_pid() call until after we read + the configuration file so that F:PPATH works correctly. + +2004-05-09 Michael Poole + + * ircd/match.c (match): Use ToLower() instead of tolower() for + character comparisons. + +2004-05-09 Michael Poole + + * ircd/s_user.c (register_user): Initialize "flag" (user's old + modes) passed to send_umode() so that the real set of modes are + sent to the user. + +2004-05-09 Michael Poole + + * ircd/m_server.c (ms_server): Apply +h/+s flags only to the new + server, not to a hub between us and the new server. + + * ircd/ircd_relay.c (relay_directed_message): Check FLAG_SERVICE + on target server rather than FLAG_CHSERV (so that directed + messages work at all). + +2004-05-09 Michael Poole + + * configure.in: Add checks for epoll_* system call family. + + * configure: Regenerate. + + * ircd/engine_epoll.c: New file; forward ported from 2.10.11 + branch. + +2004-05-09 Michael Poole + + * include/ircd_alloc.h: Add definitions for MyRealloc, since they + are needed by kqueue and epoll event engines; kill #if 0'd block. + + * include/memdebug.h: Declare dbg_realloc() helper function. + + * ircd/ircd_alloc.c: Implement DoRealloc() helper function. + + * ircd/memdebug.c: Implement dbg_realloc() helper function. + +2004-05-09 Michael Poole + + * ircd/channel.c (find_no_nickchange_channel): Disallow nick + changes on a moderated channel with neither ops nor voice. + + * ircd/s_err.c: Update ERR_BANNICKCHANGE message to match. + +2004-01-20 Perry Lorier + + * ircd/ircd_parser.y: Fixed parser to work with a more modern bison + +2004-01-21 Gavin Grieve + + * ircd/channel.c, include/channel.h: bring forward the IsUserParting() + code to resolve the multiple part messages bug written by Entrope. + +2003-08-12 Timothy Vogelsang + + * ircd/match.c: (match) rewrote function based on existing + code from the hybrid ircd -- death to goto + +2003-07-07 Bas Steendijk + + * ircd/s_user.c: invalidate ban cache for user on host hiding/account + +2003-07-04 Bas Steendijk + + * include/client.h, ircd/m_userhost.c, ircd/m_userip.c, ircd/m_who.c, + ircd/m_whois.c, ircd/whocmds.c: the same code, for "can user A see user + B is an oper", appeared in a lot of places. made it a define SeeOper. + +2003-07-04 Bas Steendijk + * ircd/s_user.c: umode_str (user modes in N token) internal flags var + was not initialized to the user's flags, returned a string with + random modes set. + +2003-07-01 Bas Steendijk + + * ircd/m_names.c: length counter being incremented one too many + for each nick, resulting names reply messages are about 50 chars + shorter than possible. fixed. + +2003-06-29 Bas Steendijk + + * ircd/channel.c: don't ever send mode changes for local channels to + servers. + +2003-06-27 Bas Steendijk + + * include/channel.h, include/client.h, ircd/s_user.c, ircd/s_err.c: + moved the supported channel/user mode strings of the 004 reply from + s_err.c to the header files where the channels/user modes are + defined, and show or hide +Au based on OPLEVELS setting. + +2003-06-25 Bas Steendijk + + * ircd/m_burst.c: Clear topic set by netrider on burst. + +2003-08-05 Diane Bruce + + * ircd/parse.c: Fixed the typo the fix of the typo created + +2003-08-01 Diane Bruce + + * ircd/parse.c: Fixed typo + +2003-06-22 Diane Bruce + + * ircd/parse.c: Completely rewritten June 2, 2003 - Dianora + +2003-06-22 Bas Steendijk + + * include/ircd_features.h, include/supported.h, ircd/ircd_features.c, + ircd/ircd_features.c, ircu2.10/ircd/m_join.c, doc/example.conf: + Make ability to create local channels a feature which can be disabled. + +2003-06-22 Bas Steendijk + + * include/ircd_features.h, ircd/channel.c, ircd/ircd_features.c, + ircd/m_kick.c, doc/example.conf: Added OPLEVELS feature, which + makes it possible to disable the +Au/oplevels functions. + +2003-06-17 Alex Badea + + * ircd/res_adns.c: included sys/types.h, for non-Linux + headers + +2003-03-06 Kevin L. Mitchell + + * libs/dbprim: database primitives library, including + flexible linked lists, auto-resizing hash tables, and sparse + matrices. Has a test suite for everything but portions of + the sparse matrix routines (I'm lazy; someone help me write + them!). Documentation generated by doxygen--feel free to + critique, suggest phrasing improvements, etc. + +2003-01-22 Kevin L. Mitchell + * libs: put third-party libraries in this subdirectory. + Started by copying adns into it--will fix the rest and remove + the top-level copy later. + +2003-01-14 Andrew Miller + * ircd/m_settime.c: Fixed a minor format string issue. + +2003-01-12 Thomas Helvey + * adns/src/check.c, adns/src/transmit.c, ircd/m_opmode.c, + ircd/motd.c, ircd/s_user.c: Cleanup warnings, fix precedence + bugs in transmit.c and m_opmode.c. + +2003-01-12 Thomas Helvey + * include/class.h, include/ircd_string.h, ircd/class.c, + ircd/gline.c, ircd_string.c: Fix undefined order + of evaluation bug in gline.c, add general purpose hasher for + conf entries. + +2003-01-11 Thomas Helvey + * include/channel.h, include/ircd_alloc.h, ircd/channel.c, + ircd/client.c, ircd/gline.c, ircd/ircd_alloc.c, + ircd/ircd_events.c, ircd/ircd_log.c, ircd/ircd_parser.y, + ircd/ircd_snprintf.c, ircd/listener.c, ircd/m_nick.c, + ircd/m_opmode.c, ircd/m_whois.c, ircd/motd.c, + ircd/s_auth.c, ircd/s_bsd.c, ircd/uping.c: Server compiles + with g++ again, type safety, const correctness fixes, + remove C++ keywords again :/ + +2003-01-11 Thomas Helvey + * ircd/client.c, ircd/ircd_feature.c: Bugfix, the feature + table data was in a different order than the feature data + structure, which resulted in a wild index being used in + feature_bool. The feature_bool function didn't check it's + index before indexing the features array resulting in + a core dump on /oper. + +2003-01-10 Thomas Helvey + * include/client.h, include/res.h, include/s_bsd.h, + ircd/ircd.c, ircd/list.c ircd/m_connect.c, ircd/res_adns.c, + ircd/res_libresolv.c, ircd/s_auth.c, ircd/s_bsd.c, ircd/s_conf.c: + Remove resolver cache wart, change hostent representation, cleanup + resolver clients. + +2003-01-10 Thomas Helvey + * ircd/map.c, ircd/Makefile.in, include/map.h: Remove + HEAD_IN_SAND macros to get server to build, rebuild dependencies. + +2003-01-08 Fredrik Soderblom + * ircd/s_err.c, ircd/s_user.c (hide_hostmask): Simplify + RPL_HOSTHIDDEN and the use of it. + +2003-01-07 Kevin L Mitchell + + * BUGS: removed from distribution + + * ChangeLog.07: moved into doc/history + + * ChangeLog.10: moved into doc/history + + * INSTALL: pulled up from u2.10.11.04 + + * README: pulled up from u2.10.11.04 + + * README.FreeBSD: pulled up from u2.10.11.04 + + * README.Solaris: pulled up from u2.10.11.04 + + * RELEASE.NOTES: add sysctl note from u2.10.11.04 + + * TODO: removed from distribution + + * configure.in: add extra check for res_mkquery; remove + --disable-headinsand since it no longer has any effect; pull up + "Enable" vs. "Disable" changes from u2.10.11.04 + + * doc/readme.asll: pulled up from u2.10.11.04 + + * doc/readme.features: pull up missing documentation, including a + couple of corrections + + * doc/readme.log: correct text to read FACILITY instead of SYSLOG + in the documentation for configuring syslog facility + + * include/channel.h: declare IsInvited() + + * include/handlers.h: do some minor reorderings + + * include/ircd_defs.h: remove deprecated NETWORK and URL_CLIENTS + #define's + + * include/ircd_policy.h: removed from the distribution + + * include/jupe.h: declare jupe_memory_count() + + * include/msgq.h: remove MsgCounts structure + + * include/numeric.h: add a blank line after RPL_STATSQLINE; add + RPL_HOSTHIDDEN + + * include/s_stats.h: include ircd_features.h for definition of the + enum; remove extraneous declarations + + * ircd/Makefile.in: add LDFLAGS to table_gen + + * ircd/engine_poll.c: remove commented-out assertion + + * ircd/ircd.c: include s_stats.h and call stats_init() + + * ircd/ircd_features.c: feature names have to be case-sensitive + because of some of the HIS features + + * ircd/ircd_relay.c: reorder includes + + * ircd/m_account.c: include string.h for strlen() + + * ircd/m_clearmode.c: remove extraneous clean_channelname(); make + sure to refer to chname, not parv[1] + + * ircd/m_create.c: remove the broken code that squits servers that + are >5 minutes fast; fix "badop || CHFL_CHANOP" bug that caused op + desyncs + + * ircd/m_gline.c: if it's a server, force the gline; don't + gline_find() before determining if the oper had the privilege + + * ircd/m_kick.c: kicks by servers should appear to be from the + local server thanks to HIS + + * ircd/m_lusers.c: needs ircd_features.h, not ircd_policy.h + + * ircd/m_map.c: needs ircd_features.h, not ircd_policy.h + + * ircd/m_nick.c: added an assertion and some explanatory comments + pulled up from u2.10.11.04 + + * ircd/m_opmode.c: no longer requiring oper to be on the channel; + search for quarantines before allowing ops + + * ircd/m_privmsg.c: one character typo that probably means nothing + + * ircd/m_settime.c: add back comments I left in the code + + * ircd/m_squit.c: remove protocol_violation() notices + + * ircd/m_userhost.c: return realhost if user is an oper + + * ircd/m_wallvoices.c: only m_wallvoices() should add a + + + * ircd/m_who.c: add handling for the 'a' field + + * ircd/m_whois.c: correct a typo of FEAT_HIS_SERVERNAME for + FEAT_HIS_SERVERINFO + + * ircd/s_bsd.c: close file descriptors 0, 1, and 2; pull up some + ancient bug fixes from the u2.10.11 branch + + * ircd/s_debug.c: include gline.h, jupe.h, motd.h, and s_stats.h; + call motd_memory_count(), gline_memory_count(), and + jupe_memory_count() when reporting memory usage; add back a + comment regarding "DBuf caveats" + + * ircd/s_err.c: add RPL_STATSQLINE, RPL_HOSTHIDDEN, and pull up + change to ERR_NOPRIVILEGES wording + + * ircd/s_misc.c: include ircd_features.h and not ircd_policy.h + + * ircd/s_stats.c: count from 0 and not 1 when initializing the + stats + + * ircd/s_user.c: comment out assertion; remove extraneous + definition of FLAGS_HOST_HIDDEN; add in hikari's "your host is now + hidden" reply; don't detach oper confs unless sptr is not an oper + + * ircd/table_gen.c: pull up change to NTL_CHPFX (removing +); + change channel name character range to be from '\041' (!) to + UCHAR_MAX + + * ircd/whocmds.c: pull up fix to /who idle time from u2.10.11.04 + + * tools/linesync/linesync.conf: pull up from u2.10.11.04 + + * tools/linesync/linesync.sh: pull up from u2.10.11.04 + +2003-01-07 Andrew Miller + * almost everything: Forward ported numerous changes from .11 to .12 + +2002-07-05 Andrew Miller + * ircd/packet.c(connect_dopacket): Pass the job on to server_dopacket + when they become a server. + * ircd/s_bsd.c(read_packet): Check they are now a server *after* the + packet is sent. + * ircd/class.c(make_class): Fixed an assert to be more useful. + +2002-07-05 Andrew Miller + * ircd/packet.c + * ircd/packet.h: (connect_dopacket): Made a dopacket function for + connecting links which sends the messages through the correct message + handler. + * ircd/s_bsd.c(read_packet): Put packets through the correct handler + for connecting links. Properly handle unknown links becoming + connecting or servers. + +2002-07-01 Andrew Miller + * include/ircd_alloc.h (MyFree): Accept NULL pointers to do nothing + with, this is used quite a lot. + * ircd/class.c (make_class): Initialise the ref_count to 1 so that + we don't leak. + * ircd/class.c (add_class): When updating a class, free the old name + first to prevent leakage. + * ircd/class.c (class_delete_marked): Decrement the ref_count for the + class after it is removed from the linked list. + * ircd/ircd_parser.y: Changed a free to MyFree(). + * ircd/ircd_parser.y: Removed a few debugging messages. + +2002-07-01 Andrew Miller + * s_bsd.c (read_packet): Our daily addition to the list of entities to + treat as servers - Connecting servers. + +2002-07-01 Andrew Miller + * doc/debug_memleak_gc.patch, + * include/ircd_ircd_alloc.h, + * include/memdebug.h, + * configure.in, + * ircd/Makefile.in, + * ircd/memdebug.c: added a Boehm's gc based leak detector to find leaks + and notify the operators. + +2002-06-29 Andrew Miller + + * ircd/s_bsd.c (read_packet): don't make handshaking servers go through + the dbufs. + +2002-06-18 Andrew Miller + + * ircd/s_bsd.c (read_packet): don't allow unregistered clients to flood + the server. + +2002-06-18 Alex Badea + + * ircd/m_burst.c (ms_burst): kick local members if the channel + has a larger local TS and it's +i or +k remotely (anti net.ride) + + * ircd/ircd_parser.y: fixed a bug that broke IP-based C:lines + + * ircd/s_err.c: connection classes are now strings (RPL_STATSCLINE) + + * include/s_conf.h: externalized lookup_confhost + + * adns/Makefile.in: compilation-outside-source-tree fix + +2002-06-17 Alex Badea + + * adns/*: added a slightly hacked copy of adns + + * configure.in: added a --disable-adns switch if you want + to use the old libresolv res.c + + * configure: ran autoconf + + * ircd/res_libresolv.c: renamed from res.c + + * ircd/res_adns.c: added adns resolver + +2002-06-17 Alex Badea + + * ircd/ircd_parser.y: fixed 'Connect' block processing so now + you can actually connect to other servers + +2002-06-04 Alex Badea + + * ircd/m_stats.c (report_servers_verbose): oops, fixed it so + it displays all servers, not just local connects + +2002-05-30 Jean-Edouard Babin + + * ircd/m_server.c (mr_server): fixed core bug on insufficient + arguments + +2002-05-26 Jeekay + + * ircd/m_join.c (HasControlChars): fixed unsigned vs signed + +2002-05-26 Jeekay + + * ircd/m_join.c (m_join,HasControlChars): check if a channel + name has any control chars (<=32) in it before allowing a + local user to join. + +2002-21-05 Andrew Miller + * ircd/ircd_relay.c: stop an information leak about the + the network topography from relayed messages. + +2002-04-19 Alex Badea + + * ircd/m_who.c (m_who): disallow non-opers to /who server.name + +2002-04-18 Alex Badea + + * ircd/s_err.c (RPL_STATSILINE): connection classes are now + strings + +2002-04-17 beware + + * m_whois.c (m_whois): disallow remote queries for non-existent + local users when originated by a non-oper + +2002-04-16 Alex Badea + + * ircd/s_user.c (hunt_server_cmd): also send a "no such server" + reply if the servername contains a '*' and it doesn't exist + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + +2002-04-16 beware + + * ircd/m_whois.c: the previous patch broke whois, fixed it + another way + + * ircd/m_admin.c: cleaned up m_admin too while we're here, + hunt_server_cmd can do all the work for us + +2002-04-15 Alex Badea + + * ircd/m_stats.c: added verbose server reporting (/stats v + or /stats V for machine-readable format) (bugzilla bug 52) + + * include/numeric.h: added RPL_STATSVERBOSE 236 + + * ircd/s_err.c: added RPL_STATSVERBOSE + + * ircd/s_stats.c: added help for stats 'v' + +2002-04-15 Alex Badea + + * ircd/class.c (get_client_class): fixed typo which caused + /trace (and perhaps motd) to core + +2002-04-15 beware + + * ircd/m_whois.c: Fixed /whois servermask nomatch bug + where normal users could use the function to discover servers, + also the NOSUCHSERVER check code was missing. + +2002-04-14 Alex Badea + + * ircd/ircd_parser.y: fixed cli_info(&me) not being set + from 'description' conf + +2002-04-13 Stephane Thiell + + * ircd/m_whois.c: removed FindUser() in ms_whois to fix + remote whois relaying. + + * ircd/class.c: removed unused (and duplicated) code + get_client_ping(). + + * include/class.h: removed unused function prototype. + + * config.guess: upgraded with latest + + * config.sub: upgraded with latest + +2002-04-12 Alex Badea + + * ircd-patch: report which files failed the dry run (so the + user may force the patch if the rejects are in less-than-vital + files, such as ChangeLog or documentation) + +2002-04-12 Alex Badea + + * ircd/m_invite.c: don't propagate invites for local channels + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + +2002-04-10 Joseph Bongaarts + + * ircd/ircd.c: The last fix broke autoconnects completely. + Fixed it another way. + +2002-04-09 Brian Cline + + * ircd/ircd.c (try_connections): To avoid problems with infinite event + loops, don't try connecting to servers whose connect frequency is 0. + +2002-04-10 Alex Badea + + * ircd/ircd_parser.y: fixed a "features" block parse bug + + * tools/convert-conf.py: added a configuration file converter + from 2.10.11 to 2.10.12 format + + * ircd-patch: added GPL information to top of file + +2002-04-09 Alex Badea + + * configure.in: added a human-readable report of configured + options at the end of the configure process + + * configure: regenerated with autoconf + +2002-04-08 Gavin Grieve + + * include/supported.h: change CHARSET to CASEMAPPING after + discussions as to what would be the preferred name. + +2002-04-05 Andrew Miller + * ircd/s_conf.c, ircd_parser.y, ircd_lexer.l: Add privilege + specification. + * Fix a minor parser bug that meant rehash didn't always + work correctly. + +2002-04-03 Alex Badea + + * include/channel.h: fix compiler warnings (paratheses around &&) + + * ircd/channel.c (modebuf_extract): fix compiler warnings + (uninitialized variables) + + * ircd/Makefile.in: make ircd properly compile outside the + source tree + +2002-04-03 Alex Badea + + * include/s_user.h: added a sptr parameter to InfoFormatter + function type + + * ircd/m_who.c: don't match IPs for clients which have a hidden host, + except when the inquiring user is an oper + + * ircd/whocmds.c: show the fake IP from FEAT_HIDDEN_IP if the + target has a hidden host, but show real IP to opers + + * ircd/m_userip.c (userip_formatter): add sptr parameter; show the + fake IP from FEAT_HIDDEN_IP if the target has a hidden host, but + show real IP to opers + + * ircd/m_userhost.c (userhost_formatter): add (unused) sptr parameter + + * ircd/s_user.c (send_user_info): pass sptr to the formatting function + + * include/ircd_features.h: new feature FEAT_HIDDEN_IP (stores which + fake IP to show for clients with a hidden host) + + * ircd/ircd_features.c: new feature FEAT_HIDDEN_IP + + * doc/example.conf: default value for FEAT_HIDDEN_IP + + * doc/readme.features: documented FEAT_HIDDEN_IP + +2002-04-03 Andrew Miller + * doc/example.conf: Cleaned up some comments that ended up in + strange places due to problems in the merge process. + * ircd/m_nick.c: Cleaned up ms_nick, and fixed a bug that + probably dates back to Jarkko code. + +2002-04-02 Kevin L Mitchell + + * ircd/m_kill.c: let ms_kill() and mo_kill() seperate the message + from the path before calling do_kill(); add a msg argument to + do_kill() and use it in preference to comment; remove all that old + code that fiddled with the buf and the comment + + * ircd/ircd_log.c (log_write_kill): add a seperate msg argument + + * include/ircd_log.h: add a seperate msg argument to + log_write_kill() + + * ircd/ircd.c: display event engine and MAXCONNECTIONS information + +2002-04-02 Alex Badea + + * ircd-patch: Automatically generate a version string from patches + +2002-04-02 Alex Badea + + * ircd-patch: Test before doing anything dangerous, provide -f to + to it anyway. exit levels for easy scripting. + +2002-04-01 Kevin L Mitchell + + * ircd/channel.c (joinbuf_join): don't add a channel to the list + in the joinbuf unless when we flush it, we empty the list + +2002-04-02 Andrew Miller + * ircd/ircd_parser.y: Added ircd parser, lexer, to replace the + old configuration file format. + * ircd/ircd_lexer.l + * ircd/s_conf.c + * doc/example.conf + +2002-03-23 Bert Faes + + * s_misc.c made /trace reply always show the username + +2002-03-28 Kevin L Mitchell + + * configure.in: use AC_CHECK_FUNCS to define HAVE_* macros; test + for setrlimit, getrusage, and times + + * configure: rerun auto-conf + + * config.h.in: rerun autoheader + +2002-03-27 Kevin L Mitchell + + * ircd/m_burst.c (ms_burst): use MODEBUF_DEST_NOKEY to suppress + sending of the key to the channel + + * ircd/channel.c (modebuf_flush_int): when processing keys, only + include the actual key in the mode sent to the channel if + MODEBUF_DEST_NOKEY is not set + + * include/channel.h: needed more bits for MODEBUF_DEST_*, + especially when adding MODEBUF_DEST_NOKEY to force keys in the + BURST to be reported as "*" to the channel + + * ircd/m_oper.c (m_oper): clear the new oper's sendq so it gets + inherited from the class associated with the O-line + +2002-03-25 Kevin L Mitchell + + * ircd/s_user.c (set_nick_name): invalidate all ban valid caching + when a user changes his nickname so we can catch if he now matches + a ban + +2002-03-20 Reed Loden + * doc/example.conf: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN. + + * doc/readme.features: Added OPER_LIST_CHAN and LOCOP_LIST_CHAN. + +2002-03-20 LordLuke + * ircd/client.c: Add LOCOP_LIST_CHAN feature. + + * ircd/ircd_features.h: Add LOCOP_LIST_CHAN feature. + +2002-03-19 Joseph Bongaarts + + * ircd/m_links.c: Make /links behave like /map for head_in_sand. + cleaned up excess code. + + * ircd/map.c: Added map_dump_links_head_in_sand() Made changes in + map_add() and map_update() for links changes. + + * include/map.h: Added info and prot to struct Map + + * include/ircd_defs.h: Added MAP_CACHE_TIME for length of time + servers are cached in MapList + + * ircd/s_misc.c: changed #ifdef for map_update() + + * ircd/m_server.c: changed #ifdef for map_update() + + * include/ircd_policy.h: added NO_HEAD_IN_SAND for easier removal of + hiding features. + + * configure.in: add --disable-headinsand + + * configure: Ran autoconf + + * ircd/m_stats.c: Fixed a bug in /stats i and made /stats i show + connect limits + + * ircd/s_stats.c: Made /stats i report connect limits + + * ircd/s_err.c: Modified RPL_STATSILINE to use %s instead of + "*" for the password field. + +2002-03-19 LordLuke + + * include/channel.h: Allow opers to view +s channels in /list + + * include/client.h: Add "PRIV_LIST_CHAN" oper privilege + + * include/ircd_features.h: added "LIST_CHAN" feature + + * ircd/channel.c: Allow opers to view +s channels in /list + + * ircd/client.c: Add "PRIV_LIST_CHAN" + + * ircd/ircd_features.c: Add "LIST_CHAN" feature + +2002-03-13 Joseph Bongaarts + + * ircd/m_kill.c: Last of the last of the bug fixes (Thanks Spike). + Must be more careful when forward porting by hand... + +2002-03-13 Carlo Wood + + * include/channel.h: CHFL_CHANNEL_MANAGER, new local + channel flag set when someone creates a channel or joins + using the Apass. IsChannelManager(), SetChannelManager(): + macros to manipulate new channel flag. + channel_modes: Added new argument to avoid calling + find_member_link more often than needed. + + * include/numeric.h: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL, + ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET, + ERR_UPASSNOTSET: new numeric replies. + + * ircd/channel.c: is_level0_op: removed. + member_can_send_to_channel: disallow channel manager + to talk. channel_modes: show upass to level0 ops. + mode_parse_upass: Only the channel manager is allowed + to change the upass. Only allow to set upass when apass + is also set. mode_parse_apass: Don't allow to change the + Apass if the channel is older than 48 hours. Only allow + to remove the apass when upass is not set. Send clear + warnings regarding the importance of apass. + mode_process_clients: Don't change the oplevel of an opped + member in a channel where upass is not set. + + * ircd/destruct_event.c: exec_expired_destruct_events: + Bug fix: send DESTRUCT message when destructing a channel. + + * ircd/m_destruct.c: ms_destruct: Bug fix: use self as + prefix for DESTRUCT message. + + * ircd/m_join.c: m_join: Handle apass and upass. + + * ircd/m_kick.c: m_kick: Don't allow to kick member with + a higher or equal op-level. + + * ircd/m_mode.c: m_mode: Now pass member to channel_modes. + ms_mode: Allow server to do modes on channels with apass + set. + + * ircd/s_err.c: RPL_APASSWARN, ERR_NOTLOWEROPLEVEL, + ERR_NOTMANAGER, ERR_CHANSECURED, ERR_UPASSSET, + ERR_UPASSNOTSET: new numeric replies. + + +2002-03-10 Joseph Bongaarts + + * ircd/m_kill.c: Last of the bug fixes for do_kill() + + * ircd/list.c: Don't remove clients from the linked list + that aren't actually in the list. + +2002-03-08 Carlo Wood + * include/channel.h: Added CHFL_BURST_ALREADY_OPPED + and CHFL_BURST_ALREADY_VOICED. + + * ircd/m_burst.c: Allow BURST outside net-burst + and take into account that users are already joined + to the channel in that case. + + * ircd/m_destruct.c: Implementation of DESTRUCT + handling code. + + * ircd/m_join.c: Set the channel creationtime to + the timestamp of a message when that timestamp is + smaller. +2002-02-27 Reed Loden + * tools/crypter: Updated some variables, added another notice, + added CVS Id tag, and updated Perl location. + + * tools/ringlog.c: Added IRC - Internet Relay Chat, + tools/ringlog.c + + * tools/ringlog.pl: Added IRC - Internet Relay Chat, + tools/ringlog.pl + + * tools/wrapper.c: Added IRC - Internet Relay Chat, + tools/wrapper.c + + * tools/mkpasswd.c: Added CVS Id tag + + * tools/sums: Updated to comply with sums being moved to tools/ + and added CVS Id tag + + * tools/README: Updated location of file and partly rewrote to fit + u2.10.11's Features + + * tools/Makefile.crypt: Updated location of file and added CVS Id + tag + + * acconfig.h: Updated location of file + + * config.h.in: Updated location of file + + * tools/Bounce/bounce.conf: Added CVS Id tag + + * tools/Bounce/Bounce.cpp: Updated location of file + + * tools/Bounce/Bounce.h: Updated location of file + + * tools/hashtoy: Added CVS Id Tag + +2002-02-27 Carlo Wood + + * /ircd/ircd.c: check_pings: First check if a PING was sent at all. + +2002-03-01 Carlo Wood + + * include/channel.h: struct Channel: new attribute destruct_event. + Prototype for destruct_channel(). + + * include/destruct_event.h: new header file for destruct_event.c. + + * ircd/Makefile.in: New source file: destruct_event.c. + + * ircd/channel.c: sub1_from_channel: Don't destruct channel + immedeately but instead schedule it for destruction after + some time when a channel becomes empty (and clear invite + only and limit in that case). + destruct_channel: new function, was previously the destructing + part of sub1_from_channel. + add_user_to_channel: remove destruction request if any. + + * ircd/destruct_event.c: New file. Implementation of functions + schedule_destruct_event_1m, schedule_destruct_event_48h, + remove_destruct_event and exec_expired_destruct_events. + + * ircd/ircd.c: destruct_event_timer: new timer. + main: use destruct_event_timer to call exec_expired_destruct_events + once per minute. + + * ircd/m_endburst.c: ms_end_of_burst: Don't complain about empty + channels. Schedule new empty channels for destruction. + + * ircd/m_join.c: m_join: Destruct just-created channel immedeately. + +2002-03-01 Carlo Wood + * ircd/s_misc.c: exit_client: Only call map_update() + for servers. + +2002-02-28 Carlo Wood + * include/channel.h: New attribute 'oplevel' in struct Membership. + Added defines MAXOPLEVELDIGITS and MAXOPLEVEL. + New macros: OpLevel(member): returns op-level of member and + SetOpLevel(member, value): sets op-level of member. + Prototype of add_user_to_channel: add oplevel to parameters. + Prototype of mode_parse: add member to to parameters. + + * include/numeric.h: added ERR_NOTLOWEROPLEVEL. + + * ircd/s_err.c: idem. + + * ircd/channel.c: Removed unmatched '{' braces from comments + (confuses vi). add_user_to_channel: oplevel is passed to function + and added in the created MemberShip structure. send_channel_modes: + Generate the nick:mode list of the BURST msg in the new style (with + op-levels). DONE_UPASS/DONE_APASS: fixed typo in comment. struct + ParseState: New attribute: member. mode_process_clients: Disallow + deopping someone with an equal or higher op-level, take care of + inheritance of op-level. mode_parse: member is passed to function + and added in the created ParseState structure. joinbuf_join: pass 0 + as oplevel to add_user_to_channel as needed initialization of oplevel + in struct MemberShip. + + * ircd/m_burst.c: ms_burst: Implementation of op-levels in the + decoding of a BURST message and passing on a BURST message. + Renamed default_mode to current_mode. + + * ircd/m_mode.c: m_mode/ms_mode: pass on `member' to mode_parse. + + * ircd/m_opmode.c: ms_opmode/mo_opmode: pass on NULL as member + to mode_parse (causes opped member to get op-level 0). + +2002-02-25 Carlo Wood + * include/channel.h: Added two new strings to struct Mode, + upass and apass, both with maximum length PASSLEN (a new + define in this file). Two new mode defines MODE_UPASS and + MODE_APASS. + + * ircd/channel.c: is_level0_op: Added as dummy function. + channel_modes/modebuf_flush_int/modebuf_extract/mode_parse: + Added support for MODE_APASS (+A) and MODE_UPASS (+u). + mode_parse_upass: New function to parse mode +u. + mode_parse_apass: New function to parse mode +A. + + * ircd/s_err.c: Added 'A' and 'u' to mode list (RPL_MYINFO). + +2002-02-25 Carlo Wood + + * ircd/m_server.c: remove unused variables + +2002-02-25 Joseph Bongaarts + + * ircd/m_map.c: Modified to show a useful output to non-opered + clients when HEAD_IN_SAND_MAP is defined. Servers are added to + the list when first seen (after receiving SERVER) and that list + is sent to clients. Servers are excluded from the list if they are + hubs, services, or have been missing for more than 1 week. + + * ircd/map.c: Created file for map_* functions + + * include/map.h: Created file for map_* functions + + * ircd/m_server.c: Added calls to map_update() + + * ircd/s_misc.c: Added call to map_update() + + * ircd/parse.c: Changed to use m_map() and mo_map() + +2002-02-22 Reed Loden + + * ircd/m_connect.c: Removed an extra : in remote connect message. + +2002-02-19 Joseph Bongaarts + + * ircd/whocmds.c: Local opers should also be able to + see servernames in /who + + * ircd/gline.c: Fix core bug in gline_find() + + * ircd/m_kill.c: Bug fix for HIS_KILLWHO + +2002-02-19 John Buttery + + * ircd/ircd.c: Updated "No such file" error message. + +2002-02-18 Joseph Bongaarts + + * ircd/m_kill.c: Changed m_kill() to do_kill() because its not + a message handler, and some general cleanups and bug fixes. + + * include/ircd_policy.h: Added HEAD_IN_SAND_KILLWHO for hiding + kill source. + +2002-02-16 Tim Vogelsang + + * ircd/m_kill.c: added a new static function, m_kill, which + performs the actual kill. + +2002-02-14 Joseph Bongaarts + + * Added support for LIST STOP + +2002-02-13 Joseph Bongaarts + + * Merged changes from u2_10_11 to main branch. + +2002-02-08 Tim Vogelsang + + * ircd/m_quit.c: don't prefix user quits with "Quit:" unless a + reason is supplied. + +2002-02-06 Kevin L Mitchell + + * ircd/s_auth.c (read_auth_reply): left out an = in an + assertion--shouldn't have had any impact, though + + * ircd/Makefile.in: add a hook for using ringlog; run make depend + + * tools/ringlog.c: for the heck of it, add a comment including + rules for /etc/magic + +2002-02-05 Kevin L Mitchell + + * tools/ringlog.pl: perl script to take output from ringlog and + pass it to addr2line to get function, file, and line number + information + + * tools/ringlog.c: program/object to help in building function + trace information + +2002-02-04 Alex Badea + + * include/ircd_features.h: added new feature MOTD_BANNER + + * ircd/ircd_features.c: added new feature MOTD_BANNER + + * ircd/motd.c (motd_signon): send a one-line banner from + FEAT_MOTD_BANNER if it's not NULL and FEAT_NODEFAULTMOTD + is set + + * doc/example.conf: default value for MOTD_BANNER feature + + * doc/readme.features: documented the MOTD_BANNER feature + +2002-02-04 Kevin L Mitchell + + * ircd/s_debug.c (debug_serveropts): remove deprecated CHROOTDIR + check; added character 'A' to the server options string to + indicate when assertion checking is enabled + +2002-02-03 Kevin L Mitchell + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/engine_kqueue.c (set_or_clear): don't generate an ET_ERROR + event if the errno is EBADF, since the caller probably already + knows about it and just hasn't gotten around to processing it yet + + * ircd/ircd_events.c: set the GEN_ERROR flag if an ET_ERROR event + is generated; don't process socket_events() or socket_state() if + an error occurred; add GEN_ERROR to list of flags in gen_flags() + + * include/ircd_events.h: define new GEN_ERROR flag; add a macro to + clear it + +2002-02-01 Kevin L Mitchell + + * ircd/channel.c: change make_nick_user_{ip,host} to not use a + static buffer--instead, a buffer of the right size (NUH_BUFSIZE or + NUI_BUFSIZE--I confess they're not well-named) is allocated by the + caller + +2002-02-02 Alex Badea + + * include/client.h: added user flag FLAGS_HIDDENHOST + + * include/ircd_features.h: added FEAT_HOST_HIDING and + FEAT_HIDDEN_HOST + + * include/numeric.h: defined numeric 338 (RPL_WHOISACTUALLY) + to report real hostnames and IPs to opers + + * include/s_user.h: exported hide_hostmask() + + * include/send.h: changed sendcmdto_channel_butserv to + sendcmdto_channel_butserv_butone; ditto for + sendcmdto_common_channels + + * include/struct.h: added realhost to struct User + + * include/whowas.h: added realhost to struct Whowas + + * ircd/channel.c: match bans against both real and hidden + hostmasks; moved some calls to use sendcmdto_*_butone + + * ircd/gline.c: match glines agains real host + + * ircd/ircd_features.c: added FEAT_HOST_HIDING and + FEAT_HIDDEN_HOST + + * ircd/m_account.c: call hide_hostmask() for possibly + hiding the user's host + + * ircd/m_burst.c: moved some calls to use sendcmdto_*_butone + + * ircd/m_topic.c: moved some calls to use sendcmdto_*_butone + + * ircd/m_userip.c: report IP 127.0.0.1 if the user has a hidden + host + + * ircd/m_who.c: match real hosts, if the query comes from an oper + + * ircd/m_whois.c: report real hostname and IP to opers + + * ircd/m_whowas.c: report real hostname to opers + + * ircd/s_err.c: added user mode 'x' to the list of supported user + modes in RPL_MYINFO (004); added RPL_WHOISACTUALLY for reporting + real hostnames to opers + + * ircd/s_misc.c: moved some calls to use sendcmdto_*_butone + + * ircd/s_serv.c: send real hostname to servers + + * ircd/s_user.c: send real hostname to servers; added processing + of usermode 'x'; added hide_hostmask() which actually does the work + of hiding a user's host; moved some calls to use sendcmdto_*_butone + + * ircd/send.c: changed sendcmdto_channel_butserv to + sendcmdto_channel_butserv_butone; ditto for + sendcmdto_common_channels + + * ircd/whocmds.c: extra letter 'x' in WHO reply if the user has + it's host hidden + + * ircd/whowas.c: if needed, store a user's real host so we can + report it to opers later + + * doc/readme.features: documented HOST_HIDING and HIDDEN_HOST + features + + * doc/example.conf: default values for HOST_HIDING and + HIDDEN_HOST features + +2002-02-01 Tim Vogelsang + + * ircd/send.c (sendwallto_group_butone): don't sent wallops to + ordinary users + +2002-01-28 Kevin L Mitchell + + * ircd/jupe.c (jupe_activate): remove a bogus assertion + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/s_err.c: added new channel mode 'r' to list of supported + channel modes in RPL_MYINFO (004); migrated RPL_USERIP to use + numeric 340 instead of 307; add ERR_NEEDREGGEDNICK (477) for + informing users why they can't join a +r channel + + * ircd/m_clearmode.c (do_clearmode): add support for MODE_REGONLY + (+r) to do_clearmode(); note that it is *not* being added to the + default clearmode mask! + + * ircd/channel.c: don't allow non-+r users to send messages to +r + channels from off the channel; add support for MODE_REGONLY (+r) + to channel_modes(); don't allow non-+r users to join +r channels + without an invite; add support for MODE_REGONLY to the modebuf_*() + family of functions (changes in modebuf_flush_int(), + modebuf_mode(), and modebuf_extract()); add support for + MODE_REGONLY to mode_parse() + + * include/supported.h (FEATURESVALUES2): added the new channel + mode 'r' to the list of supported channel modes + + * include/numeric.h: move RPL_USERIP to 340 to avoid the 307 + conflict; add ERR_NEEDREGGEDNICK (477) for the new +r channels + + * include/channel.h: remove unused MODE_SENDTS; add new + MODE_REGONLY + + * ircd/s_bsd.c (read_packet): remove call to timer_verify() + + * ircd/list.c: remove calls to timer_verify() from + alloc_connection() and dealloc_connection() + + * ircd/ircd_events.c: turn off timer_verify(); remove calls to it + from timer_run() + +2002-01-27 Kevin L Mitchell + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/ircd_events.c (timer_run): why did I ever use a next + pointer when the algorithm guarantees that the head pointer will + always be the next pointer? + +2002-01-26 Kevin L Mitchell + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/s_bsd.c (read_packet): call timer_verify() after adding the + client process timer to catch any list corruption + + * ircd/list.c: surround alloc_connection() and + dealloc_connection() with calls to timer_verify() + + * ircd/ircd_events.c: add sledgehammer known as timer_verify() to + verify the timer list's structure; call it around timer_run() + +2002-01-22 Kevin L Mitchell + + * ircd/send.c (sendcmdto_common_channels): don't send message to a + channel that the source is a zombie on + +2002-01-13 Kevin L Mitchell + + * ircd/ircd_events.c (timer_enqueue): one more assertion--make + sure a timer has the ACTIVE flag set before enqueueing the timer + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/list.c (dealloc_connection): assert that the process timer + has been removed from the timer queue before dealloc_connection() + is called + +2002-01-12 Kevin L Mitchell + + * ircd/res.c: don't accept T_A when we're looking for T_PTR + + * ircd/channel.c (modebuf_flush_int): nuke the code that would + send a HACK DESYNCH notice on a HACK(2)--it would be far too + chatty + + * ircd/m_away.c (user_set_away): use AWAYLEN instead of TOPICLEN + + * include/supported.h: add AWAYLEN to the list of supported + features + + * include/ircd_defs.h: add AWAYLEN to specify the maximum length + of an away message + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/m_mode.c (m_mode): pass extra parameter to channel_modes() + + * ircd/channel.c: pass a buflen parameter to channel_modes() for + pbuf--we were using sizeof(pbuf), which would always be + sizeof(char*) before; change send_channel_modes() to pass extra + parameter to channel_modes() + + * include/channel.h: pass a buflen parameter to channel_modes() + for pbuf + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/uping.c (uping_start): initialize some timers + + * ircd/s_bsd.c (read_packet): use new t_onqueue() macro to figure + out when we need to re-add the process timer + + * ircd/s_auth.c (make_auth_request): initialize a timer + + * ircd/res.c (init_resolver): initialize some timers + + * ircd/list.c (alloc_connection): initialize the client process + timer + + * ircd/ircd_events.c: add a function, timer_init(), to initialize + a struct Timer; recast timer_add() to catch when adding a marked + timer and not re-enqueue it--but mark it for re-enqueuing; update + timer_del() to turn off the GEN_READD flag and to ignore reference + counts when destroying the timer--we're using GEN_MARKED as an + ersatz referance count; changed timer_run() to work with the new + way of doing things; add GEN_ACTIVE and GEN_READD to gen_flags()'s + map[] + + * ircd/ircd.c: initialize some timers + + * ircd/engine_select.c (engine_loop): initialize a timer + + * ircd/engine_poll.c (engine_loop): initialize a timer + + * ircd/engine_kqueue.c (engine_loop): initialize a timer + + * ircd/engine_devpoll.c (engine_loop): initialize a timer + + * ircd/IPcheck.c (IPcheck_init): initialize a timer + + * include/ircd_events.h: add GEN_READD flag for timers to indicate + that a timer must be readded; add t_onqueue() macro to check to + see if a timer is on the queue (this is a hack, though); added + timer_init() to initialize a struct Timer--we're no longer doing + the initialization in timer_add() + +2002-01-11 Kevin L Mitchell + + * ircd/engine_devpoll.c (engine_loop): relocate an assertion to + prevent a core bug *in* the assertion + + * doc/readme.features: document new POLLS_PER_LOOP feature; change + documentation to reflect that OPER_SET now defaults to FALSE + + * doc/p10.html: documented the new ACCOUNT stuff + + * doc/example.conf: document new POLLS_PER_LOOP default; change + default for OPER_SET + + * RELEASE.NOTES: changed documentation to reflect the fact that + assertions are now enabled by default and do not cause memory + leaks + + * ircd/res.c (make_cache): removed a bogus assertion we probably + never caught because assertions haven't been enabled on production + servers for any length of time before + + * ircd/engine_devpoll.c (engine_loop): ditto for POLLS_PER_DEVPOLL + + * ircd/engine_kqueue.c (engine_loop): stupid me forgot one + instance of POLLS_PER_KQUEUE + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/s_bsd.c (client_timer_callback): only clear the + FREEFLAG_TIMER flag when the timer is being destroyed + + * ircd/ircd_features.c: create a new feature, POLLS_PER_LOOP, and + default it to 200; turn OPER_SET off by default + + * ircd/engine_kqueue.c: dynamically allocate and reallocate the + array of events to obtain from the kernel + + * ircd/engine_devpoll.c: dynamically allocate and reallocate the + array of events to obtain from the kernel + + * include/ircd_features.h: add a new feature for tuning how many + events to get from the kernel, for engines that support that + + * ircd/Makefile.in: re-run make depend to correct dependancies + + * ircd/m_who.c: remove unneeded inclusion of list.h + + * ircd/ircd_events.c: remove unneeded inclusion of list.h + + * ircd/whocmds.c (do_who): hide server name in /who unless + requester is an operator; simplify hop count insertion + + * ircd/s_misc.c (exit_one_client): make sure client's snomask is + cleared + + * ircd/parse.c: use mo_version and mo_admin when opers do /version + or /admin + + * ircd/m_whowas.c (m_whowas): use HEAD_IN_SAND_SERVERNAME instead + of the static string "*.undernet.org" + + * ircd/m_version.c: only let ordinary users get version + information for the server they are on + + * ircd/m_admin.c: only let ordinary users get admin information + for the server they are on + + * ircd/channel.c (client_can_send_to_channel): check is_banned() + before letting the client speak on a channel s/he is not on + + * include/supported.h: add NETWORK to feature list + + * include/handlers.h: declare mo_admin() and mo_version() + +2002-01-10 Kevin L Mitchell + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/s_debug.c (count_memory): conditionalize on MDEBUG instead + of !NDEBUG + + * ircd/m_stats.c: conditionalize /stats M on MDEBUG instead of + !NDEBUG + + * ircd/ircd_alloc.c: conditionalize on MDEBUG instead of on + !NDEBUG + + * ircd/fda.c: conditionalize on MDEBUG instead of on !NDEBUG + + * ircd/Makefile.in: run make depend on chkconf.c as well + + * include/ircd_alloc.h: instead of conditionalizing on !NDEBUG, + conditionalize on MDEBUG + + * include/fda.h: instead of conditionalizing on !NDEBUG, + conditionalize on MDEBUG + + * configure: rebuild configure script + + * configure.in: enable assertion checking by default, since we + have now decoupled memory debugging from the NDEBUG macro + + * ircd/s_user.c (set_nick_name): remove calls to + verify_client_list() + + * ircd/s_misc.c (exit_one_client): remove calls to + verify_client_list() + + * ircd/s_conf.c (rehash): remove calls to verify_client_list() + + * ircd/m_who.c (m_who): remove calls to verify_client_list() + + * ircd/list.c: remove calls to verify_client_list(); keep + verify_client_list() around just in case we ever need it again, + but never compile it in + + * ircd/ircd_events.c (event_execute): remove calls to + verify_client_list() + + * ircd/client.c (client_get_ping): remove calls to + verify_client_list() + + * include/list.h (send_listinfo): remove temporary debugging + function verify_client_list() + + * ircd/uping.c: don't die if the event type is ET_ERROR in socket + callback functions + + * ircd/res.c (res_callback): don't die if the event type is + ET_ERROR + + * ircd/listener.c (accept_connection): don't die if the event type + is ET_ERROR + +2002-01-09 Kevin L Mitchell + + * ircd/s_user.c (set_nick_name): bracket call to + add_client_to_list() with calls to verify_client_list() + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel (again) + + * ircd/list.c (verify_client_list): add a probabilistic loop + detector: for every client added, there is a 2% probability that + it will be used to replace the value of sentinel; if at any time, + sentinel is found again, we know we're in a loop + + * ircd/ircd_events.c (event_execute): add verify_client_list() + calls wrapping event_execute; at the very least, I'll figure out + what event the corruption occurred in + + * ircd/list.c: moved verify_client_list() to try to keep it from + being inlined + + * ircd/Makefile.in (version.c): version.c wasn't dependant on + version.h and patchlevel.h, like it was supposed to be + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/s_auth.c (destroy_auth_request): overload send_reports + argument to also indicate whether or not to call + release_auth_client() and thereby enter the client into the linked + list + + * ircd/engine_devpoll.c (engine_loop): remove bogus assertion + + * include/patchlevel.h (PATCHLEVEL): bump patchlevel + + * ircd/list.c (free_client): verify that destroy_auth_request() + didn't automagically re-add us to the list; we might have to think + about this interaction more carefully, actually + + * ircd/s_auth.c (auth_kill_client): zero the auth pointer before + calling free_client(); otherwise, free_client() will try to free + the auth by calling destroy_auth_request(), which will call + add_client_to_list() + + * ircd/s_misc.c (exit_one_client): liberally sprinkle calls to + verify_client_list() around to catch any corruption that might + occur here + + * ircd/s_conf.c (rehash): liberally sprinkle calls to + verify_client_list() here, since this is about the only routine I + can think of that could cause the "core on kill -HUP" bug + + * ircd/m_who.c: sprinkle calls to verify_client_list() around + liberally, since we've seen crashes here; temporarily include the + otherwise unneeded list.h header + + * ircd/list.c: sprinkle calls to verify_client_list() around quite + liberally; add debugging asserts to list manipulation functions to + catch strange settings for next and prev pointers; define + verify_client_list(), which walks the client list and verifies + that everything is as it's supposed to be + + * ircd/client.c: wrap client_get_ping with calls to + verify_client_list() to see if that's where we're dying + + * include/patchlevel.h (PATCHLEVEL): bump to 03 + + * include/list.h: declare verify_client_list() if DEBUGMODE + enabled; otherwise, define it to be empty + +2002-01-08 Kevin L Mitchell + + * ircd/m_quit.c (m_quit): remove an unused variable + + * include/patchlevel.h (PATCHLEVEL): bump PATCHLEVEL to 2 + + * ircd/s_user.c: when building the user mode to send to the user, + don't include +r; add an extra set of parens to squelch a warning + + * ircd/m_quit.c (m_quit): use exit_client_msg() + + * include/patchlevel.h (PATCHLEVEL): bump patch level, so we can + keep track of who's running what version + + * ircd/m_squit.c (ms_squit): remove debugging calls to + protocol_violation() + + * Makefile.in: change MAKEFILES to IRCD_MAKEFILES to work around a + new gmake "feature" (pull-up from trunk) + + * ircd/m_quit.c (m_quit): prefix user quits with "Quit:" (pull-up + from trunk) + +2002-01-07 Kevin L Mitchell + + * ircd/s_user.c: add FLAGS_ACCOUNT, represented as 'r', to the + list of user modes; process account name as part of user mode in + NICK decoding (set_nick_name()); add account name to usermode when + building the usermode to incorporate in outgoing NICK messages + + * ircd/s_err.c: add RPL_WHOISACCOUNT for reporting what account a + user is logged in to + + * ircd/parse.c: define the new ACCOUNT command, usable only by + servers and ignored by everything else + + * ircd/m_whois.c: report what account name is associated with a + user, if any + + * ircd/m_account.c: implement the ACCOUNT command + + * ircd/Makefile.in: add m_account.c to the list of sources; ran + make depend + + * include/struct.h: add an account field to struct User + + * include/numeric.h: add a reply, RPL_WHOISACCOUNT, for reporting + what username a user is logged in under + + * include/msg.h: add ACCOUNT command and token (AC) + + * include/ircd_defs.h: define ACCOUNTLEN to be 12--this matches + the maximum length of a username for X + + * include/handlers.h: add declaration for ms_account() + + * include/client.h: add FLAGS_ACCOUNT to flag when a user account + name has been set; added FLAGS_ACCOUNT to SEND_UMODES; added + IsAccount() and SetAccount() to manipulate the flag + + * ircd/m_squit.c (ms_squit): if we call FindNServer() on a server + name like "Amsterdam2.NL.EU.undernet.org", we get the struct + Client for the server with numeric "Am", which happens to be + stockholm! To fix this, we look up the full name *first*; if that + doesn't get it, *then* we look up by numeric. + +2001-12-24 Perry Lorier + * ircd/m_server.c: cleanups, maybe this will make the bug easier + to find. + + * ircd/m_stats.c: display maximum number of connects in an I: + +2001-11-22 Perry Lorier + * ircd/m_squit.c: Bug fix in squit + +2001-11-03 Greg Sikorski + * ircd/parse.c, include/handlers.h: Give remote whois the correct + handler. + +2001-11-01 Kevin L Mitchell + + * ircd/send.c: some minor white-space fiddling; recast selector + test in sendwallto_group_butone() to remove a warning regarding + putting & within parentheses + + * ircd/m_create.c (ms_create): use time_t instead of int as a + declaration for rate + + * ircd/ircd_reply.c (protocol_violation): it's supposed to be + WALL_DESYNCH, not CMD_DESYNCH, if I understand things right--no + wonder we weren't seeing any protocol violations! + + * include/send.h: include time.h for time_t; move WALL_* closer to + the function they're used in; some white-space fiddling; add + declaration of sendto_opmask_butone_ratelimited() + + * ircd/m_squit.c (ms_squit): add protocol_violation() calls in the + cases where we ignore a squit, so we aren't taken by surprise, at + least... + + * ircd/m_create.c (ms_create): Display origin server, not origin + user + + * ircd/m_create.c (ms_create): Fix "Timestamp drift" server notice + +2001-10-31 Perry Lorier + * include/m_ping.c: Forward port ping bug + +2001-10-31 Perry Lorier + * include/patchlevel.h: We're beta now + +2001-10-31 Perry Lorier + * ircd/s_user.c: fixed hunt_server + +2001-09-21 Perry Lorier + * ircd/send.c and various: replace sendcmdto_flag_butone with + sendwallto_group_butone + +2001-09-21 Vampire- + * ircd/ircd_string.c: unique_name_vector round II. + +2001-09-21 mbuna + * configure.in: Add support for darwin + +2001-09-21 Perry Lorier + * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out + +2001-09-20 Perry Lorier + + * Pullups from 2.10.10.pl16 + * Added some warnings, and the concept of rate limited snotices + +2001-08-31 Kevin L Mitchell + + * ircd/channel.c: use "%u" to format limit arguments; use + strtoul() to process limit arguments in a /mode command--note: + most clients seem to truncate the integer, probably because + they're using atoi, and perhaps signed ints + +2001-08-17 Kevin L Mitchell + + * ircd/numnicks.c: include stdlib.h for exit() + + * ircd/ircd_log.c: include stdlib.h for exit() + + * ircd/ircd_events.c: include stdlib.h for exit() + + * ircd/s_stats.c: remove description of /stats v, since it's gone + + * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of + /wallops to distinguish wallops from wallusers + + * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't + in the "handshake" or "connecting" states--I think the latter will + never happen, but... + + * doc/Authors: apply delete's Authors patch + + * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on + Braden's version + + * README: rewrite README + +2001-07-31 Kevin L. Mitchell + + * ircd/s_serv.c (server_estab): remove unused variable split + + * ircd/parse.c: add mr_error to the parse table + + * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from + unregistered connections--if IsUserPort() is true, the ERROR is + ignored, otherwise, the message is saved + +2001-07-28 Kevin L. Mitchell + + * ircd/m_kill.c (ms_kill): another minor typo *sigh* + + * ircd/s_user.c (send_supported): oops, minor typo... + + * ircd/s_user.c: implement send_supported() to send two ISUPPORT + messages containing our feature buffers; make register_user() use + send_supported() + + * ircd/s_misc.c (exit_client): make sure not to give away a remote + server in the ERROR message sent to the client; if the killer is a + server, we substitute our name in its place + + * ircd/m_version.c (m_version): use send_supported() to send the + ISUPPORT values to the user + + * ircd/m_nick.c: shave nick collision kills here a bit, too, for + the same reasons as for m_kill.c + + * ircd/m_kill.c: shave kills a bit so that the results look + exactly the same no matter where you are; if we didn't do this, it + would be possible to map the network by looking at the differences + between kills originating under various circumstances + + * include/supported.h: split the features into two, so as to not + bust the parameter count when sending the features list + + * include/s_user.h: declare new send_supported() function to send + the ISUPPORT information + +2001-07-27 Kevin L. Mitchell + + * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent + source-routed spoofing attacks; this is only available under + u2.10.11, so don't even bother, since no one but testers are using + the source base + +2001-07-25 Kevin L. Mitchell + + * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default + + * ircd/s_err.c: put in a . for reporting link version on /trace, + to match what /version does + +2001-07-21 Kevin L. Mitchell + + * ircd/s_misc.c (exit_client): servers don't understand what the + numeric nick ERROR is supposed to mean, so they ignore error + messages, resulting in not knowing why we were rejected; use + sendcmdto_one for servers and sendrawto_one for clients + +2001-07-17 Kevin L. Mitchell + + * ircd/m_burst.c (ms_burst): in the case of a modeless channel and + a nick collide, a bare BURST may be propagated; adjust the + enforced parameter count to accept the bare BURST + +2001-07-12 Kevin L. Mitchell + + * ircd/s_bsd.c: mark a client as having been IP checked + + * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded + second call to SetIPChecked() + +2001-07-11 Kevin L. Mitchell + + * ircd/engine_poll.c: deal with POLLHUP properly (hopefully) + + * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully) + +2001-07-09 Kevin L. Mitchell + + * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd + sections so that if neither is used, the declaration of buf will + not elicit an "unused variable" warning under NetBSD + + * ircd/m_map.c: include string.h to declare strcpy (fix warnings + on alpha) + + * ircd/m_away.c: include string.h to declare strcpy/strlen (fix + warnings on alpha) + + * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix + warnings on alpha) + + * ircd/client.c: include string.h to declare memset (fix warnings + on alpha) + + * ircd/channel.c: remove unused functions next_overlapped_ban, + del_banid, and is_deopped (fix warnings under -O1) + + * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix + warnings on alpha) + +2001-06-29 Kevin L. Mitchell + + * ircd/s_user.c (set_user_mode): clear the snomask if the user + isn't supposed to receive server notices anymore + + * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE + + * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking + installation prefix; default devpoll and kqueue to on (they get + turned off if the required headers aren't present) + + * ircd/whocmds.c (do_who): use ircd_snprintf() instead of + sprintf_irc(); it's a bit hackish, but it'll do for now + + * ircd/support.c: remove unused #include + + * ircd/send.c: remove unused #include + + * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/s_serv.c: remove unused #include + + * ircd/s_misc.c: use ircd_snprintf() and friends instead of + sprintf_irc() and friends + + * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to + ircd/s_err.c, which is the only other file to refer to it + + * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of + sprintf_irc() + + * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of + sprintf_irc() + + * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/res.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf() + instead of sprintf_irc() + + * ircd/Makefile.in: remove sprintf_irc.c from sources list; run + make depend + + * include/ircd_string.h: remove declaration of sprintf_irc() (what + was it doing here anyway?) + + * include/sprintf_irc.h: removed unneeded source file + + * ircd/sprintf_irc.c: removed unneeded source file + + * ircd/s_debug.c (count_memory): remove some dead code + + * ircd/s_auth.c: remove some dead code + + * ircd/res.c (update_list): remove some dead code + + * ircd/m_whowas.c: remove some dead code + + * ircd/m_whois.c: remove some dead code + + * ircd/m_who.c: remove some dead code + + * ircd/m_wallusers.c: remove some dead code + + * ircd/m_wallops.c: remove some dead code + + * ircd/m_wallchops.c: remove some dead code + + * ircd/m_version.c: remove some dead code + + * ircd/m_userip.c: remove some dead code + + * ircd/m_userhost.c: remove some dead code + + * ircd/m_uping.c: remove some dead code + + * ircd/m_trace.c: remove some dead code + + * ircd/m_topic.c: remove some dead code + + * ircd/m_tmpl.c: remove some dead code + + * ircd/m_time.c: remove some dead code + + * ircd/m_squit.c: remove some dead code + + * ircd/m_silence.c: remove some dead code + + * ircd/m_settime.c: remove some dead code + + * ircd/m_set.c: remove some dead code + + * ircd/m_server.c: remove some dead code + + * ircd/m_rpong.c: remove some dead code + + * ircd/m_rping.c: remove some dead code + + * ircd/m_restart.c: remove some dead code + + * ircd/m_reset.c: remove some dead code + + * ircd/m_rehash.c: remove some dead code + + * ircd/m_quit.c: remove some dead code + + * ircd/m_proto.c: remove some dead code + + * ircd/m_privs.c: remove some dead code + + * ircd/m_privmsg.c: remove some dead code + + * ircd/m_pong.c: remove some dead code + + * ircd/m_ping.c: remove some dead code + + * ircd/m_pass.c: remove some dead code + + * ircd/m_part.c: remove some dead code + + * ircd/m_opmode.c: remove some dead code + + * ircd/m_oper.c: remove some dead code + + * ircd/m_notice.c: remove some dead code + + * ircd/m_nick.c: remove some dead code + + * ircd/m_map.c: remove some dead code + + * ircd/m_lusers.c: remove some dead code + + * ircd/m_list.c: remove some dead code + + * ircd/m_links.c: remove some dead code + + * ircd/m_kill.c: remove some dead code + + * ircd/m_kick.c: remove some dead code + + * ircd/m_jupe.c: remove some dead code + + * ircd/m_join.c: remove some dead code + + * ircd/m_ison.c: remove some dead code + + * ircd/m_invite.c: remove some dead code + + * ircd/m_info.c: remove some dead code + + * ircd/m_help.c: remove some dead code + + * ircd/m_gline.c: remove some dead code + + * ircd/m_get.c: remove some dead code + + * ircd/m_error.c: remove some dead code + + * ircd/m_endburst.c: remove some dead code + + * ircd/m_die.c: remove some dead code + + * ircd/m_desynch.c: remove some dead code + + * ircd/m_destruct.c: remove some dead code + + * ircd/m_defaults.c: remove some dead code + + * ircd/m_create.c: remove some dead code, along with an #if 1 + + * ircd/m_cprivmsg.c: remove some dead code + + * ircd/m_connect.c: remove some dead code + + * ircd/m_close.c: remove some dead code + + * ircd/m_clearmode.c: remove some dead code + + * ircd/m_burst.c: remove some dead code + + * ircd/m_away.c: remove some dead code + + * ircd/m_admin.c: remove some dead code + + * ircd/listener.c (accept_connection): remove some dead code + + * ircd/ircd_reply.c (need_more_params): remove some dead code + + * ircd/channel.c (add_banid): remove some dead code + + * include/support.h: remove some dead code + + * include/querycmds.h: remove some dead code + + * doc/readme.chroot: document how to do chroot operation + +2001-06-28 Kevin L. Mitchell + + * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to + force bin directory to be created if necessary prior to + installation; run make depend + + * doc/Makefile.in (install): tune for VPATH installs by cd'ing to + the ${srcdir} + + * Makefile.in: tune to detect Makefile.in changes in + subdirectories and to create installation directory indicated by + ${prefix} + + * ircd/whocmds.c (count_users): routine to count the number of + users matching a given user@host mask + + * ircd/s_err.c: add error messages for ERR_LONGMASK, + ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE + + * ircd/m_gline.c: look for and advance past '!' flag on G-lines + from operators; only set GLINE_OPERFORCE flag if oper has the + PRIV_WIDE_GLINE privilege + + * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the + maximum number of users a G-line can impact before it has to be + forced; OPER_WIDE_GLINE, to allow operators to use ! to force a + wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local + operators to use ! to force a wide G-line to be set + + * ircd/gline.c: make make_gline() be called with separate user and + host arguments, and not call canon_userhost() directly; implement + gline_checkmask() to verify that a host mask is acceptable; move + BADCHAN check up in gline_add(), and check passed-in mask under + certain circumstances for acceptability; fix call to + sendto_opmask_butone() to handle separation of userhost into user + and host in gline_add(); update call to make_gline() + + * ircd/client.c: use FEAT_OPER_WIDE_GLINE and + FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add + PRIV_WIDE_GLINE to privtab[] for client_report_privs() + + * include/whocmds.h (count_users): declare routine to count users + matching a given user@host mask + + * include/numeric.h: added three new error returns: ERR_LONGMASK + -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too + many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask + contains wildcards in the wrong places + + * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT, + FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE + + * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline() + to signal to gline_add() that the operator attempted to force the + G-line to be set + + * include/client.h (PRIV_WIDE_GLINE): new privilege for operators + + * doc/readme.gline: update to document new "!" prefix to a G-line + user@host mask + + * doc/readme.features: document GLINEMAXUSERCOUNT, + OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE + + * doc/example.conf: update to mention new features along with + their defaults + +2001-06-27 Kevin L. Mitchell + + * doc/example.conf: updated example.conf from Braden + + + * include/supported.h: forward-port from pl15 + +2001-06-25 Kevin L. Mitchell + + * ircd/whocmds.c: include ircd_policy.h and implement + HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15 + + * ircd/m_whois.c: forward-port of the idle-time hiding code from + pl15; this also required passing parc into do_whois(), which also + meant passing parc into do_wilds()--*sigh* + + * include/ircd_policy.h: add a couple more HEAD_IN_SAND + #define's--WHOIS_IDLETIME and WHO_HOPCOUNT + +2001-06-22 Kevin L. Mitchell + + * tools/wrapper.c: add a wrapper program that can be used to + adjust file descriptor limits and root directories; program must + be run as root--NOT SETUID!--and given appropriate -u arguments + + * doc/readme.log: documentation of how to configure logging + + * doc/readme.features: documentation of each feature (except for + logging) + +2001-06-21 Kevin L. Mitchell + + * Makefile.in (config): add a deprecation notice with a pointer to + tools/transition + + * tools/transition: shell script to convert old compile-time + options into new compile-time options and appropriate F-lines + + * tools/mkchroot: shell-script to prepare the chroot area by + copying over all the necessary libraries so they can be found + +2001-06-20 Kevin L. Mitchell + + * INSTALL: partial update of INSTALL for u2.10.11 release... + +2001-06-14 Kevin L. Mitchell + + * ircd/table_gen.c (makeTables): finally got tired of the + "overflow in implicit conversion" warning, so just got rid of it + by explicitly casting UCHAR_MAX to a (default) char; diffs show no + differences in the tables generated + +2001-06-11 Kevin L. Mitchell + + * ircd/send.c (sendcmdto_match_butone): don't let the server crash + if a client is in the STAT_CONNECTING status + +2001-06-10 Kevin L. Mitchell + + * ircd/send.c: remove unused vsendcmdto_one(), consolidating it + into sendcmdto_one(); define new sendcmdto_prio_one(), which + places the message into the priority queue + + * ircd/s_user.c (hunt_server_prio_cmd): definition of + hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one() + instead of sendcmdto_one() + + * ircd/m_settime.c: use sendcmdto_prio_one() and + hunt_server_prio_cmd() to send SETTIME + + * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME + + * include/send.h: removed declaration for unused vsendcmdto_one(); + added a declaration for sendcmdto_prio_one() + + * include/s_user.h: declare hunt_server_prio_cmd(), which calls + sendcmdto_prio_one() + + * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be + put in the server's priority queue, too... + + * ircd/ircd.c: don't check LPATH for accessibility at all + +2001-06-08 Kevin L. Mitchell + + * ircd/s_serv.c (server_estab): send a +h flag in our SERVER + command if we're configured as a hub; send individual server flags + in SERVER commands + + * ircd/s_bsd.c (completed_connection): send a +h flag in our + SERVER command if we're configured as a hub + + * ircd/m_server.c: implement parv[7] as a mode-like string; +h + sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE + flag for a server; +hs sets both flags; also modify CMD_SERVER + format string to send the flags + + * include/client.h: define two new flags, FLAGS_HUB and + FLAGS_SERVICE to mark services and hubs as such; define testing + macros, setting macros + + * ircd/s_user.c: remove deprecated struct Gline* argument to + register_user(); remove GLINE rebroadcast; do not send GLINE + acknowledgement parameter to NICK; do not look for GLINE + acknowledgement parameter to NICK while parsing + + * ircd/s_serv.c (server_estab): remove deprecated struct Jupe* + argument to server_estab(); do not send JUPE/GLINE acknowledgement + parameters for SERVER or NICK + + * ircd/m_user.c (m_user): remove deprecated argument to + register_user() + + * ircd/m_server.c: remove deprecated argument to server_estab(); + remove documentation comment regarding JUPE acknowledgement + parameter to SERVER; remove JUPE rebroadcast + + * ircd/m_pong.c (mr_pong): remove deprecated argument to + register_user() + + * ircd/m_nick.c: remove documentation comment regarding GLINE + acknowledgement parameter to NICK + + * ircd/jupe.c: use user's real name in JUPE server notices if + HEAD_IN_SAND_SNOTICES is defined + + * ircd/ircd.c: remove deprecated chroot() code; remove deprecated + setuid code; correct ancient DEBUG vs DEBUGMODE typo + + * ircd/gline.c: use user's real name in GLINE server notices if + HEAD_IN_SAND_SNOTICES is defined + + * ircd/channel.c (modebuf_flush_int): make apparent source be + local server, not oper's server; use user's real name in hack + notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined + + * include/s_user.h: remove struct Gline pre-declaration; remove + deprecated struct Gline argument from register_user() + + * include/s_serv.h: remove struct Jupe pre-declaration; remove + deprecated struct Jupe argument from server_estab() + +2001-06-07 Kevin L. Mitchell + + * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the + changes required to control remote stats + + * ircd/s_numeric.c (do_numeric): rewrite numeric origins if + recipient is not an operator and HEAD_IN_SAND_REWRITE is defined + [forward-port from pl15] + + * ircd/m_whowas.c (m_whowas): report server name only if requester + is an operator [forward-port from pl15] + + * ircd/m_whois.c (do_whois): /whois now correctly reports + my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument + and obtain the report from the user's server [forward-port from + pl15] + + * ircd/m_who.c: add missing include for ircd_policy.h + [forward-port from pl15] + + * ircd/m_version.c (m_version): require oper access for remote + /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_time.c (m_time): require oper access for remote /time if + HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_stats.c: pass extra argument to hunt_stats(); correct + missing semicolon [forward-port from pl15] + + * ircd/m_nick.c (ms_nick): hide the origin of certain collision + kills [forward-port from pl15] + + * ircd/m_motd.c (m_motd): require oper access for remote /motd if + HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_lusers.c (m_lusers): require oper access for remote + /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_burst.c (ms_burst): server-added bans are stored using + local server name, to hide remote server names; modes also are to + originate from the local server [forward-port from pl15] + + * ircd/m_admin.c (m_admin): require oper access for remote /admin + if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/channel.c (add_banid): if a server is adding a ban, use my + server name to hide the remote server's name [forward-port from + pl15] + + * ircd/Makefile.in: ran make depend + + * include/s_stats.h: hunt_stats() has to have an extra argument to + support the forward-port from pl15 + + * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add + HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15] + + * ircd/engine_poll.c (engine_loop): remove bogus assert that I + forgot to check in the events branch + +2001-06-06 Kevin L. Mitchell + + * ircd/res.c (init_resolver): don't start DNS expires with a 0 + relative timeout--if the server starts slow, timeouts could be + messy...there's probably a better solution, but this'll do for now + + * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris + headers very well; include stropts.h; define an os_set_tos() + + * ircd/os_generic.c (os_set_tos): added an os_set_tos() for + os_generic.c + + * ircd/ircd.c: if there are no C-lines, we don't want to have a + timer that expires at the absolute time of 0--it kinda blocks all + the other timers! + + * ircd/engine_devpoll.c: some includes for open(); declare errcode + and codesize in engine_loop() + + * ircd/list.c (free_client): remove bogus check on timer active + flag + + * ircd/s_auth.c: pull out destruction code in + auth_timeout_request() into an externally-visible + destroy_auth_request(); manage cli_auth pointer in client + structure; use it for an extra assertion check + + * ircd/list.c: include s_auth.h for destroy_auth_request(); add + debugging notices to show flow when deallocating + connections/clients; call destroy_auth_request() when free'ing a + client that has an auth outstanding; don't free the connection if + the process timer is unmarked but still active + + * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator + and reset it before calling the event handler for an ET_DESTROY + event + + * include/s_auth.h (destroy_auth_request): declare + destroy_auth_request(), which can be used to destroy an + outstanding auth request if a client socket goes away before the + auth exchange is completed + + * include/ircd_events.h: add an active flag to keep track of + whether or not particular generators are active, for the + convenience of functions using the API + + * include/client.h: add a pointer for auth requests to struct + Connection so we can kill outstanding auth requests if a client + socket closes unexpectedly + + * ircd/s_bsd.c: cli_connect() could become 0 during the course of + the sock or timer callback; take that into account in the assert + + * ircd/list.c: add magic number checking and setting--magic + numbers are zero'd on frees to detect double-frees; add back + setting of cli_from() to 0 to break the back-link from the struct + Connection (duh) + + * ircd/ircd.c: set me's magic number correctly + + * include/client.h: define magic numbers and accessor/verifier + macros + + * ircd/list.c: assert that dealloc_client() is called with + cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling + dealloc_client(); don't mess with cli_from(cptr) + + * ircd/s_bsd.c: only attempt to dealloc a connection if the + associated client has already been destroyed, or at least delinked + +2001-06-05 Kevin L. Mitchell + + * ircd/list.c (free_client): only try to delete the socket when + the fd hasn't already been closed, avoiding a double-free + + * ircd/list.c (free_connection): make sure the client is really + gone before doing away with the connection + + * ircd/s_bsd.c: record that socket has been added in con_freeflag + field; queue a socket_del() as soon as the socket is close()'d; + use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear + FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(), + then dealloc the connection if safe; mark socket as dead when + there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry + to client_timer_callback(); dealloc connection if safe upon + ET_DESTROY event in client_timer_callback() + + * ircd/list.c: use con_freeflag instead of con_timer; only dealloc + the connection if both socket and timer have been destroyed; + destroy both socket and timer explicitly and carefully + + * include/client.h: replace the con_timer field with a + con_freeflag field, to indicate what still needs freeing; define + the freeflags + + * ircd/engine_select.c (engine_loop): duh...sockList[i] could + become 0 + + * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could + become 0 + + * ircd/s_bsd.c: add some extra assertions to try to track down a + corruption problem + + * ircd/engine_select.c (engine_loop): add an extra assert to try + to track down a corruption problem + + * ircd/engine_poll.c (engine_loop): add an extra assert to try to + track down a corruption problem + + * ircd/engine_kqueue.c (engine_loop): add an extra assert to try + to track down a corruption problem + + * ircd/engine_devpoll.c (engine_loop): skip slots that have become + empty during processing; add an extra assert to try to track down + a corruption problem + + * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted + entries + +2001-06-04 Kevin L. Mitchell + + * ircd/s_bsd.c (client_sock_callback): client is no longer + blocked, so we must mark it as unblocked + + * ircd/engine_select.c: add Debug() calls galore; add handling for + SS_NOTSOCK; use a dummy sock variable to keep things from + disappearing on us; correct timeout calculation; update nfds for + efficiency + + * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE); + remove a spurious "if (sock)" which will always be true; update + nfds for efficiency + + * ircd/engine_kqueue.c: add Debug() calls galore; add handling for + SS_NOTSOCK (just in case); correct timeout calculation + + * ircd/engine_devpoll.c: add Debug() calls galore; add handling + for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling + + * include/s_debug.h (DEBUG_ENGINE): add new debugging level; + pretty-indent numbers + + * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK + case--it's not a socket; the check for writability is most likely + not needed, but present for completeness + +2001-05-24 Kevin L. Mitchell + + * ircd/s_bsd.c: add Debug messages; call read_packet() even if the + no newline flag is set; call read_packet() when the timer expires, + regardless of what's in the buffer--read_packet() should be able + to deal properly + + * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE + sent to clients to include the client nickname (duh) + + * ircd/ircd_events.c: don't destroy a timer if it's already marked + for destruction; replace a missing ! in socket_del() + + * ircd/engine_poll.c (engine_loop): reference a temporary variable + so we don't have to worry about sockList[i] going away + + * ircd/s_bsd.c (client_sock_callback): add Debug messages + + * ircd/s_auth.c: add Debug messages all over the place + + * ircd/ircd_events.c: add and edit some Debug messages; add a list + of routines to convert some of the enums and flags from numbers + into human-readable strings for the Debug messages + + * ircd/engine_poll.c: hack some Debug messages to use the new name + conversion routines in ircd_events.c; add an extra assert for a + condition that shouldn't ever happen; apparently recv() can return + EAGAIN when poll() returns readable--I wonder why... + + * include/ircd_events.h: declare some helper routines under + DEBUGMODE + +2001-05-23 Kevin L. Mitchell + + * ircd/s_bsd.c (client_sock_callback): add an extra assertion + check + + * ircd/s_auth.c: add more Debug messages + + * ircd/list.c (make_client): add an extra assertion check + + * ircd/ircd_events.c (socket_events): don't call the engine events + changer if we haven't actually made any changes to the event mask + + * ircd/uping.c: add some Debug messages + + * ircd/s_stats.c: document new /STATS e + + * ircd/s_err.c: add RPL_STATSENGINE to report the engine name + + * ircd/s_bsd.c: remove static client_timer variable; in + read_packet(), if there's still data in the client's recvQ after + parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case + of client_sock_callback to handle destroying the timer properly; + rewrote client_timer_callback from scratch to be called on an + individual client + + * ircd/m_stats.c: add /STATS e to report the engine name + + * ircd/list.c: deal with con_timer field in struct Connection + properly; correct a core-level bug in remove_client_from_list--if + the client is the only one in the list, we try to update + GlobalClientList's cli_prev pointer--not good + + * ircd/ircd.c: remove call to init_client_timer() + + * ircd/engine_poll.c: made Debug messages more uniform by + prepending "poll:" to them all; corrected an off-by-one error that + caused poll_count to be 1 less than the actual count and removed + my work-around; added Debug messages to indicate which socket is + being checked and what the results are + + * ircd/Makefile.in: ran a make depend + + * include/s_bsd.h: remove init_client_timer(), since we're doing + it differently now + + * include/numeric.h (RPL_STATSENGINE): a stats reply to report the + engine name + + * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e + reports for non-opers + + * include/client.h: add con_timer and con_proc fields to struct + Connection and define accessor macros--con_timer marks that + con_proc contains a valid timer, and con_proc is used to pace user + data + + * ircd/s_bsd.c (close_connection): let free_client() destroy the + socket + + * ircd/s_auth.c (start_auth): add a Debug call to indicate when + auth has begun on a client + + * ircd/ircd_events.c: ensure that event_execute() is called with a + non-NULL event; modify event_add() macro to properly zero list + bits; modify gen_dequeue() to not try to clip it out of a list + it's already been clipped out of; change signal socket + initialization to use state SS_NOTSOCK; permit timeout values of + 0 in add_timer(); add many Debug calls; change socket_del() and + timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in + timer_run() instead of GEN_DESTROY so that event_generate() will + pass on the events; remove the switch and replace with a simpler + if-then-else tree in timer_run(); don't allow destroyed sockets to + be destroyed again, nor their states or event masks to be changed + + * ircd/ircd.c: initialize "running" to 1 + + * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug + messages all over the place; fix a counting problem in + engine_add(); turn wait into a signed integer and set it to -1 + only if timer_next() returns 0; adjust wait time to be relative; + don't call gen_ref_dec() if socket disappeared while we were + processing it + + * include/ircd_events.h: the pipe for signals is not a socket, so + we must mark it as such--added SS_NOTSOCK for that special socket; + events won't be generated if GEN_DESTROY is on, so add GEN_MARKED + for the benefit of timer_run() + + * configure.in: add --enable-pedantic and --enable-warnings to + turn on (and off) -Wall -pedantic in CFLAGS + +2001-05-21 Kevin L. Mitchell + + * ircd/s_conf.c: change "s_addr" element accesses to "address" + element accesses + + * include/s_conf.h: on some systems, "s_addr" is a macro; use + "address" instead + +2001-05-18 Kevin L. Mitchell + + * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns + void in this file; add a missing semi-colon; declare errcode, + codesize + + * ircd/uping.c (uping_sender_callback): it's pptr, not uping + + * ircd/s_user.c (register_user): comment out spurious reference to + nextping + + * ircd/s_serv.c (server_estab): comment out spurious reference to + nextping + + * ircd/s_conf.c (read_configuration_file): comment out spurious + reference to nextping and nextconnect + + * ircd/s_bsd.c: comment out some spurious references to formerly + global (now non-existant) variables; correct a couple of typos + + * ircd/s_auth.c: pre-declare some functions referenced in the + callback; correct a typo + + * ircd/res.c (start_resolver): pass errno value of ENFILE + + * ircd/listener.c (accept_connection): you know your API is messed + up when...variables that shouldn't have been global crop up in + other files + + * ircd/list.c (free_client): substitution of == for = + + * ircd/ircd_signal.c: include assert.h for assertion checking; + check ev_data() to find out what signal generated event + + * ircd/ircd_events.c: some references to the variable "timer" + should have been references to the variable "ptr" + + * ircd/engine_select.c: it's struct fd_set, not struct fdset; + ev_timer(ev) is already a timer pointer; declare codesize as a + size_t to correct signedness issue; use timer_next(), not + time_next() + + * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer; + select fd out of struct pollfd in assertion checking; declare + errcode and codesize; use timer_next(), not time_next() + + * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer; + use function timer_next(), not time_next() + + * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer; + use function timer_next(), not time_next() + + * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of + compiled sources; do make depend + + * include/list.h: pre-declare struct Connection + + * include/ircd_events.h (gen_ref_inc): cast to the right structure + name + + * include/s_auth.h: duh; missing */ + +2001-05-10 Kevin L. Mitchell + + * ircd/send.c: update write events status after sending data or + accumulating data to be sent + + * ircd/m_list.c (m_list): update write events status after + canceling a running /list + + * ircd/channel.c (list_next_channels): update write events status + after listing a few channels + + * ircd/s_bsd.c: extensive changes to update to new events model; + remove on_write_unblocked() and the two implementations of + read_message(), which have been deprecated by this change + + * ircd/s_auth.c: set the socket events we're interested in for + clients; simplify some logic that does the connect_nonb followed + by the socket_add + + * ircd/list.c: define free_connection() to free a connection + that's become freeable once the struct Socket has been + deallocated; fix up free_client() to take this new behavior into + account + + * ircd/ircd.c: call init_client_timer() + + * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable + to register connect-in-progress with events system; declare + init_client_timer() (HACK!) to preserve rate-limiting behavior + + * include/list.h: declare new free_connection() + + * include/client.h: add a struct Socket to struct Connection + +2001-05-09 Kevin L. Mitchell + + * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and + SIGTERM into event callbacks; perform the actions in the + callbacks, since they're not called in the context of the signal; + set up the signal callbacks in the event engine + + * ircd/ircd_events.c (signal_callback): we're supposed to look for + a specific signal; don't generate an event if there is no signal + structure for it + + * ircd/ircd.c: nuke nextconnect and nextping and replace them with + connect_timer and ping_timer; massage try_connections() and + check_pings() into timer callbacks that re-add themselves at the + right time; remove ircd.c's "event_loop()"; initialize the event + system and the connect_timer and ping_timer + + * ircd/uping.c: correct a couple more typos + + * ircd/s_auth.c: rework to use new events system + + * ircd/os_solaris.c (os_connect_nonb): update to new interface + + * ircd/os_openbsd.c (os_connect_nonb): update to new interface + + * ircd/os_linux.c (os_connect_nonb): update to new interface + + * ircd/os_generic.c (os_connect_nonb): update to new interface + + * ircd/os_bsd.c (os_connect_nonb): update to new interface + + * include/s_auth.h: remove deprecated members of struct + AuthRequest, replacing them with struct Socket and struct Timer + structures; add flags to indicate when these structures have been + released by the event system; remove the deprecated + timeout_auth_queries() + + * include/ircd_osdep.h (os_connect_nonb): connect could complete + immediately, so change the interface to handle that possibility + + * ircd/uping.c (uping_server): noticed and corrected a typo + + * ircd/listener.c: set up to use ircd_event's struct Socket by + adding an socket_add() call to inetport(), replacing + free_listener() with socket_del() in close_listener(), and + reworking accept_connection to be called as the callback + + * ircd/ircd.c: add a call to IPcheck_init() + + * ircd/IPcheck.c: remove IPcheck_expire(); rework + ip_registry_expire() to be called from a timer; write + IPcheck_init() to set up the expiration timer (hard-coded for a + 60-second expiration time) + + * include/listener.h: add a struct Socket to the struct Listener; + remove accept_connection() + + * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire() + +2001-05-08 Kevin L. Mitchell + + * ircd/ircd_events.c: include config.h; use USE_KQUEUE and + USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H + + * ircd/engine_select.c: include config.h; set FD_SETSIZE to + MAXCONNECTIONS, not IRCD_FD_SETSIZE... + + * ircd/engine_poll.c: include config.h + + * ircd/engine_kqueue.c: include config.h + + * ircd/engine_devpoll.c: include config.h + + * ircd/Makefile.in: include engine sources in compilation and make + depend steps + + * configure.in: add checks for enabling the /dev/poll- and + kqueue-based engines + + * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE + + * ircd/Makefile.in: work in the engine sources + +2001-05-07 Kevin L. Mitchell + + * ircd/m_settime.c: include ircd_snprintf.h + + * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting + parens around a construct that had both || and && + + * ircd/chkconf.c: #include "config.h" to get some important + definitions + + * ircd/Makefile.in: revamp ircd makefile for new build system + + * doc/Makefile.in: revamp doc makefile for new build system + + * config/*: Removed old build system files + + * stamp-h.in: a stamp file + + * install-sh: install-sh for new build system + + * configure.in: configure.in for new build system + + * configure: configure script for new build system (built by + autoconf) + + * config.sub: config.sub for new build system + + * config.h.in: config.h.in for new build system (built by + autoheader) + + * config.guess: config.guess for new build system + + * aclocal.m4: aclocal.m4 for new build system (built by aclocal + 1.4) + + * acinclude.m4: aclocal.m4 macros for new build system + + * acconfig.h: config.h skeleton for new build system + + * Makefile.in: modify for new build system + +2001-05-01 Kevin L. Mitchell + + * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT + + * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT + + * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT + +2001-05-01 Perry Lorier + * doc/iauth.doc: Protocol for iauth server. (from hybrid). + * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock + when you have far far too many sockets in use. + * {include,ircd}/iauth.c: A start on iauth support. + +2001-05-01 Perry Lorier + * ircd/s_err.c: Suggested wording change. + * ircd/s_user.c: Users aren't target limited against +k users. + * ircd/chkconf.c: Made it compile again, who knows if it works, but + now I can at least make install + * various: Cleanups on m_*.c files. + + +2001-04-23 Kevin L. Mitchell + + * ircd/s_misc.c (exit_client): make netsplit server notice say the + right thing + + * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS + change to make Khaled happy... + + * ircd/m_whois.c (do_whois): pull-up of m_whois() fix + (do_whois): duh... + +2001-04-21 Kevin L. Mitchell + + * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's + turned up no more bugs + + * ircd/ircd.c: use /* */ comments instead of // comments--all the + world's not gcc :( + + * ircd/s_conf.c (conf_add_server): use /* */ comments instead of + // comments--all the world's not gcc :( + + * ircd/runmalloc.c: finally garbage-collect unused file + + * include/runmalloc.h: finally garbage-collect unused file + + * ircd/: addition of '#include "config.h"' before + all other includes in most .c files + + * include/: remove includes of config.h, which are + now going into the raw .c files + +2001-04-20 Kevin L. Mitchell + + * ircd/m_whois.c (do_whois): display proper server name if the + user is looking up himself + + * ircd/m_who.c (m_who): disable match by servername or display of + server names by non-opers + + * include/ircd_policy.h: add define for + HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15 + of CFV 165 + +2001-04-18 Kevin L. Mitchell + + * ircd/s_conf.c: keep the $R in memory so we can see it clearly + when we do a /stats k + + * ircd/s_user.c (set_user_mode): pull-up of changes to prevent + users from turning on +s and +g + + * ircd/s_misc.c (exit_client): pull-up of changes to turn off + net.split notice + + * ircd/parse.c: pull-up of changes to disable /trace, /links, and + /map for users + + * ircd/m_whois.c (do_whois): pull-up of server name masking for + /whois + + * ircd/m_user.c (m_user): removal of umode and snomask defaulting + functions, pull-up + + * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff + + * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect() + + * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect() + + * ircd/channel.c (channel_modes): pull-up of channel key display + as * + + * include/ircd_policy.h: pull-up of ircd_policy.h + + * include/client.h: pull-up of Set/ClearServNotice() + + * ircd/gline.c (do_gline): report client name in G-line message + (pull-up) + + * ircd/s_user.c (register_user): pull-up--show IP address in some + server notices dealing only with users; report which connection + class has filled up + + * ircd/s_stats.c (report_deny_list): use conf->flags & + DENY_FLAGS_IP insteaf of conf->ip_kill + + * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP + insteaf of conf->ip_kill + + * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of + K-line by real name + + * include/s_conf.h: use a flags field in struct DenyConf; define + DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for + pull-up of K-line by real name + + * ircd/m_trace.c: pull-up of IP show for user connections + + * doc/example.conf: pull-up of the realname K-line documentation + + * ircd/ircd.c: forward port of pid file advisory locking mechanism + +2001-04-16 Kevin L. Mitchell + + * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to + all servers, rather than to only servers that have +w/+g/whatever + users on them; among other things, this removes that atrocity + known as sentalong[] from this function + + * ircd/m_admin.c: must include ircd.h to declare "me"; must + include hash.h to declare FindUser() + + * ircd/m_wallusers.c: implementation of WALLUSERS + + * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers + + * ircd/m_wallops.c: only send WALLOPS to opers + + * ircd/parse.c: add WALLUSERS command to parser table + + * include/handlers.h: declare wallusers handlers + + * include/msg.h: add WALLUSERS command + + * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with + flag, send only to appropriate opers + +2001-04-13 Kevin L. Mitchell + + * ircd/uping.c: refit to use the new events interface + + * ircd/res.c: refit to use the new events interface + + * ircd/ircd_events.c: create timer_chg(), which permits a + (non-periodic) timer's expire time to be modified; change the + logic in timer_run() so that timers that were re-added while the + event was being processed will not be destroyed prematurely + + * include/uping.h: include the events header, declare some extra + fields in struct UPing, remove timeout value, and define some + flags for marking which cleanup items have yet to be done + + * include/ircd_events.h: add a prototype for timer_chg() to change + the expire time of a running timer + +2001-03-13 Joseph Bongaarts + * ircd/os_openbsd.c: Tweaked the openbsd hack a bit. + +2001-03-07 Joseph Bongaarts + + * config/configure.in: Add check for OpenBSD + + * ircd/os_openbsd.c: Add seperate os dep file for openbsd which + differs from generic BSD, particularly in its handling of + _XOPEN_SOURCE. + +2001-02-12 Kevin L. Mitchell + + * ircd/m_gline.c (ms_gline): propagate a G-line that happened to + have been added by a U-lined server, rather than going through the + activate/deactivate logic; propagate G-line removals by U-lined + servers as well + + * ircd/gline.c: rename propagate_gline() to gline_propagate(); + make gline_propagate() return an int 0 (convenience return); only + update lastmod in gline_activate() and gline_deactivate() if the + current lastmod is non-zero, since 0 lastmod is our flag of a + U-lined server having added a G-line + + * include/gline.h (gline_propagate): exporting the G-line + propagation function + + * ircd/m_list.c (m_list): duh; permit explicit channel name + specification only when /list gets two arguments ("Kev + #wasteland") rather than when /list gets more than two + arguments--nice braino + +2001-01-29 Thomas Helvey + + * ircd/ircd_reply.c (need_more_params): fix bug that allowed + unregistered clients to spam opers with protocol violation + messages. Note: the bugfix may have eliminated some useful + protocol violation messages. + Please send protocol violation messages explicitly from the + functions they are discovered in, you have much better context + for the error there and it helps to document the behavior of the + server. This was also a design bug in that it violated the + "A function should do one thing" heuristic. Patching this one + would have resulted in a continuous spawning of other bugs over + the next 3 years, so I killed it. Check around for stuff this + broke and readd the calls to protocol_violation in the functions + that need to send the message. + +2001-01-29 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban + already existed, then the logic would (attempt to) skip it, but + would not free the ban string; now the ban string is free'd and + the ban count is decremented, releasing the ban for use + + * ircd/s_user.c: make send_umode_out() take a prop argument + instead of testing for the PRIV_PROPAGATE privilege itself; fix + set_umode() to use this new argument, calculating it before + calculating the new privileges for a -o'd user + + * ircd/m_oper.c (m_oper): pass the new prop argument to + send_umode_out() + + * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans + that we're not actually going to add because they already exist; + test that particular bit before adding to the linked list + + * include/s_user.h: add a prop argument to send_umode_out() to + indicate whether or not to propagate the user mode + +2001-01-24 Kevin L. Mitchell + + * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that + it would have written; upper-bound the number to prevent overflows + by proxy; also, tune buffer size given to ircd_vsnprintf() to take + into account the fact that ircd_vsnprintf() already takes the + terminal \0 into account + +2001-01-22 Kevin L. Mitchell + + * ircd/msgq.c: add an incredibly ugly hack to attempt to track + down an apparent buffer overflow; remove msgq_map(), since it's no + longer used anywhere; slight tweaks to prevent off-by-one errors, + but these can't explain the problems we've seen + + * include/msgq.h: remove msgq_map(), since it's no longer used + anywhere + +2001-01-18 Kevin L. Mitchell + + * ircd/s_user.c (set_nick_name): call client_set_privs() after + parsing user modes + +2001-01-17 Kevin L. Mitchell + + * ircd/s_bsd.c (read_message): fix a typo in the select version of + read_message() + + * ircd/whowas.c (whowas_free): MyFree() is a macro that expects + its argument to be an lvalue, which means we can't use + whowas_clean()'s handy-dandy "return ww" feature + + * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops... + +2001-01-16 Kevin L. Mitchell + + * ircd/ircd_events.c (timer_run): it's possible that the timer got + deleted during the callback processing, so don't go to the bother + of requeuing it if the destroy flag is set + + * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE + out of config.h if this is a *BSD; include errno.h (oops); + decrement error count after an hour using a timer; use FD_SETSIZE + constant instead of IRCD_FD_SETSIZE constant; fill in event + processing code + + * ircd/engine_poll.c: include errno.h (oops); decrement error + count after an hour using a timer; fill in event processing code + + * ircd/engine_kqueue.c: include errno.h (oops); decrement error + count after an hour using a timer; assert events filter is either + EVFILT_READ or EVFILT_WRITE; fill in event processing code + + * ircd/engine_devpoll.c: include errno.h (oops); decrement error + count after an hour using a timer; fill in event processing code + +2001-01-15 Kevin L. Mitchell + + * ircd/client.c: fixed feattab; basically, when I changed features + to use small integers specifying bit positions, instead of the + bits themselves, I forgot to update feattab to not | these + privileges together; also fixed a bug in the antiprivs masking + loop in client_set_privs()--last index wouldn't get parsed + +2001-01-11 Kevin L. Mitchell + + * ircd/ircd_events.c: call event_generate() with new data + argument; make it set that field in struct Event; make + socket_add() return the value of the eng_add callback + + * ircd/engine_select.c: make engine_add() return a + successful/unsuccessful status; add bounds-checking outside of an + assert; use accessor macros; use log_write(), not the deprecated + ircd_log(); add an assert to engine_loop() to double-check for + data structure corruption + + * ircd/engine_poll.c: make engine_add() return a + successful/unsuccessful status; add bounds-checking outside of an + assert; use accessor macros; use log_write(), not the deprecated + ircd_log(); add an assert to engine_loop() to double-check for + data structure corruption + + * ircd/engine_kqueue.c: implementation of an engine for kqueue() + + * ircd/engine_devpoll.c: implementation of an engine for /dev/poll + + * include/ircd_events.h: define some accessor macros; add ev_data + to struct Event for certain important data--errno values, for + instance; make EngineAdd callback tell us if it was successful or + not; add extra argument to event_generate(); make socket_add() + return the status from EngineAdd + +2001-01-10 Kevin L. Mitchell + + * ircd/ircd_events.c: pass initializer information about how many + total _filedescriptors_ may be opened at once + + * ircd/ircd.c: use exported "running" instead of unexported + thisServer.running + + * ircd/engine_select.c: implementation of an event engine based on + select() + + * ircd/engine_poll.c: implementation of an event engine based on + poll() + + * include/ircd_events.h: pass the engine initializer an integer + specifing how many _filedescriptors_ may be opened at once + + * include/ircd.h: running has to be exported for the engine_* + event loops + +2001-01-09 Kevin L. Mitchell + + * ircd/ircd_events.c: include some needed headers; add some + comments; make evEngines[] const; bundle sig_sock and sig_fd into + a struct named sigInfo; rework struct evInfo to have a queue of + _generators_, and only when threaded; added a gen_init() function + to centralize generator initialization; fix various compile-time + errors; rework event_add() for new queueing scheme and checked for + compile-time errors; add casts where needed; spell evEngines[] + correctly; make engine_name() return const char* + + * include/ircd_events.h: type EventCallBack depends on struct + Event, so pre-declare it; put _event_ queue into generators, and + only when threaded; give engine data a union to store both ints + and pointers; make engine name a const; fix gen_ref_dec() macro; + make engine_name() return a const char* + + * ircd/ircd_events.c: gen_dequeue() is now exported, so move it + down with the non-static functions; modify event_execute() to use + the new gen_ref_dec() to simplify code; make sure event_generate() + does not generate new events for generators marked for destruction + + * include/ircd_events.h: the engines, at least, may need to modify + reference counts to keep generators from going away while + something still points at them, so add reference counter + manipulators and export gen_dequeue() for them + + * ircd/ircd_events.c: set up the list of engines to try; set up + the signal struct Socket; rename netInfo to evInfo; move static + functions near the beginning of the file; do away with + signal_signal() (since we no longer keep a signal count ourselves) + and call event_generate() directly from signal_callback--also + renamed some functions; allow signal_callback() to read up to + SIGS_PER_SOCK at once from the signal pipe; add event_init() to + initialize the entire event system; add event_loop() to call the + engine's event loop; initialize new struct GenHeader member, + gh_engdata; remove timer_next(); add socket_add() function to add + a socket; add socket_del() to mark a socket for deletion; add + socket_state() to transition a socket between states; add + socket_events() to set what events we're interested in on the + socket; add engine_name() to retrieve event engine's name + + * include/ircd_events.h: add engine data field to struct + GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a + note about states vs s_events; remove signal count; fold union + Generator back into struct Event; remove count members from struct + Generators; redefine engine callbacks to not take a struct + Engine*; add explanatory comments to callback definitions; add + some engine callbacks to handle operations; remove struct Engine + flag member--can detect single flag from eng_signal member; add + event_init(), event_loop(), engine_name(), and the socket_*() + functions; make timer_next() a macro to avoid a function call + +2001-01-08 Kevin L. Mitchell + + * include/ircd_events.h: rename to ircd_events.h, since it handles + events, not just networking stuff; add signal support; more + structural rearrangement + + * ircd/ircd_events.c: rename to ircd_events.c, since it handles + events, not just networking stuff; add signal support; more + structural rearrangement + +2001-01-07 Kevin L. Mitchell + + * ircd/ircd_network.c: implement timer API; add reference counts + appropriately + + * include/ircd_network.h: firm up some pieces of the interface; + split out members everything has into a separate structure; add + reference counts; add timer API + +2001-01-06 Kevin L. Mitchell + + * ircd/ircd_network.c: static data and event manipulation + functions for new event processing system + + * include/ircd_network.h: data structures for new event processing + system + +2001-01-03 Kevin L. Mitchell + + * ircd/whowas.c: Completely re-did the old allocation scheme by + turning it into a linked list, permitting the + NICKNAMEHISTORYLENGTH feature to be changed on the fly + + * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH + feature instead of old #define + + * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an + integer feature with a notify callback (whowas_realloc) + + * ircd/client.c (client_set_privs): second memset was supposed to + be over antiprivs, not privs; thanks, Chris Behrens + for pointing that out... + + * include/whowas.h: new elements for an extra linked list in + struct Whowas; a notify function for feature value changes + + * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH + + * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature + +2001-01-02 Kevin L. Mitchell + + * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER + compile-time option--now in features subsystem + + * ircd/motd.c (motd_init): rework motd_init() to be called as the + notify function for MPATH and RPATH features (should probably + split it up a bit, though...) + + * ircd/m_privs.c (mo_privs): if called with no parameters, return + privs of the caller, rather than an error + + * ircd/m_list.c: pull usage message into its own function; pull + list parameter processing into its own function that does not + modify the contents of the parameter; add list_set_default() to + set the default list parameter (uses the notify hook); rework + m_list() to make use of these functions; removed dead code + + * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since + we have no notify handler + + * ircd/ircd_features.c: add notify callback for notification of + value changes; give mark callback an int return value to indicate + whether or not to call the notify callback; fix up feature macros + for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite + string handling in feature_set() to deal with def_str being a null + pointer; wrote feature_init() to set up all defaults appropriately + + * ircd/ircd.c (main): call feature_init() instead of + feature_mark(), to avoid calling notify functions while setting up + defaults + + * ircd/client.c: updated to deal with new privileges structure + + * ircd/class.c: updated so init_class() can be called should one + of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or + DEFAULTMAXSENDQLENGTH be changed + + * include/ircd_log.h: log_feature_mark() updated to fit with new + API changes + + * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and + feature_init() function (found necessary since adding the notify + stuff and notifying motd.c during start-up...before we defined + RPATH!) + + * include/client.h: move privs around to enable addition of more + bits if necessary; based on the FD_* macros + + * include/channel.h: declare list_set_default (actually located in + m_list.c *blanche*) + + * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now + AVBANLEN*MAXSILES) from features subsystem + + * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to + anything anymore + + * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from + the features subsystem + + * ircd/s_auth.c (start_auth): NODNS migrated to the features + subsystem + + * ircd/random.c: created random_seed_set() function to set seed + value, along with some stuff to make ircrandom() a little more + random--state preserving, xor of time instead of direct usage, + etc.; it's still a pseudo-random number generator, though, and + hopefully I haven't broken the randomness + + * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls + + * ircd/m_join.c: use features interface to retrieve + MAXCHANNELSPERUSER + + * ircd/ircd_features.c: add NODISP flag for super-secret features; + add a whole bunch of new features migrated over from make config + + * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY, + CONNECTTIMEOUT, and TIMESEC + + * ircd/client.c (client_get_ping): use features interface to + retrieve PINGFREQUENCY + + * ircd/class.c: use features interface to retrieve PINGFREQUENCY, + CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH + + * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the + features subsystem, we have to add something explicit + + * ircd/channel.c: use features interface to retrieve + KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER; + note that MAXBANLENGTH is now calculated dynamically from MAXBANS + and AVBANLEN + + * ircd/Makefile.in: run make depend + + * include/supported.h (FEATURESVALUES): update to reference + feature settings + + * include/random.h: add prototype for random_seed_set + + * include/ircd_features.h: add several more features + + * include/channel.h: move MAXBANS and MAXBANLENGTH into feature + subsystem + + * config/config-sh.in: feature-ized some more stuff + + * include/motd.h: some new elements in motd.h for motd.c changes + + * ircd/motd.c: motd_cache() now searches a list of already cached + MOTD files; saves us from having duplicate caches in memory if + there are two identical T-lines for two different sites... + +2001-01-02 Perry Lorier + * ircd/motd.c: don't core if the motd isn't found. Bug found by + Amarande. + +2001-01-02 Perry Lorier + * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic. + * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks + to guppy for noticing, and hektik for providing the fix. + * misc others: Minor cleanups, added more protocol_violations, ripped + out more P09 stuffs, bit more protocol neg stuff. + +2000-12-19 Kevin L. Mitchell + + * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a + space (*sigh* stupid clients...) + + * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through + ircd_features.[ch] + + * ircd/s_err.c: get rid of GODMODE conditionals + + * ircd/s_debug.c (debug_serveropts): switch to using appropriate + calls into the features subsystem for various serveropts + characters + + * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional + + * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem + to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove + NOFLOWCONTROL conditional + + * ircd/s_auth.c: use features subsystem to determine value of + KILL_IPMISMATCH + + * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use + features subsystem to determine the setting of IDLE_FROM_MSG + + * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals + + * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem; + use features subsystem to get motd file names + + * ircd/m_settime.c: get value of RELIABLE_CLOCK from features + subsystem + + * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does + us no good; use features subsystem to figure out if we need to do + HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use + the Debug(()) macro instead; get value of RELIABLE_CLOCK from + features subsystem + + * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem + + * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features + subsystem + + * ircd/m_connect.c: get SERVER_PORT from the features subsystem + + * ircd/ircd_log.c (log_set_file): fix a bug that kept log files + from getting marked if they were already set to something... + + * ircd/ircd_features.c: add a flag to indicates read-only access; + add several new features that used to be compile-time selected + + * ircd/ircd.c: grab pidfile out of feature subsystem; don't check + access to motd files (what the heck?); make sure to initialize the + feature subsystem before trying to write the config file + + * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings; + use feature_bool() to figure out if we're using the FERGUSON + flusher + + * ircd/Makefile.in: MPATH and RPATH are now done differently, so + remove the clause that creates empty files of that name; also ran + make depend + + * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately, + there is no easy way to bounds-check it at present + + * include/querycmds.h: make sure ircd_features.h is included; use + feature_str(FEAT_DOMAINNAME) in calls to match() + + * include/ircd_features.h: many new features that used to be + compile-time selected + + * config/config-sh.in: add * to DOMAINNAME; try also using first + argument to search in /etc/resolv.conf; removed many compile-time + options that now can be configured through the features system + +2000-12-18 Kevin L. Mitchell + + * doc/api/log.txt: how to use the logging API + + * doc/api/features.txt: how to use the features API + + * doc/api/api.txt: how to write API documentation + + * include/ircd_features.h: rearranged a couple of features for + neatness purposes + + * ircd/ircd_features.c: cleaned up the macros some; rearranged + some code to all go into the switch; rearranged a couple of + features for neatness purposes + +2000-12-16 Greg Sikorski + * ircd/os_bsd.c: Added os_set_tos for BSD users. + +2000-12-16 Kevin L. Mitchell + + * ircd/ircd_features.c: Isomer almost got it right; you need to + use F_I(), since it's an integer value, not a boolean value. The + asserts in feature_int would catch you out... Also made the F_* + macros take flags + + * ircd/s_err.c: define RPL_PRIVS reply + + * ircd/parse.c: put new PRIVS command into command table + + * ircd/m_privs.c (mo_privs): message handler to report operator + privileges + + * ircd/ircd_features.c: declare new features OPER_SET and + LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and + ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE + + * ircd/client.c: simplify client_set_privs() with a table that + defines what features to test for; add new client_report_privs() + + * ircd/Makefile.in: compile new m_privs.c; run make depend + + * include/numeric.h (RPL_PRIVS): new reply numeric for displaying + an operator's privileges + + * include/msg.h: define new command: PRIVS + + * include/ircd_features.h: create new features OPER_SET and + LOCOP_SET for controlling access to /set + + * include/handlers.h (mo_privs): declare message handler for + reporting oper privileges + + * include/client.h (client_report_privs): declare function to + report what privileges an oper has + + * ircd/m_whois.c (do_whois): fix a bug that caused /whois to + report that a user is an oper if the oper doing the /whois had + PRIV_SEE_OPERS + +2000-12-17 Isomer + * ircd/listener.c: added support for TOS twiddling as a 'feature'. + +2000-12-17 Isomer + * ircd/os_linux.c: add TOS stuffs + + * ircd/listener.c: add TOS stuffs + +2000-12-16 Kevin L. Mitchell + + * ircd/whocmds.c (do_who): use HasPriv to determine whether or not + to indicate a user is an oper + + * ircd/s_user.c: clear privileges setting when deopping; don't + propagate +o unless user has PRIV_PROPAGATE privilege + + * ircd/s_debug.c (debug_serveropts): created debug_serveropts() + function and replaced how the server option string is generated + + * ircd/parse.c: remove conditional on CONFIG_OPERCMDS + + * ircd/m_whois.c (do_whois): use HasPriv to determine whether or + not to indicate the user is an operator + + * ircd/m_who.c: use HasPriv to determine whether or not a user + should be displayed in the list of opers + + * ircd/m_version.c: call debug_serveropts() to get server option + string + + * ircd/m_userip.c (userip_formatter): use HasPriv to determine + whether or not to show oper status + + * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine + whether or not to show oper status + + * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional + checks with HasPriv check; remove dead code + + * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional + checks with HasPriv check + + * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions; + use feature_bool to check if disabled + + * ircd/m_oper.c (m_oper): set oper priviliges + + * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv + check + + * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we + can kill + + * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv + check + + * ircd/m_jupe.c (mo_jupe): rework permissions checking structure; + use feature_bool to check if disabled + + * ircd/m_join.c (m_join): remove BADCHAN conditional; replace + #ifdef conditional with a HasPriv check + + * ircd/m_gline.c (mo_gline): rework permissions checking + structure; use feature_bool to check if any part is disabled + + * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv + check; remove dead code + + * ircd/m_clearmode.c: use feature_bool() to detect if we're + disabled; use HasPriv to figure out what we're permitted to do; + only allow clearmode on moded channels + + * ircd/ircd_features.c: define various features; use HasPriv to + verify permissions to set/reset + + * ircd/gline.c (gline_add): use HasPriv instead of #ifdef + conditionals + + * ircd/client.c (client_set_privs): function to set an oper's + privileges + + * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals + + * include/whocmds.h: deconditionalize several macros and + substitute appropriate calls to HasPriv() + + * include/s_debug.h: get rid of global serveropts[]; define new + function debug_serveropts() to build that string on the fly + + * include/ircd_features.h: define some features + + * include/client.h: add privs member to struct Connection; define + various priviledges + + * include/channel.h: no longer using IsOperOnLocalChannel; remove + conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES + + * doc/Configure.help: remove help information for deprecated + options + + * config/config-sh.in: remove certain deprecated options having to + do with what opers can and cannot do--first stage in moving + compile-time constants into the .conf + +2000-12-16 Isomer + * ircd/parse.c: detect if the prefix is missing and try and recover + instead of coring. + +2000-12-15 Kevin L. Mitchell + + * ircd/ircd_log.c: found and fixed some bugs in the debug logging + code that would sometimes result in the log file not being + reopened--which meant that a user could connect and get the + logging output--oops + + * ircd/Makefile.in: run make depend... + + * ircd/s_stats.c: get rid of report_feature_list() + + * ircd/s_err.c: add the 'bad value' error message, shift error + messages over somewhat + + * ircd/s_debug.c (debug_init): call log_debug_init with the + use_tty flag + + * ircd/s_conf.c (read_configuration_file): unmark features before + reading the config file, then reset unmarked features after + reading the config file + + * ircd/m_stats.c: use feature_report() instead of + report_feature_list() + + * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add + special 'mark' flags and use them; add the stuff needed by the + features API + + * ircd/ircd_features.c: rework the features API and add gobs of + comments to try to explain what some of these complex functions + are actually doing + + * include/s_stats.h: get rid of report_feature_list(); use + feature_report() instead + + * include/numeric.h: added a new error message and shifted old + values over some--this is, after all, an alpha + + * include/ircd_log.h: log_debug_init now takes an integer to tell + it if it should be using the tty; added a couple of functions + required by the features API + + * include/ircd_features.h: add an enum and some more functions to + flesh out the feature API--it should now be possible to put all + those compile-time constants in the config file! + + * ircd/send.c: got the direction of the assert incorrect... + + * ircd/send.c: implement the efficiency of flush_connections by + creating a linked list of struct Connection's with queued data; + also get rid of flush_sendq_except and make sure to yank + connections out of the list when their sendQs become empty (notice + the assertion in flush_connections!) + + * ircd/s_bsd.c (close_connection): must yank the Connection out of + the sendq list + + * ircd/list.c (dealloc_connection): must yank the Connection out + of the sendq list + + * ircd/dbuf.c (dbuf_put): call flush_connections instead of the + deprecated flush_sendq_except + + * ircd/client.c: define a couple new helper functions for sendq + threading--this will make the flush_connections function in send.c + considerably more efficient by creating a linked list of + Connections that have queued data to send + + * include/send.h: remove flush_sendq_except, as it's not used + anymore + + * include/client.h: declare a couple new helper functions for the + sendq threading system + +2000-12-14 Kevin L. Mitchell + + * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON + parse all arguments + + * ircd/s_debug.c (count_memory): modify to report for clients and + connections, not local clients and remote clients + + * ircd/list.c: fiddle with the client-fiddling functions to take + into account the divorce of struct Connection from struct Client + + * ircd/ircd.c: define a struct Connection for me, initialize it, + and link it into the right place (ewww, globals!) + + * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split + struct Client into struct Client and struct Connection; redefine + local-portion accessor macros to go through struct Client to the + struct Connection; define struct Connection accessor macros + +2000-12-13 Kevin L. Mitchell + + * ircd/whowas.c: missed a couple of accesses to a struct Client + + * ircd/uping.c: missed a couple of accesses to a struct Client + + * ircd/send.c: missed a couple of accesses to a struct Client + + * ircd/s_user.c: missed a couple of accesses to a struct Client + + * ircd/s_misc.c: missed a couple of accesses to a struct Client + + * ircd/s_conf.c: missed a couple of accesses to a struct Client + + * ircd/s_bsd.c: missed a couple of accesses to a struct Client + + * ircd/s_auth.c: missed a couple of accesses to a struct Client + + * ircd/res.c: missed a couple of accesses to a struct Client + + * ircd/parse.c: missed a couple of accesses to a struct Client + + * ircd/m_whois.c: use new accessor macros for struct Client + + * ircd/m_who.c: use new accessor macros for struct Client + + * ircd/m_wallchops.c: use new accessor macros for struct Client + + * ircd/m_version.c: use new accessor macros for struct Client + + * ircd/m_userip.c: use new accessor macros for struct Client + + * ircd/m_userhost.c: use new accessor macros for struct Client + + * ircd/m_user.c: use new accessor macros for struct Client + + * ircd/m_uping.c: use new accessor macros for struct Client + + * ircd/m_trace.c: use new accessor macros for struct Client + + * ircd/m_topic.c: use new accessor macros for struct Client + + * ircd/m_time.c: use new accessor macros for struct Client + + * ircd/m_stats.c: use new accessor macros for struct Client + + * ircd/m_squit.c: use new accessor macros for struct Client + + * ircd/m_silence.c: use new accessor macros for struct Client + + * ircd/m_server.c: use new accessor macros for struct Client; + remove dead code + + * ircd/m_rpong.c: use new accessor macros for struct Client + + * ircd/m_rping.c: use new accessor macros for struct Client + + * ircd/m_quit.c: use new accessor macros for struct Client + + * ircd/m_privmsg.c: use new accessor macros for struct Client + + * ircd/m_pong.c: use new accessor macros for struct Client; remove + dead code + + * ircd/m_ping.c: use new accessor macros for struct Client + + * ircd/m_pass.c: use new accessor macros for struct Client + + * ircd/m_part.c: use new accessor macros for struct Client + + * ircd/m_oper.c: use new accessor macros for struct Client + + * ircd/m_notice.c: use new accessor macros for struct Client + + * ircd/m_nick.c: use new accessor macros for struct Client + + * ircd/m_names.c: use new accessor macros for struct Client + + * ircd/m_mode.c: use new accessor macros for struct Client + + * ircd/m_map.c: use new accessor macros for struct Client + + * ircd/m_list.c: use new accessor macros for struct Client + + * ircd/m_links.c: use new accessor macros for struct Client; + remove some dead code + + * ircd/m_kill.c: use new accessor macros for struct Client; remove + some dead code + + * ircd/m_kick.c: use new accessor macros for struct Client + + * ircd/m_join.c: use new accessor macros for struct Client; remove + some dead code + + * ircd/m_ison.c: use new accessor macros for struct Client + + * ircd/m_invite.c: use new accessor macros for struct Client + + * ircd/m_info.c: use new accessor macros for struct Client + + * ircd/m_gline.c: use new accessor macros for struct Client + + * ircd/m_error.c: use new accessor macros for struct Client + + * ircd/m_create.c: use new accessor macros for struct Client + + * ircd/m_connect.c: use new accessor macros for struct Client; + removed some dead code + + * ircd/m_burst.c: use new accessor macros for struct Client + + * ircd/m_away.c: use new accessor macros for struct Client + + * ircd/m_admin.c: use new accessor macros for struct Client + + * ircd/hash.c: missed a couple of accesses to a struct Client + + * ircd/gline.c: missed a couple of accesses to a struct Client + + * ircd/crule.c: missed a couple of accesses to a struct Client + + * ircd/class.c: missed an access to a struct Client + + * ircd/channel.c: missed a couple of accesses to a struct Client + + * ircd/IPcheck.c: missed an access to a struct Client + + * include/querycmds.h: fix a couple of stats macros to use + structure accessor macros + + * include/client.h: change structure member names to highlight any + places in the code I've missed + +2000-12-12 Kevin L. Mitchell + + * ircd/whowas.c: use new struct Client accessor macros + + * ircd/whocmds.c: use new struct Client accessor macros + + * ircd/send.c: use new struct Client accessor macros + + * ircd/s_user.c: use new struct Client accessor macros; removed + some dead code + + * ircd/s_serv.c: use new struct Client accessor macros; removed + some dead code + + * ircd/s_numeric.c: use new struct Client accessor macros + + * ircd/s_misc.c: use new struct Client accessor macros + + * ircd/s_debug.c: use new struct Client accessor macros + + * ircd/s_conf.c: use new struct Client accessor macros + + * ircd/s_bsd.c: use new struct Client accessor macros + + * ircd/s_auth.c: use new struct Client accessor macros + + * ircd/parse.c: use new struct Client accessor macros + + * ircd/packet.c: use new struct Client accessor macros + + * ircd/numnicks.c: use new struct Client accessor macros + + * ircd/motd.c: use new struct Client accessor macros + + * ircd/listener.c: use new struct Client accessor macros + + * ircd/list.c: use new struct Client accessor macros + + * ircd/jupe.c: use new struct Client accessor macros + + * ircd/ircd_snprintf.c: use new struct Client accessor macros + + * ircd/ircd_reply.c: use new struct Client accessor macros + + * ircd/ircd_relay.c: use new struct Client accessor macros + + * ircd/ircd.c: use new struct Client accessor macros + + * ircd/gline.c: catch some instances of me. I missed + previously + + * ircd/client.c: use cli_ instead of con_ + + * ircd/class.c: use cli_ instead of con_ + + * ircd/channel.c: use cli_ instead of con_ + + * ircd/IPcheck.c: use cli_ instead of con_; catch some instances + of me. I missed previously + + * include/client.h: use cli_ instead of con_...seemed like a good + idea at the time *shrug* + +2000-12-11 Kevin L. Mitchell + + * ircd/hash.c: use struct Client accessor macros + + * ircd/gline.c: use struct Client accessor macros + + * ircd/crule.c: use struct Client accessor macros + + * ircd/client.c: use struct Client accessor macros; remove some + dead code + + * ircd/class.c: use struct Client accessor macros + + * ircd/channel.c: use struct Client accessor macros; remove some + dead code + + * ircd/IPcheck.c: use struct Client accessor macros + + * include/numnicks.h: use struct Client accessor macros + + * include/client.h: first step to divorcing struct Client and + struct Connection--define accessor macros and use them + + * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the + uplink would remove them. This is because the removal protocol + message wasn't being sent to the uplinks. This is fixed by fixing + propagate_gline() to send the proper number of arguments depending + on whether or not we're adding or deleting the Uworld gline, and + by having gline_deactivate() make sure to turn off the active bit + and call propagate_gline() if it's a Uworld gline + +2000-12-10 Kevin L. Mitchell + + * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case + + * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined + anywhere intelligent... + +2000-12-09 Kevin L. Mitchell + + * ircd/send.c (send_queued): call deliver_it with appropriate + arguments + + * ircd/s_serv.c: reorder a couple of headers--cosmetic + + * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct + MsgQ + + * ircd/os_solaris.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_linux.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_generic.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with + appropriate iovec + + * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up + exactly how much we're trying to write out to the fd + + * include/s_bsd.h: make deliver_it take a struct MsgQ + + * include/msgq.h: add a len_p argument to msgq_mapiov to help + detect short writes that indicate possible socket blocking + + * include/ircd_osdep.h: declare os_sendv_nonb() + + * ircd/channel.c (modebuf_mode): don't add empty modes... + +2000-12-08 Kevin L. Mitchell + + * include/send.h: add prio argument to send_buffer to select + between normal and priority queues + + * ircd/s_user.c (send_user_info): add prio argument to send_buffer + call + + * ircd/m_ison.c (m_ison): add prio argument to send_buffer call + + * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer + call + + * ircd/channel.c (send_channel_modes): add prio argument to + send_buffer call + + * ircd/send.c (send_buffer): add a prio argument to select the + priority queue; update send.c functions to use it + + * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and + msgq_add; add a prio argument to msgq_add to select the priority + queue + + * include/msgq.h: remove msgq_prio; add a prio argument to + msgq_add + + * ircd/send.c: remove sendbuf; remove GODMODE code; switch to + using msgq functions instead of dbuf functions; remove old, dead + sendto_* functions; redo send_buffer to take a struct MsgBuf; + rework sendcmdto_* functions to make use of the new struct MsgBuf + + * ircd/s_user.c: remove hunt_server; restructure send_user_info to + make appropriate use of struct MsgBuf + + * ircd/s_debug.c (count_memory): count memory used by the MsgQ + system and report it + + * ircd/s_conf.c (read_configuration_file): use + sendto_opmask_butone instead of the now dead sendto_op_mask + + * ircd/s_bsd.c: switch to using appropriate MsgQLength and other + calls on sendQ + + * ircd/parse.c (parse_server): get rid of a piece of GODMODE code + + * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in + msgq_clean + + * ircd/m_version.c: fix spelling in comments marking dead code + + * ircd/m_userip.c (userip_formatter): restructure to make use of + struct MsgBuf + + * ircd/m_userhost.c (userhost_formatter): restructure to make use + of struct MsgBuf + + * ircd/m_stats.c: use MsgQLength on a sendQ + + * ircd/m_settime.c: use MsgQLength instead of DBufLength on a + sendQ; mark a piece of dead code + + * ircd/m_names.c: use send_reply instead of sendto_one + + * ircd/m_mode.c: use new mode; remove old dead code + + * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf + + * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old + dead code + + * ircd/listener.c (accept_connection): use sendto_opmask_butone + instead of sendto_op_mask + + * ircd/list.c (free_client): use MsgQClear to clear sendQ + + * ircd/ircd_reply.c: remove send_error_to_client; restructure + send_reply to make use of struct MsgBuf + + * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except, + since its no longer used (at least currently) + + * ircd/channel.c: restructure send_channel_modes to make use of + struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode, + and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE + + * ircd/Makefile.in: add msgq.c to list of sources; run make depend + + * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one + + * include/send.h: send_buffer now takes a struct MsgBuf * instead + of a char *; flush_sendq_except now takes no arguments, as sendq + flushing currently only happens in dbuf.h and sendQ is a struct + MsgQ; remove prototypes for a lot of old sendto_* functions that + aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is + no longer needed, and the latter is identical to BUFSIZE in + ircd_defs.h + + * include/s_user.h: make InfoFormatter take a struct MsgBuf* + instead of a char *; also make it return void, instead of char * + + * include/msgq.h: add msgq_append and msgq_bufleft functions + + * include/client.h: use a struct MsgQ instead of a struct DBuf for + sendq + + * doc/Configure.help: Remove help for compile-time options that + have gone away + + * config/config-sh.in: remove CONFIG_NEWMODE + + * ircd/m_server.c (mr_server): don't send server IPs in any server + notices + + * ircd/msgq.c (msgq_vmake): add \r\n to messages + +2000-12-07 Kevin L. Mitchell + + * include/msgq.h: declare the MsgQ API + + * ircd/msgq.c: implementation of new MsgQ system + +2000-12-06 Kevin L. Mitchell + + * ircd/ircd_features.c: #include was supposed to be for + ircd_features.h, not features.h--missed when I had to do a + rename because of namespace collision + +2000-12-05 Greg Sikorski + * ircd/m_topic.c: Added missing braces that caused all remote + topics to be ignored. + +2000-12-04 Kevin L. Mitchell + + * ircd/m_create.c: I'm tired of the exit_client warning :) + (ms_create): discovered that exit_client() was being called with + too few arguments + + * ircd/s_misc.c (exit_client): remove all dependance on + FNAME_USERLOG, since that's now gone; log only to LS_USER + + * ircd/s_debug.c: USE_SYSLOG no longer means anything + + * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already + log to LS_OPER + + * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL + + * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG + + * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve + the same purpose as LS_USER and LS_OPER + + * config/config-sh.in: remove no longer relevant log config + variables + + * ircd/uping.c (uping_init): use log_write instead of ircd_log + + * ircd/s_misc.c (exit_client): use log_write instead of ircd_log + + * ircd/s_conf.c: use log_write instead of ircd_log + + * ircd/s_bsd.c (report_error): use log_write instead of ircd_log + + * ircd/s_auth.c (timeout_auth_queries): use log_write instead of + ircd_log + + * ircd/res.c (send_res_msg): use log_write instead of ircd_log + + * ircd/m_who.c: use log_write instead of write_log; no longer + conditionalize on WPATH; mark dead ircd_log calls + + * ircd/m_uping.c: mark dead ircd_log call + + * ircd/m_server.c (mr_server): use log_write instead of ircd_log + + * ircd/m_restart.c: use log_write instead of ircd_log; mark dead + ircd_log calls + + * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log + + * ircd/m_oper.c: use log_write instead of ircd_log; no longer + conditionalize on FNAME_OPERLOG; mark dead ircd_log calls + + * ircd/m_kill.c: mark dead ircd_log calls + + * ircd/m_connect.c: use log_write instead of ircd_log; mark dead + ircd_log + + * ircd/m_clearmode.c: use log_write instead of write_log; no + longer conditionalize on OPATH + + * ircd/jupe.c: use log_write instead of write_log; no longer + conditionalize on JPATH + + * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat + function; fix a couple of bugs + + * ircd/ircd_alloc.c: fixed a comment + + * ircd/ircd.c: use log_write instead of ircd_log; fold server + notice generation in a couple of cases + + * ircd/gline.c: use log_write instead of write_log; no longer + conditionalize on GPATH + + * ircd/channel.c (modebuf_flush_int): use log_write instead of + write_log; no longer conditionalize on OPATH + + * ircd/Makefile.in: run make depend, since dependencies have + changed + + * doc/example.conf: add system USER to documentation + + * include/ircd_log.h: add system USER; remove old ircd_log() + declarations + +2000-12-04 Isomer + * ircd/m_names.c: Add NAMES_EON to do_names to say add a + 'end_of_names' reply when done. + * ircd/m_join.c: use NAMES_EON as mentioned above + +2000-12-01 net + + * ircd/motd.c: add a freelist for struct Motds + +2000-11-30 Kevin L. Mitchell + + * ircd/s_stats.c (report_feature_list): report features--only + local opers can see logging configuration, since it doesn't really + mean anything to users + + * ircd/s_err.c: add reply messages for new feature subsystem + + * ircd/s_conf.c: add F lines to .conf + + * ircd/parse.c: add the message descriptions for /set, /reset, and + /get + + * ircd/m_stats.c: add /stats f + + * ircd/m_set.c (mo_set): implement /set + + * ircd/m_reset.c (mo_reset): implement /reset + + * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l + reopens log files (for log file rotation) + + * ircd/m_get.c (mo_get): implement /get + + * ircd/ircd_log.c: use int instead of void return value; add + log_report_features() and log_canon(); fix a function that + disappears if DEBUGMODE not #define'd + + * ircd/ircd_features.c: functions to manipulate feature settings + either from the config file or with the new /set, /reset, and /get + commands + + * ircd/Makefile.in: add new .c files, run make depend + + * include/s_stats.h: declare report_feature_list() (/stats f + handler) + + * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE, + ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE + reply numerics + + * include/msg.h: add defines for SET, RESET, and GET + + * include/ircd_log.h: add a function to canonicalize subsystem + names; change some void return values to int + + * include/ircd_features.h: new features subsystem handles all the + manipulation of special features, like log files + + * include/handlers.h: declare new mo_{s,res,g}et message handlers + for fiddling with features run-time + + * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default; + seemed like a good idea at the time... + + * doc/example.conf: document new F lines + +2000-11-29 Kevin L. Mitchell + + * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of + new logging functions, which have special support for the debug + log; added loop detection to vdebug(), so that I can + sendto_opmask_butone() from log_vwrite() without incurring another + call to vdebug() + + * ircd/s_conf.c (rehash): call log_reopen() from rehash routine; + this allows log file rotations + + * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill() + + * ircd/ircd_log.c: much more work fleshing out the interface; + removed old interface; included backwards-compat ircd_log() + function that logs to subsystem LS_OLDLOG + + * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen() + functions + + * include/ircd_log.h: include stdarg.h for va_list; move ordering + warning to top of file; fill out LogSys enum; declare new + log_debug_init(), log_vwrite(), log_write_kill(), and + log_[sg]et_*() functions; add flags argument to log_write(); + defined flags to inhibit various logging actions + + * include/client.h: added support for new SNO_DEBUG, enabled only + if DEBUGMODE is defined + +2000-11-28 Kevin L. Mitchell + + * ircd/ircd_log.c: make sure the various LOG_* constants are + defined (probably not needed, since #include isn't + conditional); various static data needed for the new logging + functions; definitions of new logging functions + + * include/ircd_log.h: new LogSys enum, declarations for part of + new logging API + + * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally, + which was of course stupid; switched to using switch/case in + initialization in motd_create(); zero the MotdList.other pointer + from motd_clear() + + * ircd/ircd.c (main): motd_init() has to come before init_conf(), + or we overwrite init_conf()'s hard work with respect to T-lines + +2000-11-27 Kevin L. Mitchell + + * ircd/s_stats.c: comment out report_motd_list and include a + reference to motd_report() + + * ircd/s_conf.c: rip out the old MOTD manipulation functions; call + motd_add() from the conf parser; call motd_clear() from the rehash + routine; remove the no longer needed memory clearing and reloading + stuff from the rehash service routine + + * ircd/motd.c: loads new API, including static internal functions + to do allocation/deallocation, etc. + + * ircd/m_stats.c: use new motd_report() instead of + report_motd_list() + + * ircd/m_motd.c: use new syntax for motd_send() + + * ircd/ircd.c: use new motd_init() function + + * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in + Makefile.(in); also ran make depend + + * include/motd.h: don't need config.h, but now do need time.h; + define new structures and constants; redefine old API and define + new functions + +2000-11-22 Kevin L. Mitchell + + * ircd/s_user.c (register_user): use motd_signon() instead of + calling m_motd; much cleaner this way + + * ircd/motd.c: write the new motd_* stuff to make MOTD handling + less of a crock + + * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_* + functions + + * include/motd.h: define new MOTD API stuff + +2000-11-20 Kevin L. Mitchell + + * ircd/ircd_reply.c (protocol_violation): rewrite + protocol_violation so it'll actually work + + oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get + the client's real name in there. + + * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr) + resulted in core dumps if NODEFAULTMOTD is defined, because m_motd + gets called from register_user with a NULL sptr. This is probably + a design problem, but this bandaid will do for now... + +2000-11-19 Isomer + * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us + to problems in the server<->server protocol. + + * ircd/m_connect.c: allow remote connects with a port of '0' + meaning to use the port in the config file. + + * ircd/m_create.c: Enable hacking protection, lets see how far we + get. + + * ircd/m_error.c: The RFC says never accept ERROR from unreg'd + clients, so we don't any more. + + * ircd/m_kill.c: The kill path is now made up of numnicks of servers, + and the user@host is displayed of the victim. + + * ircd/m_map.c: reloaded 'dump_map'. + + * ircd/m_trace.c: allow per class T: + + * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net. + +2000-11-17 Isomer + + * ircd/m_topic.c: Fixed bug where we'd only send to clients topics + that were the *same* instead of different. Oh the embarrasment! + + * ircd/IPcheck.c: Merged net's fix. + +2000-11-02 Kevin L. Mitchell + + * ircd/m_whois.c: remove compiler warning by adding a newline to + end of file + + * ircd/m_names.c: moved the flags up to s_user.h + + * ircd/m_join.c: call do_names instead of m_names; restructure + ms_join to never transmute a JOIN into a CREATE, but use the TS in + the JOIN (if present) to timestamp the channel + + * ircd/channel.c: send JOINs individually, instead of grouping + them, so that we can send the channel's creation time + + * include/s_user.h: declare do_names() + +2000-10-30 Isomer + * ircd/m_oper.c: Fixed warning + +2000-10-30 Isomer + * ircd/m_oper.c: Fixed over agressive cut and no paste + +2000-10-30 Isomer + + * ircd/m_topic.c: Restructured, fixed bug where topics on local + channels are propergated (I forget who pointed this out to me, but + thanks anyway). Also to save bandwidth don't send the topic to + users if the topic is already the same on the server (but still + propergate to other servers). X/W's "autotopic" feature must + chew a lot of bandwidth, hopefully this will help reduce this. + + * doc/rfc1459.rfc: Updated documentation on /topic. + + * ircd/listener.c: snotice warnings about failed accept()'s + potentially warning admins that they're running out of fd's. + + * ircd/stats.c, ircd/class.c: Removed /stats v, added number of + people in a class in /stats y + + * ircd/m_create.c: Checks for timewarp hacking and squit's + evil servers. (currently disabled) + + +2000-10-30 net + + * ircd/gline.c: Fixed various bugs Isomer left behind. + +2000-10-26 Kevin L. Mitchell + + * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed + channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME + +2000-10-24 Kevin L. Mitchell + + * ircd/channel.c: ok, now last mode rules; mode +ps will always + result in +s (and won't send a mode if the channel is already +s); + mode +sp will always result in +p; -n+n on a +n channel results in + no mode change; -n+n on a -n channel results in a +n mode change; + etc. + +2000-10-23 Kevin L. Mitchell + + * ircd/channel.c: add "add" and "del" elements to ParseState to + avoid not-too-pretty -p+s when +s is sufficient; fix a bug in + mode_parse_limit that caused it to clear all channel modes + prematurely; restructure mode_parse_mode to avoid calling + modebuf_mode too early (ties in with first mentioned change); + better logic for +p/+s mutual exclusivity; initialize "add" and + "del" elements in mode_parse; send simple modes down to + modebuf_mode after the loop in mode_parse + +2000-09-28 Greg Sikorski + * ircd/m_names.c: Fixed a non-lethal logic error that + triggers an assert() in find_member_link while debugging. + (Spotted by Maniac-). +2000-09-19 Thomas Helvey + * ircd/s_conf.c: move K:lines to their own list and data + structures, add supporting code. + * ircd/m_stats.c: cleanup stats processing a bit move + kline listing code to a new function, haven't figured + out where it goes yet tho' + * ircd/s_stats.c: added K:line bulk lister + * include/s_conf.h: added new DenyConf struct + * *[ch]: fixeup code that depended on changes + +2000-09-17 Thomas Helvey + * ircd/class.c: encapsulate class list + * include/class.h: clean up classes + * * fixup code that depended on changes + +2000-09-17 Thomas Helvey + * ircd/s_conf.c: add me to local conf + * include/s_conf.h: move CONF_ME macro to chkconf.c + * ircd/s_bsd.c: cleanup initialization, allow virtual host + to be changed by rehash + +2000-09-17 Thomas Helvey + * include/class.h: add missing prototype + * ircd/class.c: make argument to get_conf_class const + +2000-09-17 Thomas Helvey + * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup + merge conflicts. + * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup + merge conflicts + +2000-09-16 Thomas Helvey + * ircd/s_conf.c: add code for server struct + * ircd/client.c: copy of class.c sort of, new file for client + specific operations, will move things here as appropriate, + currently only one function is exported from here. + * ircd/*.c: general logic cleanups, convert negatives to + positives in places. + +2000-09-16 Thomas Helvey + * ircd/s_conf.c: add code for new crule data structs, strip quotes + * ircd/crule.c: clean up scary casting a bit, type safety stuff + * include/s_conf.h: add CRuleConf struct and support, remove + unused constants + * include/crule.h: type safety cleanups + * ircd/*.c: fixup code that depended on stuff I changed + +2000-09-15 Thomas Helvey + * ircd/s_conf.c: start adding code for new conf data structs, changed + listeners, admin line, motd lines, class lines. Move validate_hostent + to resolver. General mayhem. + * include/s_conf.h: new data structs and accessors + * ircd/res.c: move validate_hostent here, rewrite, use regular + expression for validation. + * doc/example.conf: update docs for port + +2000-09-14 Thomas Helvey + * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break + up conf_init into managable chunks. + * ircd/listener.c (set_listener_mask): fix logic bug core dump. + * include/s_conf.h: add new data struct for local info (unwinding the mess). + +2000-09-13 Thomas Helvey + * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS + local clients. + * ircd/list.c: put SLinks in free lists + * ircd/channel.c: put Memberships in free lists + * ircd/ircd.c: rearrange initializations a bit in main + Note: With these changes, ircd NEVER frees Clients, SLinks or + Memberships. It will also rarely need to allocate new + ones during net bursts and other disruptions. This should + cut down on memory fragmentation a bit as well. + +2000-08-30 Kevin L. Mitchell + + * ircd/m_names.c (do_names): pull-up from do_names fix in + u2.10.10.pl11 + +2000-07-15 Perry Lorier + * various: IP only k:'s and G:'s now do bit tests instead of two(!) + match()'s. Major Major cpu savings. Also speed up the + other case slightly. As a side effect you can now + k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing + 3am. + +2000-07-15 Perry Lorier + * various: Fixed warnings after compiling on an alpha. +2000-07-09 Perry Lorier + * doc/ircd.8: Applied grammitical changes by Liandrin, applied + changes suggested by various other people. + * ircd/IPcheck.c: More bug fixes. Current problem appears to be + that it gets a corrupt entry somehow. +2000-07-09 Greg Sikorski + * ircd/m_oper.c: Clean up compiler warning. + +2000-07-08 Perry Lorier + * doc/ircd.8: Updated the documentation, it was slightly out of date + being updated around 1989. + * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed. + fixed a few minor glitches. + * doc/rfc1459.unet: Updated. + * ircd/IPcheck.c: Fixed more bugs. + * ircd/s_bsd.c: We now keep track of servers we've conected. + +2000-07-02 Perry Lorier + * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue + me. Thanks to Hektik, thanks thanks thanks thanks + thanks thanks thanks thanks thank thanks thank thanks + +2000-07-01 Perry Lorier + * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s. + * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings. + +2000-06-22 Perry Lorier + * ircd/IPcheck.c: Large chunks redone. + * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported, + single AND double digit limits are allowed now. + * misc other: Changes to IPcheck. + +2000-06-30 Perry Lorier + * ircd/ircd.c: Fix command line parameter bugs. + +2000-06-30 Perry Lorier + * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY + * ircd/m_nick.c: Tidied things up. + +2000-06-12 Joseph Bongaarts + * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v + +2000-05-29 Perry Lorier + * ircd/m_stats.c: add /stats v to do only the last part of the /trace + * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do + you think it'll get bored and fix itself? + +2000-06-09 Greg Sikorski + + * ircd/m_names.c: Clean up compiler warnings. + +2000-06-09 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_client): don't send warning if + there's not enough arguments for a +/-o/v; means the habit of + doing "/mode #channel +oooooo bob" doesn't result in a bunch of + error messages + +2000-06-04 Greg Sikorski + + * ircd/m_names.c: Re-factor code to remove unneccessary + GlobalChannelList iteration every time someone joins a channel. + +2000-06-02 Kevin L. Mitchell + + * ircd/s_user.c: add struct Gline * argument to register_user; + look up global glines and repropagate them if necessary; send + acknowledgement of gline to remote servers when registering users + + * ircd/s_serv.c (server_estab): don't send acknowledgement of + local glines to remote servers; do send gline acknowledgement of + bursted users + + * ircd/m_user.c (m_user): pass new struct Gline * argument to + register_user + + * ircd/m_pong.c: pass new struct Gline * argument to register_user + + * ircd/m_nick.c (ms_nick): document protocol change + + * ircd/gline.c: support GLINE_LASTMOD + + * include/s_user.h: add struct Gline * argument to register_user + + * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods + + * ircd/s_conf.c (find_kill): add unsigned int argument to + gline_lookup() + + * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global + glines; add unsigned int argument to gline_lookup() + + * include/gline.h: add GLINE_GLOBAL flag; add unsigned int + argument to gline_lookup() + + * ircd/m_server.c: Resend jupe only when there is no % + parameter, or when it falls out of bounds: see comments prior to + call to jupe_resend(); call server_estab with struct Jupe + parameter, so that we place the appropriate % in the + appropriate place. + + * ircd/s_serv.c (server_estab): send % for introduced + server, as well as for servers when we're sending the BURST + + * include/s_serv.h: add a struct Jupe * to the arguments for + server_estab() so that we can send the appropriate lastmod + parameter + + * ircd/m_gline.c (ms_gline): actually, this should be the + slightest bit more efficient... + + * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest + bit more efficient... + + * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends + during netburst + + * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during + netburst + + * ircd/channel.c (joinbuf_join): really remove user from local + channels + +2000-05-29 Perry Lorier + * ircd/m_names.c: Removed redundant space. + * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line. + +2000-05-18 Kevin L. Mitchell + + * ircd/m_burst.c (ms_burst): er...that should have been a ",", not + a " " + +2000-05-04 Kevin L. Mitchell + + * ircd/channel.c: replace bogus assertions with returns, which is + logically correct; only wipe out limit/key if they were originally + set in the first place; remove user from channel when doing a + PARTALL; only send MODE +o for user CREATEing channel if user is + not MyUser--CREATE will only be used if the channel did not + originally exist, therefore we can assume no one local is on the + channel anyway, and we don't exactly need for the user to see an + explicit +o for themselves + + * doc/readme.gline: describe the syntax of the GLINE command + + * doc/readme.jupe: update to reflect a couple of changes to JUPE + + * ircd/gline.c: don't propagate local changes + + * ircd/jupe.c: don't propagate local changes + + * ircd/m_gline.c (mo_gline): force local flag when deactivating + glines with 0 lastmod + + * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time + are now removed instead of being deactivated + + * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE * + -" be accepted + + * ircd/channel.c (send_channel_modes): deal with one of the last + vestiges of sendbuf + + * ircd/m_burst.c (ms_burst): debugged ban processing; removed + debugging hooks + + * ircd/channel.c (modebuf_extract): remove debugging + sendto_opmask_butone calls + +2000-05-03 Kevin L. Mitchell + + * ircd/channel.c: support a couple of new flags to support using + mode_parse; fix some bugs with 0 struct ModeBuf *; implementation + of modebuf_extract to extract added flags for use by ms_burst + + * include/channel.h: a couple of new flags to support using + mode_parse inside ms_burst + + * ircd/m_burst.c (ms_burst): brand new implementation of BURST + + * ircd/m_endburst.c: add loop to processing of end_of_burst to + free empty channels after the BURST is over. + + * ircd/m_server.c: convert to use new send.c functions--I wanted + to rewrite it from scratch, but the logic's pretty complex; I may + still rewrite it, though... + +2000-05-02 Thomas Helvey + + * ircd/ircd.c: fix broken header include ordering + +2000-05-02 Thomas Helvey + + * ircd/IPcheck.c: cleanups for ZenShadow's cleanups + review emailed privately + + * include/IPcheck.h: removed unneeded include + +2000-05-02 Kevin L. Mitchell + + * ircd/s_user.c (hunt_server): throw in a comment so I know what + the sendto_one is for + + * include/querycmds.h (Count_unknownbecomesclient): convert to + sendto_opmask_butone + + * ircd/send.c: start removing dead code + + * include/send.h: start removing dead code + + * ircd/m_rping.c: convert to sendcmdto_one / send_reply / + hunt_server_cmd + + * ircd/m_rpong.c: convert to sendcmdto_one / send_reply + +2000-05-01 Kevin L. Mitchell + + * ircd/m_stats.c: convert to sendcmdto_one / send_reply + + * ircd/m_kick.c: Completely reimplement m_kick + + * ircd/channel.c: send_user_joins removed; it was dead code, + anyway... + +2000-05-01 Perry Lorier + * ircd/m_invite.c: Fix for the rest of m_invite.c, and again. + * ircd/channels.c: My fix for the part problem. Untested, probably + won't work. Can't be much worse than the current problem. + it'll either work or core, take your pick. + + +2000-04-30 Perry Lorier + * config/config-sh.in: Fix for CONNEXIT + * ircd/s_{user,misc}.c: Fix for CONNEXIT + * ircd/m_invite.c: Fix for incorrectly numnickified invite. + (Kev: Want to come talk to me about this?) + +2000-04-30 Steven M. Doyle + * ircd/ircd.c + - general cleanups and readability enhancements + - rewrite of setuid/chroot code. + - server will no longer run as root + - -DPROFIL compile option removed + - Fixed IPcheck API calls + + * config/config-sh.in + - Fixed up chroot compile options + - Added options for debug and profile compiles + + * config/gen.ircd.Makefile + - Support for new debug/profile options + + * ircd/Makefile.in + - Support for new debug/profile options + + * ircd/ircd_signal.c + - Removed -DPROFIL + + * include/IPcheck.h + - Removed old API prototypes, added new ones + + * ircd/IPcheck.c + - Readability cleanups (well, I -think-...) + - Changed IPRegistryEntry.last_connect to a time_t. The previously + used unsigned short was probably causing interesting things after + a client had been connected longer than about 65,535 seconds... + - Removed old API functions. + + * ircd/whocmds.c + - Removed IPcheck.h include + + * Additionally modified IPcheck API calls in: + - ircd/m_nick.c + - ircd/m_auth.c + - ircd/s_bsd.c + - ircd/s_conf.c + - ircd/s_misc.c + - ircd/s_serv.c + - ircd/s_user.c + + +2000-04-30 Perry Lorier + * ircd/s_bsd.c: Sigh. :) + * ircd/m_mode.c: fix for modeless channels by poptix. + +2000-04-29 Kevin L. Mitchell + + * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf + + * ircd/channel.c (clean_channelname): make clean_channelname also + truncate long channel names + +2000-04-28 Kevin L. Mitchell + + * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf + + * ircd/channel.c: implemented joinbuf_init, joinbuf_join, + joinbuf_flush + + * include/channel.h: definitions and declarations for the struct + JoinBuf abstraction + +2000-04-29 Perry Lorier + * ircd/s_bsd.c: Ok, so I thought I compiled and tested this... + +2000-04-29 Perry Lorier + * ircd/s_bsd.c: Add debugging code to IPcheck + +2000-04-28 Kevin L. Mitchell + + * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT + + * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of + RPL_EXPLICIT + + * ircd/m_userhost.c (m_userhost): add a dead code comment + + * ircd/m_desynch.c: forgot one... + + * ircd/m_rehash.c (mo_rehash): er, duplicates :) + + * ircd/m_proto.c (proto_send_supported): just change a comment so + it doesn't show up in my scans + + * ircd/ircd_reply.c (send_reply): fix a slight bug... + + * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions, + kinda hackish... + + * ircd/parse.c (parse_server): argument wrangling to make + processing in do_numeric a little easier to deal with + + * ircd/s_serv.c (server_estab): SERVER should come from + acptr->serv->up, not &me + + * ircd/m_lusers.c: accidentally left out sptr for a %C + + * ircd/send.c: hack to support doing wallchops... + + * ircd/m_whowas.c: convert to new send functions + + * ircd/m_whois.c: convert to new send functions + + * ircd/m_who.c: convert to new send functions + + * ircd/m_wallops.c: convert to new send functions + + * ircd/m_wallchops.c: convert to new send functions + + * ircd/m_version.c: convert to new send functions + + * ircd/m_userip.c: convert to new send functions + + * ircd/m_userhost.c: convert to new send functions + + * ircd/m_uping.c: convert to new send functions + + * ircd/m_trace.c: convert to new send functions + + * ircd/m_topic.c: convert to new send functions + + * ircd/m_time.c: convert to new send functions + + * ircd/m_squit.c: convert to new send functions + + * ircd/m_silence.c: convert to new send functions + + * ircd/m_settime.c: convert to new send functions + + * ircd/m_restart.c: convert to new send functions + + * ircd/m_rehash.c: convert to new send functions + + * ircd/m_privmsg.c: convert to new send functions + + * ircd/m_pong.c: convert to new send functions + + * ircd/m_ping.c: convert to new send functions + + * ircd/m_pass.c: convert to new send functions + + * ircd/m_opmode.c: convert to new send functions + + * ircd/m_oper.c: convert to new send functions + + * ircd/m_notice.c: convert to new send functions + + * ircd/m_nick.c: convert to new send functions + + * ircd/m_names.c: convert to new send functions + + * ircd/m_motd.c: convert to new send functions + + * ircd/m_mode.c: convert to new send functions + + * ircd/m_map.c: convert to new send functions + + * ircd/m_lusers.c: convert to new send functions + + * ircd/m_list.c: convert to new send functions + + * ircd/m_links.c: convert to new send functions + + * ircd/m_kill.c: convert to new send functions + + * ircd/m_jupe.c: convert to new send functions + + * ircd/m_invite.c: convert to new send functions + + * ircd/m_info.c: convert to new send functions + + * ircd/m_help.c: convert to new send functions + + * ircd/m_gline.c: convert to new send functions + + * ircd/m_error.c: convert to new send functions + + * ircd/m_endburst.c: convert to new send functions + + * ircd/m_die.c: convert to new send functions + + * ircd/m_destruct.c: convert to new send functions + + * ircd/m_defaults.c: convert to new send functions + + * ircd/m_connect.c: convert to new send functions + +2000-04-28 Perry Lorier + * RELEASE.NOTES: Describe a few more undocumented features. + * config/config-sh.in: change the default paths for logging + and the recommended number of channels. + * include/supported.h: Rearrange slightly, added CHANTYPE's + +2000-04-27 Kevin L. Mitchell + + * ircd/m_close.c: convert to send_reply + + * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone + + * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone + + * ircd/m_admin.c: convert to send_reply and hunt_server_cmd + + * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement + that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION + HAS A MAJOR HACK!!! The whole hunt_server architecture should be + carefully rethought... + + * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd + + * include/s_user.h: hunt_server_cmd -- replacement for hunt_server + + * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by + numeric nick; therefore, we have to use the server name + + * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick + + * ircd/send.c: fix minor bugs + + * ircd/s_user.c (check_target_limit): mark dead code so I filter + it when I grep + + * ircd/s_serv.c (exit_new_server): mark dead code so I filter it + when I grep + + * ircd/parse.c: mark dead code so I filter it when I grep + + * ircd/map.c: mark dead code so I filter it when I grep + + * ircd/ircd.c: mark dead code so I filter it when I grep + + * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply + functions + + * ircd/channel.c: mark dead code so I filter it when I grep + + * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str; + hope I'm not stepping on toes... + + * ircd/s_conf.c: more sendto_opmask_butone / send_reply + conversions; use ircd_snprintf in a couple of cases to negate the + possibility of buffer overflow + +2000-04-26 Kevin L. Mitchell + + * ircd/channel.c: convert as much as possible to new send + semantics + + * ircd/send.c (sendcmdto_common_channels): fix a subtle bug -- + test member->user->from->fd, not from->fd + + * ircd/gline.c (gline_add): go ahead and add badchans; we just + won't look for them in m_gline; this way, they always work... + + * ircd/jupe.c: use ircd_vsnprintf conversion specifiers + + * ircd/gline.c: since write_log now uses ircd_vsnprintf, use + ircd_vsnprintf conversion specifiers + + * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so + I have my conversion specifiers + + * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP + + * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to + local users + + * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a + little less brain-dead + + * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply + + * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for + RPL_STATSDEBUG + + * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for + RPL_STATSDEBUG + + * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT + for RPL_STATSDEBUG + + * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING + + * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING + + * ircd/s_user.c (register_user): use RPL_EXPLICIT for + ERR_INVALIDUSERNAME + + * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT + + * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark + a numeric as needing to use an explicit pattern, which will be the + first argument in the variable argument list + + * ircd/s_user.c: use sendrawto_one instead of sendto_one to send + non-prefixed nospoof PING + + * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send + non-prefixed SERVER login + + * ircd/ircd.c (check_pings): fix last sendto_one calls (except for + a numeric usage further up) + + * include/send.h: declare sendrawto_one + + * ircd/send.c (sendrawto_one): new function to use ONLY for + non-prefixed commands, like PING to client, or PASS/SERVER on + server registration + +2000-04-25 Kevin L. Mitchell + + * ircd/ircd_snprintf.c (doprintf): implement %H for possible + future expansion (channel numerics?) + + * include/ircd_snprintf.h: added documentation to # to explain use + with %C; added documentation for : to explain use with %C; added + documentation for %H for channels + + * ircd/whocmds.c: use send_reply + + * ircd/userload.c: use sendcmdto_one + + * ircd/uping.c: use sendcmdto_one + + * ircd/send.c: use new flags to %C format string; ':' prefixes + client name with a colon for local connects, '#' uses + nick!user@host form for local connects + + * ircd/s_user.c: use send_reply, sendto_opmask_butone, + sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone + + * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone + + * ircd/s_bsd.c: use sendto_opmask_butone, send_reply, + sendcmdto_one + + * ircd/s_auth.c: use sendto_opmask_butone + + * ircd/res.c: use sendcmdto_one + + * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some + debugging assertions + +2000-04-24 Kevin L. Mitchell + + * ircd/support.c: dumpcore is no longer used, so get rid of it + + * ircd/parse.c: use send_reply, sendcmdto_one + + * ircd/map.c: use send_reply + + * ircd/listener.c: use send_reply + + * ircd/jupe.c: use sendto_opmask_butone, send_reply + + * ircd/ircd_reply.c: use send_reply + + * ircd/ircd.c: use sendto_opmask_butone + + * ircd/gline.c: use sendto_opmask_butone, send_reply + + * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely + registered clients; make FLAG_ALT print nick!user@host; make + FLAG_COLON print :blah + + * ircd/class.c (report_classes): use send_reply instead of + sendto_one + + * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one + + * ircd/IPcheck.c (ip_registry_connect_succeeded): replace + sendto_one with sendcmdto_one + +2000-04-21 Kevin L. Mitchell + + * ircd/send.c: clean up logic in sendcmdto_channel_butone; use + MyConnect() instead of IsServer() in sendcmdto_flag_butone; define + sendcmdto_match_butone + + * include/send.h: declare sendcmdto_match_butone + +2000-04-20 Kevin L. Mitchell + + * ircd/jupe.c: update to use send_reply() + + * ircd/gline.c: update to use send_reply() + + * include/ircd_reply.h: declare send_reply + + * ircd/ircd_reply.c (send_reply): send_error_to_client, but for + replies; uses ircd_snprintf + + * ircd/send.c: added comments to redirect searchers to appropriate + sendcmdto_* function; moved new functions to end of file; added + explanatory comments; reordered arguments; defined new functions + mentioned below + + * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions + + * ircd/m_gline.c: reorder arguments to sendcmdto_* functions + + * ircd/jupe.c: reorder arguments to sendcmdto_* functions + + * ircd/gline.c: reorder arguments to sendcmdto_* functions + + * include/send.h: reorder arguments, add explanatory comments, + declare new functions sendcmdto_flag_butone, sendto_opmask_butone, + and vsendto_opmask_butone + +2000-04-19 Kevin L. Mitchell + + * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified + vsendto_op_mask that uses '*' instead of the receiving client + nickname + + * include/send.h: declare sendcmdto_channel_butone; takes a skip + argument that allows you to skip (or not to skip) deaf users, + users behind bursting servers, and non channel operators + +2000-04-17 Kevin L. Mitchell + + * ircd/send.c: new sendcmdto_channel_butserv -- note that old + sendto_channel_butserv has a subtle bug; also wrote + sendcmdto_common_channels. + + * include/send.h: declare new sendcmdto_* functions + + * ircd/jupe.c: support local deactivations of jupes + + * ircd/gline.c: support local deactivations of glines + + * include/jupe.h: JUPE_LDEACT allows jupes to be locally + deactivated; if they aren't locally deactivated, then it slaves to + the net-wide activation status; JupeIsRemActive() tests only + whether the jupe is active everywhere else + + * include/gline.h: GLINE_LDEACT allows glines to be locally + deactivated; if they aren't locally deactivated, then it slaves to + the net-wide activation status; GlineIsRemActive() tests only + whether the gline is active everywhere else + + * ircd/gline.c: detect overlapping G-lines; if an existing, wider + gline expires after the new one will, we drop the new one, + otherwise we add the G-line after that one (so the wide one will + apply first); if the new one contains an existing G-line and if it + will expire after the existing one, we drop the existing one to + save memory + + * ircd/m_gline.c (mo_gline): opers could issue remote local + glines when CONFIG_OPERCMDS was off; fixed + +2000-04-16 Kevin L. Mitchell + + * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if + this is a local JUPE + + * ircd/gline.c: add flags argument to gline_activate and + gline_deactivate for future expansion + + * ircd/m_gline.c: pass flags to gline_activate and + gline_deactivate + + * include/gline.h: add flags argument to gline_activate and + gline_deactivate + + * ircd/jupe.c: add flags argument to jupe_activate and + jupe_deactivate for future expansion + + * include/jupe.h: add flags argument to jupe_activate and + jupe_deactivate + + * ircd/m_jupe.c: pass a flags argument to jupe_add instead of + local, active; pass flags to jupe_activate and jupe_deactivate + + * include/gline.h: remove dead code + + * ircd/gline.c: make gline expire times relative to CurrentTime, + since that should be monotonically increasing, instead of + TStime(), which can be set backwards, and which can therefore + cause an expire time to increase; make local glines be removed + instead of just deactivated; don't let gline_find() look for + user@host glines if the mask being looked up is a channel mask + + * ircd/send.c (vsendcmdto_one): forgot to account for the case + where origin is a server and destination is a user + + * ircd/jupe.c: make jupe expire times relative to CurrentTime, + since that should be monotonically increasing, instead of + TStime(), which can be set backwards, and which can therefore + cause an expire time to increase; make local jupes be removed + instead of just deactivated + + * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for + limit is fine. any other warnings I should know about? + +2000-04-15 Thomas Helvey + + * ircd/*.c: const correctness and type safety cleanups to + get code to compile with C++ compiler. Still has + signed/unsigned comparison warnings. + +2000-04-15 Greg Sikorski + + * ircd/userload.c: change include to for + portability. + +2000-04-14 Kevin L. Mitchell + + * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C + and convert acptr... + + * ircd/s_user.c: move gline_lookup function call into + register_user, where it'll have a username to lookup! + + * ircd/m_gline.c: modify to utilize new sendcmdto_* series of + functions; also stuff send_error_to_client into return clauses + + * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of + functions; also use send_error_to_client where that makes sense + + * ircd/jupe.c: modify to utilize new sendcmdto_* series of + functions; also use send_error_to_client where that makes sense + + * ircd/gline.c: modify to utilize new sendcmdto_* series of + functions; also fix gline_lookup() to deal properly with remote + clients--boy, do struct Client and struct User need to be cleaned + up! + + * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server, + too... + + * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and + sendcmdto_serv_butone(), all utilizing the %v conversion of + ircd_snprintf() + + * include/send.h: define IRC_BUFSIZE, max size of a message; + declare sendcmdto_one(), vsendcmdto_one(), and + sendcmdto_serv_butone() + + * include/msg.h: define all the CMD_* constants needed to utilize + the new sendcmdto_* series of functions + + * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend + + * ircd/gline.c: remove old, dead code. + + * ircd/m_gline.c (mo_gline): disallow setting of global G-lines + unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines + (don't advertise proxies); remove dead code + + * ircd/parse.c: oper handler for JUPE only lists jupes unless + CONFIG_OPERCMDS is enabled + + * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if + CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c + + * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled, + always return ERR_DISABLED + + * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not + enabled, always return ERR_DISABLED + + * ircd/s_err.c: add error message to indicate disabled commands + + * include/numeric.h (ERR_DISABLED): to indicate disabled commands + + * doc/Configure.help: add documentation for CONFIG_OPERCMDS + + * config/config-sh.in: add CONFIG_OPERCMDS, default both it and + CONFIG_NEW_MODE to 'y' for now + + * ircd/gline.c (gline_list): fix a minor formatting bogon + + * BUGS: since I fixed that bug, might as well mark it fixed. + + * ircd/m_join.c: look up badchans with GLINE_EXACT + + * ircd/m_gline.c: fix parc count problems; look up existing + G-lines with GLINE_EXACT; only set new lastmod when + activating/deactivating existing glines if old lastmod was not 0 + + * ircd/gline.c: forgot to copy the gline reason over; don't + propagate a gline with 0 lastmod if origin is user; add + GLINE_EXACT to force exact matching of gline mask + + * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero + flag properly + + * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost, + but gline_lookup() actually takes a client--d'oh. + +2000-04-13 Thomas Helvey + * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10 + +2000-04-13 Greg Sikorski + + * ircd/whocmds.c: Don't make idle flag default in /who, to prevent: + "/who * x" + "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was." + (Found by Plexus). + + * ircd/whocmds.c: Change idle time calc from socket idle to user + idle. + +2000-04-13 Kevin L. Mitchell + + * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *, + too, for ircd_snprintf.c + + * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in + comments; mostly descended from the Linux manpage for printf, but + also documenting the extensions. + + * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a + client; make 'q' be the same as 'L'; remove __inline__; only + define EXTENSION if HAVE_LONG_LONG is defined + + * include/handlers.h: declare m_gline() + + * ircd/parse.c: gline can be called by users, but it only lists + the glines. + + * ircd/s_user.c (set_nick_name): resend gline if a remote server + introduces a glined client + + * ircd/s_serv.c (server_estab): burst glines, too + + * ircd/gline.c: fix up all the expire times to be offsets; + simplify gline_resend() + + * ircd/m_gline.c: begin coding replacements for ms_gline(), + mo_gline(), and m_gline() + + * ircd/gline.c (gline_add): allow *@#channel to work correctly; + also, prohibit local BADCHANs if LOCAL_BADCHAN not defined + +2000-04-13 Greg Sikorski + + * tools/Bouncer/*: Add comments/documentation/tags. + * tools/Bouncer/*: Add debug defines, make task fork(). + +2000-04-12 Thomas Helvey + * ircd/s_err.c: Cleanup s_err.c make one table so we + don't have to do anything tricky to get an error string. + +2000-04-12 Greg Sikorski + * Add port bouncer for http (x/w) + +2000-04-12 Kevin L. Mitchell + + * ircd/s_conf.c (find_kill): replaced call to find_gline() with a + call to gline_find(); also used GlineReason() instead of direct + reference to structure member + + * ircd/m_join.c (m_join): replace bad_channel() calls with calls + to gline_find(name, GLINE_BADCHAN), and also check to see if gline + is active + + * ircd/channel.c: nothing seems to be called anywhere... + + * ircd/s_err.c: update a couple of replies to dovetail with new + semantics + + * ircd/gline.c: begin complete re-implementation of gline.c along + the lines of the final design of jupe.c + + * include/gline.h: begin complete re-implementation of gline.c + along the lines of the final design of jupe.c + + * ircd/channel.c (mode_process_clients): fix "Deop of +k user on + %s by %s" message... + + * ircd/ircd_snprintf.c: my new snprintf()-like functions + + * include/ircd_snprintf.h: my new snprintf()-like functions + +2000-04-11 Thomas Helvey + * ircd/IPcheck.c: removed old dead code + * ircd/s_user.c (send_user_info): removed non-standard + user not found message for userhost/userip + +2000-04-11 Greg Sikorski + + * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric. + * doc/p10.html: Work on chapter 4. + +2000-04-10 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_client): fix coredump on /mode + #foobar +o nosuchnick + +2000-04-10 Perry Lorier + * BUGS: Added bug. + +2000-04-09 Thomas Helvey + * include/IPcheck.h: fix prototype + * ircd/s_user.c: fix usage of IPcheck_remote_connect + * ircd/IPcheck.c: removed unused args + +2000-04-09 Thomas Helvey + * include/IPcheck.h: add proto for IPcheck_expire + + * ircd/IPcheck.c: Rewrote + + * ircd/ircd.c: Add IPcheck_expire to main message loop + + * ircd/s_user.c: Redo target hashing, refactor target code + + * include/numeric.h: Cleaned up numerics, added which ones are + in use by other networks and what they are in use for. + + * ircd/channel.c: cleaned can_join(), allow anyone through anything + if /invited, simplified the function. Opers overusing OPEROVERRIDE + will get a message explaining to them not to cheat. + + * ircd/m_join.c: cleaned up the various join functions, should be + a lot more efficient. Still needs work. Now assumes that s<->s + won't send it a JOIN 0. Service coders - note this and tread with + care. + + * ircd/m_stats.c: added Gte-'s stats doc patch. + + * ircd/m_version.c: /version now returns the 005 numeric as well. + as requested by Liandrin. + + +2000-04-07 Kevin L. Mitchell + + * ircd/m_clearmode.c: add include for support.h for write_log() + + * configure: move ircd/crypt/* to tools/* + +2000-04-06 Thomas Helvey + * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds + set client host to server alias if connection from localhost + +2000-04-06 Perry Lorier + * ircd/ircd.c: Fix core during pinging (oops) + +2000-04-06 Perry Lorier + * ircd/send.c: fixed wrong ident being sent to channels bug. + * include/numerics.h: Updated some of the numerics from other + networks. Flagged some as 'unused' by undernet. + +2000-03-30 Perry Lorier + * ircd/ircd.c: Lets see if this helps the ping problem at all. + * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle + time for local clients. (as requested), extended who now returns all + the flags (@+!) so you can tell the complete state of a client. + +2000-03-30 Thomas Helvey + * m_rping.c m_rpong.c: add Gte's rping/rpong fixes + +2000-03-30 Perry Lorier + * ircd/parse.c: oops, missed opers. + +2000-03-30 Perry Lorier + * ircd/parse.c: fixed mystifying ping bug thats been plaguing us + for so long. Remember: m_ping MUST be in the parse array. :) + +2000-03-30 Perry Lorier + * ircd/ircd.c: test in check_pings was wrong. I move that we + disallow cvs commit after 10pm localtime.... + +2000-03-30 Perry Lorier + * ircd/m_pong.c: Fix it for servers too. + +2000-03-30 Perry Lorier + * ircd/m_pong.c: Fix ping timeout bugs + +2000-03-30 Perry Lorier + * ircd/channel.c: Bans had CurrentTime in their when field instead + of TStime() + +2000-03-31 Thomas Helvey + * ircd/numnicks.c (SetXYYCapacity): fix for extended + numerics. + +2000-03-30 Perry Lorier + * ircd/m_nick.c: send kills both ways so when we add nick change + on collision we don't desync the network. + + * ircd/map.c: Fixup the map a bit more. + +2000-03-31 Kevin L. Mitchell + + * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH + + * ircd/m_opmode.c: Log the mode changes to OPATH + + * ircd/channel.c (modebuf_flush_int): Log the mode changes to + OPATH + + * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to + OPATH + + * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH + + * config/config-sh.in: added OPATH for opmode log file + + * ircd/m_clearmode.c (do_clearmode): updated uses of + modebuf_mode_string() for the new usage + + * ircd/channel.c: added flag MODE_FREE and an int argument to + modebuf_mode_string() to indicate that the string must be free'd; + updated calls to modebuf_mode_string() for the new usage; called + collapse(pretty_mask()) on the ban string and use allocated memory + for it; added ban list length accounting; fixed a number of small + bugs in ban processing + + * include/channel.h: added flag MODE_FREE and an int argument to + modebuf_mode_string() to indicate that the string must be free'd + + * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed + keys and limits that are set + +2000-03-30 Perry Lorier + * ircd/ircd.c: rewrote check_pings() for maintainability + and speed. Also changed quit msg's so they don't have + redundant nick[host] info in them. + + * ircd/send.c: Changed write errors to report what error + occured (if possible). + + * ircd/gline.c: added gline comment to the quit. + + * ircd/m_server.c: Added suggestions to server quits mentioning + what went wrong so the admin can fix it earlier instead of asking + questions... + + * ircd/map.c: Changed m_map() to hide numerics, show a * beside + servers that aren't fully burst yet. And show '(--s)' for servers + where its not sure. + + * doc/example.conf: Fixed wrapped U: + +2000-03-30 Kevin L. Mitchell + + * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of + mode_parse() (version selectable at compile time) + + * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1]) + + * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1]) + + * config/config-sh.in: add new config option to enable new m_mode + implementation + + * doc/Configure.help: add documentation for new config option + CONFIG_NEW_MODE + + * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461 + MODE -v : Not enough parameters + + * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove + +k and +l even if they weren't set... + + * ircd/m_opmode.c: implement the OPMODE command using mode_parse() + + * ircd/channel.c: make mode_process_clients() clear the DEOPPED + flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list + for; test the 0-th member, not the i-th member, of the client + change state stuff + + * ircd/m_clearmode.c (do_clearmode): use the new + mode_invite_clear() function + + * ircd/channel.c: cleared up all the compile-time warnings and + errors + + * include/channel.h: added declarations for mode_ban_invalidate() + and mode_invite_clear() + + * ircd/channel.c: finished mode_parse(), then broke it up into a + dozen or so helper functions to make the code easier to read + +2000-03-29 Thomas Helvey + * ircd/ircd.c: refactor server initialization a bit, use + getopt for parsing command line, refactor init_sys, main, + and other bits. + + * ircd/s_bsd.c: add functions for initialization to clean + up logic a bit and remove duplicated code. + + * include/ircd.h: add struct for server process related + variables. + +2000-03-29 Kevin L. Mitchell + + * ircd/channel.c: initial definition of mode_parse(); flags to + prevent doing the same thing multiple times; helper method + send_notoper() to send a "Not oper"/"Not on channel" notice + + * include/channel.h: declare mode_parse() and helper flags + + * ircd/channel.c (modebuf_flush_int): fiddled with timestamp + sending to match the current action of set_mode() closely enough + that hopefully there won't be major conflicts + + * ircd/channel.c (modebuf_flush_int): consolidated the mode string + building logic, reversed the order of the arguments to mode + commands to have '-' preceed '+' + +2000-03-29 Thomas Helvey + * ircd/s_bsd.c (add_connection): don't disable socket options + let OS tune itself and allow important performance tweaks to + work. + +2000-03-28 Kevin L. Mitchell + + * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got + confused by set_mode, which is doing some really weird logic; + guess what I'm going to rewrite next? ;) + +2000-03-28 Kevin L. Mitchell + + * include/channel.h: added MODE_SAVE for the bounds checking stuff + in modebuf_flush + + * ircd/channel.c: make modebuf_flush into modebuf_flush_int and + make it do bounds checking on the buffer; all modes are sent only + if the all parameter is 1; modebuf_flush is the exported wrapper + + * include/channel.h: add BOUNCE, renumber flags to get a little + more space + + * ircd/channel.c (modebuf_flush): don't overload HACK2, add + BOUNCE; send DESYNCH message + +2000-03-27 Kevin L. Mitchell + + * ircd/m_clearmode.c (do_clearmode): only mark the modes the + channel actually has in effect for deletion + + * ircd/channel.c: added explanatory comments to all added + functions; made flushing take place at the correct place even if + the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper + to bash some stupid bugs; made modebuf_flush() return if ModeBuf + is empty, fixed the apparent source, removed some bogus string + termination code, properly terminate the mode strings, add support + for HACK2 and HACK3, made limit strings not be sent if the limit + is being removed, changed where '+' and '-' come from in sent + strings, added support for DEOP flag, set up bouncing code for + HACK2 + + * ircd/Makefile.in: ran make depend + + * include/channel.h: added new defines for future functionality, + made modebuf_flush() return int so I can use tail recursion + + * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups + to make it all compile + + * ircd/m_opmode.c: add msg.h to includes... + + * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan() + + * ircd/channel.c (modebuf_flush): realized I forgot to + nul-terminate addbuf/rembuf properly... + + * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()... + + * ircd/channel.c (modebuf_flush): correct sendto_server_butone to + sendto_serv_butone--blah^2 + + * ircd/send.c (sendto_serv_butone): stupid comments confused me + + * ircd/channel.c (modebuf_flush): if there are no mode changes to + propagate, we're done... + + * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone, + not sendto_all_butone + + * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode + + * ircd/m_opmode.c: define skeleton for m{o,s}_opmode + + * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to + the list + + * ircd/parse.c: added messages for opmode and clearmode + + * include/handlers.h: added declarations for mo_opmode(), + ms_opmode(), mo_clearmode(), and ms_clearmode() + + * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and + TOK_CLEARMODE + + * include/channel.h (MODEBUF_DEST_OPMODE): Define the + MODEBUF_DEST_OPMODE flag + + * ircd/channel.c (modebuf_flush): added new flag, + MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear + to originate from source's server (or source itself, if + IsServer(source)); also causes a server-level MODE to be sent as + OPMODE instead + + * include/channel.h: defined MODEBUF_DEST_SERVER, + MODEBUF_DEST_HACK4 + + * ircd/channel.c: Add another argument to build_string() to handle + numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to + servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices + to be sent out + +2000-03-27 Perry Lorier + + * ircd/s_bsd.c: fixed missing 'u' typo. + +2000-03-26 Kevin L. Mitchell + + * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(), + _mode_string(), _mode_client(), _flush(); also implemented a + simple build_string() + + * include/channel.h: added definition of ModeBuf, modebuf_* + manipulation functions, and a couple of helper macros + diff --git a/ChangeLog.11 b/ChangeLog.11 new file mode 100644 index 0000000..cc8a9ca --- /dev/null +++ b/ChangeLog.11 @@ -0,0 +1,4169 @@ +2002-01-08 Perry Lorier + * Fixed the build system -- MAKEFILES is *not* a variable you can + just use in a makefile :) + * Added "Quit: " prefix to quit messages. + +2001-10-14 Perry Lorier + * Minor fixes to the below + +2001-09-21 Perry Lorier + * ircd/send.c and various: replace sendcmdto_flag_butone with + sendwallto_group_butone + +2001-09-21 Vampire- + * ircd/ircd_string.c: unique_name_vector round II. + +2001-09-21 mbuna + * configure.in: Add support for darwin + +2001-09-21 Perry Lorier + * ircd/s_user.c I'm stupid, s/acptr/from/, Hektik pointed it out + +2001-09-20 Perry Lorier + + * Pullups from 2.10.10.pl16 + * Added some warnings, and the concept of rate limited snotices + +2001-08-31 Kevin L Mitchell + + * ircd/channel.c: use "%u" to format limit arguments; use + strtoul() to process limit arguments in a /mode command--note: + most clients seem to truncate the integer, probably because + they're using atoi, and perhaps signed ints + +2001-08-17 Kevin L Mitchell + + * ircd/numnicks.c: include stdlib.h for exit() + + * ircd/ircd_log.c: include stdlib.h for exit() + + * ircd/ircd_events.c: include stdlib.h for exit() + + * ircd/s_stats.c: remove description of /stats v, since it's gone + + * ircd/m_wallops.c (mo_wallops): add "*" to the beginning of + /wallops to distinguish wallops from wallusers + + * ircd/m_error.c (mr_error): ignore ERROR from clients that aren't + in the "handshake" or "connecting" states--I think the latter will + never happen, but... + + * doc/Authors: apply delete's Authors patch + + * RELEASE.NOTES: rewrite RELEASE.NOTES, basing it a little on + Braden's version + + * README: rewrite README + +2001-07-31 Kevin L. Mitchell + + * ircd/s_serv.c (server_estab): remove unused variable split + + * ircd/parse.c: add mr_error to the parse table + + * ircd/m_error.c (mr_error): add mr_error() to handle ERRORs from + unregistered connections--if IsUserPort() is true, the ERROR is + ignored, otherwise, the message is saved + +2001-07-28 Kevin L. Mitchell + + * ircd/m_kill.c (ms_kill): another minor typo *sigh* + + * ircd/s_user.c (send_supported): oops, minor typo... + + * ircd/s_user.c: implement send_supported() to send two ISUPPORT + messages containing our feature buffers; make register_user() use + send_supported() + + * ircd/s_misc.c (exit_client): make sure not to give away a remote + server in the ERROR message sent to the client; if the killer is a + server, we substitute our name in its place + + * ircd/m_version.c (m_version): use send_supported() to send the + ISUPPORT values to the user + + * ircd/m_nick.c: shave nick collision kills here a bit, too, for + the same reasons as for m_kill.c + + * ircd/m_kill.c: shave kills a bit so that the results look + exactly the same no matter where you are; if we didn't do this, it + would be possible to map the network by looking at the differences + between kills originating under various circumstances + + * include/supported.h: split the features into two, so as to not + bust the parameter count when sending the features list + + * include/s_user.h: declare new send_supported() function to send + the ISUPPORT information + +2001-07-27 Kevin L. Mitchell + + * ircd/s_bsd.c: disable IP (*not* TCP) options to prevent + source-routed spoofing attacks; this is only available under + u2.10.11, so don't even bother, since no one but testers are using + the source base + +2001-07-25 Kevin L. Mitchell + + * include/ircd_policy.h: enable HEAD_IN_SAND_REMOTE by default + + * ircd/s_err.c: put in a . for reporting link version on /trace, + to match what /version does + +2001-07-21 Kevin L. Mitchell + + * ircd/s_misc.c (exit_client): servers don't understand what the + numeric nick ERROR is supposed to mean, so they ignore error + messages, resulting in not knowing why we were rejected; use + sendcmdto_one for servers and sendrawto_one for clients + +2001-07-17 Kevin L. Mitchell + + * ircd/m_burst.c (ms_burst): in the case of a modeless channel and + a nick collide, a bare BURST may be propagated; adjust the + enforced parameter count to accept the bare BURST + +2001-07-12 Kevin L. Mitchell + + * ircd/s_bsd.c: mark a client as having been IP checked + + * ircd/IPcheck.c (ip_registry_check_remote): remove unneeded + second call to SetIPChecked() + +2001-07-11 Kevin L. Mitchell + + * ircd/engine_poll.c: deal with POLLHUP properly (hopefully) + + * ircd/engine_devpoll.c: deal with POLLHUP properly (hopefully) + +2001-07-09 Kevin L. Mitchell + + * ircd/os_bsd.c (os_get_rusage): move buf into the two ifdef'd + sections so that if neither is used, the declaration of buf will + not elicit an "unused variable" warning under NetBSD + + * ircd/m_map.c: include string.h to declare strcpy (fix warnings + on alpha) + + * ircd/m_away.c: include string.h to declare strcpy/strlen (fix + warnings on alpha) + + * ircd/ircd_log.c: include string.h to declare strcpy/strlen (fix + warnings on alpha) + + * ircd/client.c: include string.h to declare memset (fix warnings + on alpha) + + * ircd/channel.c: remove unused functions next_overlapped_ban, + del_banid, and is_deopped (fix warnings under -O1) + + * ircd/IPcheck.c: include string.h to declare memset/memcpy (fix + warnings on alpha) + +2001-06-29 Kevin L. Mitchell + + * ircd/s_user.c (set_user_mode): clear the snomask if the user + isn't supposed to receive server notices anymore + + * ircd/ircd_features.c: change CONFIG_OPERCMDS to default to FALSE + + * configure.in: use AC_MSG_CHECKING/AC_MSG_RESULT when checking + installation prefix; default devpoll and kqueue to on (they get + turned off if the required headers aren't present) + + * ircd/whocmds.c (do_who): use ircd_snprintf() instead of + sprintf_irc(); it's a bit hackish, but it'll do for now + + * ircd/support.c: remove unused #include + + * ircd/send.c: remove unused #include + + * ircd/s_user.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/s_serv.c: remove unused #include + + * ircd/s_misc.c: use ircd_snprintf() and friends instead of + sprintf_irc() and friends + + * ircd/s_err.c: moved atoi_tab[] from ircd/sprintf_irc.c to + ircd/s_err.c, which is the only other file to refer to it + + * ircd/s_conf.c (conf_add_deny): use ircd_snprintf() instead of + sprintf_irc() + + * ircd/s_bsd.c (connect_server): use ircd_snprintf() instead of + sprintf_irc() + + * ircd/s_auth.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/res.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/m_version.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/m_kill.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/listener.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/gline.c: use ircd_snprintf() instead of sprintf_irc() + + * ircd/channel.c: don't include sprintf_irc.h; use ircd_snprintf() + instead of sprintf_irc() + + * ircd/Makefile.in: remove sprintf_irc.c from sources list; run + make depend + + * include/ircd_string.h: remove declaration of sprintf_irc() (what + was it doing here anyway?) + + * include/sprintf_irc.h: removed unneeded source file + + * ircd/sprintf_irc.c: removed unneeded source file + + * ircd/s_debug.c (count_memory): remove some dead code + + * ircd/s_auth.c: remove some dead code + + * ircd/res.c (update_list): remove some dead code + + * ircd/m_whowas.c: remove some dead code + + * ircd/m_whois.c: remove some dead code + + * ircd/m_who.c: remove some dead code + + * ircd/m_wallusers.c: remove some dead code + + * ircd/m_wallops.c: remove some dead code + + * ircd/m_wallchops.c: remove some dead code + + * ircd/m_version.c: remove some dead code + + * ircd/m_userip.c: remove some dead code + + * ircd/m_userhost.c: remove some dead code + + * ircd/m_uping.c: remove some dead code + + * ircd/m_trace.c: remove some dead code + + * ircd/m_topic.c: remove some dead code + + * ircd/m_tmpl.c: remove some dead code + + * ircd/m_time.c: remove some dead code + + * ircd/m_squit.c: remove some dead code + + * ircd/m_silence.c: remove some dead code + + * ircd/m_settime.c: remove some dead code + + * ircd/m_set.c: remove some dead code + + * ircd/m_server.c: remove some dead code + + * ircd/m_rpong.c: remove some dead code + + * ircd/m_rping.c: remove some dead code + + * ircd/m_restart.c: remove some dead code + + * ircd/m_reset.c: remove some dead code + + * ircd/m_rehash.c: remove some dead code + + * ircd/m_quit.c: remove some dead code + + * ircd/m_proto.c: remove some dead code + + * ircd/m_privs.c: remove some dead code + + * ircd/m_privmsg.c: remove some dead code + + * ircd/m_pong.c: remove some dead code + + * ircd/m_ping.c: remove some dead code + + * ircd/m_pass.c: remove some dead code + + * ircd/m_part.c: remove some dead code + + * ircd/m_opmode.c: remove some dead code + + * ircd/m_oper.c: remove some dead code + + * ircd/m_notice.c: remove some dead code + + * ircd/m_nick.c: remove some dead code + + * ircd/m_map.c: remove some dead code + + * ircd/m_lusers.c: remove some dead code + + * ircd/m_list.c: remove some dead code + + * ircd/m_links.c: remove some dead code + + * ircd/m_kill.c: remove some dead code + + * ircd/m_kick.c: remove some dead code + + * ircd/m_jupe.c: remove some dead code + + * ircd/m_join.c: remove some dead code + + * ircd/m_ison.c: remove some dead code + + * ircd/m_invite.c: remove some dead code + + * ircd/m_info.c: remove some dead code + + * ircd/m_help.c: remove some dead code + + * ircd/m_gline.c: remove some dead code + + * ircd/m_get.c: remove some dead code + + * ircd/m_error.c: remove some dead code + + * ircd/m_endburst.c: remove some dead code + + * ircd/m_die.c: remove some dead code + + * ircd/m_desynch.c: remove some dead code + + * ircd/m_destruct.c: remove some dead code + + * ircd/m_defaults.c: remove some dead code + + * ircd/m_create.c: remove some dead code, along with an #if 1 + + * ircd/m_cprivmsg.c: remove some dead code + + * ircd/m_connect.c: remove some dead code + + * ircd/m_close.c: remove some dead code + + * ircd/m_clearmode.c: remove some dead code + + * ircd/m_burst.c: remove some dead code + + * ircd/m_away.c: remove some dead code + + * ircd/m_admin.c: remove some dead code + + * ircd/listener.c (accept_connection): remove some dead code + + * ircd/ircd_reply.c (need_more_params): remove some dead code + + * ircd/channel.c (add_banid): remove some dead code + + * include/support.h: remove some dead code + + * include/querycmds.h: remove some dead code + + * doc/readme.chroot: document how to do chroot operation + +2001-06-28 Kevin L. Mitchell + + * ircd/Makefile.in: tune for VPATH builds/installs; add a rule to + force bin directory to be created if necessary prior to + installation; run make depend + + * doc/Makefile.in (install): tune for VPATH installs by cd'ing to + the ${srcdir} + + * Makefile.in: tune to detect Makefile.in changes in + subdirectories and to create installation directory indicated by + ${prefix} + + * ircd/whocmds.c (count_users): routine to count the number of + users matching a given user@host mask + + * ircd/s_err.c: add error messages for ERR_LONGMASK, + ERR_TOOMANYUSERS, and ERR_MASKTOOWIDE + + * ircd/m_gline.c: look for and advance past '!' flag on G-lines + from operators; only set GLINE_OPERFORCE flag if oper has the + PRIV_WIDE_GLINE privilege + + * ircd/ircd_features.c: add GLINEMAXUSERCOUNT, which is the + maximum number of users a G-line can impact before it has to be + forced; OPER_WIDE_GLINE, to allow operators to use ! to force a + wide G-line to be set; and LOCOP_WIDE_GLINE, to allow local + operators to use ! to force a wide G-line to be set + + * ircd/gline.c: make make_gline() be called with separate user and + host arguments, and not call canon_userhost() directly; implement + gline_checkmask() to verify that a host mask is acceptable; move + BADCHAN check up in gline_add(), and check passed-in mask under + certain circumstances for acceptability; fix call to + sendto_opmask_butone() to handle separation of userhost into user + and host in gline_add(); update call to make_gline() + + * ircd/client.c: use FEAT_OPER_WIDE_GLINE and + FEAT_LOCOP_WIDE_GLINE to set PRIV_WIDE_GLINE for an operator; add + PRIV_WIDE_GLINE to privtab[] for client_report_privs() + + * include/whocmds.h (count_users): declare routine to count users + matching a given user@host mask + + * include/numeric.h: added three new error returns: ERR_LONGMASK + -- mask can't be formatted into a buffer; ERR_TOOMANYUSERS -- too + many users would be impacted by the mask; ERR_MASKTOOWIDE -- mask + contains wildcards in the wrong places + + * include/ircd_features.h: add FEAT_GLINEMAXUSERCOUNT, + FEAT_OPER_WIDE_GLINE, and FEAT_LOCOP_WIDE_GLINE + + * include/gline.h (GLINE_OPERFORCE): provides a way for m_gline() + to signal to gline_add() that the operator attempted to force the + G-line to be set + + * include/client.h (PRIV_WIDE_GLINE): new privilege for operators + + * doc/readme.gline: update to document new "!" prefix to a G-line + user@host mask + + * doc/readme.features: document GLINEMAXUSERCOUNT, + OPER_WIDE_GLINE, and LOCOP_WIDE_GLINE + + * doc/example.conf: update to mention new features along with + their defaults + +2001-06-27 Kevin L. Mitchell + + * doc/example.conf: updated example.conf from Braden + + + * include/supported.h: forward-port from pl15 + +2001-06-25 Kevin L. Mitchell + + * ircd/whocmds.c: include ircd_policy.h and implement + HEAD_IN_SAND_WHO_OPCOUNT--forward-port from pl15 + + * ircd/m_whois.c: forward-port of the idle-time hiding code from + pl15; this also required passing parc into do_whois(), which also + meant passing parc into do_wilds()--*sigh* + + * include/ircd_policy.h: add a couple more HEAD_IN_SAND + #define's--WHOIS_IDLETIME and WHO_HOPCOUNT + +2001-06-22 Kevin L. Mitchell + + * tools/wrapper.c: add a wrapper program that can be used to + adjust file descriptor limits and root directories; program must + be run as root--NOT SETUID!--and given appropriate -u arguments + + * doc/readme.log: documentation of how to configure logging + + * doc/readme.features: documentation of each feature (except for + logging) + +2001-06-21 Kevin L. Mitchell + + * Makefile.in (config): add a deprecation notice with a pointer to + tools/transition + + * tools/transition: shell script to convert old compile-time + options into new compile-time options and appropriate F-lines + + * tools/mkchroot: shell-script to prepare the chroot area by + copying over all the necessary libraries so they can be found + +2001-06-20 Kevin L. Mitchell + + * INSTALL: partial update of INSTALL for u2.10.11 release... + +2001-06-14 Kevin L. Mitchell + + * ircd/table_gen.c (makeTables): finally got tired of the + "overflow in implicit conversion" warning, so just got rid of it + by explicitly casting UCHAR_MAX to a (default) char; diffs show no + differences in the tables generated + +2001-06-11 Kevin L. Mitchell + + * ircd/send.c (sendcmdto_match_butone): don't let the server crash + if a client is in the STAT_CONNECTING status + +2001-06-10 Kevin L. Mitchell + + * ircd/send.c: remove unused vsendcmdto_one(), consolidating it + into sendcmdto_one(); define new sendcmdto_prio_one(), which + places the message into the priority queue + + * ircd/s_user.c (hunt_server_prio_cmd): definition of + hunt_server_prio_cmd(), which simply calls sendcmdto_prio_one() + instead of sendcmdto_one() + + * ircd/m_settime.c: use sendcmdto_prio_one() and + hunt_server_prio_cmd() to send SETTIME + + * ircd/m_server.c: use sendcmdto_prio_one() to send SETTIME + + * include/send.h: removed declaration for unused vsendcmdto_one(); + added a declaration for sendcmdto_prio_one() + + * include/s_user.h: declare hunt_server_prio_cmd(), which calls + sendcmdto_prio_one() + + * ircd/send.c (sendcmdto_flag_butone): oops; /wallops should be + put in the server's priority queue, too... + + * ircd/ircd.c: don't check LPATH for accessibility at all + +2001-06-08 Kevin L. Mitchell + + * ircd/s_serv.c (server_estab): send a +h flag in our SERVER + command if we're configured as a hub; send individual server flags + in SERVER commands + + * ircd/s_bsd.c (completed_connection): send a +h flag in our + SERVER command if we're configured as a hub + + * ircd/m_server.c: implement parv[7] as a mode-like string; +h + sets the FLAGS_HUB flag for a server; +s sets the FLAGS_SERVICE + flag for a server; +hs sets both flags; also modify CMD_SERVER + format string to send the flags + + * include/client.h: define two new flags, FLAGS_HUB and + FLAGS_SERVICE to mark services and hubs as such; define testing + macros, setting macros + + * ircd/s_user.c: remove deprecated struct Gline* argument to + register_user(); remove GLINE rebroadcast; do not send GLINE + acknowledgement parameter to NICK; do not look for GLINE + acknowledgement parameter to NICK while parsing + + * ircd/s_serv.c (server_estab): remove deprecated struct Jupe* + argument to server_estab(); do not send JUPE/GLINE acknowledgement + parameters for SERVER or NICK + + * ircd/m_user.c (m_user): remove deprecated argument to + register_user() + + * ircd/m_server.c: remove deprecated argument to server_estab(); + remove documentation comment regarding JUPE acknowledgement + parameter to SERVER; remove JUPE rebroadcast + + * ircd/m_pong.c (mr_pong): remove deprecated argument to + register_user() + + * ircd/m_nick.c: remove documentation comment regarding GLINE + acknowledgement parameter to NICK + + * ircd/jupe.c: use user's real name in JUPE server notices if + HEAD_IN_SAND_SNOTICES is defined + + * ircd/ircd.c: remove deprecated chroot() code; remove deprecated + setuid code; correct ancient DEBUG vs DEBUGMODE typo + + * ircd/gline.c: use user's real name in GLINE server notices if + HEAD_IN_SAND_SNOTICES is defined + + * ircd/channel.c (modebuf_flush_int): make apparent source be + local server, not oper's server; use user's real name in hack + notices and DESYNC notices if HEAD_IN_SAND_SNOTICES is defined + + * include/s_user.h: remove struct Gline pre-declaration; remove + deprecated struct Gline argument from register_user() + + * include/s_serv.h: remove struct Jupe pre-declaration; remove + deprecated struct Jupe argument from server_estab() + +2001-06-07 Kevin L. Mitchell + + * ircd/s_stats.c (hunt_stats): forward-port from pl15 of all the + changes required to control remote stats + + * ircd/s_numeric.c (do_numeric): rewrite numeric origins if + recipient is not an operator and HEAD_IN_SAND_REWRITE is defined + [forward-port from pl15] + + * ircd/m_whowas.c (m_whowas): report server name only if requester + is an operator [forward-port from pl15] + + * ircd/m_whois.c (do_whois): /whois now correctly reports + my server; if HEAD_IN_SAND_REMOTE is 1, ignore the middle argument + and obtain the report from the user's server [forward-port from + pl15] + + * ircd/m_who.c: add missing include for ircd_policy.h + [forward-port from pl15] + + * ircd/m_version.c (m_version): require oper access for remote + /version if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_time.c (m_time): require oper access for remote /time if + HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_stats.c: pass extra argument to hunt_stats(); correct + missing semicolon [forward-port from pl15] + + * ircd/m_nick.c (ms_nick): hide the origin of certain collision + kills [forward-port from pl15] + + * ircd/m_motd.c (m_motd): require oper access for remote /motd if + HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_lusers.c (m_lusers): require oper access for remote + /lusers if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/m_burst.c (ms_burst): server-added bans are stored using + local server name, to hide remote server names; modes also are to + originate from the local server [forward-port from pl15] + + * ircd/m_admin.c (m_admin): require oper access for remote /admin + if HEAD_IN_SAND_REMOTE is 1 [forward-port from pl15] + + * ircd/channel.c (add_banid): if a server is adding a ban, use my + server name to hide the remote server's name [forward-port from + pl15] + + * ircd/Makefile.in: ran make depend + + * include/s_stats.h: hunt_stats() has to have an extra argument to + support the forward-port from pl15 + + * include/ircd_policy.h: #define HEAD_IN_SAND_STATS_P; add + HEAD_IN_SAND_{BANWHO,REWRITE,REMOTE} [forward-port from pl15] + + * ircd/engine_poll.c (engine_loop): remove bogus assert that I + forgot to check in the events branch + +2001-06-06 Kevin L. Mitchell + + * ircd/res.c (init_resolver): don't start DNS expires with a 0 + relative timeout--if the server starts slow, timeouts could be + messy...there's probably a better solution, but this'll do for now + + * ircd/os_solaris.c: _XOPEN_SOURCE doesn't get along with Solaris + headers very well; include stropts.h; define an os_set_tos() + + * ircd/os_generic.c (os_set_tos): added an os_set_tos() for + os_generic.c + + * ircd/ircd.c: if there are no C-lines, we don't want to have a + timer that expires at the absolute time of 0--it kinda blocks all + the other timers! + + * ircd/engine_devpoll.c: some includes for open(); declare errcode + and codesize in engine_loop() + + * ircd/list.c (free_client): remove bogus check on timer active + flag + + * ircd/s_auth.c: pull out destruction code in + auth_timeout_request() into an externally-visible + destroy_auth_request(); manage cli_auth pointer in client + structure; use it for an extra assertion check + + * ircd/list.c: include s_auth.h for destroy_auth_request(); add + debugging notices to show flow when deallocating + connections/clients; call destroy_auth_request() when free'ing a + client that has an auth outstanding; don't free the connection if + the process timer is unmarked but still active + + * ircd/ircd_events.c: set GEN_ACTIVE when initializing a generator + and reset it before calling the event handler for an ET_DESTROY + event + + * include/s_auth.h (destroy_auth_request): declare + destroy_auth_request(), which can be used to destroy an + outstanding auth request if a client socket goes away before the + auth exchange is completed + + * include/ircd_events.h: add an active flag to keep track of + whether or not particular generators are active, for the + convenience of functions using the API + + * include/client.h: add a pointer for auth requests to struct + Connection so we can kill outstanding auth requests if a client + socket closes unexpectedly + + * ircd/s_bsd.c: cli_connect() could become 0 during the course of + the sock or timer callback; take that into account in the assert + + * ircd/list.c: add magic number checking and setting--magic + numbers are zero'd on frees to detect double-frees; add back + setting of cli_from() to 0 to break the back-link from the struct + Connection (duh) + + * ircd/ircd.c: set me's magic number correctly + + * include/client.h: define magic numbers and accessor/verifier + macros + + * ircd/list.c: assert that dealloc_client() is called with + cli_connect(cptr) == 0; set cli_connect(cptr) to 0 before calling + dealloc_client(); don't mess with cli_from(cptr) + + * ircd/s_bsd.c: only attempt to dealloc a connection if the + associated client has already been destroyed, or at least delinked + +2001-06-05 Kevin L. Mitchell + + * ircd/list.c (free_client): only try to delete the socket when + the fd hasn't already been closed, avoiding a double-free + + * ircd/list.c (free_connection): make sure the client is really + gone before doing away with the connection + + * ircd/s_bsd.c: record that socket has been added in con_freeflag + field; queue a socket_del() as soon as the socket is close()'d; + use con_freeflag & FREEFLAG_TIMER instead of con_timer; clear + FREEFLAG_SOCKET on ET_DESTROY event in client_sock_callback(), + then dealloc the connection if safe; mark socket as dead when + there's a read error or EOF; clear FREEFLAG_TIMER flag upon entry + to client_timer_callback(); dealloc connection if safe upon + ET_DESTROY event in client_timer_callback() + + * ircd/list.c: use con_freeflag instead of con_timer; only dealloc + the connection if both socket and timer have been destroyed; + destroy both socket and timer explicitly and carefully + + * include/client.h: replace the con_timer field with a + con_freeflag field, to indicate what still needs freeing; define + the freeflags + + * ircd/engine_select.c (engine_loop): duh...sockList[i] could + become 0 + + * ircd/engine_devpoll.c (engine_loop): duh...sockList[i] could + become 0 + + * ircd/s_bsd.c: add some extra assertions to try to track down a + corruption problem + + * ircd/engine_select.c (engine_loop): add an extra assert to try + to track down a corruption problem + + * ircd/engine_poll.c (engine_loop): add an extra assert to try to + track down a corruption problem + + * ircd/engine_kqueue.c (engine_loop): add an extra assert to try + to track down a corruption problem + + * ircd/engine_devpoll.c (engine_loop): skip slots that have become + empty during processing; add an extra assert to try to track down + a corruption problem + + * ircd/engine_kqueue.c (engine_delete): make sure to zero deleted + entries + +2001-06-04 Kevin L. Mitchell + + * ircd/s_bsd.c (client_sock_callback): client is no longer + blocked, so we must mark it as unblocked + + * ircd/engine_select.c: add Debug() calls galore; add handling for + SS_NOTSOCK; use a dummy sock variable to keep things from + disappearing on us; correct timeout calculation; update nfds for + efficiency + + * ircd/engine_poll.c: use new debugging level (DEBUG_ENGINE); + remove a spurious "if (sock)" which will always be true; update + nfds for efficiency + + * ircd/engine_kqueue.c: add Debug() calls galore; add handling for + SS_NOTSOCK (just in case); correct timeout calculation + + * ircd/engine_devpoll.c: add Debug() calls galore; add handling + for SS_NOTSOCK; correct timeout calculation; add EAGAIN handling + + * include/s_debug.h (DEBUG_ENGINE): add new debugging level; + pretty-indent numbers + + * ircd/engine_poll.c (engine_loop): break out SS_NOTSOCK + case--it's not a socket; the check for writability is most likely + not needed, but present for completeness + +2001-05-24 Kevin L. Mitchell + + * ircd/s_bsd.c: add Debug messages; call read_packet() even if the + no newline flag is set; call read_packet() when the timer expires, + regardless of what's in the buffer--read_packet() should be able + to deal properly + + * ircd/IPcheck.c (ip_registry_connect_succeeded): correct a NOTICE + sent to clients to include the client nickname (duh) + + * ircd/ircd_events.c: don't destroy a timer if it's already marked + for destruction; replace a missing ! in socket_del() + + * ircd/engine_poll.c (engine_loop): reference a temporary variable + so we don't have to worry about sockList[i] going away + + * ircd/s_bsd.c (client_sock_callback): add Debug messages + + * ircd/s_auth.c: add Debug messages all over the place + + * ircd/ircd_events.c: add and edit some Debug messages; add a list + of routines to convert some of the enums and flags from numbers + into human-readable strings for the Debug messages + + * ircd/engine_poll.c: hack some Debug messages to use the new name + conversion routines in ircd_events.c; add an extra assert for a + condition that shouldn't ever happen; apparently recv() can return + EAGAIN when poll() returns readable--I wonder why... + + * include/ircd_events.h: declare some helper routines under + DEBUGMODE + +2001-05-23 Kevin L. Mitchell + + * ircd/s_bsd.c (client_sock_callback): add an extra assertion + check + + * ircd/s_auth.c: add more Debug messages + + * ircd/list.c (make_client): add an extra assertion check + + * ircd/ircd_events.c (socket_events): don't call the engine events + changer if we haven't actually made any changes to the event mask + + * ircd/uping.c: add some Debug messages + + * ircd/s_stats.c: document new /STATS e + + * ircd/s_err.c: add RPL_STATSENGINE to report the engine name + + * ircd/s_bsd.c: remove static client_timer variable; in + read_packet(), if there's still data in the client's recvQ after + parsing, add a 2 second timer (con_proc); fix the ET_DESTROY case + of client_sock_callback to handle destroying the timer properly; + rewrote client_timer_callback from scratch to be called on an + individual client + + * ircd/m_stats.c: add /STATS e to report the engine name + + * ircd/list.c: deal with con_timer field in struct Connection + properly; correct a core-level bug in remove_client_from_list--if + the client is the only one in the list, we try to update + GlobalClientList's cli_prev pointer--not good + + * ircd/ircd.c: remove call to init_client_timer() + + * ircd/engine_poll.c: made Debug messages more uniform by + prepending "poll:" to them all; corrected an off-by-one error that + caused poll_count to be 1 less than the actual count and removed + my work-around; added Debug messages to indicate which socket is + being checked and what the results are + + * ircd/Makefile.in: ran a make depend + + * include/s_bsd.h: remove init_client_timer(), since we're doing + it differently now + + * include/numeric.h (RPL_STATSENGINE): a stats reply to report the + engine name + + * include/ircd_policy.h (HEAD_IN_SAND_STATS_E): turn off /stats e + reports for non-opers + + * include/client.h: add con_timer and con_proc fields to struct + Connection and define accessor macros--con_timer marks that + con_proc contains a valid timer, and con_proc is used to pace user + data + + * ircd/s_bsd.c (close_connection): let free_client() destroy the + socket + + * ircd/s_auth.c (start_auth): add a Debug call to indicate when + auth has begun on a client + + * ircd/ircd_events.c: ensure that event_execute() is called with a + non-NULL event; modify event_add() macro to properly zero list + bits; modify gen_dequeue() to not try to clip it out of a list + it's already been clipped out of; change signal socket + initialization to use state SS_NOTSOCK; permit timeout values of + 0 in add_timer(); add many Debug calls; change socket_del() and + timer_del() to always set the GEN_DESTROY flag; use GEN_MARKED in + timer_run() instead of GEN_DESTROY so that event_generate() will + pass on the events; remove the switch and replace with a simpler + if-then-else tree in timer_run(); don't allow destroyed sockets to + be destroyed again, nor their states or event masks to be changed + + * ircd/ircd.c: initialize "running" to 1 + + * ircd/engine_poll.c: deal with SS_NOTSOCK "sockets"; add Debug + messages all over the place; fix a counting problem in + engine_add(); turn wait into a signed integer and set it to -1 + only if timer_next() returns 0; adjust wait time to be relative; + don't call gen_ref_dec() if socket disappeared while we were + processing it + + * include/ircd_events.h: the pipe for signals is not a socket, so + we must mark it as such--added SS_NOTSOCK for that special socket; + events won't be generated if GEN_DESTROY is on, so add GEN_MARKED + for the benefit of timer_run() + + * configure.in: add --enable-pedantic and --enable-warnings to + turn on (and off) -Wall -pedantic in CFLAGS + +2001-05-21 Kevin L. Mitchell + + * ircd/s_conf.c: change "s_addr" element accesses to "address" + element accesses + + * include/s_conf.h: on some systems, "s_addr" is a macro; use + "address" instead + +2001-05-18 Kevin L. Mitchell + + * ircd/engine_kqueue.c: include ircd_alloc.h; set_or_clear returns + void in this file; add a missing semi-colon; declare errcode, + codesize + + * ircd/uping.c (uping_sender_callback): it's pptr, not uping + + * ircd/s_user.c (register_user): comment out spurious reference to + nextping + + * ircd/s_serv.c (server_estab): comment out spurious reference to + nextping + + * ircd/s_conf.c (read_configuration_file): comment out spurious + reference to nextping and nextconnect + + * ircd/s_bsd.c: comment out some spurious references to formerly + global (now non-existant) variables; correct a couple of typos + + * ircd/s_auth.c: pre-declare some functions referenced in the + callback; correct a typo + + * ircd/res.c (start_resolver): pass errno value of ENFILE + + * ircd/listener.c (accept_connection): you know your API is messed + up when...variables that shouldn't have been global crop up in + other files + + * ircd/list.c (free_client): substitution of == for = + + * ircd/ircd_signal.c: include assert.h for assertion checking; + check ev_data() to find out what signal generated event + + * ircd/ircd_events.c: some references to the variable "timer" + should have been references to the variable "ptr" + + * ircd/engine_select.c: it's struct fd_set, not struct fdset; + ev_timer(ev) is already a timer pointer; declare codesize as a + size_t to correct signedness issue; use timer_next(), not + time_next() + + * ircd/engine_poll.c: ev_timer(ev) is already a timer pointer; + select fd out of struct pollfd in assertion checking; declare + errcode and codesize; use timer_next(), not time_next() + + * ircd/engine_kqueue.c: ev_timer(ev) is already a timer pointer; + use function timer_next(), not time_next() + + * ircd/engine_devpoll.c: ev_timer(ev) is already a timer pointer; + use function timer_next(), not time_next() + + * ircd/Makefile.in (IRCD_SRC): add ircd_events.c to the list of + compiled sources; do make depend + + * include/list.h: pre-declare struct Connection + + * include/ircd_events.h (gen_ref_inc): cast to the right structure + name + + * include/s_auth.h: duh; missing */ + +2001-05-10 Kevin L. Mitchell + + * ircd/send.c: update write events status after sending data or + accumulating data to be sent + + * ircd/m_list.c (m_list): update write events status after + canceling a running /list + + * ircd/channel.c (list_next_channels): update write events status + after listing a few channels + + * ircd/s_bsd.c: extensive changes to update to new events model; + remove on_write_unblocked() and the two implementations of + read_message(), which have been deprecated by this change + + * ircd/s_auth.c: set the socket events we're interested in for + clients; simplify some logic that does the connect_nonb followed + by the socket_add + + * ircd/list.c: define free_connection() to free a connection + that's become freeable once the struct Socket has been + deallocated; fix up free_client() to take this new behavior into + account + + * ircd/ircd.c: call init_client_timer() + + * include/s_bsd.h: declare new REGISTER_ERROR_MESSAGE when unable + to register connect-in-progress with events system; declare + init_client_timer() (HACK!) to preserve rate-limiting behavior + + * include/list.h: declare new free_connection() + + * include/client.h: add a struct Socket to struct Connection + +2001-05-09 Kevin L. Mitchell + + * ircd/ircd_signal.c: massage the handlers for SIGHUP, SIGINT, and + SIGTERM into event callbacks; perform the actions in the + callbacks, since they're not called in the context of the signal; + set up the signal callbacks in the event engine + + * ircd/ircd_events.c (signal_callback): we're supposed to look for + a specific signal; don't generate an event if there is no signal + structure for it + + * ircd/ircd.c: nuke nextconnect and nextping and replace them with + connect_timer and ping_timer; massage try_connections() and + check_pings() into timer callbacks that re-add themselves at the + right time; remove ircd.c's "event_loop()"; initialize the event + system and the connect_timer and ping_timer + + * ircd/uping.c: correct a couple more typos + + * ircd/s_auth.c: rework to use new events system + + * ircd/os_solaris.c (os_connect_nonb): update to new interface + + * ircd/os_openbsd.c (os_connect_nonb): update to new interface + + * ircd/os_linux.c (os_connect_nonb): update to new interface + + * ircd/os_generic.c (os_connect_nonb): update to new interface + + * ircd/os_bsd.c (os_connect_nonb): update to new interface + + * include/s_auth.h: remove deprecated members of struct + AuthRequest, replacing them with struct Socket and struct Timer + structures; add flags to indicate when these structures have been + released by the event system; remove the deprecated + timeout_auth_queries() + + * include/ircd_osdep.h (os_connect_nonb): connect could complete + immediately, so change the interface to handle that possibility + + * ircd/uping.c (uping_server): noticed and corrected a typo + + * ircd/listener.c: set up to use ircd_event's struct Socket by + adding an socket_add() call to inetport(), replacing + free_listener() with socket_del() in close_listener(), and + reworking accept_connection to be called as the callback + + * ircd/ircd.c: add a call to IPcheck_init() + + * ircd/IPcheck.c: remove IPcheck_expire(); rework + ip_registry_expire() to be called from a timer; write + IPcheck_init() to set up the expiration timer (hard-coded for a + 60-second expiration time) + + * include/listener.h: add a struct Socket to the struct Listener; + remove accept_connection() + + * include/IPcheck.h: add IPcheck_init(), remove IPcheck_expire() + +2001-05-08 Kevin L. Mitchell + + * ircd/ircd_events.c: include config.h; use USE_KQUEUE and + USE_DEVPOLL instead of HAVE_KQUEUE and HAVE_DEVPOLL_H + + * ircd/engine_select.c: include config.h; set FD_SETSIZE to + MAXCONNECTIONS, not IRCD_FD_SETSIZE... + + * ircd/engine_poll.c: include config.h + + * ircd/engine_kqueue.c: include config.h + + * ircd/engine_devpoll.c: include config.h + + * ircd/Makefile.in: include engine sources in compilation and make + depend steps + + * configure.in: add checks for enabling the /dev/poll- and + kqueue-based engines + + * acconfig.h: add lines for USE_DEVPOLL and USE_KQUEUE + + * ircd/Makefile.in: work in the engine sources + +2001-05-07 Kevin L. Mitchell + + * ircd/m_settime.c: include ircd_snprintf.h + + * ircd/ircd_relay.c: stomp a couple of gcc warnings suggesting + parens around a construct that had both || and && + + * ircd/chkconf.c: #include "config.h" to get some important + definitions + + * ircd/Makefile.in: revamp ircd makefile for new build system + + * doc/Makefile.in: revamp doc makefile for new build system + + * config/*: Removed old build system files + + * stamp-h.in: a stamp file + + * install-sh: install-sh for new build system + + * configure.in: configure.in for new build system + + * configure: configure script for new build system (built by + autoconf) + + * config.sub: config.sub for new build system + + * config.h.in: config.h.in for new build system (built by + autoheader) + + * config.guess: config.guess for new build system + + * aclocal.m4: aclocal.m4 for new build system (built by aclocal + 1.4) + + * acinclude.m4: aclocal.m4 macros for new build system + + * acconfig.h: config.h skeleton for new build system + + * Makefile.in: modify for new build system + +2001-05-01 Kevin L. Mitchell + + * ircd/s_err.c: get rid of the last vestiges of TIME_T_FMT + + * ircd/m_settime.c: get rid of the last vestiges of TIME_T_FMT + + * ircd/m_server.c: get rid of the last vestiges of TIME_T_FMT + +2001-05-01 Perry Lorier + * doc/iauth.doc: Protocol for iauth server. (from hybrid). + * doc/linux-poll.patch: Patch to make Linux under 2.2 not deadlock + when you have far far too many sockets in use. + * {include,ircd}/iauth.c: A start on iauth support. + +2001-05-01 Perry Lorier + * ircd/s_err.c: Suggested wording change. + * ircd/s_user.c: Users aren't target limited against +k users. + * ircd/chkconf.c: Made it compile again, who knows if it works, but + now I can at least make install + * various: Cleanups on m_*.c files. + + +2001-04-23 Kevin L. Mitchell + + * ircd/s_misc.c (exit_client): make netsplit server notice say the + right thing + + * ircd/m_links.c (m_links_redirect): forward-port RPL_ENDOFLINKS + change to make Khaled happy... + + * ircd/m_whois.c (do_whois): pull-up of m_whois() fix + (do_whois): duh... + +2001-04-21 Kevin L. Mitchell + + * ircd/msgq.c: finally remove the msgq_integrity() hack, as it's + turned up no more bugs + + * ircd/ircd.c: use /* */ comments instead of // comments--all the + world's not gcc :( + + * ircd/s_conf.c (conf_add_server): use /* */ comments instead of + // comments--all the world's not gcc :( + + * ircd/runmalloc.c: finally garbage-collect unused file + + * include/runmalloc.h: finally garbage-collect unused file + + * ircd/: addition of '#include "config.h"' before + all other includes in most .c files + + * include/: remove includes of config.h, which are + now going into the raw .c files + +2001-04-20 Kevin L. Mitchell + + * ircd/m_whois.c (do_whois): display proper server name if the + user is looking up himself + + * ircd/m_who.c (m_who): disable match by servername or display of + server names by non-opers + + * include/ircd_policy.h: add define for + HEAD_IN_SAND_WHO_SERVERNAME to cover full intent of sub-motion 15 + of CFV 165 + +2001-04-18 Kevin L. Mitchell + + * ircd/s_conf.c: keep the $R in memory so we can see it clearly + when we do a /stats k + + * ircd/s_user.c (set_user_mode): pull-up of changes to prevent + users from turning on +s and +g + + * ircd/s_misc.c (exit_client): pull-up of changes to turn off + net.split notice + + * ircd/parse.c: pull-up of changes to disable /trace, /links, and + /map for users + + * ircd/m_whois.c (do_whois): pull-up of server name masking for + /whois + + * ircd/m_user.c (m_user): removal of umode and snomask defaulting + functions, pull-up + + * ircd/m_stats.c (m_stats): pull-up of stats-disabling stuff + + * ircd/m_map.c (m_map_redirect): pull-up of m_map_redirect() + + * ircd/m_links.c (m_links_redirect): pull-up of m_links_redirect() + + * ircd/channel.c (channel_modes): pull-up of channel key display + as * + + * include/ircd_policy.h: pull-up of ircd_policy.h + + * include/client.h: pull-up of Set/ClearServNotice() + + * ircd/gline.c (do_gline): report client name in G-line message + (pull-up) + + * ircd/s_user.c (register_user): pull-up--show IP address in some + server notices dealing only with users; report which connection + class has filled up + + * ircd/s_stats.c (report_deny_list): use conf->flags & + DENY_FLAGS_IP insteaf of conf->ip_kill + + * ircd/m_stats.c (report_klines): use conf->flags & DENY_FLAGS_IP + insteaf of conf->ip_kill + + * ircd/s_conf.c: use flags field in struct DenyConf; pull-up of + K-line by real name + + * include/s_conf.h: use a flags field in struct DenyConf; define + DENY_FLAGS_FILE, DENY_FLAGS_IP, and DENY_FLAGS_REALNAME for + pull-up of K-line by real name + + * ircd/m_trace.c: pull-up of IP show for user connections + + * doc/example.conf: pull-up of the realname K-line documentation + + * ircd/ircd.c: forward port of pid file advisory locking mechanism + +2001-04-16 Kevin L. Mitchell + + * ircd/send.c (sendcmdto_flag_butone): recast to just broadcast to + all servers, rather than to only servers that have +w/+g/whatever + users on them; among other things, this removes that atrocity + known as sentalong[] from this function + + * ircd/m_admin.c: must include ircd.h to declare "me"; must + include hash.h to declare FindUser() + + * ircd/m_wallusers.c: implementation of WALLUSERS + + * ircd/m_desynch.c (ms_desynch): only send DESYNCHs to opers + + * ircd/m_wallops.c: only send WALLOPS to opers + + * ircd/parse.c: add WALLUSERS command to parser table + + * include/handlers.h: declare wallusers handlers + + * include/msg.h: add WALLUSERS command + + * ircd/send.c (sendcmdto_flag_butone): if FLAGS_OPER is or'd with + flag, send only to appropriate opers + +2001-04-13 Kevin L. Mitchell + + * ircd/uping.c: refit to use the new events interface + + * ircd/res.c: refit to use the new events interface + + * ircd/ircd_events.c: create timer_chg(), which permits a + (non-periodic) timer's expire time to be modified; change the + logic in timer_run() so that timers that were re-added while the + event was being processed will not be destroyed prematurely + + * include/uping.h: include the events header, declare some extra + fields in struct UPing, remove timeout value, and define some + flags for marking which cleanup items have yet to be done + + * include/ircd_events.h: add a prototype for timer_chg() to change + the expire time of a running timer + +2001-03-13 Joseph Bongaarts + * ircd/os_openbsd.c: Tweaked the openbsd hack a bit. + +2001-03-07 Joseph Bongaarts + + * config/configure.in: Add check for OpenBSD + + * ircd/os_openbsd.c: Add seperate os dep file for openbsd which + differs from generic BSD, particularly in its handling of + _XOPEN_SOURCE. + +2001-02-12 Kevin L. Mitchell + + * ircd/m_gline.c (ms_gline): propagate a G-line that happened to + have been added by a U-lined server, rather than going through the + activate/deactivate logic; propagate G-line removals by U-lined + servers as well + + * ircd/gline.c: rename propagate_gline() to gline_propagate(); + make gline_propagate() return an int 0 (convenience return); only + update lastmod in gline_activate() and gline_deactivate() if the + current lastmod is non-zero, since 0 lastmod is our flag of a + U-lined server having added a G-line + + * include/gline.h (gline_propagate): exporting the G-line + propagation function + + * ircd/m_list.c (m_list): duh; permit explicit channel name + specification only when /list gets two arguments ("Kev + #wasteland") rather than when /list gets more than two + arguments--nice braino + +2001-01-29 Thomas Helvey + + * ircd/ircd_reply.c (need_more_params): fix bug that allowed + unregistered clients to spam opers with protocol violation + messages. Note: the bugfix may have eliminated some useful + protocol violation messages. + Please send protocol violation messages explicitly from the + functions they are discovered in, you have much better context + for the error there and it helps to document the behavior of the + server. This was also a design bug in that it violated the + "A function should do one thing" heuristic. Patching this one + would have resulted in a continuous spawning of other bugs over + the next 3 years, so I killed it. Check around for stuff this + broke and readd the calls to protocol_violation in the functions + that need to send the message. + +2001-01-29 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_ban): stopper a tiny leak--if a ban + already existed, then the logic would (attempt to) skip it, but + would not free the ban string; now the ban string is free'd and + the ban count is decremented, releasing the ban for use + + * ircd/s_user.c: make send_umode_out() take a prop argument + instead of testing for the PRIV_PROPAGATE privilege itself; fix + set_umode() to use this new argument, calculating it before + calculating the new privileges for a -o'd user + + * ircd/m_oper.c (m_oper): pass the new prop argument to + send_umode_out() + + * ircd/channel.c (mode_parse_ban): turn off MODE_ADD bit in bans + that we're not actually going to add because they already exist; + test that particular bit before adding to the linked list + + * include/s_user.h: add a prop argument to send_umode_out() to + indicate whether or not to propagate the user mode + +2001-01-24 Kevin L. Mitchell + + * ircd/msgq.c: ircd_vsnprintf() returns the number of bytes that + it would have written; upper-bound the number to prevent overflows + by proxy; also, tune buffer size given to ircd_vsnprintf() to take + into account the fact that ircd_vsnprintf() already takes the + terminal \0 into account + +2001-01-22 Kevin L. Mitchell + + * ircd/msgq.c: add an incredibly ugly hack to attempt to track + down an apparent buffer overflow; remove msgq_map(), since it's no + longer used anywhere; slight tweaks to prevent off-by-one errors, + but these can't explain the problems we've seen + + * include/msgq.h: remove msgq_map(), since it's no longer used + anywhere + +2001-01-18 Kevin L. Mitchell + + * ircd/s_user.c (set_nick_name): call client_set_privs() after + parsing user modes + +2001-01-17 Kevin L. Mitchell + + * ircd/s_bsd.c (read_message): fix a typo in the select version of + read_message() + + * ircd/whowas.c (whowas_free): MyFree() is a macro that expects + its argument to be an lvalue, which means we can't use + whowas_clean()'s handy-dandy "return ww" feature + + * ircd/ircd_features.c: default LOCOP_KILL to TRUE--oops... + +2001-01-16 Kevin L. Mitchell + + * ircd/ircd_events.c (timer_run): it's possible that the timer got + deleted during the callback processing, so don't go to the bother + of requeuing it if the destroy flag is set + + * ircd/engine_select.c: define FD_SETSIZE to be IRCD_FD_SETSIZE + out of config.h if this is a *BSD; include errno.h (oops); + decrement error count after an hour using a timer; use FD_SETSIZE + constant instead of IRCD_FD_SETSIZE constant; fill in event + processing code + + * ircd/engine_poll.c: include errno.h (oops); decrement error + count after an hour using a timer; fill in event processing code + + * ircd/engine_kqueue.c: include errno.h (oops); decrement error + count after an hour using a timer; assert events filter is either + EVFILT_READ or EVFILT_WRITE; fill in event processing code + + * ircd/engine_devpoll.c: include errno.h (oops); decrement error + count after an hour using a timer; fill in event processing code + +2001-01-15 Kevin L. Mitchell + + * ircd/client.c: fixed feattab; basically, when I changed features + to use small integers specifying bit positions, instead of the + bits themselves, I forgot to update feattab to not | these + privileges together; also fixed a bug in the antiprivs masking + loop in client_set_privs()--last index wouldn't get parsed + +2001-01-11 Kevin L. Mitchell + + * ircd/ircd_events.c: call event_generate() with new data + argument; make it set that field in struct Event; make + socket_add() return the value of the eng_add callback + + * ircd/engine_select.c: make engine_add() return a + successful/unsuccessful status; add bounds-checking outside of an + assert; use accessor macros; use log_write(), not the deprecated + ircd_log(); add an assert to engine_loop() to double-check for + data structure corruption + + * ircd/engine_poll.c: make engine_add() return a + successful/unsuccessful status; add bounds-checking outside of an + assert; use accessor macros; use log_write(), not the deprecated + ircd_log(); add an assert to engine_loop() to double-check for + data structure corruption + + * ircd/engine_kqueue.c: implementation of an engine for kqueue() + + * ircd/engine_devpoll.c: implementation of an engine for /dev/poll + + * include/ircd_events.h: define some accessor macros; add ev_data + to struct Event for certain important data--errno values, for + instance; make EngineAdd callback tell us if it was successful or + not; add extra argument to event_generate(); make socket_add() + return the status from EngineAdd + +2001-01-10 Kevin L. Mitchell + + * ircd/ircd_events.c: pass initializer information about how many + total _filedescriptors_ may be opened at once + + * ircd/ircd.c: use exported "running" instead of unexported + thisServer.running + + * ircd/engine_select.c: implementation of an event engine based on + select() + + * ircd/engine_poll.c: implementation of an event engine based on + poll() + + * include/ircd_events.h: pass the engine initializer an integer + specifing how many _filedescriptors_ may be opened at once + + * include/ircd.h: running has to be exported for the engine_* + event loops + +2001-01-09 Kevin L. Mitchell + + * ircd/ircd_events.c: include some needed headers; add some + comments; make evEngines[] const; bundle sig_sock and sig_fd into + a struct named sigInfo; rework struct evInfo to have a queue of + _generators_, and only when threaded; added a gen_init() function + to centralize generator initialization; fix various compile-time + errors; rework event_add() for new queueing scheme and checked for + compile-time errors; add casts where needed; spell evEngines[] + correctly; make engine_name() return const char* + + * include/ircd_events.h: type EventCallBack depends on struct + Event, so pre-declare it; put _event_ queue into generators, and + only when threaded; give engine data a union to store both ints + and pointers; make engine name a const; fix gen_ref_dec() macro; + make engine_name() return a const char* + + * ircd/ircd_events.c: gen_dequeue() is now exported, so move it + down with the non-static functions; modify event_execute() to use + the new gen_ref_dec() to simplify code; make sure event_generate() + does not generate new events for generators marked for destruction + + * include/ircd_events.h: the engines, at least, may need to modify + reference counts to keep generators from going away while + something still points at them, so add reference counter + manipulators and export gen_dequeue() for them + + * ircd/ircd_events.c: set up the list of engines to try; set up + the signal struct Socket; rename netInfo to evInfo; move static + functions near the beginning of the file; do away with + signal_signal() (since we no longer keep a signal count ourselves) + and call event_generate() directly from signal_callback--also + renamed some functions; allow signal_callback() to read up to + SIGS_PER_SOCK at once from the signal pipe; add event_init() to + initialize the entire event system; add event_loop() to call the + engine's event loop; initialize new struct GenHeader member, + gh_engdata; remove timer_next(); add socket_add() function to add + a socket; add socket_del() to mark a socket for deletion; add + socket_state() to transition a socket between states; add + socket_events() to set what events we're interested in on the + socket; add engine_name() to retrieve event engine's name + + * include/ircd_events.h: add engine data field to struct + GenHeader; rename SOCK_ACTION_REMOVE to SOCK_ACTION_DEL; add a + note about states vs s_events; remove signal count; fold union + Generator back into struct Event; remove count members from struct + Generators; redefine engine callbacks to not take a struct + Engine*; add explanatory comments to callback definitions; add + some engine callbacks to handle operations; remove struct Engine + flag member--can detect single flag from eng_signal member; add + event_init(), event_loop(), engine_name(), and the socket_*() + functions; make timer_next() a macro to avoid a function call + +2001-01-08 Kevin L. Mitchell + + * include/ircd_events.h: rename to ircd_events.h, since it handles + events, not just networking stuff; add signal support; more + structural rearrangement + + * ircd/ircd_events.c: rename to ircd_events.c, since it handles + events, not just networking stuff; add signal support; more + structural rearrangement + +2001-01-07 Kevin L. Mitchell + + * ircd/ircd_network.c: implement timer API; add reference counts + appropriately + + * include/ircd_network.h: firm up some pieces of the interface; + split out members everything has into a separate structure; add + reference counts; add timer API + +2001-01-06 Kevin L. Mitchell + + * ircd/ircd_network.c: static data and event manipulation + functions for new event processing system + + * include/ircd_network.h: data structures for new event processing + system + +2001-01-03 Kevin L. Mitchell + + * ircd/whowas.c: Completely re-did the old allocation scheme by + turning it into a linked list, permitting the + NICKNAMEHISTORYLENGTH feature to be changed on the fly + + * ircd/s_debug.c (count_memory): use FEAT_NICKNAMEHISTORYLENGTH + feature instead of old #define + + * ircd/ircd_features.c: add NICKNAMEHISTORYLENGTH feature as an + integer feature with a notify callback (whowas_realloc) + + * ircd/client.c (client_set_privs): second memset was supposed to + be over antiprivs, not privs; thanks, Chris Behrens + for pointing that out... + + * include/whowas.h: new elements for an extra linked list in + struct Whowas; a notify function for feature value changes + + * include/ircd_features.h: new feature--FEAT_NICKNAMEHISTORYLENGTH + + * config/config-sh.in: NICKNAMEHISTORYLENGTH is now a feature + +2001-01-02 Kevin L. Mitchell + + * config/config-sh.in: get rid of DEFAULT_LIST_PARAMETER + compile-time option--now in features subsystem + + * ircd/motd.c (motd_init): rework motd_init() to be called as the + notify function for MPATH and RPATH features (should probably + split it up a bit, though...) + + * ircd/m_privs.c (mo_privs): if called with no parameters, return + privs of the caller, rather than an error + + * ircd/m_list.c: pull usage message into its own function; pull + list parameter processing into its own function that does not + modify the contents of the parameter; add list_set_default() to + set the default list parameter (uses the notify hook); rework + m_list() to make use of these functions; removed dead code + + * ircd/ircd_log.c (log_feature_mark): make sure to return 0, since + we have no notify handler + + * ircd/ircd_features.c: add notify callback for notification of + value changes; give mark callback an int return value to indicate + whether or not to call the notify callback; fix up feature macros + for new notify callback; add DEFAULT_LIST_PARAM feature; rewrite + string handling in feature_set() to deal with def_str being a null + pointer; wrote feature_init() to set up all defaults appropriately + + * ircd/ircd.c (main): call feature_init() instead of + feature_mark(), to avoid calling notify functions while setting up + defaults + + * ircd/client.c: updated to deal with new privileges structure + + * ircd/class.c: updated so init_class() can be called should one + of PINGFREQUENCY, CONNECTFREQUENCY, MAXIMUM_LINKS, or + DEFAULTMAXSENDQLENGTH be changed + + * include/ircd_log.h: log_feature_mark() updated to fit with new + API changes + + * include/ircd_features.h: added DEFAULT_LIST_PARAM feature and + feature_init() function (found necessary since adding the notify + stuff and notifying motd.c during start-up...before we defined + RPATH!) + + * include/client.h: move privs around to enable addition of more + bits if necessary; based on the FD_* macros + + * include/channel.h: declare list_set_default (actually located in + m_list.c *blanche*) + + * ircd/s_user.c: retrieve MAXSILES and MAXSILELENGTH (now + AVBANLEN*MAXSILES) from features subsystem + + * ircd/s_debug.c (debug_serveropts): CMDLINE_CONFIG doesn't go to + anything anymore + + * ircd/s_bsd.c: retrieve HANGONGOODLINK and HANGONRETRYDELAY from + the features subsystem + + * ircd/s_auth.c (start_auth): NODNS migrated to the features + subsystem + + * ircd/random.c: created random_seed_set() function to set seed + value, along with some stuff to make ircrandom() a little more + random--state preserving, xor of time instead of direct usage, + etc.; it's still a pseudo-random number generator, though, and + hopefully I haven't broken the randomness + + * ircd/m_version.c: FEATUREVALUES makes use of feature_int() calls + + * ircd/m_join.c: use features interface to retrieve + MAXCHANNELSPERUSER + + * ircd/ircd_features.c: add NODISP flag for super-secret features; + add a whole bunch of new features migrated over from make config + + * ircd/ircd.c: use features interface to retrieve PINGFREQUENCY, + CONNECTTIMEOUT, and TIMESEC + + * ircd/client.c (client_get_ping): use features interface to + retrieve PINGFREQUENCY + + * ircd/class.c: use features interface to retrieve PINGFREQUENCY, + CONNECTFREQUENCY, MAXIMUM_LINKS, and DEFAULTMAXSENDQLENGTH + + * ircd/chkconf.c (DEFAULTMAXSENDQLENGTH): since it's now in the + features subsystem, we have to add something explicit + + * ircd/channel.c: use features interface to retrieve + KILLCHASETIMELIMIT, MAXBANLENGTH, MAXBANS, and MAXCHANNELSPERUSER; + note that MAXBANLENGTH is now calculated dynamically from MAXBANS + and AVBANLEN + + * ircd/Makefile.in: run make depend + + * include/supported.h (FEATURESVALUES): update to reference + feature settings + + * include/random.h: add prototype for random_seed_set + + * include/ircd_features.h: add several more features + + * include/channel.h: move MAXBANS and MAXBANLENGTH into feature + subsystem + + * config/config-sh.in: feature-ized some more stuff + + * include/motd.h: some new elements in motd.h for motd.c changes + + * ircd/motd.c: motd_cache() now searches a list of already cached + MOTD files; saves us from having duplicate caches in memory if + there are two identical T-lines for two different sites... + +2001-01-02 Perry Lorier + * ircd/motd.c: don't core if the motd isn't found. Bug found by + Amarande. + +2001-01-02 Perry Lorier + * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic. + * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks + to guppy for noticing, and hektik for providing the fix. + * misc others: Minor cleanups, added more protocol_violations, ripped + out more P09 stuffs, bit more protocol neg stuff. + +2000-12-19 Kevin L. Mitchell + + * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a + space (*sigh* stupid clients...) + + * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through + ircd_features.[ch] + + * ircd/s_err.c: get rid of GODMODE conditionals + + * ircd/s_debug.c (debug_serveropts): switch to using appropriate + calls into the features subsystem for various serveropts + characters + + * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional + + * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem + to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove + NOFLOWCONTROL conditional + + * ircd/s_auth.c: use features subsystem to determine value of + KILL_IPMISMATCH + + * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use + features subsystem to determine the setting of IDLE_FROM_MSG + + * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals + + * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem; + use features subsystem to get motd file names + + * ircd/m_settime.c: get value of RELIABLE_CLOCK from features + subsystem + + * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does + us no good; use features subsystem to figure out if we need to do + HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use + the Debug(()) macro instead; get value of RELIABLE_CLOCK from + features subsystem + + * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem + + * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features + subsystem + + * ircd/m_connect.c: get SERVER_PORT from the features subsystem + + * ircd/ircd_log.c (log_set_file): fix a bug that kept log files + from getting marked if they were already set to something... + + * ircd/ircd_features.c: add a flag to indicates read-only access; + add several new features that used to be compile-time selected + + * ircd/ircd.c: grab pidfile out of feature subsystem; don't check + access to motd files (what the heck?); make sure to initialize the + feature subsystem before trying to write the config file + + * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings; + use feature_bool() to figure out if we're using the FERGUSON + flusher + + * ircd/Makefile.in: MPATH and RPATH are now done differently, so + remove the clause that creates empty files of that name; also ran + make depend + + * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately, + there is no easy way to bounds-check it at present + + * include/querycmds.h: make sure ircd_features.h is included; use + feature_str(FEAT_DOMAINNAME) in calls to match() + + * include/ircd_features.h: many new features that used to be + compile-time selected + + * config/config-sh.in: add * to DOMAINNAME; try also using first + argument to search in /etc/resolv.conf; removed many compile-time + options that now can be configured through the features system + +2000-12-18 Kevin L. Mitchell + + * doc/api/log.txt: how to use the logging API + + * doc/api/features.txt: how to use the features API + + * doc/api/api.txt: how to write API documentation + + * include/ircd_features.h: rearranged a couple of features for + neatness purposes + + * ircd/ircd_features.c: cleaned up the macros some; rearranged + some code to all go into the switch; rearranged a couple of + features for neatness purposes + +2000-12-16 Greg Sikorski + * ircd/os_bsd.c: Added os_set_tos for BSD users. + +2000-12-16 Kevin L. Mitchell + + * ircd/ircd_features.c: Isomer almost got it right; you need to + use F_I(), since it's an integer value, not a boolean value. The + asserts in feature_int would catch you out... Also made the F_* + macros take flags + + * ircd/s_err.c: define RPL_PRIVS reply + + * ircd/parse.c: put new PRIVS command into command table + + * ircd/m_privs.c (mo_privs): message handler to report operator + privileges + + * ircd/ircd_features.c: declare new features OPER_SET and + LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and + ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE + + * ircd/client.c: simplify client_set_privs() with a table that + defines what features to test for; add new client_report_privs() + + * ircd/Makefile.in: compile new m_privs.c; run make depend + + * include/numeric.h (RPL_PRIVS): new reply numeric for displaying + an operator's privileges + + * include/msg.h: define new command: PRIVS + + * include/ircd_features.h: create new features OPER_SET and + LOCOP_SET for controlling access to /set + + * include/handlers.h (mo_privs): declare message handler for + reporting oper privileges + + * include/client.h (client_report_privs): declare function to + report what privileges an oper has + + * ircd/m_whois.c (do_whois): fix a bug that caused /whois to + report that a user is an oper if the oper doing the /whois had + PRIV_SEE_OPERS + +2000-12-17 Isomer + * ircd/listener.c: added support for TOS twiddling as a 'feature'. + +2000-12-17 Isomer + * ircd/os_linux.c: add TOS stuffs + + * ircd/listener.c: add TOS stuffs + +2000-12-16 Kevin L. Mitchell + + * ircd/whocmds.c (do_who): use HasPriv to determine whether or not + to indicate a user is an oper + + * ircd/s_user.c: clear privileges setting when deopping; don't + propagate +o unless user has PRIV_PROPAGATE privilege + + * ircd/s_debug.c (debug_serveropts): created debug_serveropts() + function and replaced how the server option string is generated + + * ircd/parse.c: remove conditional on CONFIG_OPERCMDS + + * ircd/m_whois.c (do_whois): use HasPriv to determine whether or + not to indicate the user is an operator + + * ircd/m_who.c: use HasPriv to determine whether or not a user + should be displayed in the list of opers + + * ircd/m_version.c: call debug_serveropts() to get server option + string + + * ircd/m_userip.c (userip_formatter): use HasPriv to determine + whether or not to show oper status + + * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine + whether or not to show oper status + + * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional + checks with HasPriv check; remove dead code + + * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional + checks with HasPriv check + + * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions; + use feature_bool to check if disabled + + * ircd/m_oper.c (m_oper): set oper priviliges + + * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv + check + + * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we + can kill + + * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv + check + + * ircd/m_jupe.c (mo_jupe): rework permissions checking structure; + use feature_bool to check if disabled + + * ircd/m_join.c (m_join): remove BADCHAN conditional; replace + #ifdef conditional with a HasPriv check + + * ircd/m_gline.c (mo_gline): rework permissions checking + structure; use feature_bool to check if any part is disabled + + * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv + check; remove dead code + + * ircd/m_clearmode.c: use feature_bool() to detect if we're + disabled; use HasPriv to figure out what we're permitted to do; + only allow clearmode on moded channels + + * ircd/ircd_features.c: define various features; use HasPriv to + verify permissions to set/reset + + * ircd/gline.c (gline_add): use HasPriv instead of #ifdef + conditionals + + * ircd/client.c (client_set_privs): function to set an oper's + privileges + + * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals + + * include/whocmds.h: deconditionalize several macros and + substitute appropriate calls to HasPriv() + + * include/s_debug.h: get rid of global serveropts[]; define new + function debug_serveropts() to build that string on the fly + + * include/ircd_features.h: define some features + + * include/client.h: add privs member to struct Connection; define + various priviledges + + * include/channel.h: no longer using IsOperOnLocalChannel; remove + conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES + + * doc/Configure.help: remove help information for deprecated + options + + * config/config-sh.in: remove certain deprecated options having to + do with what opers can and cannot do--first stage in moving + compile-time constants into the .conf + +2000-12-16 Isomer + * ircd/parse.c: detect if the prefix is missing and try and recover + instead of coring. + +2000-12-15 Kevin L. Mitchell + + * ircd/ircd_log.c: found and fixed some bugs in the debug logging + code that would sometimes result in the log file not being + reopened--which meant that a user could connect and get the + logging output--oops + + * ircd/Makefile.in: run make depend... + + * ircd/s_stats.c: get rid of report_feature_list() + + * ircd/s_err.c: add the 'bad value' error message, shift error + messages over somewhat + + * ircd/s_debug.c (debug_init): call log_debug_init with the + use_tty flag + + * ircd/s_conf.c (read_configuration_file): unmark features before + reading the config file, then reset unmarked features after + reading the config file + + * ircd/m_stats.c: use feature_report() instead of + report_feature_list() + + * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add + special 'mark' flags and use them; add the stuff needed by the + features API + + * ircd/ircd_features.c: rework the features API and add gobs of + comments to try to explain what some of these complex functions + are actually doing + + * include/s_stats.h: get rid of report_feature_list(); use + feature_report() instead + + * include/numeric.h: added a new error message and shifted old + values over some--this is, after all, an alpha + + * include/ircd_log.h: log_debug_init now takes an integer to tell + it if it should be using the tty; added a couple of functions + required by the features API + + * include/ircd_features.h: add an enum and some more functions to + flesh out the feature API--it should now be possible to put all + those compile-time constants in the config file! + + * ircd/send.c: got the direction of the assert incorrect... + + * ircd/send.c: implement the efficiency of flush_connections by + creating a linked list of struct Connection's with queued data; + also get rid of flush_sendq_except and make sure to yank + connections out of the list when their sendQs become empty (notice + the assertion in flush_connections!) + + * ircd/s_bsd.c (close_connection): must yank the Connection out of + the sendq list + + * ircd/list.c (dealloc_connection): must yank the Connection out + of the sendq list + + * ircd/dbuf.c (dbuf_put): call flush_connections instead of the + deprecated flush_sendq_except + + * ircd/client.c: define a couple new helper functions for sendq + threading--this will make the flush_connections function in send.c + considerably more efficient by creating a linked list of + Connections that have queued data to send + + * include/send.h: remove flush_sendq_except, as it's not used + anymore + + * include/client.h: declare a couple new helper functions for the + sendq threading system + +2000-12-14 Kevin L. Mitchell + + * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON + parse all arguments + + * ircd/s_debug.c (count_memory): modify to report for clients and + connections, not local clients and remote clients + + * ircd/list.c: fiddle with the client-fiddling functions to take + into account the divorce of struct Connection from struct Client + + * ircd/ircd.c: define a struct Connection for me, initialize it, + and link it into the right place (ewww, globals!) + + * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split + struct Client into struct Client and struct Connection; redefine + local-portion accessor macros to go through struct Client to the + struct Connection; define struct Connection accessor macros + +2000-12-13 Kevin L. Mitchell + + * ircd/whowas.c: missed a couple of accesses to a struct Client + + * ircd/uping.c: missed a couple of accesses to a struct Client + + * ircd/send.c: missed a couple of accesses to a struct Client + + * ircd/s_user.c: missed a couple of accesses to a struct Client + + * ircd/s_misc.c: missed a couple of accesses to a struct Client + + * ircd/s_conf.c: missed a couple of accesses to a struct Client + + * ircd/s_bsd.c: missed a couple of accesses to a struct Client + + * ircd/s_auth.c: missed a couple of accesses to a struct Client + + * ircd/res.c: missed a couple of accesses to a struct Client + + * ircd/parse.c: missed a couple of accesses to a struct Client + + * ircd/m_whois.c: use new accessor macros for struct Client + + * ircd/m_who.c: use new accessor macros for struct Client + + * ircd/m_wallchops.c: use new accessor macros for struct Client + + * ircd/m_version.c: use new accessor macros for struct Client + + * ircd/m_userip.c: use new accessor macros for struct Client + + * ircd/m_userhost.c: use new accessor macros for struct Client + + * ircd/m_user.c: use new accessor macros for struct Client + + * ircd/m_uping.c: use new accessor macros for struct Client + + * ircd/m_trace.c: use new accessor macros for struct Client + + * ircd/m_topic.c: use new accessor macros for struct Client + + * ircd/m_time.c: use new accessor macros for struct Client + + * ircd/m_stats.c: use new accessor macros for struct Client + + * ircd/m_squit.c: use new accessor macros for struct Client + + * ircd/m_silence.c: use new accessor macros for struct Client + + * ircd/m_server.c: use new accessor macros for struct Client; + remove dead code + + * ircd/m_rpong.c: use new accessor macros for struct Client + + * ircd/m_rping.c: use new accessor macros for struct Client + + * ircd/m_quit.c: use new accessor macros for struct Client + + * ircd/m_privmsg.c: use new accessor macros for struct Client + + * ircd/m_pong.c: use new accessor macros for struct Client; remove + dead code + + * ircd/m_ping.c: use new accessor macros for struct Client + + * ircd/m_pass.c: use new accessor macros for struct Client + + * ircd/m_part.c: use new accessor macros for struct Client + + * ircd/m_oper.c: use new accessor macros for struct Client + + * ircd/m_notice.c: use new accessor macros for struct Client + + * ircd/m_nick.c: use new accessor macros for struct Client + + * ircd/m_names.c: use new accessor macros for struct Client + + * ircd/m_mode.c: use new accessor macros for struct Client + + * ircd/m_map.c: use new accessor macros for struct Client + + * ircd/m_list.c: use new accessor macros for struct Client + + * ircd/m_links.c: use new accessor macros for struct Client; + remove some dead code + + * ircd/m_kill.c: use new accessor macros for struct Client; remove + some dead code + + * ircd/m_kick.c: use new accessor macros for struct Client + + * ircd/m_join.c: use new accessor macros for struct Client; remove + some dead code + + * ircd/m_ison.c: use new accessor macros for struct Client + + * ircd/m_invite.c: use new accessor macros for struct Client + + * ircd/m_info.c: use new accessor macros for struct Client + + * ircd/m_gline.c: use new accessor macros for struct Client + + * ircd/m_error.c: use new accessor macros for struct Client + + * ircd/m_create.c: use new accessor macros for struct Client + + * ircd/m_connect.c: use new accessor macros for struct Client; + removed some dead code + + * ircd/m_burst.c: use new accessor macros for struct Client + + * ircd/m_away.c: use new accessor macros for struct Client + + * ircd/m_admin.c: use new accessor macros for struct Client + + * ircd/hash.c: missed a couple of accesses to a struct Client + + * ircd/gline.c: missed a couple of accesses to a struct Client + + * ircd/crule.c: missed a couple of accesses to a struct Client + + * ircd/class.c: missed an access to a struct Client + + * ircd/channel.c: missed a couple of accesses to a struct Client + + * ircd/IPcheck.c: missed an access to a struct Client + + * include/querycmds.h: fix a couple of stats macros to use + structure accessor macros + + * include/client.h: change structure member names to highlight any + places in the code I've missed + +2000-12-12 Kevin L. Mitchell + + * ircd/whowas.c: use new struct Client accessor macros + + * ircd/whocmds.c: use new struct Client accessor macros + + * ircd/send.c: use new struct Client accessor macros + + * ircd/s_user.c: use new struct Client accessor macros; removed + some dead code + + * ircd/s_serv.c: use new struct Client accessor macros; removed + some dead code + + * ircd/s_numeric.c: use new struct Client accessor macros + + * ircd/s_misc.c: use new struct Client accessor macros + + * ircd/s_debug.c: use new struct Client accessor macros + + * ircd/s_conf.c: use new struct Client accessor macros + + * ircd/s_bsd.c: use new struct Client accessor macros + + * ircd/s_auth.c: use new struct Client accessor macros + + * ircd/parse.c: use new struct Client accessor macros + + * ircd/packet.c: use new struct Client accessor macros + + * ircd/numnicks.c: use new struct Client accessor macros + + * ircd/motd.c: use new struct Client accessor macros + + * ircd/listener.c: use new struct Client accessor macros + + * ircd/list.c: use new struct Client accessor macros + + * ircd/jupe.c: use new struct Client accessor macros + + * ircd/ircd_snprintf.c: use new struct Client accessor macros + + * ircd/ircd_reply.c: use new struct Client accessor macros + + * ircd/ircd_relay.c: use new struct Client accessor macros + + * ircd/ircd.c: use new struct Client accessor macros + + * ircd/gline.c: catch some instances of me. I missed + previously + + * ircd/client.c: use cli_ instead of con_ + + * ircd/class.c: use cli_ instead of con_ + + * ircd/channel.c: use cli_ instead of con_ + + * ircd/IPcheck.c: use cli_ instead of con_; catch some instances + of me. I missed previously + + * include/client.h: use cli_ instead of con_...seemed like a good + idea at the time *shrug* + +2000-12-11 Kevin L. Mitchell + + * ircd/hash.c: use struct Client accessor macros + + * ircd/gline.c: use struct Client accessor macros + + * ircd/crule.c: use struct Client accessor macros + + * ircd/client.c: use struct Client accessor macros; remove some + dead code + + * ircd/class.c: use struct Client accessor macros + + * ircd/channel.c: use struct Client accessor macros; remove some + dead code + + * ircd/IPcheck.c: use struct Client accessor macros + + * include/numnicks.h: use struct Client accessor macros + + * include/client.h: first step to divorcing struct Client and + struct Connection--define accessor macros and use them + + * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the + uplink would remove them. This is because the removal protocol + message wasn't being sent to the uplinks. This is fixed by fixing + propagate_gline() to send the proper number of arguments depending + on whether or not we're adding or deleting the Uworld gline, and + by having gline_deactivate() make sure to turn off the active bit + and call propagate_gline() if it's a Uworld gline + +2000-12-10 Kevin L. Mitchell + + * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case + + * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined + anywhere intelligent... + +2000-12-09 Kevin L. Mitchell + + * ircd/send.c (send_queued): call deliver_it with appropriate + arguments + + * ircd/s_serv.c: reorder a couple of headers--cosmetic + + * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct + MsgQ + + * ircd/os_solaris.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_linux.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_generic.c (os_sendv_nonb): function for calling writev + with appropriate iovec + + * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with + appropriate iovec + + * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up + exactly how much we're trying to write out to the fd + + * include/s_bsd.h: make deliver_it take a struct MsgQ + + * include/msgq.h: add a len_p argument to msgq_mapiov to help + detect short writes that indicate possible socket blocking + + * include/ircd_osdep.h: declare os_sendv_nonb() + + * ircd/channel.c (modebuf_mode): don't add empty modes... + +2000-12-08 Kevin L. Mitchell + + * include/send.h: add prio argument to send_buffer to select + between normal and priority queues + + * ircd/s_user.c (send_user_info): add prio argument to send_buffer + call + + * ircd/m_ison.c (m_ison): add prio argument to send_buffer call + + * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer + call + + * ircd/channel.c (send_channel_modes): add prio argument to + send_buffer call + + * ircd/send.c (send_buffer): add a prio argument to select the + priority queue; update send.c functions to use it + + * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and + msgq_add; add a prio argument to msgq_add to select the priority + queue + + * include/msgq.h: remove msgq_prio; add a prio argument to + msgq_add + + * ircd/send.c: remove sendbuf; remove GODMODE code; switch to + using msgq functions instead of dbuf functions; remove old, dead + sendto_* functions; redo send_buffer to take a struct MsgBuf; + rework sendcmdto_* functions to make use of the new struct MsgBuf + + * ircd/s_user.c: remove hunt_server; restructure send_user_info to + make appropriate use of struct MsgBuf + + * ircd/s_debug.c (count_memory): count memory used by the MsgQ + system and report it + + * ircd/s_conf.c (read_configuration_file): use + sendto_opmask_butone instead of the now dead sendto_op_mask + + * ircd/s_bsd.c: switch to using appropriate MsgQLength and other + calls on sendQ + + * ircd/parse.c (parse_server): get rid of a piece of GODMODE code + + * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in + msgq_clean + + * ircd/m_version.c: fix spelling in comments marking dead code + + * ircd/m_userip.c (userip_formatter): restructure to make use of + struct MsgBuf + + * ircd/m_userhost.c (userhost_formatter): restructure to make use + of struct MsgBuf + + * ircd/m_stats.c: use MsgQLength on a sendQ + + * ircd/m_settime.c: use MsgQLength instead of DBufLength on a + sendQ; mark a piece of dead code + + * ircd/m_names.c: use send_reply instead of sendto_one + + * ircd/m_mode.c: use new mode; remove old dead code + + * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf + + * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old + dead code + + * ircd/listener.c (accept_connection): use sendto_opmask_butone + instead of sendto_op_mask + + * ircd/list.c (free_client): use MsgQClear to clear sendQ + + * ircd/ircd_reply.c: remove send_error_to_client; restructure + send_reply to make use of struct MsgBuf + + * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except, + since its no longer used (at least currently) + + * ircd/channel.c: restructure send_channel_modes to make use of + struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode, + and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE + + * ircd/Makefile.in: add msgq.c to list of sources; run make depend + + * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one + + * include/send.h: send_buffer now takes a struct MsgBuf * instead + of a char *; flush_sendq_except now takes no arguments, as sendq + flushing currently only happens in dbuf.h and sendQ is a struct + MsgQ; remove prototypes for a lot of old sendto_* functions that + aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is + no longer needed, and the latter is identical to BUFSIZE in + ircd_defs.h + + * include/s_user.h: make InfoFormatter take a struct MsgBuf* + instead of a char *; also make it return void, instead of char * + + * include/msgq.h: add msgq_append and msgq_bufleft functions + + * include/client.h: use a struct MsgQ instead of a struct DBuf for + sendq + + * doc/Configure.help: Remove help for compile-time options that + have gone away + + * config/config-sh.in: remove CONFIG_NEWMODE + + * ircd/m_server.c (mr_server): don't send server IPs in any server + notices + + * ircd/msgq.c (msgq_vmake): add \r\n to messages + +2000-12-07 Kevin L. Mitchell + + * include/msgq.h: declare the MsgQ API + + * ircd/msgq.c: implementation of new MsgQ system + +2000-12-06 Kevin L. Mitchell + + * ircd/ircd_features.c: #include was supposed to be for + ircd_features.h, not features.h--missed when I had to do a + rename because of namespace collision + +2000-12-05 Greg Sikorski + * ircd/m_topic.c: Added missing braces that caused all remote + topics to be ignored. + +2000-12-04 Kevin L. Mitchell + + * ircd/m_create.c: I'm tired of the exit_client warning :) + (ms_create): discovered that exit_client() was being called with + too few arguments + + * ircd/s_misc.c (exit_client): remove all dependance on + FNAME_USERLOG, since that's now gone; log only to LS_USER + + * ircd/s_debug.c: USE_SYSLOG no longer means anything + + * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already + log to LS_OPER + + * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL + + * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG + + * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve + the same purpose as LS_USER and LS_OPER + + * config/config-sh.in: remove no longer relevant log config + variables + + * ircd/uping.c (uping_init): use log_write instead of ircd_log + + * ircd/s_misc.c (exit_client): use log_write instead of ircd_log + + * ircd/s_conf.c: use log_write instead of ircd_log + + * ircd/s_bsd.c (report_error): use log_write instead of ircd_log + + * ircd/s_auth.c (timeout_auth_queries): use log_write instead of + ircd_log + + * ircd/res.c (send_res_msg): use log_write instead of ircd_log + + * ircd/m_who.c: use log_write instead of write_log; no longer + conditionalize on WPATH; mark dead ircd_log calls + + * ircd/m_uping.c: mark dead ircd_log call + + * ircd/m_server.c (mr_server): use log_write instead of ircd_log + + * ircd/m_restart.c: use log_write instead of ircd_log; mark dead + ircd_log calls + + * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log + + * ircd/m_oper.c: use log_write instead of ircd_log; no longer + conditionalize on FNAME_OPERLOG; mark dead ircd_log calls + + * ircd/m_kill.c: mark dead ircd_log calls + + * ircd/m_connect.c: use log_write instead of ircd_log; mark dead + ircd_log + + * ircd/m_clearmode.c: use log_write instead of write_log; no + longer conditionalize on OPATH + + * ircd/jupe.c: use log_write instead of write_log; no longer + conditionalize on JPATH + + * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat + function; fix a couple of bugs + + * ircd/ircd_alloc.c: fixed a comment + + * ircd/ircd.c: use log_write instead of ircd_log; fold server + notice generation in a couple of cases + + * ircd/gline.c: use log_write instead of write_log; no longer + conditionalize on GPATH + + * ircd/channel.c (modebuf_flush_int): use log_write instead of + write_log; no longer conditionalize on OPATH + + * ircd/Makefile.in: run make depend, since dependencies have + changed + + * doc/example.conf: add system USER to documentation + + * include/ircd_log.h: add system USER; remove old ircd_log() + declarations + +2000-12-04 Isomer + * ircd/m_names.c: Add NAMES_EON to do_names to say add a + 'end_of_names' reply when done. + * ircd/m_join.c: use NAMES_EON as mentioned above + +2000-12-01 net + + * ircd/motd.c: add a freelist for struct Motds + +2000-11-30 Kevin L. Mitchell + + * ircd/s_stats.c (report_feature_list): report features--only + local opers can see logging configuration, since it doesn't really + mean anything to users + + * ircd/s_err.c: add reply messages for new feature subsystem + + * ircd/s_conf.c: add F lines to .conf + + * ircd/parse.c: add the message descriptions for /set, /reset, and + /get + + * ircd/m_stats.c: add /stats f + + * ircd/m_set.c (mo_set): implement /set + + * ircd/m_reset.c (mo_reset): implement /reset + + * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l + reopens log files (for log file rotation) + + * ircd/m_get.c (mo_get): implement /get + + * ircd/ircd_log.c: use int instead of void return value; add + log_report_features() and log_canon(); fix a function that + disappears if DEBUGMODE not #define'd + + * ircd/ircd_features.c: functions to manipulate feature settings + either from the config file or with the new /set, /reset, and /get + commands + + * ircd/Makefile.in: add new .c files, run make depend + + * include/s_stats.h: declare report_feature_list() (/stats f + handler) + + * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE, + ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE + reply numerics + + * include/msg.h: add defines for SET, RESET, and GET + + * include/ircd_log.h: add a function to canonicalize subsystem + names; change some void return values to int + + * include/ircd_features.h: new features subsystem handles all the + manipulation of special features, like log files + + * include/handlers.h: declare new mo_{s,res,g}et message handlers + for fiddling with features run-time + + * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default; + seemed like a good idea at the time... + + * doc/example.conf: document new F lines + +2000-11-29 Kevin L. Mitchell + + * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of + new logging functions, which have special support for the debug + log; added loop detection to vdebug(), so that I can + sendto_opmask_butone() from log_vwrite() without incurring another + call to vdebug() + + * ircd/s_conf.c (rehash): call log_reopen() from rehash routine; + this allows log file rotations + + * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill() + + * ircd/ircd_log.c: much more work fleshing out the interface; + removed old interface; included backwards-compat ircd_log() + function that logs to subsystem LS_OLDLOG + + * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen() + functions + + * include/ircd_log.h: include stdarg.h for va_list; move ordering + warning to top of file; fill out LogSys enum; declare new + log_debug_init(), log_vwrite(), log_write_kill(), and + log_[sg]et_*() functions; add flags argument to log_write(); + defined flags to inhibit various logging actions + + * include/client.h: added support for new SNO_DEBUG, enabled only + if DEBUGMODE is defined + +2000-11-28 Kevin L. Mitchell + + * ircd/ircd_log.c: make sure the various LOG_* constants are + defined (probably not needed, since #include isn't + conditional); various static data needed for the new logging + functions; definitions of new logging functions + + * include/ircd_log.h: new LogSys enum, declarations for part of + new logging API + + * ircd/motd.c: we were setting type to MOTD_CLASS unconditionally, + which was of course stupid; switched to using switch/case in + initialization in motd_create(); zero the MotdList.other pointer + from motd_clear() + + * ircd/ircd.c (main): motd_init() has to come before init_conf(), + or we overwrite init_conf()'s hard work with respect to T-lines + +2000-11-27 Kevin L. Mitchell + + * ircd/s_stats.c: comment out report_motd_list and include a + reference to motd_report() + + * ircd/s_conf.c: rip out the old MOTD manipulation functions; call + motd_add() from the conf parser; call motd_clear() from the rehash + routine; remove the no longer needed memory clearing and reloading + stuff from the rehash service routine + + * ircd/motd.c: loads new API, including static internal functions + to do allocation/deallocation, etc. + + * ircd/m_stats.c: use new motd_report() instead of + report_motd_list() + + * ircd/m_motd.c: use new syntax for motd_send() + + * ircd/ircd.c: use new motd_init() function + + * ircd/Makefile.in (SRC): forgot to add motd.c to SRC in + Makefile.(in); also ran make depend + + * include/motd.h: don't need config.h, but now do need time.h; + define new structures and constants; redefine old API and define + new functions + +2000-11-22 Kevin L. Mitchell + + * ircd/s_user.c (register_user): use motd_signon() instead of + calling m_motd; much cleaner this way + + * ircd/motd.c: write the new motd_* stuff to make MOTD handling + less of a crock + + * ircd/m_motd.c: rewrite m{,s}_motd to call out to new motd_* + functions + + * include/motd.h: define new MOTD API stuff + +2000-11-20 Kevin L. Mitchell + + * ircd/ircd_reply.c (protocol_violation): rewrite + protocol_violation so it'll actually work + + oh, yeah, use %s -> cptr->name, instead of %c -> cptr, so we get + the client's real name in there. + + * ircd/m_motd.c (m_motd): Iso's addition of get_client_class(sptr) + resulted in core dumps if NODEFAULTMOTD is defined, because m_motd + gets called from register_user with a NULL sptr. This is probably + a design problem, but this bandaid will do for now... + +2000-11-19 Isomer + * ircd/ircd_reply.c: added 'protocol_violation', thus alerting us + to problems in the server<->server protocol. + + * ircd/m_connect.c: allow remote connects with a port of '0' + meaning to use the port in the config file. + + * ircd/m_create.c: Enable hacking protection, lets see how far we + get. + + * ircd/m_error.c: The RFC says never accept ERROR from unreg'd + clients, so we don't any more. + + * ircd/m_kill.c: The kill path is now made up of numnicks of servers, + and the user@host is displayed of the victim. + + * ircd/m_map.c: reloaded 'dump_map'. + + * ircd/m_trace.c: allow per class T: + + * ircd/m_stats.c: allow local opers /remote stats anywhere on the 'net. + +2000-11-17 Isomer + + * ircd/m_topic.c: Fixed bug where we'd only send to clients topics + that were the *same* instead of different. Oh the embarrasment! + + * ircd/IPcheck.c: Merged net's fix. + +2000-11-02 Kevin L. Mitchell + + * ircd/m_whois.c: remove compiler warning by adding a newline to + end of file + + * ircd/m_names.c: moved the flags up to s_user.h + + * ircd/m_join.c: call do_names instead of m_names; restructure + ms_join to never transmute a JOIN into a CREATE, but use the TS in + the JOIN (if present) to timestamp the channel + + * ircd/channel.c: send JOINs individually, instead of grouping + them, so that we can send the channel's creation time + + * include/s_user.h: declare do_names() + +2000-10-30 Isomer + * ircd/m_oper.c: Fixed warning + +2000-10-30 Isomer + * ircd/m_oper.c: Fixed over agressive cut and no paste + +2000-10-30 Isomer + + * ircd/m_topic.c: Restructured, fixed bug where topics on local + channels are propergated (I forget who pointed this out to me, but + thanks anyway). Also to save bandwidth don't send the topic to + users if the topic is already the same on the server (but still + propergate to other servers). X/W's "autotopic" feature must + chew a lot of bandwidth, hopefully this will help reduce this. + + * doc/rfc1459.rfc: Updated documentation on /topic. + + * ircd/listener.c: snotice warnings about failed accept()'s + potentially warning admins that they're running out of fd's. + + * ircd/stats.c, ircd/class.c: Removed /stats v, added number of + people in a class in /stats y + + * ircd/m_create.c: Checks for timewarp hacking and squit's + evil servers. (currently disabled) + + +2000-10-30 net + + * ircd/gline.c: Fixed various bugs Isomer left behind. + +2000-10-26 Kevin L. Mitchell + + * ircd/m_join.c (m_join): reply on attempt to join a BADCHANed + channel is now ERR_BANNEDFROMCHAN instead of ERR_BADCHANNAME + +2000-10-24 Kevin L. Mitchell + + * ircd/channel.c: ok, now last mode rules; mode +ps will always + result in +s (and won't send a mode if the channel is already +s); + mode +sp will always result in +p; -n+n on a +n channel results in + no mode change; -n+n on a -n channel results in a +n mode change; + etc. + +2000-10-23 Kevin L. Mitchell + + * ircd/channel.c: add "add" and "del" elements to ParseState to + avoid not-too-pretty -p+s when +s is sufficient; fix a bug in + mode_parse_limit that caused it to clear all channel modes + prematurely; restructure mode_parse_mode to avoid calling + modebuf_mode too early (ties in with first mentioned change); + better logic for +p/+s mutual exclusivity; initialize "add" and + "del" elements in mode_parse; send simple modes down to + modebuf_mode after the loop in mode_parse + +2000-09-28 Greg Sikorski + * ircd/m_names.c: Fixed a non-lethal logic error that + triggers an assert() in find_member_link while debugging. + (Spotted by Maniac-). +2000-09-19 Thomas Helvey + * ircd/s_conf.c: move K:lines to their own list and data + structures, add supporting code. + * ircd/m_stats.c: cleanup stats processing a bit move + kline listing code to a new function, haven't figured + out where it goes yet tho' + * ircd/s_stats.c: added K:line bulk lister + * include/s_conf.h: added new DenyConf struct + * *[ch]: fixeup code that depended on changes + +2000-09-17 Thomas Helvey + * ircd/class.c: encapsulate class list + * include/class.h: clean up classes + * * fixup code that depended on changes + +2000-09-17 Thomas Helvey + * ircd/s_conf.c: add me to local conf + * include/s_conf.h: move CONF_ME macro to chkconf.c + * ircd/s_bsd.c: cleanup initialization, allow virtual host + to be changed by rehash + +2000-09-17 Thomas Helvey + * include/class.h: add missing prototype + * ircd/class.c: make argument to get_conf_class const + +2000-09-17 Thomas Helvey + * ircd/*.c: merged in changes from 2.10.10.pl12, cleanup + merge conflicts. + * ircd/*.h: merged in changes from 2.10.10.pl12, cleanup + merge conflicts + +2000-09-16 Thomas Helvey + * ircd/s_conf.c: add code for server struct + * ircd/client.c: copy of class.c sort of, new file for client + specific operations, will move things here as appropriate, + currently only one function is exported from here. + * ircd/*.c: general logic cleanups, convert negatives to + positives in places. + +2000-09-16 Thomas Helvey + * ircd/s_conf.c: add code for new crule data structs, strip quotes + * ircd/crule.c: clean up scary casting a bit, type safety stuff + * include/s_conf.h: add CRuleConf struct and support, remove + unused constants + * include/crule.h: type safety cleanups + * ircd/*.c: fixup code that depended on stuff I changed + +2000-09-15 Thomas Helvey + * ircd/s_conf.c: start adding code for new conf data structs, changed + listeners, admin line, motd lines, class lines. Move validate_hostent + to resolver. General mayhem. + * include/s_conf.h: new data structs and accessors + * ircd/res.c: move validate_hostent here, rewrite, use regular + expression for validation. + * doc/example.conf: update docs for port + +2000-09-14 Thomas Helvey + * ircd/s_conf.c (conf_init): rewrite conf file parser, start to break + up conf_init into managable chunks. + * ircd/listener.c (set_listener_mask): fix logic bug core dump. + * include/s_conf.h: add new data struct for local info (unwinding the mess). + +2000-09-13 Thomas Helvey + * ircd/list.c: put Clients in free lists, pre-allocate MAXCONNECTIONS + local clients. + * ircd/list.c: put SLinks in free lists + * ircd/channel.c: put Memberships in free lists + * ircd/ircd.c: rearrange initializations a bit in main + Note: With these changes, ircd NEVER frees Clients, SLinks or + Memberships. It will also rarely need to allocate new + ones during net bursts and other disruptions. This should + cut down on memory fragmentation a bit as well. + +2000-08-30 Kevin L. Mitchell + + * ircd/m_names.c (do_names): pull-up from do_names fix in + u2.10.10.pl11 + +2000-07-15 Perry Lorier + * various: IP only k:'s and G:'s now do bit tests instead of two(!) + match()'s. Major Major cpu savings. Also speed up the + other case slightly. As a side effect you can now + k/Gline *@10.0.0.0/8. I'll do bans tomorrow, it's nearing + 3am. + +2000-07-15 Perry Lorier + * various: Fixed warnings after compiling on an alpha. +2000-07-09 Perry Lorier + * doc/ircd.8: Applied grammitical changes by Liandrin, applied + changes suggested by various other people. + * ircd/IPcheck.c: More bug fixes. Current problem appears to be + that it gets a corrupt entry somehow. +2000-07-09 Greg Sikorski + * ircd/m_oper.c: Clean up compiler warning. + +2000-07-08 Perry Lorier + * doc/ircd.8: Updated the documentation, it was slightly out of date + being updated around 1989. + * ircd/m_whois.c: Rewrote for clarity, and probably a bit more speed. + fixed a few minor glitches. + * doc/rfc1459.unet: Updated. + * ircd/IPcheck.c: Fixed more bugs. + * ircd/s_bsd.c: We now keep track of servers we've conected. + +2000-07-02 Perry Lorier + * ircd/s_misc.c: Fixed remote IPcheck bug. Ok, I'm a moron, so sue + me. Thanks to Hektik, thanks thanks thanks thanks + thanks thanks thanks thanks thank thanks thank thanks + +2000-07-01 Perry Lorier + * ircd/s_conf.c: "Fixed" the "bug" where people would "evade" K:'s. + * ircd/s_conf.c, include/IPcheck.h: Fixed compile warnings. + +2000-06-22 Perry Lorier + * ircd/IPcheck.c: Large chunks redone. + * ircd/s_conf.c: Changes due to IPcheck - ONE nolonger supported, + single AND double digit limits are allowed now. + * misc other: Changes to IPcheck. + +2000-06-30 Perry Lorier + * ircd/ircd.c: Fix command line parameter bugs. + +2000-06-30 Perry Lorier + * ircd/m_kill.c: Fixed bug with LOCAL_KILL_ONLY + * ircd/m_nick.c: Tidied things up. + +2000-06-12 Joseph Bongaarts + * ircd/m_stats.c: Iso forgot mo_stats when he added /stats v + +2000-05-29 Perry Lorier + * ircd/m_stats.c: add /stats v to do only the last part of the /trace + * ircd/IPcheck.c: Cosmetic change, if we meddle with it enough do + you think it'll get bored and fix itself? + +2000-06-09 Greg Sikorski + + * ircd/m_names.c: Clean up compiler warnings. + +2000-06-09 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_client): don't send warning if + there's not enough arguments for a +/-o/v; means the habit of + doing "/mode #channel +oooooo bob" doesn't result in a bunch of + error messages + +2000-06-04 Greg Sikorski + + * ircd/m_names.c: Re-factor code to remove unneccessary + GlobalChannelList iteration every time someone joins a channel. + +2000-06-02 Kevin L. Mitchell + + * ircd/s_user.c: add struct Gline * argument to register_user; + look up global glines and repropagate them if necessary; send + acknowledgement of gline to remote servers when registering users + + * ircd/s_serv.c (server_estab): don't send acknowledgement of + local glines to remote servers; do send gline acknowledgement of + bursted users + + * ircd/m_user.c (m_user): pass new struct Gline * argument to + register_user + + * ircd/m_pong.c: pass new struct Gline * argument to register_user + + * ircd/m_nick.c (ms_nick): document protocol change + + * ircd/gline.c: support GLINE_LASTMOD + + * include/s_user.h: add struct Gline * argument to register_user + + * include/gline.h: add GLINE_LASTMOD to look up non-zero lastmods + + * ircd/s_conf.c (find_kill): add unsigned int argument to + gline_lookup() + + * ircd/gline.c: add GLINE_GLOBAL to lookup or find only global + glines; add unsigned int argument to gline_lookup() + + * include/gline.h: add GLINE_GLOBAL flag; add unsigned int + argument to gline_lookup() + + * ircd/m_server.c: Resend jupe only when there is no % + parameter, or when it falls out of bounds: see comments prior to + call to jupe_resend(); call server_estab with struct Jupe + parameter, so that we place the appropriate % in the + appropriate place. + + * ircd/s_serv.c (server_estab): send % for introduced + server, as well as for servers when we're sending the BURST + + * include/s_serv.h: add a struct Jupe * to the arguments for + server_estab() so that we can send the appropriate lastmod + parameter + + * ircd/m_gline.c (ms_gline): actually, this should be the + slightest bit more efficient... + + * ircd/m_jupe.c (ms_jupe): actually, this should be the slightest + bit more efficient... + + * ircd/m_gline.c (ms_gline): inhibit GLINE processing resends + during netburst + + * ircd/m_jupe.c (ms_jupe): inhibit JUPE processing resends during + netburst + + * ircd/channel.c (joinbuf_join): really remove user from local + channels + +2000-05-29 Perry Lorier + * ircd/m_names.c: Removed redundant space. + * ircd/s_bsd.c: Fixed incorrect syntax on ERROR line. + +2000-05-18 Kevin L. Mitchell + + * ircd/m_burst.c (ms_burst): er...that should have been a ",", not + a " " + +2000-05-04 Kevin L. Mitchell + + * ircd/channel.c: replace bogus assertions with returns, which is + logically correct; only wipe out limit/key if they were originally + set in the first place; remove user from channel when doing a + PARTALL; only send MODE +o for user CREATEing channel if user is + not MyUser--CREATE will only be used if the channel did not + originally exist, therefore we can assume no one local is on the + channel anyway, and we don't exactly need for the user to see an + explicit +o for themselves + + * doc/readme.gline: describe the syntax of the GLINE command + + * doc/readme.jupe: update to reflect a couple of changes to JUPE + + * ircd/gline.c: don't propagate local changes + + * ircd/jupe.c: don't propagate local changes + + * ircd/m_gline.c (mo_gline): force local flag when deactivating + glines with 0 lastmod + + * ircd/gline.c (gline_deactivate): G-lines with zero lastmod time + are now removed instead of being deactivated + + * ircd/m_gline.c (ms_gline): make G-lines of the form "GLINE * + -" be accepted + + * ircd/channel.c (send_channel_modes): deal with one of the last + vestiges of sendbuf + + * ircd/m_burst.c (ms_burst): debugged ban processing; removed + debugging hooks + + * ircd/channel.c (modebuf_extract): remove debugging + sendto_opmask_butone calls + +2000-05-03 Kevin L. Mitchell + + * ircd/channel.c: support a couple of new flags to support using + mode_parse; fix some bugs with 0 struct ModeBuf *; implementation + of modebuf_extract to extract added flags for use by ms_burst + + * include/channel.h: a couple of new flags to support using + mode_parse inside ms_burst + + * ircd/m_burst.c (ms_burst): brand new implementation of BURST + + * ircd/m_endburst.c: add loop to processing of end_of_burst to + free empty channels after the BURST is over. + + * ircd/m_server.c: convert to use new send.c functions--I wanted + to rewrite it from scratch, but the logic's pretty complex; I may + still rewrite it, though... + +2000-05-02 Thomas Helvey + + * ircd/ircd.c: fix broken header include ordering + +2000-05-02 Thomas Helvey + + * ircd/IPcheck.c: cleanups for ZenShadow's cleanups + review emailed privately + + * include/IPcheck.h: removed unneeded include + +2000-05-02 Kevin L. Mitchell + + * ircd/s_user.c (hunt_server): throw in a comment so I know what + the sendto_one is for + + * include/querycmds.h (Count_unknownbecomesclient): convert to + sendto_opmask_butone + + * ircd/send.c: start removing dead code + + * include/send.h: start removing dead code + + * ircd/m_rping.c: convert to sendcmdto_one / send_reply / + hunt_server_cmd + + * ircd/m_rpong.c: convert to sendcmdto_one / send_reply + +2000-05-01 Kevin L. Mitchell + + * ircd/m_stats.c: convert to sendcmdto_one / send_reply + + * ircd/m_kick.c: Completely reimplement m_kick + + * ircd/channel.c: send_user_joins removed; it was dead code, + anyway... + +2000-05-01 Perry Lorier + * ircd/m_invite.c: Fix for the rest of m_invite.c, and again. + * ircd/channels.c: My fix for the part problem. Untested, probably + won't work. Can't be much worse than the current problem. + it'll either work or core, take your pick. + + +2000-04-30 Perry Lorier + * config/config-sh.in: Fix for CONNEXIT + * ircd/s_{user,misc}.c: Fix for CONNEXIT + * ircd/m_invite.c: Fix for incorrectly numnickified invite. + (Kev: Want to come talk to me about this?) + +2000-04-30 Steven M. Doyle + * ircd/ircd.c + - general cleanups and readability enhancements + - rewrite of setuid/chroot code. + - server will no longer run as root + - -DPROFIL compile option removed + - Fixed IPcheck API calls + + * config/config-sh.in + - Fixed up chroot compile options + - Added options for debug and profile compiles + + * config/gen.ircd.Makefile + - Support for new debug/profile options + + * ircd/Makefile.in + - Support for new debug/profile options + + * ircd/ircd_signal.c + - Removed -DPROFIL + + * include/IPcheck.h + - Removed old API prototypes, added new ones + + * ircd/IPcheck.c + - Readability cleanups (well, I -think-...) + - Changed IPRegistryEntry.last_connect to a time_t. The previously + used unsigned short was probably causing interesting things after + a client had been connected longer than about 65,535 seconds... + - Removed old API functions. + + * ircd/whocmds.c + - Removed IPcheck.h include + + * Additionally modified IPcheck API calls in: + - ircd/m_nick.c + - ircd/m_auth.c + - ircd/s_bsd.c + - ircd/s_conf.c + - ircd/s_misc.c + - ircd/s_serv.c + - ircd/s_user.c + + +2000-04-30 Perry Lorier + * ircd/s_bsd.c: Sigh. :) + * ircd/m_mode.c: fix for modeless channels by poptix. + +2000-04-29 Kevin L. Mitchell + + * ircd/m_join.c: reimplement JOIN in terms of struct JoinBuf + + * ircd/channel.c (clean_channelname): make clean_channelname also + truncate long channel names + +2000-04-28 Kevin L. Mitchell + + * ircd/m_create.c: reimplement CREATE in terms of struct JoinBuf + + * ircd/channel.c: implemented joinbuf_init, joinbuf_join, + joinbuf_flush + + * include/channel.h: definitions and declarations for the struct + JoinBuf abstraction + +2000-04-29 Perry Lorier + * ircd/s_bsd.c: Ok, so I thought I compiled and tested this... + +2000-04-29 Perry Lorier + * ircd/s_bsd.c: Add debugging code to IPcheck + +2000-04-28 Kevin L. Mitchell + + * include/ircd_reply.h (SND_EXPLICIT): use instead of RPL_EXPLICIT + + * ircd/ircd_reply.c (send_reply): use SND_EXPLICIT instead of + RPL_EXPLICIT + + * ircd/m_userhost.c (m_userhost): add a dead code comment + + * ircd/m_desynch.c: forgot one... + + * ircd/m_rehash.c (mo_rehash): er, duplicates :) + + * ircd/m_proto.c (proto_send_supported): just change a comment so + it doesn't show up in my scans + + * ircd/ircd_reply.c (send_reply): fix a slight bug... + + * ircd/s_numeric.c (do_numeric): use new sendcmdto_* functions, + kinda hackish... + + * ircd/parse.c (parse_server): argument wrangling to make + processing in do_numeric a little easier to deal with + + * ircd/s_serv.c (server_estab): SERVER should come from + acptr->serv->up, not &me + + * ircd/m_lusers.c: accidentally left out sptr for a %C + + * ircd/send.c: hack to support doing wallchops... + + * ircd/m_whowas.c: convert to new send functions + + * ircd/m_whois.c: convert to new send functions + + * ircd/m_who.c: convert to new send functions + + * ircd/m_wallops.c: convert to new send functions + + * ircd/m_wallchops.c: convert to new send functions + + * ircd/m_version.c: convert to new send functions + + * ircd/m_userip.c: convert to new send functions + + * ircd/m_userhost.c: convert to new send functions + + * ircd/m_uping.c: convert to new send functions + + * ircd/m_trace.c: convert to new send functions + + * ircd/m_topic.c: convert to new send functions + + * ircd/m_time.c: convert to new send functions + + * ircd/m_squit.c: convert to new send functions + + * ircd/m_silence.c: convert to new send functions + + * ircd/m_settime.c: convert to new send functions + + * ircd/m_restart.c: convert to new send functions + + * ircd/m_rehash.c: convert to new send functions + + * ircd/m_privmsg.c: convert to new send functions + + * ircd/m_pong.c: convert to new send functions + + * ircd/m_ping.c: convert to new send functions + + * ircd/m_pass.c: convert to new send functions + + * ircd/m_opmode.c: convert to new send functions + + * ircd/m_oper.c: convert to new send functions + + * ircd/m_notice.c: convert to new send functions + + * ircd/m_nick.c: convert to new send functions + + * ircd/m_names.c: convert to new send functions + + * ircd/m_motd.c: convert to new send functions + + * ircd/m_mode.c: convert to new send functions + + * ircd/m_map.c: convert to new send functions + + * ircd/m_lusers.c: convert to new send functions + + * ircd/m_list.c: convert to new send functions + + * ircd/m_links.c: convert to new send functions + + * ircd/m_kill.c: convert to new send functions + + * ircd/m_jupe.c: convert to new send functions + + * ircd/m_invite.c: convert to new send functions + + * ircd/m_info.c: convert to new send functions + + * ircd/m_help.c: convert to new send functions + + * ircd/m_gline.c: convert to new send functions + + * ircd/m_error.c: convert to new send functions + + * ircd/m_endburst.c: convert to new send functions + + * ircd/m_die.c: convert to new send functions + + * ircd/m_destruct.c: convert to new send functions + + * ircd/m_defaults.c: convert to new send functions + + * ircd/m_connect.c: convert to new send functions + +2000-04-28 Perry Lorier + * RELEASE.NOTES: Describe a few more undocumented features. + * config/config-sh.in: change the default paths for logging + and the recommended number of channels. + * include/supported.h: Rearrange slightly, added CHANTYPE's + +2000-04-27 Kevin L. Mitchell + + * ircd/m_close.c: convert to send_reply + + * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone + + * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone + + * ircd/m_admin.c: convert to send_reply and hunt_server_cmd + + * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement + that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION + HAS A MAJOR HACK!!! The whole hunt_server architecture should be + carefully rethought... + + * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd + + * include/s_user.h: hunt_server_cmd -- replacement for hunt_server + + * ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by + numeric nick; therefore, we have to use the server name + + * ircd/m_squit.c (ms_squit): allow to squit by server numeric nick + + * ircd/send.c: fix minor bugs + + * ircd/s_user.c (check_target_limit): mark dead code so I filter + it when I grep + + * ircd/s_serv.c (exit_new_server): mark dead code so I filter it + when I grep + + * ircd/parse.c: mark dead code so I filter it when I grep + + * ircd/map.c: mark dead code so I filter it when I grep + + * ircd/ircd.c: mark dead code so I filter it when I grep + + * ircd/ircd_relay.c: convert over to new sendcmdto_*, send_reply + functions + + * ircd/channel.c: mark dead code so I filter it when I grep + + * ircd/s_stats.c: use send_reply instead of sendto_one w/rpl_str; + hope I'm not stepping on toes... + + * ircd/s_conf.c: more sendto_opmask_butone / send_reply + conversions; use ircd_snprintf in a couple of cases to negate the + possibility of buffer overflow + +2000-04-26 Kevin L. Mitchell + + * ircd/channel.c: convert as much as possible to new send + semantics + + * ircd/send.c (sendcmdto_common_channels): fix a subtle bug -- + test member->user->from->fd, not from->fd + + * ircd/gline.c (gline_add): go ahead and add badchans; we just + won't look for them in m_gline; this way, they always work... + + * ircd/jupe.c: use ircd_vsnprintf conversion specifiers + + * ircd/gline.c: since write_log now uses ircd_vsnprintf, use + ircd_vsnprintf conversion specifiers + + * ircd/support.c (write_log): use ircd_vsnprintf for write_log, so + I have my conversion specifiers + + * ircd/gline.c (do_gline): use send_reply for ERR_YOUREBANNEDCREEP + + * ircd/send.c (sendcmdto_flag_butone): explicitly send WALLOPS to + local users + + * ircd/s_serv.c (exit_new_server): rewrite exit_new_server to be a + little less brain-dead + + * ircd/s_misc.c: use sendcmdto_one, sendrawto_one, and send_reply + + * ircd/s_debug.c: use send_reply with RPL_EXPLICIT for + RPL_STATSDEBUG + + * ircd/res.c (cres_mem): use send_reply with RPL_EXPLICIT for + RPL_STATSDEBUG + + * ircd/list.c (send_listinfo): use send_reply with RPL_EXPLICIT + for RPL_STATSDEBUG + + * ircd/m_pong.c: use RPL_EXPLICIT for ERR_BADPING + + * ircd/ircd.c: use RPL_EXPLICIT for ERR_BADPING + + * ircd/s_user.c (register_user): use RPL_EXPLICIT for + ERR_INVALIDUSERNAME + + * ircd/ircd_reply.c (send_reply): support RPL_EXPLICIT + + * include/ircd_reply.h (RPL_EXPLICIT): somewhat of a hack to mark + a numeric as needing to use an explicit pattern, which will be the + first argument in the variable argument list + + * ircd/s_user.c: use sendrawto_one instead of sendto_one to send + non-prefixed nospoof PING + + * ircd/s_bsd.c: use sendrawto_one instead of sendto_one to send + non-prefixed SERVER login + + * ircd/ircd.c (check_pings): fix last sendto_one calls (except for + a numeric usage further up) + + * include/send.h: declare sendrawto_one + + * ircd/send.c (sendrawto_one): new function to use ONLY for + non-prefixed commands, like PING to client, or PASS/SERVER on + server registration + +2000-04-25 Kevin L. Mitchell + + * ircd/ircd_snprintf.c (doprintf): implement %H for possible + future expansion (channel numerics?) + + * include/ircd_snprintf.h: added documentation to # to explain use + with %C; added documentation for : to explain use with %C; added + documentation for %H for channels + + * ircd/whocmds.c: use send_reply + + * ircd/userload.c: use sendcmdto_one + + * ircd/uping.c: use sendcmdto_one + + * ircd/send.c: use new flags to %C format string; ':' prefixes + client name with a colon for local connects, '#' uses + nick!user@host form for local connects + + * ircd/s_user.c: use send_reply, sendto_opmask_butone, + sendcmdto_one, sendcmdto_serv_butone, sendcmdto_flag_butone + + * ircd/s_serv.c: use sendcmdto_one, sendto_opmask_butone + + * ircd/s_bsd.c: use sendto_opmask_butone, send_reply, + sendcmdto_one + + * ircd/s_auth.c: use sendto_opmask_butone + + * ircd/res.c: use sendcmdto_one + + * ircd/ircd_snprintf.c (doprintf): minor bug fixes and some + debugging assertions + +2000-04-24 Kevin L. Mitchell + + * ircd/support.c: dumpcore is no longer used, so get rid of it + + * ircd/parse.c: use send_reply, sendcmdto_one + + * ircd/map.c: use send_reply + + * ircd/listener.c: use send_reply + + * ircd/jupe.c: use sendto_opmask_butone, send_reply + + * ircd/ircd_reply.c: use send_reply + + * ircd/ircd.c: use sendto_opmask_butone + + * ircd/gline.c: use sendto_opmask_butone, send_reply + + * ircd/ircd_snprintf.c (doprintf): make it deal with incompletely + registered clients; make FLAG_ALT print nick!user@host; make + FLAG_COLON print :blah + + * ircd/class.c (report_classes): use send_reply instead of + sendto_one + + * ircd/hash.c (m_hash): replace sendto_one with sendcmdto_one + + * ircd/IPcheck.c (ip_registry_connect_succeeded): replace + sendto_one with sendcmdto_one + +2000-04-21 Kevin L. Mitchell + + * ircd/send.c: clean up logic in sendcmdto_channel_butone; use + MyConnect() instead of IsServer() in sendcmdto_flag_butone; define + sendcmdto_match_butone + + * include/send.h: declare sendcmdto_match_butone + +2000-04-20 Kevin L. Mitchell + + * ircd/jupe.c: update to use send_reply() + + * ircd/gline.c: update to use send_reply() + + * include/ircd_reply.h: declare send_reply + + * ircd/ircd_reply.c (send_reply): send_error_to_client, but for + replies; uses ircd_snprintf + + * ircd/send.c: added comments to redirect searchers to appropriate + sendcmdto_* function; moved new functions to end of file; added + explanatory comments; reordered arguments; defined new functions + mentioned below + + * ircd/m_jupe.c: reorder arguments to sendcmdto_* functions + + * ircd/m_gline.c: reorder arguments to sendcmdto_* functions + + * ircd/jupe.c: reorder arguments to sendcmdto_* functions + + * ircd/gline.c: reorder arguments to sendcmdto_* functions + + * include/send.h: reorder arguments, add explanatory comments, + declare new functions sendcmdto_flag_butone, sendto_opmask_butone, + and vsendto_opmask_butone + +2000-04-19 Kevin L. Mitchell + + * ircd/send.c: define sendcmdto_channel_butone, wrote a simplified + vsendto_op_mask that uses '*' instead of the receiving client + nickname + + * include/send.h: declare sendcmdto_channel_butone; takes a skip + argument that allows you to skip (or not to skip) deaf users, + users behind bursting servers, and non channel operators + +2000-04-17 Kevin L. Mitchell + + * ircd/send.c: new sendcmdto_channel_butserv -- note that old + sendto_channel_butserv has a subtle bug; also wrote + sendcmdto_common_channels. + + * include/send.h: declare new sendcmdto_* functions + + * ircd/jupe.c: support local deactivations of jupes + + * ircd/gline.c: support local deactivations of glines + + * include/jupe.h: JUPE_LDEACT allows jupes to be locally + deactivated; if they aren't locally deactivated, then it slaves to + the net-wide activation status; JupeIsRemActive() tests only + whether the jupe is active everywhere else + + * include/gline.h: GLINE_LDEACT allows glines to be locally + deactivated; if they aren't locally deactivated, then it slaves to + the net-wide activation status; GlineIsRemActive() tests only + whether the gline is active everywhere else + + * ircd/gline.c: detect overlapping G-lines; if an existing, wider + gline expires after the new one will, we drop the new one, + otherwise we add the G-line after that one (so the wide one will + apply first); if the new one contains an existing G-line and if it + will expire after the existing one, we drop the existing one to + save memory + + * ircd/m_gline.c (mo_gline): opers could issue remote local + glines when CONFIG_OPERCMDS was off; fixed + +2000-04-16 Kevin L. Mitchell + + * ircd/m_jupe.c (mo_jupe): allow target argument to be dropped if + this is a local JUPE + + * ircd/gline.c: add flags argument to gline_activate and + gline_deactivate for future expansion + + * ircd/m_gline.c: pass flags to gline_activate and + gline_deactivate + + * include/gline.h: add flags argument to gline_activate and + gline_deactivate + + * ircd/jupe.c: add flags argument to jupe_activate and + jupe_deactivate for future expansion + + * include/jupe.h: add flags argument to jupe_activate and + jupe_deactivate + + * ircd/m_jupe.c: pass a flags argument to jupe_add instead of + local, active; pass flags to jupe_activate and jupe_deactivate + + * include/gline.h: remove dead code + + * ircd/gline.c: make gline expire times relative to CurrentTime, + since that should be monotonically increasing, instead of + TStime(), which can be set backwards, and which can therefore + cause an expire time to increase; make local glines be removed + instead of just deactivated; don't let gline_find() look for + user@host glines if the mask being looked up is a channel mask + + * ircd/send.c (vsendcmdto_one): forgot to account for the case + where origin is a server and destination is a user + + * ircd/jupe.c: make jupe expire times relative to CurrentTime, + since that should be monotonically increasing, instead of + TStime(), which can be set backwards, and which can therefore + cause an expire time to increase; make local jupes be removed + instead of just deactivated + + * ircd/ircd_snprintf.c: d'oh, thanks for catching that; short for + limit is fine. any other warnings I should know about? + +2000-04-15 Thomas Helvey + + * ircd/*.c: const correctness and type safety cleanups to + get code to compile with C++ compiler. Still has + signed/unsigned comparison warnings. + +2000-04-15 Greg Sikorski + + * ircd/userload.c: change include to for + portability. + +2000-04-14 Kevin L. Mitchell + + * ircd/m_gline.c (mo_gline): d'oh, target isn't a numeric; use %C + and convert acptr... + + * ircd/s_user.c: move gline_lookup function call into + register_user, where it'll have a username to lookup! + + * ircd/m_gline.c: modify to utilize new sendcmdto_* series of + functions; also stuff send_error_to_client into return clauses + + * ircd/m_jupe.c: modify to utilize new sendcmdto_* series of + functions; also use send_error_to_client where that makes sense + + * ircd/jupe.c: modify to utilize new sendcmdto_* series of + functions; also use send_error_to_client where that makes sense + + * ircd/gline.c: modify to utilize new sendcmdto_* series of + functions; also fix gline_lookup() to deal properly with remote + clients--boy, do struct Client and struct User need to be cleaned + up! + + * ircd/ircd_snprintf.c (doprintf): a dest of &me is a server, + too... + + * ircd/send.c: wrote sendcmdto_one(), vsendcmdto_one(), and + sendcmdto_serv_butone(), all utilizing the %v conversion of + ircd_snprintf() + + * include/send.h: define IRC_BUFSIZE, max size of a message; + declare sendcmdto_one(), vsendcmdto_one(), and + sendcmdto_serv_butone() + + * include/msg.h: define all the CMD_* constants needed to utilize + the new sendcmdto_* series of functions + + * ircd/Makefile.in (SRC): list ircd_snprintf.c; run make depend + + * ircd/gline.c: remove old, dead code. + + * ircd/m_gline.c (mo_gline): disallow setting of global G-lines + unless CONFIG_OPERCMDS is enabled; disallow listing of all G-lines + (don't advertise proxies); remove dead code + + * ircd/parse.c: oper handler for JUPE only lists jupes unless + CONFIG_OPERCMDS is enabled + + * ircd/m_jupe.c (mo_jupe): don't compile mo_jupe() if + CONFIG_OPERCMDS is not enabled; we'll disable it in parse.c + + * ircd/m_opmode.c (mo_opmode): if CONFIG_OPERCMDS is not enabled, + always return ERR_DISABLED + + * ircd/m_clearmode.c (mo_clearmode): if CONFIG_OPERCMDS is not + enabled, always return ERR_DISABLED + + * ircd/s_err.c: add error message to indicate disabled commands + + * include/numeric.h (ERR_DISABLED): to indicate disabled commands + + * doc/Configure.help: add documentation for CONFIG_OPERCMDS + + * config/config-sh.in: add CONFIG_OPERCMDS, default both it and + CONFIG_NEW_MODE to 'y' for now + + * ircd/gline.c (gline_list): fix a minor formatting bogon + + * BUGS: since I fixed that bug, might as well mark it fixed. + + * ircd/m_join.c: look up badchans with GLINE_EXACT + + * ircd/m_gline.c: fix parc count problems; look up existing + G-lines with GLINE_EXACT; only set new lastmod when + activating/deactivating existing glines if old lastmod was not 0 + + * ircd/gline.c: forgot to copy the gline reason over; don't + propagate a gline with 0 lastmod if origin is user; add + GLINE_EXACT to force exact matching of gline mask + + * ircd/ircd_snprintf.c (doprintf): forgot to deal with the zero + flag properly + + * ircd/s_conf.c (find_kill): gline_find() takes a char *userhost, + but gline_lookup() actually takes a client--d'oh. + +2000-04-13 Thomas Helvey + * ircd/IPcheck.c: Back port BLMet's bugfix from 2.10.10 + +2000-04-13 Greg Sikorski + + * ircd/whocmds.c: Don't make idle flag default in /who, to prevent: + "/who * x" + "Gte3 H*iwg Gte@212.49.240.217 :1 :0 I am the one that was." + (Found by Plexus). + + * ircd/whocmds.c: Change idle time calc from socket idle to user + idle. + +2000-04-13 Kevin L. Mitchell + + * config/aclocal.m4 (unet_CHECK_TYPE_SIZES): check size of void *, + too, for ircd_snprintf.c + + * include/ircd_snprintf.h: documentation for ircd_(v)snprintf, in + comments; mostly descended from the Linux manpage for printf, but + also documenting the extensions. + + * ircd/ircd_snprintf.c: NULL dest is equivalent to going to a + client; make 'q' be the same as 'L'; remove __inline__; only + define EXTENSION if HAVE_LONG_LONG is defined + + * include/handlers.h: declare m_gline() + + * ircd/parse.c: gline can be called by users, but it only lists + the glines. + + * ircd/s_user.c (set_nick_name): resend gline if a remote server + introduces a glined client + + * ircd/s_serv.c (server_estab): burst glines, too + + * ircd/gline.c: fix up all the expire times to be offsets; + simplify gline_resend() + + * ircd/m_gline.c: begin coding replacements for ms_gline(), + mo_gline(), and m_gline() + + * ircd/gline.c (gline_add): allow *@#channel to work correctly; + also, prohibit local BADCHANs if LOCAL_BADCHAN not defined + +2000-04-13 Greg Sikorski + + * tools/Bouncer/*: Add comments/documentation/tags. + * tools/Bouncer/*: Add debug defines, make task fork(). + +2000-04-12 Thomas Helvey + * ircd/s_err.c: Cleanup s_err.c make one table so we + don't have to do anything tricky to get an error string. + +2000-04-12 Greg Sikorski + * Add port bouncer for http (x/w) + +2000-04-12 Kevin L. Mitchell + + * ircd/s_conf.c (find_kill): replaced call to find_gline() with a + call to gline_find(); also used GlineReason() instead of direct + reference to structure member + + * ircd/m_join.c (m_join): replace bad_channel() calls with calls + to gline_find(name, GLINE_BADCHAN), and also check to see if gline + is active + + * ircd/channel.c: nothing seems to be called anywhere... + + * ircd/s_err.c: update a couple of replies to dovetail with new + semantics + + * ircd/gline.c: begin complete re-implementation of gline.c along + the lines of the final design of jupe.c + + * include/gline.h: begin complete re-implementation of gline.c + along the lines of the final design of jupe.c + + * ircd/channel.c (mode_process_clients): fix "Deop of +k user on + %s by %s" message... + + * ircd/ircd_snprintf.c: my new snprintf()-like functions + + * include/ircd_snprintf.h: my new snprintf()-like functions + +2000-04-11 Thomas Helvey + * ircd/IPcheck.c: removed old dead code + * ircd/s_user.c (send_user_info): removed non-standard + user not found message for userhost/userip + +2000-04-11 Greg Sikorski + + * ircd/s_err.c: Added missing quotes to ERR_DONTCHEAT numeric. + * doc/p10.html: Work on chapter 4. + +2000-04-10 Kevin L. Mitchell + + * ircd/channel.c (mode_parse_client): fix coredump on /mode + #foobar +o nosuchnick + +2000-04-10 Perry Lorier + * BUGS: Added bug. + +2000-04-09 Thomas Helvey + * include/IPcheck.h: fix prototype + * ircd/s_user.c: fix usage of IPcheck_remote_connect + * ircd/IPcheck.c: removed unused args + +2000-04-09 Thomas Helvey + * include/IPcheck.h: add proto for IPcheck_expire + + * ircd/IPcheck.c: Rewrote + + * ircd/ircd.c: Add IPcheck_expire to main message loop + + * ircd/s_user.c: Redo target hashing, refactor target code + + * include/numeric.h: Cleaned up numerics, added which ones are + in use by other networks and what they are in use for. + + * ircd/channel.c: cleaned can_join(), allow anyone through anything + if /invited, simplified the function. Opers overusing OPEROVERRIDE + will get a message explaining to them not to cheat. + + * ircd/m_join.c: cleaned up the various join functions, should be + a lot more efficient. Still needs work. Now assumes that s<->s + won't send it a JOIN 0. Service coders - note this and tread with + care. + + * ircd/m_stats.c: added Gte-'s stats doc patch. + + * ircd/m_version.c: /version now returns the 005 numeric as well. + as requested by Liandrin. + + +2000-04-07 Kevin L. Mitchell + + * ircd/m_clearmode.c: add include for support.h for write_log() + + * configure: move ircd/crypt/* to tools/* + +2000-04-06 Thomas Helvey + * ircd/s_auth.c: Shorten auth connect timeout to 60 seconds + set client host to server alias if connection from localhost + +2000-04-06 Perry Lorier + * ircd/ircd.c: Fix core during pinging (oops) + +2000-04-06 Perry Lorier + * ircd/send.c: fixed wrong ident being sent to channels bug. + * include/numerics.h: Updated some of the numerics from other + networks. Flagged some as 'unused' by undernet. + +2000-03-30 Perry Lorier + * ircd/ircd.c: Lets see if this helps the ping problem at all. + * ircd/whocmds.c, /doc/readme.who: Added %l specifier to get idle + time for local clients. (as requested), extended who now returns all + the flags (@+!) so you can tell the complete state of a client. + +2000-03-30 Thomas Helvey + * m_rping.c m_rpong.c: add Gte's rping/rpong fixes + +2000-03-30 Perry Lorier + * ircd/parse.c: oops, missed opers. + +2000-03-30 Perry Lorier + * ircd/parse.c: fixed mystifying ping bug thats been plaguing us + for so long. Remember: m_ping MUST be in the parse array. :) + +2000-03-30 Perry Lorier + * ircd/ircd.c: test in check_pings was wrong. I move that we + disallow cvs commit after 10pm localtime.... + +2000-03-30 Perry Lorier + * ircd/m_pong.c: Fix it for servers too. + +2000-03-30 Perry Lorier + * ircd/m_pong.c: Fix ping timeout bugs + +2000-03-30 Perry Lorier + * ircd/channel.c: Bans had CurrentTime in their when field instead + of TStime() + +2000-03-31 Thomas Helvey + * ircd/numnicks.c (SetXYYCapacity): fix for extended + numerics. + +2000-03-30 Perry Lorier + * ircd/m_nick.c: send kills both ways so when we add nick change + on collision we don't desync the network. + + * ircd/map.c: Fixup the map a bit more. + +2000-03-31 Kevin L. Mitchell + + * ircd/m_clearmode.c (do_clearmode): Log the CLEARMODE to OPATH + + * ircd/m_opmode.c: Log the mode changes to OPATH + + * ircd/channel.c (modebuf_flush_int): Log the mode changes to + OPATH + + * include/channel.h (MODEBUF_DEST_LOG): Log the mode changes to + OPATH + + * doc/Configure.help: help text for CONFIG_LOG_OPMODE / OPATH + + * config/config-sh.in: added OPATH for opmode log file + + * ircd/m_clearmode.c (do_clearmode): updated uses of + modebuf_mode_string() for the new usage + + * ircd/channel.c: added flag MODE_FREE and an int argument to + modebuf_mode_string() to indicate that the string must be free'd; + updated calls to modebuf_mode_string() for the new usage; called + collapse(pretty_mask()) on the ban string and use allocated memory + for it; added ban list length accounting; fixed a number of small + bugs in ban processing + + * include/channel.h: added flag MODE_FREE and an int argument to + modebuf_mode_string() to indicate that the string must be free'd + + * ircd/m_clearmode.c (do_clearmode): made sure clearmode removed + keys and limits that are set + +2000-03-30 Perry Lorier + * ircd/ircd.c: rewrote check_pings() for maintainability + and speed. Also changed quit msg's so they don't have + redundant nick[host] info in them. + + * ircd/send.c: Changed write errors to report what error + occured (if possible). + + * ircd/gline.c: added gline comment to the quit. + + * ircd/m_server.c: Added suggestions to server quits mentioning + what went wrong so the admin can fix it earlier instead of asking + questions... + + * ircd/map.c: Changed m_map() to hide numerics, show a * beside + servers that aren't fully burst yet. And show '(--s)' for servers + where its not sure. + + * doc/example.conf: Fixed wrapped U: + +2000-03-30 Kevin L. Mitchell + + * ircd/m_mode.c (ms_mode): implemented a new m_mode in terms of + mode_parse() (version selectable at compile time) + + * ircd/m_clearmode.c (mo_clearmode): clean_channelname(parv[1]) + + * ircd/m_opmode.c (mo_opmode): clean_channelname(parv[1]) + + * config/config-sh.in: add new config option to enable new m_mode + implementation + + * doc/Configure.help: add documentation for new config option + CONFIG_NEW_MODE + + * ircd/channel.c (mode_parse_client): /opmode #foobar -o -- 461 + MODE -v : Not enough parameters + + * ircd/m_clearmode.c (do_clearmode): do_clearmode() would remove + +k and +l even if they weren't set... + + * ircd/m_opmode.c: implement the OPMODE command using mode_parse() + + * ircd/channel.c: make mode_process_clients() clear the DEOPPED + flag; fix +s+p exclusivity; add MODE_ADD/MODE_DEL to flag list + for; test the 0-th member, not the i-th member, of the client + change state stuff + + * ircd/m_clearmode.c (do_clearmode): use the new + mode_invite_clear() function + + * ircd/channel.c: cleared up all the compile-time warnings and + errors + + * include/channel.h: added declarations for mode_ban_invalidate() + and mode_invite_clear() + + * ircd/channel.c: finished mode_parse(), then broke it up into a + dozen or so helper functions to make the code easier to read + +2000-03-29 Thomas Helvey + * ircd/ircd.c: refactor server initialization a bit, use + getopt for parsing command line, refactor init_sys, main, + and other bits. + + * ircd/s_bsd.c: add functions for initialization to clean + up logic a bit and remove duplicated code. + + * include/ircd.h: add struct for server process related + variables. + +2000-03-29 Kevin L. Mitchell + + * ircd/channel.c: initial definition of mode_parse(); flags to + prevent doing the same thing multiple times; helper method + send_notoper() to send a "Not oper"/"Not on channel" notice + + * include/channel.h: declare mode_parse() and helper flags + + * ircd/channel.c (modebuf_flush_int): fiddled with timestamp + sending to match the current action of set_mode() closely enough + that hopefully there won't be major conflicts + + * ircd/channel.c (modebuf_flush_int): consolidated the mode string + building logic, reversed the order of the arguments to mode + commands to have '-' preceed '+' + +2000-03-29 Thomas Helvey + * ircd/s_bsd.c (add_connection): don't disable socket options + let OS tune itself and allow important performance tweaks to + work. + +2000-03-28 Kevin L. Mitchell + + * ircd/channel.c (modebuf_flush_int): use %d, not %-15d; I got + confused by set_mode, which is doing some really weird logic; + guess what I'm going to rewrite next? ;) + +2000-03-28 Kevin L. Mitchell + + * include/channel.h: added MODE_SAVE for the bounds checking stuff + in modebuf_flush + + * ircd/channel.c: make modebuf_flush into modebuf_flush_int and + make it do bounds checking on the buffer; all modes are sent only + if the all parameter is 1; modebuf_flush is the exported wrapper + + * include/channel.h: add BOUNCE, renumber flags to get a little + more space + + * ircd/channel.c (modebuf_flush): don't overload HACK2, add + BOUNCE; send DESYNCH message + +2000-03-27 Kevin L. Mitchell + + * ircd/m_clearmode.c (do_clearmode): only mark the modes the + channel actually has in effect for deletion + + * ircd/channel.c: added explanatory comments to all added + functions; made flushing take place at the correct place even if + the MODEBUF_DEST_DEOP flag is set; rewrote build_string() helper + to bash some stupid bugs; made modebuf_flush() return if ModeBuf + is empty, fixed the apparent source, removed some bogus string + termination code, properly terminate the mode strings, add support + for HACK2 and HACK3, made limit strings not be sent if the limit + is being removed, changed where '+' and '-' come from in sent + strings, added support for DEOP flag, set up bouncing code for + HACK2 + + * ircd/Makefile.in: ran make depend + + * include/channel.h: added new defines for future functionality, + made modebuf_flush() return int so I can use tail recursion + + * ircd/m_clearmode.c: add msg.h to includes; other misc cleanups + to make it all compile + + * ircd/m_opmode.c: add msg.h to includes... + + * ircd/m_clearmode.c: implemented mo_clearchan()/ms_clearchan() + + * ircd/channel.c (modebuf_flush): realized I forgot to + nul-terminate addbuf/rembuf properly... + + * ircd/m_clearmode.c (do_clearmode): wrote do_clearmode()... + + * ircd/channel.c (modebuf_flush): correct sendto_server_butone to + sendto_serv_butone--blah^2 + + * ircd/send.c (sendto_serv_butone): stupid comments confused me + + * ircd/channel.c (modebuf_flush): if there are no mode changes to + propagate, we're done... + + * ircd/channel.c (modebuf_flush): duh; it's sendto_server_butone, + not sendto_all_butone + + * ircd/m_clearmode.c: define skeleton for m{o,s}_clearmode + + * ircd/m_opmode.c: define skeleton for m{o,s}_opmode + + * ircd/Makefile.in (SRC): added m_opmode() and m_clearmode() to + the list + + * ircd/parse.c: added messages for opmode and clearmode + + * include/handlers.h: added declarations for mo_opmode(), + ms_opmode(), mo_clearmode(), and ms_clearmode() + + * include/msg.h: define MSG_OPMODE, TOK_OPMODE, MSG_CLEARMODE, and + TOK_CLEARMODE + + * include/channel.h (MODEBUF_DEST_OPMODE): Define the + MODEBUF_DEST_OPMODE flag + + * ircd/channel.c (modebuf_flush): added new flag, + MODEBUF_DEST_OPMODE; causes channel MODE/HACK(4) notice to appear + to originate from source's server (or source itself, if + IsServer(source)); also causes a server-level MODE to be sent as + OPMODE instead + + * include/channel.h: defined MODEBUF_DEST_SERVER, + MODEBUF_DEST_HACK4 + + * ircd/channel.c: Add another argument to build_string() to handle + numeric nicks; implemented MODEBUF_DEST_SERVER to send MODEs to + servers; implemented MODEBUF_DEST_HACK4 to cause HACK(4) notices + to be sent out + +2000-03-27 Perry Lorier + + * ircd/s_bsd.c: fixed missing 'u' typo. + +2000-03-26 Kevin L. Mitchell + + * ircd/channel.c: implement modebuf_init(), _mode(), _mode_uint(), + _mode_string(), _mode_client(), _flush(); also implemented a + simple build_string() + + * include/channel.h: added definition of ModeBuf, modebuf_* + manipulation functions, and a couple of helper macros + +2000-03-24 Thomas Helvey + * numicks.c: convert extended numerics to use original mask version + * numnicks.h: "" + * s_user.c: +2000-03-23 Thomas Helvey + * Merge in changes from production +2000-03-22 Thomas Helvey + * numicks.c: Tweak to numnick generator to reduce possibility of duplicates. + * rfc1459.unet: Add Maniac's documentation for /names 0 +* Fix misc. jupe bugs that somehow made it into the tree +* Escape /names 0 to mean /names --Maniac +* Don't core when server asks for info --Maniac +* Add Kev's jupe patch --Bleep +* Add Maniacs squit patch --Bleep +* Merge in u2_10_10_beta07 changes --Bleep +* Merge in u2_10_10_beta06 changes --Bleep +* Start ircu2.10.11 development, beta branch u2_10_10 --Bleep +#----------------------------------------------------------------------------- diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..be52175 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,1078 @@ +# Doxyfile 1.3.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "Undernet IRC Daemon" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = "$Name: u2_10_12_09 $" + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc/doxygen + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ircd include + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = DEBUGMODE FORCEINLINE IPV6 + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = ircu.tags + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = NO + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = NO + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similiar to the OMG's Unified Modeling +# Language. + +UML_LOOK = YES + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..41b6e81 --- /dev/null +++ b/INSTALL @@ -0,0 +1,61 @@ + +ircu - INSTALL + Original by Run , + Isomer , and Kev + Rewritten by Sengaia + Updated by Entrope + +Compiling and installing ircu should be a fairly straightforward process, +if you have obtained this software as a (.tar.gz) package, please consider +using CVS (described below). Using CVS will make updating your installation +much easier. + +After obtaining the latest version of the ircu source code, change into the +source directory (ircu2.10.xx.yy), and run "./configure". To see the various +ways in which you can customize your installation, run "./configure --help". + +The configure process will check your environment and prepare itself for +compiling the source code. If one or more of the prerequisites cannot be +found, configure will terminate with an error. You will need to resolve +this and run configure again. + +If configure runs without error(s), you are ready to compile. To compile ircu, +run "make". Please use GNU make and gcc. If the source code does not compile, +make sure your environment is setup correctly. If you are convinced the source +of the failure is ircu, gather all relevant information about your system such +as the Architecture, OS version, the configure statement you used, etc. and +contact coder-com@undernet.org. + +Once ircu is compiled, install it by running "make install". + +Next, you will have to configure your IRC server by setting up your ircd.conf +file. Use the included doc/example.conf as a starting point; it is installed +in $HOME/lib/example.conf by default. +Setting up ircd.conf can be a bit tricky, so if this is your first time doing +it, begin with a bare-bones configuration and extend it as you go. + +If you are upgrading from ircu2.10.11, use the ircd/convert-conf +program to convert your existing configuration file(s). It is +compiled during "make" and installed to $PREFIX/bin/convert-conf. + +Good Luck! + +RETRIEVING IRCU VIA CVS + +The recommended way to get the ircu package now is to use CVS. CVS makes +upgrades a lot less painful and lets you get the latest package. + +The first thing you need to do is login to the cvs server: +# cvs -d :pserver:anonymous@cvs.undernet.org:/cvsroot/undernet-ircu login + +(we recommend that you cut and paste the above line to use it :) +When it prompts you for a password hit enter since there isn't one. + +To check out the the last development version of ircu, use: +# cvs -d :pserver:anonymous@cvs.undernet.org:/cvsroot/undernet-ircu co -P ircu2.10 +The latest stable version has a tag name that depends on the version +number; see doc/readme.cvs for details. + +To update your source tree to the latest version, run "cvs update -dP" from within the +ircu2.10 directory. For more information, see http://coder-com.undernet.org. + diff --git a/INSTALL_FR b/INSTALL_FR new file mode 100644 index 0000000..d29054c --- /dev/null +++ b/INSTALL_FR @@ -0,0 +1,169 @@ +Fichier d'installation en français par delete + Mis à jour par delete + + +L'UnderNet IRC daemon. + +L'installation de l'IRC daemon (ircd) existes dans les ordres que +voici: + +1) Déballer le module. +2) cd dans le répertoire. +3) `./configure' +4) `make config' +5) `make install' + +1) Déballer le module. +==================== + +La voie recommendée pour avoir le module de l'ircu est d'utilisé CVS. +CVS obtiend les marques améliore beaucoup moins douloureux et vous +laisse obtenir le dernier module. + +1.1) La première chose que vous avez besoin de faire est de vous +identifiez envers le serveur. + +Avec la commande que voici: + +cvs -d :pserver:anonymous@cvs.undernet.org:/cvsroot/undernet-ircu login + +(Nous recommandons que vous coupez et collez la ligne ci-dessus pour +l'utiliser :). Quand il insiste pour un mot de passe écriver +'anoncvs'. + +1.2) Alors vous allez décider lesquels des versions vous voulez +utiliser: + +stable - Ceci est la version recommandé. En cas de doute utiliser le! +Pour avoir cette version, additioner "-r u2_10_11" à la ligne de +commande du CVS. + +beta - Cette version subit le test avant d'être favorisée à +ircu2.10. Il peut être buggé. L'utilisation sur le réseau de +production d'undernet est interdite, excepté certains serveurs +autorisés. La flag "-r" que vous avez besoin de regardez est documenté +sur le site web du Coder Committee's, http://coder-com.undernet.org. + + +alpha - C'est la version de développement. On ne le garantit pas de +compiler, et devrait être considéré FORTEMENT instable. On ne le +destine pas pour l'usage de production. Pour contrôler ce +branchement, n'employez aucun flag "-r". + + +Pour vérifier la version, tapez: + +cvs -d :pserver:anonymous@cvs.undernet.org:/cvsroot/undernet-ircu co -P ircu2.10 + +Les deux lignes ci-dessus ne devraient pas avoir une entrée entre +eux. Si vous voulez utiliser un autre version, placez le flag "-r" +approprié après le "co". Ceci créera un répertoire ircu2.10, et +mettra tous les fichiers dedans. + +Pour avoir la dernière version, tapez "cvs update -dP". + +Pour plus d'information, regardez sur le site de coder-com à: +http://coder-com.undernet.org/ + +La vieille (essayé et rectifiez) méthode qui fonctionne même lorsque +le website n'est pas DoS'd (soupir) est inclue ci-dessous. En +utilisant la méthode au-dessous vous n'avez qu'à taper "cvs update - +dP" pour obtenir la dernière version. + +Le nom du module est quelque chose comme `ircu2.x.y.z.tgz ', où +"x.y.z" est la version en cours (au moment de l'écriture nous avons +ircu2.10.10.pl15.(development).tgz). Vous avez besoin de `gzip', du +GNU, ouvrez la commande et uncompresser ce module. Vous pouvez +télécharger ceci de chaque site ftp GNU pour presque n'importe quel +système d'exploitation. + + Si vous avez un tar GNU, taper: + + tar -xzf ircu2.x.y.z.tgz + + où "ircu2.x.y.z.tgz" est le nom du package. + + Si sa ne marche pas, essayez: + + gzip -d ircu2.x.y.z.tgz | tar -xvf ircu2.x.y.z.tar + +Les deux méthodes ont comme conséquence un répertoire "ircu2.x.y.z" +dans votre répertoire actuel. + +2) cd dans la directory de base. +================================ + +Faites à ce répertoire votre répertoire actuel en tapant: + + cd ircu2.x.y.z + +ou ircu2.10 si vous utilisé cvs. + +Là où "ircu2.x.y.z" est le nom du répertoire dézippé. + +3) "./configure" +================= + +Ceci produira le 'config/setup.h', votre configuration dépend du +système d'exploitation. + +Si ceci produit un message une erreur tel que "Permission Denied", +alors essai avec "chmod a+x ./configure" pour avoir la permission +d'excuter le fichier. + +Pour plus d'information sur la commande configure, tapez "./configure +--help". + +4) "make" +========= + +Tapez: + +make + +dans le répertoire de base. Il devrait compiler sans erreurs ou +avertissements. Veuillez expédier n'importe quel problème aux +dévelopeurs, mais seulement après que vous vous êtes assurés ce n'est +pas une erreur de vous-même. Si vous voulez que votre système +d'exploitation soit supporté dans de futures versions, faite une +connexion qui fixe réellement le problème. + +5) "make install" +================= + +Type: + +make install + +Ceci devrait installer l'ircd et la dir man. Veuillez revérifier les +permissions du binaire. + +Naturellement, vous avez besoin d'un ircd.conf syntactiquement correct +dans DPATH. Voyez les Docs pour certaine information sur ceci. Créez +également un ircd.motd avec le texte de votre MOTD. Et créez +finalement un remote.motd avec trois lignes de texte comme MOTD à +distance. Encore, tous ces fichiers devraient être lisibles par +l'ircd, et les fichiers journaux devraient être écrivable. + +En cas de problème. +====================== + +Si vous avez des problèmes à configurer le serveur vous pourriez +considérer d'installer GNU dans votre VOIE D'ACCÈS. Dans certains cas +un cerveau-mort /bin/sh pose le problème, dans ce cas je suggère +d'installer le "bash" et de l'utiliser comme (as sh - > bash). En +conclusion, tout autre problèmes de compilent devrait être résolu +quand vous installez le GCC. Si vous avez des problemes avec le +startage du ircd, executer "./configure" encore et mettez la commande +"--enable-debug". Recompiler l'ircd, et executer-le avec: + +ircd -t -x9 + +Cela va écrire un debug output a votre écrant, probablement avec la +cause du pourquoi il ne veut pas starter. + +N'UTILISEZ PAS UN SERVEUR AVEC LA MISE AU POINT PERMISE SUR UN RÉSEAU +DE PRODUCTION. Faire ainsi est un risque d'intimité grave. + +Si quelque chose ne marche pas, envoyer un e-mail à +coder-com@undernet.org diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9a17037 --- /dev/null +++ b/LICENSE @@ -0,0 +1,249 @@ + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..ff3b25a --- /dev/null +++ b/Makefile.in @@ -0,0 +1,139 @@ +# Makefile for the Undernet IRC Daemon. +# Copyright (C) 1997, Carlo Wood + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#### Start of system configuration section. #### + +prefix = @prefix@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SHELL = @SHPROG@ +RM = @RMPROG@ +AWK = @AWK@ +@SET_MAKE@ +#### End of system configuration section. #### + +SUBDIRS = doc ircd +IRCD_MAKEFILES = Makefile doc/Makefile ircd/Makefile + +all: build + +.PHONY: server build depend install +# Some versions of make give a warning when this is empty: +.SUFFIXES: .dummy + +build: ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "Building $$i..."; \ + cd $$i; ${MAKE} build; cd ..; \ + done + +root-clean: + @for i in '*.orig' '.*.orig' '\#*' '*~' '.*~' '*.bak' '.*.bak' core; do\ + echo "Removing $$i"; \ + REMOVE_FILES="`find . -name "$$i" -print`"; \ + test -n "$$REMOVE_FILES" && ${RM} -f $$REMOVE_FILES; \ + done || true + +sub-clean: ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "Cleaning $$i..."; \ + cd $$i; ${MAKE} clean; cd ..;\ + done + +clean: root-clean sub-clean + +root-distclean: root-clean + @for i in '*.rej'; do \ + echo "Removing $$i"; \ + REMOVE_FILES="`find . -name "$$i" -print`"; \ + test -n "$$REMOVE_FILES" && ${RM} -f $$REMOVE_FILES; \ + done || true + +sub-distclean: ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "Dist-cleaning $$i..."; \ + cd $$i; ${MAKE} distclean; cd ..;\ + done + +distclean: root-distclean sub-distclean + ${RM} -f Makefile config.h config.log config.cache config.status \ + stamp-h + +maintainer-clean: root-distclean ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "maintainer-cleaning $$i..."; \ + cd $$i; ${MAKE} maintainer-clean; cd ..;\ + done + +depend: ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "Making dependencies in $$i..."; \ + cd $$i; ${MAKE} depend; cd ..; \ + done + +install: ${IRCD_MAKEFILES} + test -d ${prefix} || mkdir ${prefix} + @for i in ${SUBDIRS}; do \ + echo "Installing $$i..."; \ + cd $$i; ${MAKE} install; cd ..; \ + done + +uninstall: ${IRCD_MAKEFILES} + @for i in ${SUBDIRS}; do \ + echo "Uninstalling $$i..."; \ + cd $$i; ${MAKE} uninstall; cd ..; \ + done + +${srcdir}/aclocal.m4: acinclude.m4 + cd ${srcdir} && aclocal + +${srcdir}/configure: configure.in aclocal.m4 + cd ${srcdir} && autoconf + +# autoheader might not change config.h.in, so touch a stamp file. +${srcdir}/config.h.in: stamp-h.in +${srcdir}/stamp-h.in: configure.in aclocal.m4 acconfig.h + cd ${srcdir} && autoheader + echo timestamp > ${srcdir}/stamp-h.in + +config.h: stamp-h +stamp-h: config.h.in config.status + ./config.status + +Makefile: Makefile.in config.status + ./config.status + +doc/Makefile: doc/Makefile.in config.status + ./config.status + +ircd/Makefile: ircd/Makefile.in config.status + ./config.status + +config.status: configure + ./config.status --recheck + +# Some versions of 'make' do not support the .PHONY target : +FORCE: + +# Indent all headers and source files: +indent: + @test "`indent --version`" = "GNU indent 2.1.0" || \ + (echo "You need GNU indent 2.1.0; See doc/readme.indent" && exit -1); + VERSION_CONTROL=none indent include/*.h ircd/*.c + diff --git a/README b/README new file mode 100644 index 0000000..e722967 --- /dev/null +++ b/README @@ -0,0 +1,140 @@ + + Welcome to ircu2.10.12, the Undernet IRC daemon + +Version u2.10.12 of the Undernet ircd incorporates many new features +over its predecessor, and we feel that using it will make you very +happy indeed. + +New features include: + - A completely rewritten network event engine, which make full use + of the asynchronous event engines available in FreeBSD (kqueue) + and Solaris (/dev/poll), resulting in dramaticaly improved + performance. + - New F: (feature) lines in ircd.conf, and the GET/SET commands allow + many settings to be changed dynamically, rather than by with compile- + time configuration. + - The new "account" feature added to the P10 protocol, allows people to + remain logged in to service bots (i.e., gnuworld) during a netsplit. + This means people will not have to login again once the network rejoins. + +INSTALLATION + +Please see the INSTALL file for installation instructions, for hints on how +to best configure your OS for running ircu under high load, see the various +README. files. + +COMPATIBILITY + +This version of ircu will only work with servers that use the P10 protocol, +some of the new features will only work between ircu2.10.12 servers. + +GENERAL PERFORMANCE HINTS + +For platform-specific notes and hints, see the platform-specific +sections below. These notes apply to servers that will serve large +numbers (thousands) of clients simultaneously. If your server serves +a small amount of users, the defaults should work well enough. + + - Run an OS that supports an asynchronous network event engine; currently + these are FreeBSD (kqueue), and Solaris (/dev/poll); possibly other BSDs + will also support kqueue. This will have a dramatic effect on performance. + - Make things as lean as possible: Make your server dedicated to ircu, + disable anything that is not neccesary, and build a custom kernel (where + possible). + - Tune kernel parameters as described in the platform-specific + sections below. + - With many clients connecting each second, ircu will be doing lots of DNS + lookups. Make sure that the DNS server(s) in your /etc/resolv.conf are as + close as possible, or run a local caching DNS server on your IRC server. + +TIME SYNCHRONIZATION + +Many things can and will go horribly wrong when the clocks on the servers +on your network become (too far) out of sync. It is therefore highly +recommended that all servers run a version of ntpd that will keep their +clocks from going astray. + +INFORMATION HIDING + +As per undernet-admins CFV-165, this server contains code that will, +by default, hide certain information from ordinary users. If you do +not want this, override the default "HIS" feature settings in your +ircd.conf. + +MORE INFORMATION + +For more information on this software, see the included documentation +in the doc/ directory, as well as http://coder-com.undernet.org. + +For general information on the Undernet, vist http://www.undernet.org + +Happy IRCing! + +RUNNING THIS SERVER ON LINUX + +If you run Linux 2.6 or above (or 2.4 with appropriate patches), ircu +can use the epoll family of system calls for much more efficient +checks of which connections are active. Most pre-epoll systems will +use 100% CPU with 2000 clients; with epoll, a server may use only a +few percent of CPU with the same load. + +To handle that many connections, the ircd must be started with a high +enough file descriptor resource. Check your distribution's docs on +how to set the global and per-user limits according to your expected +load. + +RUNNING THIS SERVER ON FREEBSD + +When running on FreeBSD, ircu can make use of the kqueue() event engine, which +results in much improved performance over the old poll()-based method. kqueue +is included in the more recent 4.x releases of FreeBSD. + +In order for ircu to be able to serve many clients simultaneously, you need +to increase the maximum allowable number of open files in the system. To do +this, add commands such as the following during your system's boot sequence: + +sysctl -w kern.maxfiles=16384 +sysctl -w kern.maxfilesperproc=16384 + +Unless you will be serving thousands of clients simultaneously, you will not +need to do the following, unless of course you just can't stand having a +system that is not optimized to its limits :) + +Build a custom kernel: Make your kernel as lean as possible by removing all +drivers and options you will not need. The following parameters will affect +performance, they are listed with suggested values only. For more information +on what they do exactly, see FreeBSD's documentation. + +maxusers 2048 +options NMBCLUSTERS=65535 +options ICMP_BANDLIM + +Also, you may wish to run the following at system startup (from /etc/rc.local, +or whichever other method you prefer): + +sysctl -w net.inet.tcp.rfc1323=1 +sysctl -w net.inet.tcp.delayed_ack=0 +sysctl -w net.inet.tcp.restrict_rst=1 +sysctl -w kern.ipc.maxsockbuf=2097152 +sysctl -w kern.ipc.somaxconn=2048 + +Created by Sengaia , July 20 2002. + +RUNNING THIS SERVER ON SOLARIS + +When running on Solaris, ircu can make use of the /dev/poll event engine, which +results in much improved performance over the old poll()-based method. Solaris +versions 8 and 9 include /dev/poll out of the box, for Solaris 7 you will have +to grab and install Patch-ID 106541-21. + +In order to increase the number of clients ircu can handle, add lines such as +the following to /etc/system: + +* set hard limit on file descriptors +set rlim_fd_max = 16384 +* set soft limit on file descriptors +set rlim_fd_cur = 8192 + +For more useful hints see http://www.sean.de/Solaris/soltune.html + +Created by Sengaia on July 20, 2002. diff --git a/RELEASE.NOTES b/RELEASE.NOTES new file mode 100644 index 0000000..47106bd --- /dev/null +++ b/RELEASE.NOTES @@ -0,0 +1,222 @@ +Release notes for ircu2.10.12 +Last updated: 1 Sep 2005 +Written by Michael Poole +Based on earlier documents by Kev and +Braden . + +This document briefly describes changes in ircu2.10.12 relative to +ircu2.10.11. ircu2.10.12 is only compatible with servers that +implement the P10 protocol. It has been tested to link against +ircu2.10.11, but some features (notably IPv6 support and oplevels) are +not supported by ircu2.10.11. + +Semantic Changes (TAKE NOTE): + +Channel keys and passwords (see the "oplevels" enhancement below) +listed in a JOIN are now only checked against the corresponding +channel. In ircu2.10.11, "JOIN #a,#b key" would attempt to use "key" +as the key for both #a and #b. ircu2.10.12 will only attempt to use +it as the key for #a. ircu2.10.12's behavior matches that documented +in RFC 1459. + +Enhancements: + +The configuration file format has changed to one that is easier to +read. It is based on the configuration parser found in ircd-hybrid. +As usual, an example configuration file can be found in the doc +subdirectory. + +ircu now supports IPv6 clients. If your operating system provides +IPv6 socket support, ircu can accept connections on IPv6 addresses. +Even if your operating system does not support IPv6 sockets, you can +link (using IPv4) to a server that has IPv6 clients, and ircu will +treat the IPv6 clients correctly. + +The DNS resolver has been replaced with a streamlined version (also +from ircd-hybrid) that avoids some of the complications from using +the full libresolv or adns libraries. + +The server can query an IAUTH external authorization server. The +protocol is described in doc/readme.iauth. This allows an external +program to accept or reject any client that connects to the server +and allows that external program to assign an account stamp to the +incoming user. + +A new feature called "oplevels" has been added. It uses new channel +keys (+A for the administrator, +U for users) to grant chanop status +when you join using those keys. Part of this channel protection is +that you cannot be deopped in channel by someone who you opped. + +A new channel mode, +D, has been added for auditorium-style channels. +These are channels where most users listen but do not speak or receive +ops or voice. The effect of +D is that the server waits to send the +JOIN message for new users until the user gets ops or voice or sends a +message to the channel. A list of join-delayed users in a channel may +be retrieved by using /NAMES -d #channel. The response to /NAMES -d +uses the same format as numeric 353, but uses numeric 355 instead. If +an op removes +D while there are still join-delayed users, the server +automatically sets mode +d, and removes +d when the last user's join +is shown. It is not possible to set channel mode +d manually; its +purpose is to warn channel users that there are "hidden" users in the +channel. + +More than one hashing mechanism is now supported for oper passwords, +and a new tool (ircd/umkpasswd) is provided to generate them. + +Commands that send messages to specified services may be defined in +the configuration file by using Pseudo blocks. This lets users use +commands like /X or /CHANSERV from their client, without tying the +admin to a particular arrangement or naming of services. + +The /stats command accepts string identifiers in addition to +single-character identifiers. For example, "/stats access" shows the +same data as "/stats i". Supported names are shown by /stats. New +/stats options are: /stats a (nameservers), to list DNS nameservers in +use; /stats L (modules), to list loaded modules; and /stats R +(mappings), to list privmsg helper commands defined by Pseudo blocks. +By default, all of these are hidden from normal users. + +Client blocks (previously I: lines), Operator blocks (previously O: +and o: lines), channel bans and silences may use CIDR notation instead +of simple wildcards. You may also have silence exceptions by putting +'~' before the mask; for example, if you wish to silence everyone +except X, you could use SILENCE *!*@*,~X!cservice@undernet.org. + +The server will no longer kick "net riders" in keyed (+k) channels if +both sides of the net join have the same key. + +IP masks (as used in bans, G-lines, etc) are now parsed in a more +forgiving manner. 127.0.0.0/8, 127.* and 127/8 are all accepted and +mean the same thing. Ambiguous expressions like 127/8 are interpreted +as IPv4 masks; to interpret it as an IPv6 mask, use 127:/8. + +Configuration Changes: + +As mentioned above, the configuration file format has changed +radically. Please consult doc/example.conf for details on the +new format. Some prominent changes follow. + +The old contents of H: lines have been merged into the Connect block +that describes the peer server(s) that should be allowed to hub. + +Two default virtual host addresses may be specified, one for IPv4 +sockets and one for IPv6 sockets. + +Nickname jupes have their own blocks, and do not share structure with +UWorld server declarations. + +Operator connection classes and individual operator blocks may be +assigned privileges, rather than having them controlled globally. +Because of this, the feature settings that controlled the privileges +globally have been removed. + +The maximum number of clients allowed per IP may be set in a Client +block (the equivalent of C: lines). + +New feature settings (see doc/readme.features for explanations): +ANNOUNCE_INVITES, HIS_STATS_L, HIS_STATS_a, HIS_STATS_R, +LOCAL_CHANNELS, TOPIC_BURST. + +Deleted features, since they had no effect even in 2.10.11: AUTOHIDE, +HIS_DESYNCS, TIMESEC. + +Deleted features since they are now controlled by other configuration +entries: VIRTUAL_HOST, oper and locop privilege features. + +Deleted feature since it no longer applies: HIS_STATS_h. + +Compile Time Options: + +A listing of supported compile-time options may be seen by running +"./configure --help". The defaults should be sane. In particular, +you should NOT compile with --enable-debug or with --disable-symbols +on a production network. + +Otherwise Undocumented Features: + +Despite our preferences to keep these undocumented, they are +occasionally useful, and are described here for users who may +need them. + +To enable these, you need to add them to CFLAGS prior to running +./configure, usually as in: CFLAGS="-O2 -D