ngIRCd - Next Generation IRC Server
- (c)2001,2002 by Alexander Barton,
+ (c)2001-2005 Alexander Barton,
alex@barton.de, http://www.barton.de/
- ngIRCd ist freie Software und steht unter
- der GNU General Public License.
-
- -- ChangeLog / Aenderungen --
-
-
-ngIRCd CVS-HEAD
-
+ ngIRCd is free software and published under the
+ terms of the GNU General Public License.
+
+ -- ChangeLog --
+
+
+ngIRCd CVSHEAD
+
+ - The ngIRCd handles time shifts backwards more gracefully now (the
+ timeout handling doesn't disconnect clients by mistake any more).
+ - Internal: Restructured connection handling (the connection ID is equal
+ to the file descriptor of the connection).
+ - Internal: Simplified resolver code.
+ - JOIN now supports more than one channel key at a time.
+ - Implementec numeric "333": Time and user name who set a channel topic.
+ - Enhanced the handler for PING and PONG commands: fix forwarding and enable
+ back-passing of a client supplied additional argument of PING.
+ - Changed handling of timeouts for unregistered connections: don't reset
+ the counter if data is received and disconnect clients earlier.
+ - Removed unnecessary #define of "LOCAL", now use plain C "static" instead.
+ - Channel topics are no longer limited to 127 characters: now the only limit
+ is the maximum length of an IRC command, i. e. 512 bytes (in practice, this
+ limits the topic to about 490 characters due to protocol overhead).
+ - Reverse DNS lookup code now checks the result by doing an additional
+ lookup to prevent spoofing.
+ - Added new IO layer which (optionally) supports epoll() and kqueue() in
+ addition to the select() interface.
+
+ngIRCd 0.9.2 (2005-10-15)
+
+ - Fixed a bug that could cause the damon to crash when outgoing server
+ connections can't be established.
+ - Fixed a bug that caused the daemon to leak file descriptors when no
+ resolver subprocesses could be created.
+ - Fixed server NOTICEs to users with "s" mode ("server messages").
+ - Fixed a format string bug in "connection statistics" messages to clients.
+
+ngIRCd 0.9.1 (2005-08-03)
+
+ - The KILL command killed much more than desired (including server links!)
+ when the target user is connected to a remote server. Bug introduced in
+ ngIRCd 0.9.0 ... Reported by <qssl@fastmail.fm>, Thanks!
+ - Changed some constants to be "signed" (instead of unsigned) to solve
+ problems with old (pre-ANSI) compilers.
+
+ngIRCd 0.9.0 (2005-07-24)
+
+ ngIRCd 0.9.0-pre1 (2005-07-09)
+ - Fixed maximum length of user names, now allow up to 9 characters.
+ - Cut off oversized IRC messages that should be sent to the network instead
+ of shutting down the (wrong) connection.
+ - Don't generate error messages for unknown commands received before the
+ client is registered with the server (like the original ircd).
+ - Never run with root privileges but always switch the user ID.
+ - Make "netsplit" messages RFC compliant.
+ - Fix handling of QUIT Messages: send only one message, even if the client
+ is member of multiple channels.
+ - Don't exit server if closing of a socket fails; instead ignore it and
+ pray that this will be "the right thing" ...
+ - Implemented the IRC function "WHOWAS".
+ - Don't enable assert() calls when not ./configure'd with --enable-debug.
+ - Fixed ./configure test for TCP Wrappers: now it runs on Mac OS X as well.
+ - Enhanced configure script: now you can pass an (optional) search path
+ to all --with-XXX parameters, e. g. "--with-ident=/opt/ident".
+ - Removed typedefs for the native C datatypes.
+ Use stdbool.h / inttypes.h if available.
+ - New configuration option "OperServerMode" to enable a workaround needed
+ when running an network with ircd2 servers and "OperCanUseMode" enabled
+ to prevent the ircd2 daemon to drop mode changes of IRC operators.
+ Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Implemented support for "secret channels" (channel mode "s").
+ - New configuration option "Mask" for [Operator] sections to limit OPER
+ commands to users with a specific IRC mask. Patch from Florian Westphal.
+ - Write "error file" (/tmp/ngircd-XXX.err) only if compiled with debug
+ code ("--enable-debug") and running as daemon process.
+ - Don't create version information string each time a client connects
+ but instead on server startup. By Florian Westphal.
+ - New configuration variable "PidFile", section "[Global]": if defined,
+ the server writes its process ID (PID) to this file. Default: off.
+ Idea of Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Code cleanups from Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Raised the maximum length of passwords to 20 characters.
+ - Fixed a memory leak when resizing the connection pool and realloc()
+ failed. Now we don't fall back to malloc(), which should be sane anyway.
+ Patch from Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Added support for the Howl (http://www.porchdogsoft.com/products/howl/)
+ Rendezvous API, in addition to the API of Apple (Mac OS X). The available
+ API will be autodetected when you call "./configure --with-rendezvous".
+ - Made ngIRCd compile on HP/UX 10.20 with native HP pre-ANSI C compiler and
+ most probably other older C compilers on other systems.
+ - When the daemon should switch to another user ID (ServerID is defined in
+ the configuration file) and is not running in a chroot environment, it
+ changes its working directory to the home directory of this user. This
+ should enable the system to write proper core files when not running with
+ root privileges ...
+
+ngIRCd 0.8.3 (2005-02-03)
+
+ - Fixed a bug that could case a root exploit when the daemon is compiled
+ to do IDENT lookups and is logging to syslog. Bug discovered by CoKi,
+ <coki@nosystem.com.ar>, thanks a lot!
+ (http://www.nosystem.com.ar/advisories/advisory-11.txt)
+
+ngIRCd 0.8.2 (2005-01-26)
+
+ - Added doc/SSL.txt to distribution.
+ - Fixed a buffer overflow that could cause the daemon to crash. Bug found
+ by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Fixed a possible buffer underrun when reading the MOTD file. Thanks
+ to Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Fixed detection of IRC lines which are too long to send. Detected by
+ Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+ - Fixed return values of our own implementation of strlcpy(). The code has
+ been taken from rsync and they fixed it, but we didn't until today :-/
+ It has only been used when the system didn't implement strlcpy by itself,
+ not on "modern" systems. Florian Westphal, <westphal@foo.fh-furtwangen.de>.
+
+ngIRCd 0.8.1 (2004-12-25)
+
+ - Autoconf: Updated config.guess and config.sub
+ - Added some more debug code ...
+ - Fixed wrong variable names in output of "ngircd --configtest".
+ - Debian: Fixed the name of the "default file" in the init script for
+ ngircd-full packages. And do the test if the binary is executable after
+ reading this file.
+ - Enhanced the "test suite": please have a look at src/testsuite/README!
+
+ngIRCd 0.8.0 (2004-06-26)
+
+ - Fixed wrong buffer size calculation for results of the resolver.
+
+ ngircd 0.8.0-pre2 (2004-05-16)
+ - Enhanced logging to console when running in "no-detached mode": added
+ PID and log messages of resolver sub-processes.
+ - Fixed host name lookups when using IDENT user lookups.
+ - "make clean" and "make maintainer-clean" remove more files now.
+
+ ngIRCd 0.8.0-pre1 (2004-05-07)
+ - Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to
+ Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change
+ its root and working directory to something "safe". MotdPhrase is used
+ to define an "MOTD string" instead of a whole file, useful if the
+ "real" MOTD file would be outside the "jail".
+ - INVITE- and BAN-lists become synchronized between IRC+ servers when
+ establishing new connections, if the peer supports this as well.
+ - Reorganized autogen.sh and configure scripts.
+ - Fixed a wrong assert() which could cause the daemon to exit spuriously
+ when closing down connections.
+ - Better logging of decompression errors returned by zlib.
+ - Servers other than the destination server didn't clean up the invite
+ list of an "invite-only" channel properly when an INVITE'd user joined.
+ - Changed the reply of the MODE command to match the syntax of the
+ original ircd exactly: the unnecessary but missing ":" before the last
+ parameter has been added.
+ - Fixed TRACE: don't output "Serv" lines for ourself; display more info.
+ - Results of the resolver (hostnames and IDENT names) are discarded after
+ the client is successfully registered with the server.
+ - Better logging while establishing and shutting down connections.
+ - The type of service (TOS) of all sockets is set to "interactive" now.
+ - Added short command line option "-t" as alternative to "--configtest".
+ - Added optional support for "IDENT" lookups on incoming connections. You
+ have to enable this function with the ./configure switch "--with-ident".
+ The default is not to do IDENT lookups.
+
+ngIRCd 0.7.7 (2004-02-05)
+
+ - The info text ("real name") of users is set to "-" if none has been
+ specified using the USER command (e. g. "USER user * * :"). Reason:
+ the original ircd doesn't like empty ones and would KILL such users.
+ - Fixed (optional) TCP Wrapper test which was broken and could result in
+ false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
+ - Removed "USE_" prefixes of configuration #defines.
+
+ngIRCd 0.7.6 (2003-12-05)
+
+ - Fixed abort() ("server crash") when INVITE'ing users to nonexistent
+ channels. Bug found by <hiddenx@wp.pl>.
+ - Extended version numbering of CVS versions (added date).
+ - Enhanced/fixed doc/Protocol.txt;
+
+ngIRCd 0.7.5 (2003-11-07)
+
+ - Fixed ban behavior: users which are banned from a channel can't no
+ longer send PRIVMSG's to this channel (fixes Bug #47).
+ - Fixed and enhanced the "penalty handling" of the server: commands that
+ require more resources block the client for a short time.
+ - Changed the internal time resolution to one second.
+ - New configuration variable "MaxConnectionsIP" to limit the number of
+ simultaneous connections from a single IP that the server will accept.
+ This configuration options lowers the risk of denial of service attacks
+ (DoS), the default is 5 connections per client IP.
+ - Fixed build problems under Mac OS X 10.3.
+ - Use "-pipe" when compiling with gcc, speeds things up a little :-)
+ - Added new configuration variable "Listen" to bind all listening
+ sockets of the server to a single IP address.
+ - Suppress misleading error message of diff during make run.
+ - Enhanced test-suite and made it work on GNU/Hurd.
+ - Fixed minor typo in debug output :-)
+
+ngIRCd 0.7.1 (2003-07-18)
+
+ - Included files to build Debian packages (located in "debian/").
+ - Updated config.guess and config.sub to newer upstream versions.
+ - NJOIN propagates user channel modes correctly again ... Upsa.
+ - Made Makefile more compatible with "make -j<n>".
+ - Added support for GNU/Hurd.
+ - Fixed a compiler warning related to an unnecessary assert().
+ - Enhanced VERSION command when using debug versions.
+
+ngIRCd 0.7.0 (2003-05-01)
+
+ - "ServerName" is checked better now: a dot (".") is required.
+ - The KILL command verifies and logs more parameters.
+
+ ngIRCd 0.7.0-pre2 (2003-04-27)
+ - CVS build system fixes (made autogen.sh more portable).
+ - Fixed compilation and test-suite on Solaris (tested with 2.6).
+ - New documentation file "doc/Platforms.txt" describing the status of
+ ngIRCd on the various tested platforms.
+ - Test for broken GCC on Mac OS X and disable "-pedantic" in this case.
+ - Disable "-ansi" on Cygwin: system headers are incompatible.
+ - The server tried to connect to other servers only once when DNS or
+ socket failures occurred.
+ - Fixed --configtest: There is no variable "ServerPwd", it's "Password".
+
+ ngIRCd 0.7.0-pre1 (2003-04-22)
+ - New signal handler (more secure, actions are executed outside).
+ - GCC: the compiler is now called with more warning options enabled.
+ - Replaced a lot of str[n]cpy(), str[n]cat() and sprintf() calls with the
+ more secure functions strlcpy(), strlcat() and snprintf(). On systems
+ that don't support strlcpy() and strlcat(), these functions are included
+ in the libngportab now (with prototypes in portab.h).
+ - If the server can't close a socket, it panics now. This is an error that
+ can't occur during normal operation so there is something broken.
+ - The order of log messages during disconnects is more "natural" now ;-)
+ - Cleaned up handling of server configuration structures: modifying and
+ removing servers during runtime works more reliable now.
+ - Compression code from "conn.[ch]" is now found in new "conn-zip.[ch]"
+ - Moved some connection functions from "conn.[ch]" to "conn-func.[ch]".
+ - New command CONNECT to enable and add server links. The syntax is not
+ RFC-compatible: use "CONNECT <name> <port>" to enable and connect an
+ configured server and "CONNECT <name> <port> <host> <mypwd> <peerpwd>"
+ to add a new server (ngIRCd tries to connect new servers only once!).
+ - Added DISCONNECT command ("DISCONNECT <name>") to disable servers.
+ - Restructured the documentation: Now the main language is English. The
+ german documentation has been removed (until there is a maintainer).
+ - Enhanced killing of users caused by a nickname collision.
+ - Better error detection for status code ("numerics") forwarding.
+ - Moved tool functions to own library: "libngtool".
+ - New command TRACE (you can trace only servers at the moment).
+ - New command HELP that lists all understood commands.
+ - There should no longer remain "unknown connections" (see e.g. LUSERS)
+ if an outgoing server link can't be established.
+ - Added AC_PREREQ(2.50) to configure.in for better autoconf compatibility.
+ - Conn_Close() now handles recursive calls for the same link correctly.
+ - ngIRCd can register itself with Rendezvous: to enable support pass the
+ new switch "--with-rendezvous" to configure.
+ - Added support for TCP Wrappers library: pass "--with-tcp-wrappers" to
+ configure to enable it.
+ - Changed some configure options to use "--with"/"--without" as prefix
+ instead of "--enable"/"--disable": "--without-syslog", "--without-zlib",
+ "--with-tcp-wrappers", and "--with-rendezvous".
+ - Better error reporting to clients on connect.
+ - Enhanced manual pages ngircd(8) and ngircd.conf(5).
+ - Documentation is now installed in $(datadir)/doc/ngircd.
+ - Enhanced hanling of NJOIN in case of nick collisions.
+
+ngIRCd 0.6.1, 2003-01-21
+
+ - Fixed KILL: you can't crash the server by killing yourself any more,
+ ngIRCd no longer sends a QUIT to other servers after the KILL, and you
+ can kill only valid users now.
+ - The server no longer forwards commands to ordinary users, instead it
+ answers with the correct error message ("no such server") now.
+ - WHOIS commands weren't always forwarded as requested.
+ - The server sets a correct default AWAY message now when propagating
+ between servers (bug introduced in 0.6.0).
+ - Fixed up and enhanced CHANINFO command: channel keys and user limits
+ are synchronized between servers now, too.
+ - MODE returns the key and user limit for channel members correctly now.
+ - Non-members of a channel could crash the server when trying to change
+ its modes or modes of its members.
+ - The server didn't validate weather a target user is a valid channel
+ member when changing his channel user modes which could crash ngIRCd.
+
+
+Older changes (sorry, only available in german language):
+
+ngIRCd 0.6.0, 2002-12-24
+
+ ngIRCd 0.6.0-pre2, 2002-12-23
+ - neuer Numeric 005 ("Features") beim Connect.
+ - LUSERS erweitert: nun wird die maximale Anzahl der lokalen und globalen
+ Clients, die dem Server bzw. im Netzwerk seit dem letzten (Re-)Start
+ dem Server gleichzeitig bekannt waren, angezeigt.
+
+ ngIRCd 0.6.0-pre1, 2002-12-18
- beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR
noch eine Statistik ueber die empfangene und gesendete Datenmenge an.
- der Server wartet bei einer eingehenden Verbindung nun laenger auf den
Login sofort fort (bisher wurde immer mind. 1 Sekunde gewartet).
- Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
bei Bedarf bis zu einem konfigurierten Limit vergroessert.
- - Mit der neuen Konfigurationsvariable "MaxConnections" (Sekion "Global")
+ - Mit der neuen Konfigurationsvariable "MaxConnections" (Sektion "Global")
kann die maximale Anzahl gleichzeitiger Verbindungen begrenzt werden.
Der Default ist -1, "unlimitiert".
- der Server erkennt nun, ob bereits eine eingehende Verbindung von einem
noch im Schreibpuffer stehen, zu senden.
- Source in weiteres Modul "irc-info" aufgespalten.
- Konfigurationsvariablen werden besser validiert: Laengen, Zahlen, ...
- - neuen Befehl STATS begonnen: bisher unterstuetzt wird "l".
+ - neuen Befehl STATS begonnen: bisher unterstuetzt wird "l" und "m".
- bei ISON und USERHOST fehlte im Ergebnis-String der korrekte Absender.
- IRC Operatoren koennen nun mit KILL User toeten. Achtung: ein Grund muss
zwingend als zweiter Parameter angegeben werden!
- neue Konfigurations-Variable "MaxJoins": Hiermit kann die maximale Zahl
der Channels, in denen ein User Mitglied sein kann, begrent werden.
+ - neuer, deutlich flexiblerer Parser fuer den MODE Befehl.
+ - neue Channel-Modes l (User-Limit) und k (Channel-Key) implementiert.
ngIRCd 0.5.4, 24.11.2002
--
-$Id: ChangeLog,v 1.143 2002/12/14 13:33:44 alex Exp $
+$Id: ChangeLog,v 1.300 2006/05/09 15:45:30 alex Exp $