Commit Briefs

Alexander Barton

ngIRCd release 17 (tags/rel-17)





Alexander Barton

Fix up generation and distribution of sample-ngircd.conf

- Add generated sample-ngircd.conf to new .gitignore file, - refactor Makefile.am to generate sample-ngircd.conf on "make all", to clean it up on "make clean", and to install it to the correct place. - Make sure path names in sample-ngircd.conf are separated by "/".



Alexander Barton

ngIRCd Release 17~rc3 (tags/rel-17-rc3)


Alexander Barton

Fix connect attempts to further IP addresses of outgoing server links

If a hostname resolves to more than one IP address (round-robin DNS, IPv4 and IPv6) and an attempt to connect to the first address fails, ngIRCd should try to connect to the 2nd address, 3rd address etc. But because of a wrong variable used in the call to New_Server(), the wrong server structure has been used in further connection attemps which possibly lead to connection attempts to already connected servers.


Alexander Barton

Debian: Install default /etc/pam.d/ngircd allowing all logins

This is required for backwards compatibility when installing the -full or -full-dbg package variant: PAM is enabled now but no configuration present, so all login attempts would be denied ... Creating /etc/pam.d/ngircd including "auth required pam_permit.so" restores the old behaviour of allowing all connections.



Alexander Barton

Make contrib/platformtest.sh more portable



Alexander Barton

Xcode builds ("make xcode"): disable pam_fail_delay()

disable pam_fail_delay() only is available starting with Mac OS X 10.6; but we use the 10.5 SDK for campatibility, so don't use this function at all when building using Xcode.


Alexander Barton

Xcode: update project file, use 10.5.x SDK

This is required for universal 32 bit and 64 bit builds: now code for ppc, i386, and x86_64 is generated (which requires 10.5 or newer).



Alexander Barton

ngIRCd release 17~rc2 (tags/rel-17-rc2)


Alexander Barton

Updated contrib/platformtest.sh (new version scheme)

- handle version numbers generated by "git describe" - detect gcc compiler version correctly when "-std=xxx" is used




Alexander Barton

Generate ngIRCd version number from GIT tag

Now the ngIRCd release/version number is deduced from the "current" annotated GIT tag; see "git describe --help" for details. This is the same scheme the Linux kernel uses and gives much more details version numbers for interim releases and inofficial source archives generated using "make dist". Please note: the version number is only updated it the autogen.sh script is run; so after pulling in and pushing out new commits, you should run ./autogen.sh!


Alexander Barton

Make sourcecode compatible with ansi2knr again

This allows to compile ngIRCd using a pre-ANSI K&R C compiler again: all source files are automatically converted by the included ansi2knr program (of GNU automake/autoconf) before compiling them with the K&R C compiler, but a few coding standards must be met. Tested on Apple A/UX 3.x. Regression testing on Linux and Mac OS X.


Alexander Barton

./configure: check if C compiler can compile ISO Standard C

This is required for enabling ansi2knr on systems that don't have an ANSI C compiler installed (e.g. on A/UX with Apple standard C compiler).



Alexander Barton

Don't use PARAMS() macro for function implementations

The PARAMS() macro is only needed for function prototypes; don't use it for the actual implementations.



Alexander Barton

Only try to set FD_CLOEXEC if this flag is defined

A/UX 3.x doesn't implement this constant, for example.


Alexander Barton

Only use "__attribute__ ((unused))" if GCC >=2.8 is used

At least GCC 2.7.2 doesn't support this attribute.


Alexander Barton

doc/Makefile.am: don¹t set docdir, automake handles it already

And elder make(1) programs don¹t like "x ?= y" ...


Alexander Barton

ngIRCd release 17~rc1 (tags/rel-17-rc1)


Alexander Barton

New configuration option "NoZeroConf" to disable ZeroConf registration

If ngIRCd is compiled to register its services using ZeroConf (e.g. using Howl, Avahi or on Mac OS X) this parameter can be used to disable service registration at runtime.



Alexander Barton

doc/Platforms.txt: added NetBSD 5.0.2


Alexander Barton

Updated doc/Platforms.txt


Alexander Barton

Make sure sighandlers.h is listed in noinst_HEADERS

... because it must be included in the distribution archive :-)


Alexander Barton

const'ify ngt_SyslogFacilityName() function

This fixes the following gcc compiler warning: tool.c: In function 'ngt_SyslogFacilityName': tool.c:195: warning: return discards qualifiers from pointer target type



Alexander Barton

New configuration option "SyslogFacility"

The new option "SyslogFacility" deines the syslog "facility" to which ngIRCd should send log messages. Possible values are system dependant, but most probably "auth", "daemon", "user" and "local1" through "local7" are possible values; see syslog(3). Default is "local5" for historical reasons.


Alexander Barton

New functions ngt_SyslogFacilityName() and ngt_SyslogFacilityID()

These both functions translate syslog facility names to ID numbers and vice versa. On systems that don't define the facilitynames[] array in syslog.h, we try to build one ourself.


Alexander Barton

Explicitly cast return value of read(2) to "int"

This fixes the following gcc warning, emitted by Xcode: src/ngircd/sighandlers.c: In function 'Signal_Callback': src/ngircd/sighandlers.c:239: warning: implicit conversion shortens 64-bit value into a 32-bit value


Alexander Barton

Add sighandlers.{c|h} to Xcode project

And update static Mac OS X config.h used by the Xcode project.



Florian Westphal

Fix signalpipe file descriptor leak on RESTART

Signals_Init() must only be called once. This does not affect any ngircd release version. Earlier version of this patch moved the io and sighandler initialization before the while() loop, but as Alexander Barton noticed that broke all systems without builtin select support in io.c...


Alexander Barton

sighandlers.{c|h}: Code cleanup

- declare signals_catch[] array not between the function implementations. - rename now local function NGIRCd_Rehash() to Rehash(). - remove empty and therefore not used "catch SIGHUP; break;".




Alexander Barton

Bump version number to "17-dev"





Alexander Barton

Enable the daemon to dump its internal state in debug-mode.

This patch allows ngIRCd to dump its internal state (connected clients, actual configuration) when compiled with --enable-debug. The daemon catches two more signals: - SIGUSR1: toggle debug mode (on/off), - SIGUSR2: dump internal state to console/syslog.



Florian Westphal

remove NGIRCd_SignalRehash

now that the main signal handling is done from the dispatcher loop we can call NGIRCD_Rehash() directly. the /REHASH handler can queue the Rehash() function for execution by sending a SIGHUP. It will be run when we return back to the dispatch loop.


Florian Westphal

Add new 'delayed' signal handlers.

Allows to defer/queue signal processing for execution on the next event dispatch call, i.e. we can perform any signal action in normal, non-signal context. Example uses: - Reload everything on HUP without writing a global "SIGHUP_received" variable - Dump status of internal Lists on SIGUSR1, etc.


Florian Westphal

io: add io_cloexec to set close-on-exec flag.


Florian Westphal

ng_ipaddr.h: include assert.h

We use assert() in this header, so we should include assert.h.


Alexander Barton

Conn_SyncServerStruct(): test all connections; and work case insensitive

Fix synchronization of established connections and configured server structures after a configuration update: - Not only test servers that already have a connection, but also check and update configured servers to which a new connection is beeing established (SERVER_WAIT state). - And do the server name comparision case-insensitive.


Alexander Barton

Check_Servers(): skip servers already beeing connected

Let CheckServers() not only skip servers that already have a connection, but also skip servers to which a new connection is already beeing established (SERVER_WAIT state).


Alexander Barton

Check_Servers(): Code cleanup





Alexander Barton

Don't reset My_Connections[Idx].lastping when reading data

This fixes PING-PONG lag calculation (which resulted in "0" before). The "lastping" time is still reset it if a time shift backwards has been detected to prevent the daemon from miscalculating ping timeouts.


Alexander Barton

write_whoreply(): respect hostname cloaking


Alexander Barton

IRC_USERHOST(): respect hostname cloaking



Alexander Barton

Send_Message(): respect hostname cloaking



Alexander Barton

Refactor IRC_WriteStr{Channel|Related}Prefix(); support cloaking

Move common code to new local function Send_Marked_Connections() and respect hostname cloaking.


Alexander Barton

Implement user mode "x": hostname cloaking (closes: #102)

When a client has user mode "x" set, its real hostname is cloaked by substituting it with the server name (as configured in ngircd.conf). Restricted clients (user mode "r") aren't allowed to change mode "x". Please note that hostname cloaking is only in effect in server-client communication! The server still uses the real hostname for its own logging and for all server-server communication -- therefore all servers in the network must support user mode "x" to prevent older servers from leaking the real hostname of a cloaked client!


Alexander Barton

WHOWAS: respect hostname cloaking

Store cloaked hostname if user mode "x" is set when the client disconnects from the server.


Alexander Barton

WHOIS: respect hostname cloaking


Alexander Barton

Implement Client_HostnameCloaked() and Client_MaskCloaked()

These two functions return the cloaked hostname, if the client has enabled hostname cloaking indicated by the -- still to implement -- user mode "x". See furter patches :-)




Alexander Barton

Reformat and update FAQ.txt a little bit


Florian Westphal

INSTALL: mention SSL and IPv6



Florian Westphal

ngircd: change MOTD file handling

previously, the given MotdFile file was read whenever a client requested it. Change handling to read the MotdFile contents into memory once during config file parsing. Two side effects: - changes to the MOTD file do not have any effect until ngircds configuration is reloaded - MOTD file does no longer have to reside in the chroot directory (the MOTD contents will then not be re-read on reload in that case)


Florian Westphal

startup: open /dev/null before chroot

before people had to create a /dev/null inside the chroot to make redirection work.



Alexander Barton

Allow IRC operators to use MODE command on any channel (closes: #100)

This allows IRC operators to change channel modes of ANY channel, even without joining these channels first.



Alexander Barton

Remove Proc_Kill(), use timeout to kill child processes

This avoids a race and potentionally killing the wrong process on systems that use randomized process IDs; now the child itself is responsible to exit in a timely manner using SIGALRM.


Alexander Barton

New function Conn_CloseAllSockets() to close all open sockets

This is useful in forked child processes, for example, to make sure that they don't hold connections open that the main process wants to close.






Alexander Barton

Mark some variables as "unused" to prevent compiler warnings

Some variables are only used when compiling with IDENT or PAM support or when the debug code is enabled. Mark them as "unused" so that gcc doesn't generate warnings when neither of these options is enabled.



Alexander Barton

New configuration option "NoPAM" to disable PAM

When the "NoPAM" configuration option is set and ngIRCd is compiled with support for PAM, ngIRCd will not call any PAM functions: all connection attemps without password will succeed instead and all connection attemps with password will fail. If ngIRCd is compiled without PAM support, this option is a dummy option and nothing changes: the global server password will still be in effect.




Alexander Barton

Make sure signal.h is #include'd when needed



Alexander Barton

Implement asynchronous user authentication using PAM

For each client connection a child process is forked which handles the actual PAM authentication and reports the result back to the master process using a pipe for communication. While the PAM authentication is in process the daemon does not block.


Alexander Barton

Add new pam.{c|h} module to Xcode project

Adjust Xcode project and Mac OS X static config.h header to use PAM.



Alexander Barton

New functions Client_[Set]OrigUser() to get/set user specified by peer

The Client_SetOrigUser() function is used to store the peer-provided user name (see USER command) in its original form, not changed by IDENT results, for example.


Alexander Barton

Detect PAM libraries



Alexander Barton

Make Proc_Kill() more fault-tolerant


Alexander Barton

New function Conn_GetProcStat()

Get PROC_STAT sub-process structure of a given connection.


Alexander Barton

Code cleanup: don't reset penalty time on DNS resolver result

See commit d4632a727fbee6: it's not necessary any more!


Alexander Barton

New function Proc_GenericSignalHandler()


Alexander Barton

Rename Log_[{Init|Exit}_]Resolver to Log_[{Init|Exit}_]Subprocess

Rename Log_Init_Resolver, Log_Exit_Resolver, and Log_Resolver to Log_Init_Subprocess, Log_Exit_Subprocess, and Log_Subprocess and make it more generic thereby.


Alexander Barton

Don't #include client.h when conn.h/conn-func.h is already included

conn.h and cinn-func.h both already #include client.h, so it is not needed to do it twice.


Alexander Barton

New function Conn_GetFromProc() to get CONN_ID of a subprocess

Get CONN_ID from file descriptor associated to a subprocess structure.



Alexander Barton

Don't set a penalty time when doing DNS lookups

The logic isn't as described in the source and intended by this code: ngIRCd doesn't wait for the asynchronous resolver process until the set penalty time is over, but until the forked process terminates or the initial connection timeout (= PongTimeout) triggers. So don't set the penalty time at all and remove the wrong comment.



Alexander Barton

Refactoring: Rename CONNECTION.res_stat to .proc_stat

We want to use this process status variable not only for the resolver subprocesses but other asynchronous tasks as well; so let's name it more generic.


Alexander Barton

New "module" proc.c/proc.h for generic process handling

The new "module" proc.c is used for functions dealing with child processes. At the moment, it is only used by the asynchronous resolver. All the functions already implemented habe been migrated from the resolver code base, and the rest of the ngIRCd source code has been adepted to the new namespace and calling conventions. The goal is to develop "generic" process handling functions that can be used for other purposes as well, e.g. running processes on client connects etc.



Alexander Barton

Fix redundant redeclaration of Conn_Count*() functions

The wrongly placed #endif lead to the following compiler warnings: conn.h:125: warning: redundant redeclaration of ‘Conn_Count’ conn.h:125: warning: previous declaration of ‘Conn_Count’ was here conn.h:126: warning: redundant redeclaration of ‘Conn_CountMax’ conn.h:126: warning: previous declaration of ‘Conn_CountMax’ was here conn.h:127: warning: redundant redeclaration of ‘Conn_CountAccepted’ conn.h:127: warning: previous declaration of ‘Conn_CountAccepted’ was here


Alexander Barton

const'ify Conn_WriteStr() function





Alexander Barton

const'ify Client_TypeText()



Alexander Barton

Implement user mode "c": receive connect/disconnect NOTICEs

Users having the user mode "c" set receive NOTICE messages on each new client connection to the local server as well as disconnects. Only IRC operators (users having the mode "o" set) are allowed to set the 'c' user mode. These connect/disconnect messages can be useful for open proxy scanners -- BOPM (http://wiki.blitzed.org/BOPM) is now functional with ngIRCd, for example.


Alexander Barton

Refactor Wall_ServerNotice() into more generic Log_ServerNotice()

Log_ServerNotice() sends a messages to all users having a given user mode set.




Alexander Barton

Show SSL status in WHOIS, numeric 275

"I've been wanting this for years and finally took the 5 minutes to patch it in. I took the response code (275) from whatever's running OFTC's IRC network." -- Neale Pickett <neale@woozle.org>, Fri, 11 Jun 2010 17:32:41 -0500 (OFTC is running Hybrid ircd.)


Alexander Barton

Include correct header files when testing for arpa/inet.h (Closes: #105)

Tested on OpenBSD 4.7, OpenBSD 4.1, FreeBSD 8, Linux and Mac OS X. Thanks to rck <dev.rck@gmail.com> for reporting and testing!


Alexander Barton

Revert "configure: make implicit declarations fatal"

This reverts commit b3a6c33da0b12ba74dc395979b677813d4bc2c0f. apparently not all gcc versions support this 8-(


Alexander Barton

configure: make implicit declarations fatal

from bugzilla #105: "ngircd-16 works great under openbsd4.7/i386, but it segfaults on openbsd4.7/amd64." Caused by missing function prototypes and the resulting truncation of pointer to int. Lets try to catch these bugs during compilation instead of SIGSEGV.


Alexander Barton

Don't access already freed memory in IRC_KILL()

It is not possible to call Conn_Close() after Client_Destroy() has been called, because Conn_Close wants to access the CLIENT structure which then has been freed already. Fix IRC_KILL to use Conn_Close() for local clients and Client_Destroy() for remote clients only (and never both).


Florian Westphal

fix "beeing" typo

reported by Fabio Scotoni via bugzilla #101.


Florian Westphal

SSL/TLS: fix bogus 'socket closed' error message

When we get there then the ssl handshake has failed, or we could not create a ssl context because ssl library initialization failed on startup. Reflect that in the log message.


Alexander Barton

ngIRCd release 16 (tags/rel-16)


Florian Westphal

doc/SSL: remove line continuation marker

some people got confused by the '\' line continuation marker, thus put everything in a single line, even if the line gets overly long.


Alexander Barton

ngIRCd release 16~rc2 (tags/rel-16-rc2)


Alexander Barton

Don't reset counters on RESTART

When ngIRCd restarts, all the connection counters are preserved now, as well as the command counters for example. It's unclear if resetting or not resetting is the "correct" behaviour, but it's quite clear that the behaviour should be consistent for all the counters ngIRCd uses ... And initializing "WCounter", the global but temporary write counter, is not necessarry at all: it is initialized (reset) before its use in the command parser (see parse.c).


Alexander Barton

New numeric RPL_STATSCONN (250): display connection statistics

The RPL_STATSCONN numeric (250) displays information about the highest simoultaneous connection count and the number of all accepted connections since the daemon started up. Used by ircd-Hybrid, Bahamut, and Unreal for example.



Alexander Barton

Enhace connection statistics counters

This patch enables ngIRCd to count the highest maximum simultaneous connections and all the connections accepted since startup. New functions: - Conn_Count(): get current connections - Conn_CountMax(): maximum simultaneous connections - Conn_CountAccepted(): number of connections accepted


Alexander Barton

Conn_Init: code cleanup


Alexander Barton

Updated doc/Platforms.txt



Alexander Barton

Include netinet/{in.h, in_systm.h} when checking for netinet/ip.h

This solves warning messages of autoconf on e.g. FreeBSD 8: configure: WARNING: netinet/ip.h: present but cannot be compiled configure: WARNING: netinet/ip.h: check for missing prerequisite headers?


Alexander Barton

Include netinet/in_systm.h alongside netinet/ip.h

This fixes the following error when compiling on e.g. FreeBSD 6.x: In file included from conn.c:40: /usr/include/netinet/ip.h:160: error: syntax error before "n_long" /usr/include/netinet/ip.h:163: error: syntax error before "n_long"


Alexander Barton

Fix gcc warning "ignoring return value of ..."

This patch fixes two warnings of gcc 4.4.3 when used with eglibc 2.11.1: ngircd.c: In function ‘NGIRCd_Init’: ngircd.c:801: warning: ignoring return value of ‘chdir’, declared with attribute warn_unused_result conn.c: In function ‘Simple_Message’: conn.c:2041: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result The first by checking the return code and an appropriate error message, the second by "better" ignoring it (which is correct there!) ...


Alexander Barton

Only compile in Get_Error() if really needed

This fixes "resolve.c:150: warning: ‘Get_Error’ defined but not used".


Alexander Barton

Updated some more copyright notices, it's 2010 already (part 2)

Silly me forgot the most important place, the program output itself ...



Alexander Barton

ngIRCd release 16~rc1 (tags/rel-16-rc1)




Florian Westphal

configure.in: only add -lnsl when needed

dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..] (they use none of its symbols). As shown via commit 2b14234abc252383679bae2d23861b773dc9713e (dpkg-shlibdeps: warning: dependency on libnsl.so.1) and the following revert of that commit, we cannot simply drop the AC_CHECK_LIB(nsl). Although -lnsl is indeed unneeded when glibc is used, some platforms (e.g. Solaris) need it. Use AC_SEARCH_LIBS instead to only link when the library exports a particular symbol.


Alexander Barton

Implement WEBIRC command

The WEBIRC command is used by some Web-to-IRC gateways to set the correct user name and host name of users instead of their own. Syntax: WEBIRC <password> <username> <hostname> <ip-address> The <password> must be set using the new configuration variable "WebircPassword" in the [Global] section of ngircd.conf. Please note that the <ip-address> is currently not used by ngIRCd (we don't store it in the CLIENT structure, only the resolved hostname).



Alexander Barton

Re-format Init_New_Client() function





Alexander Barton

Implemented new "secure clients only" channel mode: +z

Only clients using a SSL encrypted connection to the server are allowed to join such a channel. But please note three things: a) already joined clients are not checked when setting this mode, b) IRC operators are always allowed to join every channel, and c) remote clients using a server not supporting this mode are not checked either and therefore always allowed to join.


Alexander Barton

Clean up and document IRC_STATS() function



Alexander Barton

Show our name (IRCD=ngIRCd) in ISUPPORT (005) numeric

Inspired by Hyperion IRC daemon.


Alexander Barton

Added missing modes to USERMODES #define

Now the numeric 004 correctly reports all the supported user and channel modes (user modes "r" and "w" were missing), e. g.: :a.irc.net 004 a a.irc.net ngircd-15 aiorsw biIklmnoPstv





Alexander Barton

ReverseLookup(): fix documentation comment




Alexander Barton

Clean up conn.{c|h} a little bit


Alexander Barton

Xcode: fix "-Wuninitialized is not supported without -O"

Fix Apple Xcode warning "cc1: warning: -Wuninitialized is not supported without -O" when using the "Debug" build target: Detection of uninitialized automatic variable requires data flow analsys that is only enabled during optimized compilation.


Alexander Barton

Added i686/unknown/kfreebsd7.2-gnu


Alexander Barton

platformtest.sh: Only show latest commit

Only show latest GIT commuit ID as version number, even when the last commit has been a merge.


Alexander Barton

Merge commit 'cade80dcf516f40e7d53124bc98526e6e5b3fb66'

* commit 'cade80dcf516f40e7d53124bc98526e6e5b3fb66': Added missing contrib/platformtest.sh to distribution


Alexander Barton

Added missing contrib/platformtest.sh to distribution (tags/rel-15)



Alexander Barton

ngIRCd release 15


Florian Westphal

configtest: print ssl config options even when unset

Print "SSLOptionVar =" instead of omitting the option when running --configtest with ssl enabled. This better matches the behaviour of other options, e.g. ChrootDir.


Alexander Barton

ngIRCd release 15~rc1 (tags/rel-15-rc1)


Alexander Barton

Updated NEWS and ChangeLog files




Alexander Barton

Enable SQUIT command for IRC Operators

This patch enables IRC Operators to use the SQUIT command as specified in RFC 2812, section 3.1.8 "Squit". When forwarding SQUIT commands, the server connected to the target will drop the connection (not the target server itself!). Please note: - the configuration option "AllowRemoteOper" mus be enabled on the server disconnecting the target to allow forwarding of SQUIT commands. - if the remote server is configured to establish the connection, it will just do this; so the disconnect is not permanent in this case!


Alexander Barton

Xcode: added new op.{c|h} to project file


Alexander Barton

Use functions provided by op.c "module"

Local functions Check_Oper() and No_Privileges() have been replaced by global functions in op.c "module": Op_Check() and Op_NoPrivileges().


Alexander Barton

New "module" op.c/op.h for IRC operator related functions

The new "module" op.c is used to implement functions related to IRC Ops. At the moment, these two functions are available: - Op_Check() to check for a valid IRC Op, and - Op_NoPrivileges() to generate "permission denied" messages.


Alexander Barton

Allow forwarding of CONNECT commands.

The syntax of the CONNECT command now is: - CONNECT <server-id> - CONNECT <server-id> <port> - CONNECT <server-id> <port> <target> - CONNECT <server-id> <port> <host> <my-pwd> <peer-pwd> - CONNECT <server-id> <port> <host> <my-pwd> <peer-pwd> <target> Note: the configuration option "AllowRemoteOper" mus be enabled on the target server to allow forwarding of CONNECT commands.



Alexander Barton

No_Privileges(): handle forwarded messages.




Alexander Barton

New function IRC_SendWallops().

Implement new global function IRC_SendWallops() that can be called by other functions to generate WALLOPS messages to users with +w mode.


Alexander Barton

Code cleanup of IRC_DISCONNECT().




Alexander Barton

Bad_OperPass(): code cleanup.


Alexander Barton

New configuration option "AllowRemoteOper"

Added new configuration option "AllowRemoteOper" to control whether remote IRC operators are allowed to use administrative commands that affect this server or not This commit introduces the configuration variable, but actually no function is using it. That's up for the next patches to come ...


Florian Westphal

fix assertion failure in ng_ipaddr.c

when building with debugging enabled, but without ipv6 support, ngircd dumped core when loading a config file that specified an ipv6 listen address. ngircd: ng_ipaddr.c:45: ng_ipaddr_init: Assertion `sizeof(*addr) >= res0->ai_addrlen' failed.



Alexander Barton

Check for sockaddr_in.sin_len and initialize it

Test for sockaddr_in.sin_len and initialize it to the correct value which some systems (notably Mac OS X) require. Note: this code path is only relevant when not using getaddrinfo().


Alexander Barton

Always use get{addr|name}info() when available

Both getaddrinfo() and getnameinfo() are now used always when available, and not only when compiling ngIRCd with support for IPv6. This not only enables ngIRCd to handle multiple addresses per hostname when compiled without support for IPv6, but fixes binding ngIRCd to IP addresses on Mac OS X (and probably other BSD-based systems) as well: these systems require that sockaddr_in is zeroed out and sockaddr_in.sin_len is set to sizeof(sockaddr_in) like that: src/ipaddr/ng_ipaddr.c, line 54: assert(ip_str); + memset(addr, 0, sizeof *addr); + addr->sin4.sin_len = sizeof(addr->sin4); addr->sin4.sin_family = AF_INET; But this would break all the systems not using sockaddr_in.sin_len, for example Linux -- so we assume that all these systems provide getaddrinfo() and use that for now.


Alexander Barton

Xcode: add "debug" configuration to project


Alexander Barton

Fix cb_connserver() to handle aborted outgoing connections

A configured server could have been removed while a connection apptempt is still in progress. So the cb_connserver() callback has to test if the server configuration record is still valid.


Florian Westphal

conn.c: fix more sizeof(..dst_addr) misuse

the wrong sizeof() usage fixed in d76910ce7b9fad5679b7c614ed086e036560e37d (conn.c: fix resolver server address backlog) was a bit more widespread, fix all others, too.


Florian Westphal

resolve.c: fix valgrind 'uninitialized memory' warning

fix the following warning generated by valgrind if ipv6 is enabled: Syscall param write(buf) points to uninitialised byte(s) at 0x4000982: (within /lib/ld-2.9.so) by 0x80681A8: Resolve_Name (resolve.c:477) by 0x805439F: Conn_Handler (conn.c:1658) by 0x804AA7C: main (ngircd.c:331) The warning is because ng_ipaddr_t can be a union, and only the necessary parts are initialised. The callers know what part of the union is valid, so this is not a bug.


Florian Westphal

conn.c: fix resolver server address backlog

if more than one ip address is returned for a single host name, ngircd is supposed to try other addresses in case connect() to the first address returned fails for some reason. Alexander Barton noticed that this did not work at all, as the additional results were not stored.


Alexander Barton

Fix "implicit conversion shortens 64-bit value" warning

This patch fixes the following gcc warning in our sources: "implicit conversion shortens 64-bit value into a 32-bit value"



Alexander Barton

Channel_Mode(): fix return code of function

Fix error handling of Channel_Mode() to return the correct connection status ("connected"/"disconnected") insted of always returning success.




Alexander Barton

Conn_Close(): remove unused variable "txt"



Alexander Barton

Fix --with-{openssl|gnutls} to accept path names

This patch fixes --with-openssl and --with-gnutls and enables both to accept path names, so that you can use "./configure --with-XXX=/path". All the other --with-XXX parameters support this already.


Florian Westphal

do not add default listening port if ssl ports were specified

Cosmo Kastemaa reported that its impossible to create an ssl-only setup, as ngircd binds to port 6667 by default, even if setting "Ports =". Only add the default port if _both_ "Ports" and "SSLPorts" are unspecified. Fixes bugzilla #98.


Alexander Barton

Fix LSB header of Debian init script


Alexander Barton

Use AM_SILENT_RULES([yes]), if available

Starting with GNU automake 1.11 "AM_SILENT_RULES([yes])" is available to make the build process less verbose ("Linux 2.6 style") which helps to spot warning and error messages. So we use it if it is available.


Alexander Barton

Update NEWS and ChangeLog for next release


Alexander Barton

Updated doc/Platforms.txt


Alexander Barton

New script contrib/platformtest.sh

This script analyzes the build process of ngIRCd and generates output suitable for inclusion in doc/Platforms.txt.


Florian Westphal

doc/Platforms.txt: ngircd builds on hppa2.0w-hp-hpux11.11 target

Goetz Hoffart reports successful compile on HPUX/HPPA (on ngircd mailing list): Target: hppa2.0w-hp-hpux11.11 Compiler: gcc Compiler flags: -g -O2 -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes -fstack-protector -D_XOPEN_SOURCE_EXTENDED -DSYSCONFDIR='"$(sysconfdir)"' Libraries: -lz -lnsl Syslog support: yes Enable debug code: no zlib compression: yes IRC sniffer: no Use TCP Wrappers: no Strict RFC mode: no Zeroconf support: no IRC+ protocol: yes IDENT support: no I/O backend: "poll()" IPv6 protocol: no SSL support: no


Alexander Barton

Client_CheckID(): fix connection information

This patch fixes the following silly log messages: 'ID "XXX" already registered (on connection -1)!' If the ID is already registered on a local connection, the local connection ID is printed; and if the ID is connected via a remote server, "via network" is displayed.


Alexander Barton

Fix return code of Conf_EnableServer()

Conf_EnableServer() only reports success if all required variables, including host name and port, are set for the specific server.


Florian Westphal

AUTHORS: update my email address



Florian Westphal

enforce upper limit on maximum number of handled commands

reported on #ngircd: pasting lots of lines into a channel can kill off many people on the channel if the read buffer is drained quickly enough and the client-side TCP can't keep up with the incoming data. This implements a throttling scheme: - an irc client may send up to 3 commands per second before a one second pause is enforced. - an irc client may send up to 256 bytes per second before a one second pause is enforced. After discussion with Alexander Barton, server <-> server links are treated specially: There is no artificial limit on the number of bytes sent per second, and up to 10 commands are processed per second before a pause is enforced. It may be neccessary to make those limits tuneable to accomondate larger networks, but for now they are compile time values.


Florian Westphal

conn.c: fix NumConnections imbalance

New_Server() can call Conn_Close() in its error paths, but that function decrements the number of current active connections. Thus we need to increment it earlier.





Florian Westphal

SSL/TLS: remove redundant asserts/ifdefs



Alexander Barton

Update copyright notice, it's 2009 already!


Alexander Barton

Updated Debian "changelog" file for ngIRCd 14.1 (tags/rel-14-1)


Alexander Barton

ngIRCd release 14.1


Alexander Barton

Added start/stop script for Red Hat based distributions

Script contributed by Naoya Nakazawa <naoya@sanow.net>.



Alexander Barton

security: fix remotely triggerable crash in SSL/TLS code

When a server is running with SSL/TLS support compiled in, it is trivial to crash the server by sending an MOTD request via another server in the network. - ONLY servers without ssl/tls support compiled in are not affected. Disabling SSL in the configuration (no ssl listening ports, etc) does NOT help. - servers that are running standalone (i.e., not connected to any other servers) are not affected, either. This affects all ngircd releases since ngircd 13 (earlier versions have no SSL/TLS support).



Alexander Barton

Debian: build ngircd-full-dbg package

In addition to the "ngircd" and "ngircd-full" packages a new package named "ngircd-full-dbg" is build: this package contains all the features of the "full" package but includes debug code and both the --debug and --sniffer options and the resulting binaries are _not_ stripped.


Alexander Barton

debian/rules: whitespace fixes


Florian Westphal

Fix server list announcement

When ngircd announces the list of currently known servers to a new (connecting) server, it sent the introducer of the servers instead of the top server. Assuming this network: irc1.example.com |--irc2.example.com | `--irc3.example.com | `--irc4.example.com `--irc5.example.com When irc4 connects to irc3, irc3 tells irc4 that irc5 was connected to irc2. (irc2 had introduced irc5 to irc3; but thats not what ngircd should have sent to the new server). This also placed users on the wrong servers.




Florian Westphal

irc-server: do not remove hostnames from info text

that code does not really make sense -- the info text is freely cofngiureable and des not follow a specific format. Also, that "+2" might have caused invalid memory accesses.


Florian Westphal

conn-zip: fix error handling

callers of (Un)Zip_Buffer() assume that the function closes the connection on error. However, this was not always the case.


Florian Westphal

remove or translate old comments


Florian Westphal

client.c: remove unecessary comments



Alexander Barton

ngIRCd release 14 (tags/rel-14)


Alexander Barton

Display IPv6 addresses as "[<addr>]" when accepting connections.

With this patch ngIRCd displays IPv6 addresses as "[<addr>]:<port>" when accepting new connections and later, if no successful DNS lookup could be made (or DNS is disabled altogether).


Alexander Barton

Xcode: #define include __DATE__ in VERSION

Change VERSION to include the __DATE__ when compiling from within Xcode. When building using "make xcode" or "make osxpkg" VERSION already is defined to the "real" version number set in configure.in.



Alexander Barton

Fix up last Debian changelog entry


Alexander Barton

ngIRCd release 14~rc1 (tags/rel-14-rc1)


Alexander Barton

Updated NEWS and ChangeLog files


Alexander Barton

Updated Debian/Linux init script

- PidFile, ServerUID and ServerGID are read from actual server configuration - Exit code and behaviour is more LSB compliant - New "status" and "test" sub-functions


Florian Westphal

misspelling in ERR_NORECIPIENT reply


Alexander Barton

Add missing contributors to AUTHORS file


Florian Westphal

testsuite: add more predefined channels to server config

make sure it creates & and +, and accepts channel names without a special character (ngircd should treat 'Name = chan' as 'Name = #chan').



Florian Westphal

add and use Channel_IsModeless()

avoid "name[0] == '+'" where possible, having Channel_IsModeless() makes things much more obvious.



Alexander Barton

Update NEWS and ChangeLog files


Alexander Barton

Channel mode changes: break on error

Don't echo multiple syntax error messages (461) on invalid commands, but break after the first one. In addition, this solves corrupted 'Unknown mode "+' messages.



Florian Westphal

TLS/SSL: remove useless error message when ssl connection is closed

When using OpenSSL, the following annoying "error" message was logged whenever an encrypted connection was shut down in a orderly fashion: TLS/SSL Connection shutdown: ConnSSL_Read: Unable to determine error of course, this isn't an error at all.


Florian Westphal

update ChangeLog.


Florian Westphal

SSL/TLS: clear all ssl realted flags on shutdown

one ssl related flags was not cleared on ssl shutdown. introduce and use CONN_SSL_FLAGS_ALL to zap them all.


Florian Westphal

TLS/SSL: fix memory leak when using compressed server links with ssl

commit 6bc2d3d06e9cb4da68ea4b63d9b6b219d88ab927 (New connection option CONN_RFC1459) forgot to adjust the ssl bitmasks. The result is that when a compressed AND encrypted server link goes down the memory allocated by zlib and the r/w buffers are no longer free'd as the previous ConnSSL_Free() would then also remove the CONN_ZIP flag from the flag mask.



Alexander Barton

Channel key file: store file name and open on each access.

Store the file name of channel key files and reopen them on each access (on each JOIN command) insted of just storing the file handles. This eliminates the special requirements (no delete) and makes sure that always the actual file contents are used in all circumstances.


Alexander Barton

Support individual channel keys for pre-defined channels.

This patch introduces the new configuration variable "KeyFile" for [Channel] sections in ngircd.conf. Here a file can be configured for each pre-defined channel which contains individual channel keys for different users. This file is line-based and must have the following syntax: <user>:<nick>:<key> <user> and <nick> can contain the wildcard character "*". Please not that these channel keys are only in effect, when the channel has a regular key set using channel mode "k"!


Alexander Barton

RFC 2812, sec. 3.3.1: really check for the last dot

This fixes commit 5a3128243f4b60 and makes the test suite ("make check") run again without errors.


Florian Westphal

irc.c: reject masks with wildcard after last dot

RFC 2812 says in section 3.3.1 ("Private Messages"): The mask MUST have at least 1 (one) "." in it and no wildcards following the last ".".


Florian Westphal

irc.c: Fix handling of channels containing dots

commit 2546a13ad2949192eb70bf21e114ec60af287ee4 ('Cumulative Message Patch') broke PRIVMSG to channels containing dots. Fix this by switching evaluation order: Check first if the target matches a existing channel and only do a check for target masks if that failed. PRIVMSG with host/server masks is described in RFC 2812, section 3.3.1. Makes one wonder how a server is _really_ supposed to tell the difference between hostmasks and channel names. Sigh.


Alexander Barton

Update ngircd.spec file

- Change Copyright to License - Update URL - Make BuildRoot use %{_tmppath} macro - Add basic BuildRequires - Compile with zlib and openssl - Install all docs in standard document location Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>


Florian Westphal

remove unneeded LOG_DEBUG when not compiling with DEBUG support

when ngircd is build without DEBUG enabled, LOG_DEBUG messages are always discarded. To avoid the extra code, ngircd has a LogDebug() wrapper which gets removed by the compiler when compiling without DEBUG defined. Update a few functings which were using the Log(LOG_DEBUG, .. interface directly without #ifdef DEBUG guards. text data bss dec hex filename 127748 1900 28280 157928 268e8 ngircd.before 126836 1896 28280 157012 26554 ngircd.after


Florian Westphal

documentation: gnutls does not support password-protected privkeys

already mentioned in man page and sample config file, but for completeness also document it in doc/SSL.txt.




Alexander Barton

Xcode: get release number dynamically; new make target "xcode-clean".

- make target "xcode" now detects the release number stored in the configure.in file and passes it to Xcode. - new make target "xcode-clean" which removes all files generated by "make xcode" and removes the Xcode build directory.


Alexander Barton

Xcode: define TARGET_VENDOR and TARGET_OS




Alexander Barton

Clean up channel allocation table on shutdown/restart.

Silly bug: the condition of a while() loop in the Channel_Exit() function used the wrong variable and therefore got never executed ... This bug is in the code since the beginning (see commit bb19cfda in 2002); shame on me!


Alexander Barton

Add Channel_Free().

Central function to free a channel structure and all its resources (invite/ban lists, topic, ...).



Alexander Barton

Free topic array on channel deletion.

The topic array in the CHANNEL structure must be free()'d before the channel itself becomes deleted.


Alexander Barton

Fix spelling in some documents.



Alexander Barton

Spell check and enhance ngIRCd manual pages.


Florian Westphal

man ngircd.conf: line break missing before the SSLConnect description

reported by Christoph Biedl.


Florian Westphal

defines.h: remove MAX_LISTEN_PORTS, MAX_SERVICES

_SERVICES was never used; _LISTEN_PORTS is a leftover from commit 51ccb5928ad1453b0593fedd934298384d09e619 ('internal changes needed for future ssl support').


Florian Westphal

Remove limit on max number of predefined channels.

This resolves Bugzilla Bug 68 ('Too many pre-defined channels configured.')


Florian Westphal

channel.c: constify a few function arguments.


Florian Westphal

use %ld as format specifier for posix data types

in the same vein as the earlier commit: cast posix data types (pid_t, ...) to long and use %ld as format specifier. This will avoid problems when sizeof(int) != sizeof(type). We could also cast to int, but this might truncate the value.


Alexander Barton

ngIRCd release 13 (tags/rel-13)


Florian Westphal

don't print pid_t type with %ld format specifier

Reported by Christoph Biedl: ngircd[21581]: Running as user irc(39), group irc(39), with PID 140733193409613. cast pid_t to long to avoid this. While we are there, cast uid_t and gid_t, too.





Alexander Barton

doc/SSL.txt: enhance documentation.



Alexander Barton

Testsuite start-server.sh: return correct exit code.

src/testsuite/start-server.sh returns 0 when no errors occurred and the daemon has been startet and 1 on errors. Always returning 0 is wrong ...





Alexander Barton

ngIRCd release 13~rc1 (tags/rel-13-rc1)


Alexander Barton

Fix double minus signs in manual pages

This patch fixes the following lintian(1) warning: "Manual page seems to contain a hyphen where a minus sign was intended. '-' chars are interpreted as hyphens (U+2010) by groff, not as minus signs (U+002D). Since options to programs use minus signs (U+002D), this means for example in UTF-8 locales that you cannot cut&paste options, nor search for them easily. '-' must be escaped ('\-') to be interpreted as minus."



Alexander Barton

Change formatting of some log messages

- Fix formatting of some log messages, mostly punctuation. - cb_Connect_to_Server(): don't use string concatenation, because it is not supported by pre-ANSI C compilers ...


Alexander Barton

Fix pem_passwd_cb(): unused variable "rwflag" (OpenSSL)

This patch fixes the following warning of GCC (version 4.3.2) in function pem_passwd_cb() when compiling with OpenSSL support and without debug code: conn-ssl.c: In function 'pem_passwd_cb': conn-ssl.c:122: warning: unused parameter 'rwflag'


Alexander Barton

New configuration option "NoIdent" to disable IDENT lookups

The new configuration option "NoIdent" in ngircd.conf can be used to disable IDENT lookups even when the ngIRCd daemon is compiled with IDENT lookups enabled.


Alexander Barton

Implement the IRC command "SERVLIST"

The IRC command "SERVLIST" lists all the registered services, see RFC 2811, section 3.5.1. The syntax is "SERVLIST [<mask> [<type>]]". The parameter <type> is not used by ngIRCd at the moment, all registered services are of type 0 (which is the default when omitted).



Alexander Barton

Create local &SERVER channel and log server messages to it

ngIRCd now creates a server-local channel &SERVER with channel modes +mnPt (moderated, no messages from outside the channel, persistent and with the topic locked) and logs all the messages to it that a user with mode +s ("server messages") receives. If an IRC operator withdraws the +P ("persistent") mode and the &SERVER channel is freed because of no members, nothing special happens. The channel can be recerated any time later and ngIRCd would begin logging to it again.


Alexander Barton

Implement local channels (prefix "&")

This patch implements server-local channels, prefix "&", that are only visible to users of the same local server and not in the network. Patch written by Scott Perry (2008-06-04), see: - http://arthur.barton.de/cgi-bin/bugzilla/show_bug.cgi?id=87 - http://arthur.barton.de/cgi-bin/bugzilla/attachment.cgi?id=24&action=view


Alexander Barton

Added some missing files of GIT tree to distribution archives

The following bits and bytes were not included in distribution archives: - contrib: ngindent, ngircd.sh - contrib/Debian: ngircd.postinst - contrib/MacOSX: preinstall.sh, postinstall.sh - doc/src: Doxyfile, header.inc.html, footer.inc.html, ngircd-doc.css - src/portab: splint.h


Alexander Barton

Test suite: start two servers and test server-server links

I changed the test suite to start two test servers (on port 6789 and 6790), so server-server links can be tested as well for which I included the new test script "server-link-test.e". In addition the documentation of the test suite (src/testsuite/README) has been updated and is more complete now.


Alexander Barton

Add conf-ssl.h to "noinst_HEADERS"

conf-ssl.h must be listed in "noinst_HEADERS" so that it becomes included in distribution archives generated by "make dist" and "make distcheck".


Alexander Barton

Re-add CVE identifiers to ChangeLog.

I'm lame. My last commit removed all the CVE numbers recently added in commit 598df0758 to the ChangeLog ... shame on me! See all the CVE entries of ngIRCd at: <http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ngircd>



Alexander Barton

Connection counter: count outgoing connections as well.

This patch lets ngIRCd count outgoing connections as well as incoming connections (up to now only outgoing connections have been counted). This change is required because the Conn_Close() function doesn't know whether it closes an outgoing connection or not and therefore would decrement the counter below zero when an outgoing connection existed -- which would trigger an assert() call ... Please note that this patch changes the (so far undocumented but now fixed) behaviour of the "MaxConnections" configuration option to account the sum of the in- and outbound connections!


Alexander Barton

Ignore numeric 020 ("please wait while we process your coinnection")

Some servers send the numeric 020 ("please wait while we process your connection") when a client connects. This is no useful information for this server, so we simply ignore it :-)


Alexander Barton

GNUTLS: define new API types when installed library is too old

This patch enables ngIRCd to use GNUTLS in really old versions, tested with version 1.0.16, that don't define the "new" data types ending in xxx_t. LIBGNUTLS_VERSION_MAJOR isn't defined there as well, so we use it to test if we must define the new types on our own.




Florian Westphal

conn-ssl.c: work around gnutls API problems on 64 bit platforms

Alexander Barton reported a compiler warning on 64-bit platforms: cc1: warnings being treated as errors conn-ssl.c: In function 'ConnSSL_Init_SSL': conn-ssl.c:403: error: cast to pointer from integer of different size Unfortunately, I couldn't find a real solution; the GNUTLS API expects 'gnutls_transport_ptr_t' (which is void*), but the default push/pull functions (send/recv) expect an int. The only alternative solution is to pass in an address to the file descriptor, then add send/recv wrappers that expect a pointer. What a mess[tm].



Alexander Barton

Fix ForwardLookup(): "ISO C90 forbids specifying subobject to initialize"

This patch fixes the following warning of GCC (version 4.3.2) in function ForwardLookup(): resolve.c: In function 'ForwardLookup': resolve.c:282: warning: ISO C90 forbids specifying subobject to initialize resolve.c:284: warning: ISO C90 forbids specifying subobject to initialize resolve.c:285: warning: ISO C90 forbids specifying subobject to initialize


Alexander Barton

Fix ConnSSL_LogCertInfo(): unused variable "cred" (GNUTLS)

This patch fixes the following warning of GCC (version 4.3.2) in function ConnSSL_LogCertInfo() when compiling with GNUTLS support: conn-ssl.c: In function 'ConnSSL_LogCertInfo': conn-ssl.c:542: warning: unused variable 'cred'




Alexander Barton

GIT: Ignore Debian-related generated files.

Added files that become generated while building Debian GNU/Linux packages of ngIRCd to the .gitignore lists.






Alexander Barton

Announce IRC services in the network.

This patch - introduces a new server flag "S" to indicate that the server can handle the SERVICE command (on server links), - implements the IRC command "SERVICE" for server-server links, - uses the "SERVICE" command to announce IRC services when a new server connects to it, - and fixes the Send_Message() function to let it send messages to services using a "target mask". If the remote server doesn't indicate that it can handle the "SERVICE" command (it has not set the "S" flag), services are announced as regular users as before.





Alexander Barton

Fix PRIVMSG/NOTICE handler (II): keep command when forwarding to channels.

- new function ngt_UpperStr(). - change Channel_Write() to take command name and error flag. - remove now unneeded function Channel_Notice().


Alexander Barton

New function ngt_UpperStr()



Alexander Barton

Make real use of the CLIENT_SERVICE client type.

This patch enables ngIRCd to handle IRC services as real services, and not as "fake users": - Set correct client type CLIENT_SERVICE for services, - Change log messages to include correct client type, - PRIVMSG: allow users to send messages to services, - Send services nick names to other servers (as users). Please note that this patch doesn't announce services as services in the network, but as regular users (as before). Only the local server knows of services as services (see LUSERS command, for example). It is up to one of the next patches to fix this and to introduce the SERVICE command in server to server communication. The propagation of services as regular users between servers doesn't limit the functionality of the IRC services and will be the fallback for servers that don't support "real" services propagation in the future.



Alexander Barton

New function Client_TypeText() and Destroy_UserOrService().

Client_TypeText() is used to get correct naming ("Client", "Service", ...) for log messages, and Destroy_UserOrService() is used to correctly destroy user and services clients.




Alexander Barton

Allow ngIRCd to detect services connected to an "virtual services server".

Introduce a new configuration variable "ServiceMask" in SERVER blocks to define a mask matching nick names that should be treated as services. Regular servers don't need this parameter (leave it empty, the default), but you should set it to "*Serv" when connection ircservices, for example. This patch allows ngIRCd to detect services, it doesn't change the functionality: you only get different log messages ;-)



Alexander Barton

Get rid of INTRO_INFO structure again: we don't need it at all!

All the required information is already stored in the CLIENT structure of new new connection, so pass this to Introduce_Client() and don't invent an unneeded new structure ...




Alexander Barton

numeric.c: whitespace fixes ...


Alexander Barton

Server links: detect RFC 1459 mode direct after SERVER command

This patch allows ngIRCd to detect right after receiving the SERVER command from the peer whether the RFC 1459 compatibility mode must be used or not. And it fixes the announcement of users during establishing new server links with such peers.


Alexander Barton

Send and handle NICK+USER commands for user registration (RFC 1459).

This patch enables ngIRCd to deal with NICK and USER commands following RFC 1459 to register new clients, and to send these commands instead of one full NICK command as specified in RFC 2813 on connections that are in RFC 1459 compatibility mode. Can be useful for e. g. IRC services that simulate a RFC 1459 server.




Alexander Barton

New connection option CONN_RFC1459.

This new connection option CONN_RFC1459 indicates that the peer on this link only supports the IRC protocol as defined in RFC 1459 and that the compatibility mode (e. g. for outgoing commands like NICK) should be used.


Alexander Barton

New global function Conn_SetOption().


Alexander Barton

USER: servers and services can alter user information after registration.

This is required to do RFC 1459 style user registration on server links, and is used by some services packages, too. See RFC 1459 section 4.1.3.


Alexander Barton

NICK: allow servers and services to use RFC 1459 syntax (2 parameters).

This patch allows servers and services to call the NICK command using the syntax defined in RFC 1459 to register new users, with only two parameters. See section 4.1.2. Useful for some services packages, which emulate this protocol.




Florian Westphal

TLS/SSL support: code changes.

This adds the required code to enable ssl/tls support during compile and run time, respectively.


Florian Westphal

TLS/SSL support: documentation.


Florian Westphal

TLS/SSL support: core files.

Contains support for both OpenSSL and GNU TLS. Certificate Authentification is not yet supported.


Florian Westphal

Fix handling of MaxConnections option

Config option claimed to be 'number of connections' but in reality this was treated as 'largest file descriptor allowed'. This also fixes another bug in New_connection, where the ng_ipaddr_tostr_r error path was missing a return statement.


Alexander Barton

Include "mcheck.h" when using mtrace().


Alexander Barton

SECURITY: Fixed a message handling bug which could crash the daemon.

Some message targets could lead to a NULL pointer dereference and therefore could crash the daemon (denial of service). (cherry picked from commit e493ad2d30ff80bca2556cde2212e367cb006517)


Alexander Barton

Enable GNU libc "memory tracing" when compiled with debug code.

This patch lets ngIRCd activate "memory tracing" of the GNU libc when compiled with debug code (configure: --enable-debug) and the functionality is available on the system. (http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html)


Alexander Barton

New make target: "osxpkg" to create an Mac OS X installer package.

This patch adds a new make target, "osxpkg", to the main Makefile which gereates a Apple Mac OS X installer package of ngIRCd. The packagemaker(1) project bundle is stored in contrib/MacOSX/ngIRCd.pmdoc.


Alexander Barton

Clean up Mac OS X Xcode environment.

- Remove obsolete contrib/MacOSX/cvs-version.h - Change SDK to 10.4



Alexander Barton

Added CVE identifiers to ChangeLog.

see http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ngircd



Alexander Barton

Make ngIRCd compile and run on NeXTSTEP 3.3 and OPENSTEP 4.2

by Steven D. Blackford <kb7sqi@aol.com>: "I wanted to let you know that I've done a quick port of ngircd-0.12.0 for NEXTSTEP3.3/OPENSTEP4.2. There wasn't a lot of changes required to get it to compile clean, but I did make the necessary changes so that I didn't have to use -posix flag. The NeXT has a pretty buggy POSIX implementation so I always try to work around it. :-) Anway, here's the changes required to get it to compile."




Florian Westphal

FAQ: add entry about /OPER and OperCanUseMode



Alexander Barton

Fix Validate_Args(): unused parameter "Idx" and "Req"

This patch fixes the following error message of GCC (tested with version 4.3.0) when not compiling ngIRCd in "strict RFC" mode: parse.c: In function "Validate_Args": parse.c:341: error: unused parameter "Idx" parse.c:341: error: unused parameter "Req"


Alexander Barton

message-test: Disable two tests using "localhost" as host name

Some operating systems, for example OpenBSD and OpenSolaris, use "localhost.<domain>" instead of just "localhost" for 127.0.0.1, so the "message-test" using "localhost" failed on such systems. Don't have an idee how to make this work on all platforms ... :-/ So I simply disabled the two affected tests to make the testsuite run on OpenBSD and OpenSolaris again.


Alexander Barton

Fix Send_Message(): "lastCurrentTarget" may be used uninitialized

This patch fixes the following warning of GCC 4.3.1: irc.c: In function "Send_Message": irc.c:315: error: "lastCurrentTarget" may be used uninitialized in this function


Alexander Barton

Fix t_diff(): declaration of 'div' shadows a global declaration

This patch fixes the following GCC warning message: irc-info.c:422: warning: declaration of 'div' shadows a global declaration




Alexander Barton

Cleaned up PRIVMSG and NOTICE patches.


Alexander Barton

Cumulative Message Patch


Alexander Barton

Don't allow empty channel names ("#") in strict RFC mode.

This closes Bug #88. Patch proposed by Eric <egrunow@ucsd.edu>, but with wrong length comparision: please note that Channel_IsValidName() checks the name INCLUDING the prefix, so the test must be length<=1!


Alexander Barton

Return 461 (syntax error) on "JOIN :" and "PART :"

Up to this patch ngIRCd did not return any result (GIT master) or a badly formated 403 (":irc.server 403 test :No such channel" [note the two spaces!], branch-0-12-x) on the above commands, this patch changes the behaviour to reflect ircd 2.11 which returns 461 in both cases.


Alexander Barton

Channel_Join(): Code cleanup.



Alexander Barton

Fixes to misc-test: accept "localhost.<domain>" as well as "localhost"

Some operating systems, for example OpenBSD, use "localhost.<domain>" instead of "localhost", so the "who-test" expecting "localhost" failed on such systems. (Please see 149859c5fecc..., which fixes this for the who-test already)


Alexander Barton

Revert "dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..]"

- Solaris needs both -lsocket _and_ -lnsl - A/UX needs -lUTIL "... which totally sucks because we'd link libnsl on Linux, too (where its not needed at all). So, we have to figure out how to tell autocrap to NOT put -lnsl there unless it exports a symbol we need. This also means that [...] has to be reverted (or done properly)." -- Florian Westphal @ #ngircd This reverts commit 2b14234abc252383679bae2d23861b773dc9713e.


Alexander Barton

dpkg-shlibdeps: warning: dependency on libnsl.so.1 [..]

(they use none of its symbols). So, rip out that AC_CHECK_LIB cruft, pointed out by Christoph Biedl. If there are platforms that really need that we should only link when we actually use these libraries.


Alexander Barton

Merge autogen.sh changes

Merge commit 'alex/master'


Alexander Barton

autogen.sh: Don't set AUTO{CONF|MAKE}_VERSION and WANT_AUTO{CONF|MAKE}

On some systems (for example Gentoo Linux, FreeBSD, and OpenBSD), these variables are used to select which version of GNU automake and autoconf to use, but we shouldn't depend on a specific version -- instead we should use the "system default". So probably it is up to the user to set these variables accordingly to set up some wrapper scripts of his operating system distribution.


Florian Westphal

Translated comments from German to English



Alexander Barton

Fix GCC warnings for possibly uninitialized variables in IRC_JOIN

This patch fixes the following two warnings of GCC 4.2.4: irc-channel.c: In function "IRC_JOIN": irc-channel.c:185: warning: "lastkey" may be used uninitialized in this function irc-channel.c:185: warning: "lastchan" may be used uninitialized in this function



Alexander Barton

Allow mixed line terminations (CR+LF/CR/LF) in non-RFC-compliant mode

Up to now ngIRCd accepted CR+LF as well as a single CR or LF in "non RFC compliant" mode (the default). But ngIRCd became confused when it received data containing mixed line endings (e. g. "111\r222\n333\r\n"). This patch enables ngIRCd (in "non RFC compliant" mode) to detect CR+LF, CR, and LF as equally good line termination sequences and to always end the command after the first one detected. Some clients (for exmaple Trilian) are that ... broken to send such mixed line terminations ... First patch proposed by Scott Perry <scperry@ucsd.edu>, Thanks to Ali Shemiran <ashemira@ucsd.edu> for testing!


Alexander Barton

Don't allow stray \r or \n in command parameters

If ngircd receives an input line like "COMMAND arg\nIRRELEVANT\r\n", "arg\nIRRELEVANT" is passed as an argument to COMMAND. This can lead to output like: :ngircd.test.server 322 nick #chan 1 : topicwithprecedingnewline :ngircd.test.server 322 nick #nxtchan 1 : [..] Worse, this allows clients to piggyback irc commands, e.g. "TOPIC #a :test\n:fake!~a@nonexistant JOIN :#a\r\n", which causes the client to receive a JOIN command during /LIST output. Bug reported by Scott Perry, first patch by Florian Westphal.





Alexander Barton

Handle_Buffer(): code cleanup.

Both callers ignore the return code of this function, so get rid of it, but make sure that the client is disconnected on errors.


Alexander Barton

Conn_Handler(): cleanup code, add/translate comments.

In addition, the "timeout" variable has been removed because it is unnecessary today: Handle_Buffer() handles all the data it can handle, and io_dispatch() returns immediately when new data is available. So we don't have to double-check but better sleep. Pointed out by Florian.


Florian Westphal

Use strtok_r instead of strchr in IRC_JOIN.

This patch does significant cleanup on the join code by using strtok_r instead of mangling strchr to parse channel names and keys in parallel when a JOIN command contains a list of channels and keys. Also adds an strtok_r implementation to libportab.



Florian Westphal

configure.in: don't check for "obvious" standard functions.

Drop checks for the following C standard functions: malloc, memmove, memset, realloc, strchr, strcspn, strerror, strstr. Rationale: These are standard K&R/C89 functions, no point in ''making sure they exist''.



Florian Westphal

Remove ListenIPv4/ListenIPv6 options.

Use "Listen = list,of,addresses" instead.


Florian Westphal

make Listen parameter a comma-seperated list of addresses.

this also obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it is treated as Listen="::,0.0.0.0". Note: ListenIPv4 and ListenIPv6 options are still recognized, but ngircd will print a warning if they are used in the config file. Also, some plattforms require that ai_socktype is set in the getaddrinfo() hints structure.


Alexander Barton

Add option aliases -V (for --version) and -h (for --help).

This patch adds -h and -V short options (to complement the usage). It is based on a patch attached to Debian bug #466063, see <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=466063>. Idea by Jari Aalto <jari.aalto@cante.net>, patch adapted by Alexander Barton <alex@barton.de>.


Florian Westphal

Add FAQ entry for 'Where is the log file'?


Florian Westphal

Add tests for MOTD, VERSION, TIME, USERHOST

The misc-test.e file is also somewhat reorganized and commented here. Patch from Brandon Beresini, Bryan Caldwell and Dana Dahlstrom.


Alexander Barton

Updated list of authors (AUTHORS file)


Alexander Barton

Update master development branch

- use "dev" instead of "HEAD" as "version number", - update ChangeLog and NEWS to reflect the 0.12.0 release.



Florian Westphal

This patch implements a (maybe) compliant WHOWAS command.

It is hard to test this in the test suite because we 1) shouldn't rely on previous tests populating WHOWAS and 2) don't connect a user for more than 30 seconds. Also makes WHOWAS return ERR_NONICKNAMEGIVEN_MSG as implied by RFC.


Alexander Barton

Update ngIRCd manual pages

- Update timestamp, - enhance some phrasing, - and fix "Passive" ([Server]) formatting.



Alexander Barton

GIT: ignore symbolic links to tests in testsuite directory

Added symbolic links to new tests (invite-test, join-test, and kick-test) to .gitignore file.


Alexander Barton

Fixes to who-test: accept "localhost.<domain>" as well as "localhost"

Some operating systems, for example OpenBSD, use "localhost.<domain>" instead of "localhost", so the "who-test" expecting "localhost" failed on such systems.


Florian Westphal

ng_ipaddr.h must include netinet/in.h.

compile on FreeBSD 5.4 failed with: ./../ipaddr/ng_ipaddr.h:34: error: field `sin4' has incomplete type Reported and tested by Jefferson S Almeida.



Florian Westphal

Fix secret channel information leak

/who on a secret channel that the user is not a member of now returns proper RPL_ENDOFWHO_MSG instead of nothing.


Alexander Barton

Added Cygwin uid kludge. (verified working)


Florian Westphal

Anglified and improved comments in channel.c and channel.h

[Dana Dahlstrom: repair tab/space conversion in patch]


Alexander Barton

Implement IRC commands SERVICE, SERVLIST, and SQUERY as dummy functions

SERVICE, SERVLIST, and SQUERY are required by RFC 2812 (it states in section 3 that "all commands described in this section MUST be implemented by any server for this protocol." -- So we implement them without (much) actual functionality ...


Florian Westphal

Add invite-test.e to test suite.


Florian Westphal

Tests for the INVITE command.



Florian Westphal

tests for JOIN and various replies

Brandon Beresini sent me a patch yesterday adding tests for JOIN under various circumstances, which I believe he worked on with Bryan Caldwell and Ali Shemiran. I made a few modifications; the result is below.


Florian Westphal

Allow KICK to handle comma-delimited lists (of channels, nicks).

includes test cases. [fw@strlen.de: - move code around to avoid duplication - use const where possible - integrate test case]



Florian Westphal

Fixes to who-test: accept any ident, escape some '*' flags.

This prevents who-test.e from failing when ngircd is performing ident lookups and an ident server is running.


Florian Westphal

IRC_INVITE: coding style cleanup.


Florian Westphal

Constify some of Channel_Kick()s arguments.


Florian Westphal

constify Client_Search() argument.


Alexander Barton

Allow IRC ops to ignore channel limits when joining

Allow IRC ops to ignore any channel limit (bans, invite only etc.) when they want to join a channel.


Alexander Barton

Handle 1-character messages terminated with CR or LF correctly

Code cleanup and fix for Bug #83, "ngIRCd chokes on 1-character messages" in function Handle_Buffer(): the buffer is now correctly cleared when ngIRCd receives 1-character messages terminated with either CR or LF (in violation to RFC 2812, section 2.3 "Messages", 5th paragraph).


Alexander Barton

On AIX (for example) socklen_t is defined in sys/socket.h

On AIX and probably other systems socklen_t is defined in sys/socket.h, so we have to include it here explicitly (tested by Florian).


Alexander Barton

Always enable modeless channels.

Modeless channels (+channels) are described in RFC 2811; so my modifications to 530112b114ffa7d5352c0733790ddf90253f41f9 ('Add support for modeless channels') to disable +channels for --strict-rfc configurations were wrong. This reverts those changes.



Alexander Barton

Add support for modeless channels

Add support for modeless channels (+channels). [fw@strlen.de: - integrate test cases - don't support +channels when compiled with --strict-rfc - do not set +o mode for channel creator - force +nt mode when channel is created ]






Alexander Barton

Testsuite: remove erroneous ConfUID setting in config file.

The config file for ngircds test suite contained obsolete ConfUID/ConfGID settings, causing ngircd to needlesly complain when started as non-root (which is hopefully the _normal_ case...)


Florian Westphal

IPv6: Add config options to disabe ipv4/ipv6 support.

This also enables ipv6-only setups.


Alexander Barton

Get rid of cvs-version.* and CVSDATE definition.

(cherry picked from commit b187fac244f4e14705f882ba7c43eef0238e2830)


Alexander Barton

Don't include doc/CVS.txt in distribution archive, use doc/GIT.txt now!

(cherry picked from commit a8e0eb62e9dce81ca4a5c5911428561b90bf2c6e)


Alexander Barton

Documentation: get rid of some more references to CVS, switch to GIT.

(cherry picked from commit 6e9389b86c906c53a7797b8ced87a19195e16333)


Alexander Barton

Synchronized branch-0-12-x (ngIRCd 0.12.0-pre1) with master.

(cherry picked from commit 4ea29329674ff8ec6d772991a57c146b5d78d2ad)


Alexander Barton

Report ERR_NOTONCHANNEL when trying to part a channel one is not member of.

When trying to part a channel ("PART #channel") the client is not member of the daemon now correctly reports the numeric ERR_NOTONCHANNEL (442) insted of ERR_NOSUCHCHANNEL (403).



Alexander Barton

Channel_Part(): Code and comment cleanup.


Alexander Barton

Updated copyright notice to read "2001-2008".


Alexander Barton

IRC_PART(): code and comment cleanup.


Alexander Barton

Added make target "testsuite"

This make target runs the testsuite located in src/testsuite without running alle the other tests that "make check" would run.



Florian Westphal

Channel_Mode: Remove duplicate code.

Incidentially, this doesn't even change the generated code...



Florian Westphal

Channel_Mode: Re-indent switch.

No functional changes were made.








Alexander Barton

GIT should ignore user preferences files inside Xcode projects.

Added filter for GIT to ignore Xcode user preferences files (*.mode1v3 and *.pbxuser) which are automatically generated inside the project bundle when opened in Xcode.


Alexander Barton

Updated Xcode project file.


Alexander Barton

Convert CVS commands to their git equivalents.

Also mention that patches should be sent to the mailing list.



Alexander Barton

Include Mac OS X Xcode project in distribution archives. (Part 2)

I forgot to include the new Makefile.am in contrib/MacOSX/ngIRCd.xcodeproj/ ...


Alexander Barton

Include Mac OS X Xcode project in distribution archives.

Oops, it has not been included since ... ages??


Alexander Barton

Moved .cvsignore files to .gitignore

Since we are using GIT starting from now, I converted all the .cvsignore files to .gitignore files.


Florian Westphal

Fix client.c sparse warnings.

client.c:72:6: warning: symbol 'Max_Users' was not declared. Should it be static? client.c:72:21: warning: symbol 'My_Max_Users' was not declared. Should it be static?


Florian Westphal

io.c: kill select FD_SETSIZE sanity check in io_library_init.

We already have way too many.



Florian Westphal

io.c: try to cut down the number of ifdefs.

consolidate backend-specific helpers and add empty statinc inle stubs in the ifndef case to let the compiler remove the functions at compile time.


Florian Westphal

Do not exit unconditionally if config file cannot be opened

ngircd will exit if the config file cannot be opened. While thats okay if ngircd starts up for the first time, it isn't when we are re-reading the config file after a /REHASH or SIGHUP.



Florian Westphal

IPv6 support.

all references to struct sockaddr/in_addr have been removed from src/ngircd. libngipaddr (in src/ipaddr/) hides all the gory details. See src/ipaddr/ng_ipaddr.h for API description.


Florian Westphal

Updated ChangeLog to include 0.11.1.


Florian Westphal

Fix sending of JOINs between servers.

This does hit only operators that join a channel with at least 2 servers active in the net the server the oper connects to sends "channel^Go" to the other servers the other server first searches for the channel and then strips the modes from the channel name he has to do the other way round: first strip and then check the channel name.


Florian Westphal

Channel_Mode cleanups

- better indentation - move answering request into seperate function.




Florian Westphal

Added new test files to Xcode project.




Florian Westphal

Include flags in RPL_WHOREPLY messages.

RPL_WHOREPLY messages generated by IRC_WHO don't include flags (*,@,+) that should appear according to this description: http://www.mishscript.de/reference/rawhelp3.htm#raw352 Other IRC servers do include the flags. Modify who-test.e to expose missing flags, modify ngircd-test.conf to accommodate who-test.e, and fix irc-info.c to correct these problems.


Florian Westphal

Don't send trailing space in MODE messages

Under some circumstances ngIRCd currently issues a channel MODE message with a trailing space after the last parameter, which isn't permitted by the grammar in RFC 2812 section 2.3.1: http://tools.ietf.org/html/rfc2812#section-2.3.1 The following patch modifies mode-test.e to expose this, and modifies irc-mode.c to correct it.


Florian Westphal

IRC_JOIN cleanups.

- put sending of mode and forwarding of JOIN to other clients into seperate function. - put sending of topic/channel names into seperate function. - put access check into seperate function. - translate/remove remaining german comments. - stop if JOIN to a channel in a list (JOIN #a,#,b,#c...) fails (This doesn't change the behaviour: skip-to-next-channel-on-error did never work as intended)


Florian Westphal

Make IRC_WHO also search username/servername/hostname.

Dana Dahlstrom reported that IRC_WHO did not follow RFC 2812, Section 3.6.1. Specifically: - IRC_WHO did not send "G" flag instead if "H" if client was away - did not search username/servername/hostname etc. if argument was not a channel. Fix all of the above and tidy things up a bit. Also add IRC_WHO test script contributed by Dana.


Florian Westphal

Remove duplicate Channel_FirstChannelOf().

noticed there's a way to make the loop slightly more elegant. [fw@strlen.de: Extra () to silence gcc.]



Florian Westphal

Updated NEWS to reflect ChangeLog.


Florian Westphal

Implement RFC 2812 handling of "0" argument to JOIN

The students in my software-engineering class are writing IRC clients in Java, and I'm running ngIRCd as a sandbox for them to play in. We noticed ngIRCd doesn't obey the "JOIN 0" command specified in RFC 2812: JOIN 0 ; Leave all currently joined channels. http://tools.ietf.org/html/rfc2812#section-3.2.1 I believe the following patch addresses this. Cheers! [fw@strlen.de: put it into a seperate function]


Florian Westphal

Don't use Client_Type after command has been processed.

This caused a read from already free'd memory, if the processed command (IRC_QUIT) calls Client_Destroy.


Florian Westphal

Updated NEWS to reflect ChangeLog.


Florian Westphal

Fix wrong strncpy usage if CVSDATE defined

Hello_User() used strncpy with overlapping src/dest. Use memmove instead.


Florian Westphal

This adds support for sending NOTICEs to a channel.

[also see Bug #70 in ngircd bugzilla]. Based on a patch by Fabian Schlager <fabian.schlager@gmail.com>.


Florian Westphal

[Parser]: Fix minor sparse warnings

parse.c:56:9: warning: symbol 'My_Commands' was not declared. Should it be static? parse.c:107:9: warning: symbol 'My_Numerics' was not declared. Should it be static? Also move handling of numerics into a seperate helper function.




Alexander Barton

Document NoDNS configuration option.


Florian Westphal

IRC_PART could reference invalid memory.


Alexander Barton

Remove entry about ngircd failing on Linux 2.4:

ngircd can now fall back to select. [from 0.11.x]


Alexander Barton

Updated NEWS and ChangeLog files.




Florian Westphal

kqueue: check for EV_ERROR in .flags

if kevent() returns events, check for EV_ERROR in event flags, too.




Florian Westphal

implement '/STAT u' (uptime)


Florian Westphal

Fix fmt string: int, not long


Florian Westphal

include <arpa/inet.h> inside tool.h

In file included from hash.c:24: ../tool/tool.h:27: warning: `struct in_addr' declared inside parameter list


Florian Westphal

remove ip-string from Conf_Server struct

struct Conf_Server stored the ip address to connect to in dotted-decimal notation; but we only need this for connect() so long-time storage isn't necessary.



Florian Westphal

bind ListenAddress for outgoing connections

ngircd would always use INADDR_ANY for outgoing connections; which might not be desirable. Added new [Server] option "Bind" to set source ip.



Alexander Barton

Introduce option to configure the maximum nick name lenth in ngircd.conf

- New configuration option "MaxNickLength" to specify the allowed maximum length of user nick names. Note: must be unique in an IRC network! - Enhanced the IRC+ protocol to support an enhanced "server handshake" and enable server to recognice numeric 005 (ISUPPORT) and 376 (ENDOFMOTD). See doc/Protocol.txt for details.



Alexander Barton

Fixes the wrong logging output when nested servers are introduced

to the network as well as the wrong output of the LINKS command.


Alexander Barton

Remove some bogus files from project ...


Alexander Barton

Update Mac OS X Xcode project file for Xcode 3.

Allow building of ngIRCd using Xcode 3 without running ./configure.





Florian Westphal

if ngircd doesn't run chrooted, it tries to chdir

to the users working directory (as returned by getpwuid()). Failing to chdir to that directory isn't an error; so log with LOG_INFO and prefix the message with "Notice".


Florian Westphal

Document NoDNS Option in changelog



Florian Westphal

configtest would still print "-1" for MaxConnections, MaxConnectionsIP and MaxJoins

if any of those values was set to 0.


Alexander Barton

Updates NEWS to reflect changes in CVS HEAD




Alexander Barton

Updated Mac OS X project file for Xcode.



Florian Westphal

accoring to comments in the code, MaxConnections, MaxConnectionsIP and MaxJoins

options allow setting values < 0 -- this isn't the case. Comments adjusted.


Alexander Barton

Updated preferred automake version to 1.9. Only set preferences if not

already defined by some environment variables.





Florian Westphal

we now support /WALLOPS



Alexander Barton

SECURITY: Fixed a severe bug in handling JOIN commands, which could

cause the server to crash. Thanks to Sebastian Vesper, <net@veoson.net>.


Florian Westphal

last fix accidentially broke reconnect timer.


Florian Westphal

Don't connect to a server if a connection to another server within the same group

is in progress.





Alexander Barton

Updated config.guess and config.sub.


Alexander Barton

Add note to INSTALL document.


Alexander Barton

Updated ChangeLog.





Alexander Barton

Make Zip_Flush() more graceful.





Florian Westphal

fix compressed server links


Alexander Barton

2007 :-)


Alexander Barton

Updated documentation.


Florian Westphal

- change return type of Conn_InitListeners to unsigned

- remove minor whitespace damage


Florian Westphal

put parentheses around argument



Florian Westphal

return false instead of NULL in error path



Florian Westphal

fix broken IO_DEBUG build





Alexander Barton

distclean: remove "html" folder.






Alexander Barton

New configure option "--without-select"; when usin epoll() IO API include

support for select() as well by default and fall back on runtime when needed.



Alexander Barton

Added LSB compliant header.





Florian Westphal

revert to last good revision again 8-/



Florian Westphal

fix possibe buffer-off-by one





Florian Westphal

add PredefChannelsOnly option to man page


Florian Westphal

minor cleanup


Florian Westphal

remove unused function Channel_PCount


Florian Westphal

moved invite/ban lists to channel structure


Florian Westphal

fix RPL_LOCALUSERS_MSG (%ld -> %lu)


Florian Westphal

Log(LOG_DEBUG, .. -> LogDebug()


Florian Westphal

predefined channels MUST start with '#', but this is not very intuitive,

since # is also used as a comment character in ngircd.conf. Thus we prefix the name with '#' if it is missing.



Florian Westphal

New configuration option "PredefChannelsOnly": if set, make

all JOINs to-non existants channel return ERR_BANNEDFROMCHAN_MSG, restricting users to those channels defined in the config file.




Florian Westphal

channel maxusers now unsigned long



Florian Westphal

Client_IsValidNick: no need to strcpy.


Florian Westphal

Channel_Join was severely broken.




Florian Westphal

add test for strcspn.




Alexander Barton

Allow PASS syntax defined in RFC 1459 for server links, too.

Removed client status CLIENT_GOTPASSSERVER.


Alexander Barton

Enhanced ISUPPORT message (numeric 005).


Alexander Barton

Updated files from ngIRCd 0.10.0.





Florian Westphal

simplify io_library_init*


Florian Westphal

add support for the poll() interface


Florian Westphal

cleanup


Florian Westphal

fix embarassing fileptr leak



Florian Westphal

only test for stack smashing protector if we are using gcc;

use -fstack-protector-all for the test to make sure the guard variable is added.


Alexander Barton

Updated documentation.


Florian Westphal

fix gcc 4.1 -fstack-protector detection.



Florian Westphal

-whitespace damage


Florian Westphal

simplify Resolve_Read().


Alexander Barton

Updated platform list once more ...


Alexander Barton

Updated platform list.



Florian Westphal

check if compiler supports inline keyword.


Alexander Barton

Added support for Solaris 11.



Alexander Barton

Updated debian changelog.



Alexander Barton

Flag the format parameter of LogDebug() as "unused" when not compiling with

debug code to avoid gcc warnings. Added some documentation comments.




Alexander Barton

Validate "ServerName" variable.


Alexander Barton

Updated documentation.





Alexander Barton

Don't include conn.h, conn-func.h is enough.



Alexander Barton

Updated some patch names on Arthur.


Alexander Barton

Updated copyright notice ;-)


Alexander Barton

Updated autoconf helper scripts.


Alexander Barton

Added ngindent.


Florian Westphal

remove fd from io_event structure



Alexander Barton

Sorted channel modes alphabetically.





Florian Westphal

make splint complain less...



Alexander Barton

Removed kqueue bug fix (never released), rephrased some internal changes,

and added "time shift" bug fix.


Alexander Barton

Handle time shifts backwards gracefully.



Florian Westphal

kqueue fix.





Florian Westphal

Fix Connection Pool resizing.



Florian Westphal

changes some comments, minor cleanup


Alexander Barton

Fix up ngt_TrimStr() once more ... :-/


Alexander Barton

Mostly whitespace fixes.



Florian Westphal

fix ngt_TrimStr(), fix format string


Alexander Barton

ngt_TrimStr(): code cleanup.



Florian Westphal

corrected return value



Florian Westphal

s/gehoert//




Alexander Barton

Moved now local prototype of Client_New() to C file, renamed it to

Init_New_Client() and cleaned up some code and comments.



Florian Westphal

changed connection structure to array-api


Florian Westphal

new Function: LogDebug()



Florian Westphal

Make connid same as connection fd.


Florian Westphal

removed obsolete "int Conn_MaxFD"


Florian Westphal

simplify IRC_Show_MOTD()









Alexander Barton

Don't remove doc/src on "make distclean".


Alexander Barton

Minor whitespace fixes.


Alexander Barton

Remove direct call of Conf_UnsetServer(): it's already indirectly called

by Conn_Close() a few lines above.


Alexander Barton

Adjusted ChangeLog for ngIRCd release 0.9.2.


Alexander Barton

Updated autoconf helper scripts.






Florian Westphal

merge new resolver code





Alexander Barton

Removed obsolete debug message.


Alexander Barton

Set one second penalty on unknown commands.


Alexander Barton

Add debug code to Conn_SetPenalty().



Alexander Barton

Updated build configurations.





Florian Westphal

fix fd leak (happens on failure of fork() ).


Alexander Barton

Updated copyright notice.


Florian Westphal

small formatting change





Florian Westphal

reformatted Handle_SERVER()






Florian Westphal

reformatted a few lines.


Florian Westphal

check if gcc supports -fstack-protector


Florian Westphal

use size_t for array length variables


Florian Westphal

use size_t instead of unsigned int.



Alexander Barton

Added prefix to connection statistic NOTICE.



Florian Westphal

remove unneeded variable "bool action"


Florian Westphal

fix embarassing cut&paste error



Alexander Barton

Enhanced the handler for PING and PONG commands: fix forwarding and enable

back-passing of a client supplied additional argument of PING.



Florian Westphal

fix handling of empty requests


Alexander Barton

Changed handling of timeouts for unregistered connections: don't reset

the counter if data is received and disconnect clients earlier.


Florian Westphal

removed misleading const qualifier


Alexander Barton

Two spelling fixes.


Alexander Barton

Forgot to mention last change ...




Alexander Barton

Fixed parameter description of CHANINFO.



Alexander Barton

Updated ChangeLog (from 0.9.1 branch).



Alexander Barton

Fixed line lengths ...



Alexander Barton

Made test script run a longer time.


Alexander Barton

Set timeout.


Alexander Barton

Detect source directory correctly.


Alexander Barton

Added start script for FreeBSD.


Alexander Barton

Updated URL and some minor changes.


Alexander Barton

The KILL command killed much more than desired (including server links!)

when the target user is connected to a remote server. [from 0.9.x]


Alexander Barton

Removed some line feeds in debug statements.



Alexander Barton

Removed "U" unsignet suffix: caused problems with older compilers and is

not necessary for this constants.


Alexander Barton

Fixed line wrapping.



Florian Westphal

add topic length changelog entry



Florian Westphal

changed RES_STAT buffer to array


Florian Westphal

add array_cat0_temporary() and array_init()


Alexander Barton

Updated documentation from CVS branch-0-9-x.


Alexander Barton

Updated Debian changelog from branch-0-9-x.





Florian Westphal

add reverse lookup check








Alexander Barton

New subdirectory "src" for the source code documentation, and new make

target "srcdoc" to generate the documentation using Doxygen.



Florian Westphal

change Handle_OPERATOR() formatting



Alexander Barton

Cleaned up some log messages.


Alexander Barton

Brought some debug log messages "in line".


Alexander Barton

Reformatted some comments.


Florian Westphal

removed unneeded variable "bsize"


Florian Westphal

add better error checks for io_ routines


Florian Westphal

removed unneeded return statement


Florian Westphal

fix embarassing buffer-off-by one


Florian Westphal

make Conn_NewListener local to conn.c


Florian Westphal

made a few config options unsigned.



Florian Westphal

s/strcpy/strlcpy/


Florian Westphal

minor cosmetic changes


Florian Westphal

removed some Debug-Code.


Florian Westphal

io_library_shutdown: return void


Alexander Barton

Updated some URLs in the documentation.


Alexander Barton

Only setuid()/setgid() if it differs from current UID/GID.

Solves problems with Cygwin.



Alexander Barton

Updated documentation.


Alexander Barton

Added "doc/Zeroconf.txt" to distribution.


Alexander Barton

Renamed "Rendezvous" to "Zeroconf".


Alexander Barton

New section "runtime".


Alexander Barton

Whitespace fixes.


Florian Westphal

safemult_uint(): return bool


Florian Westphal

document b0rken resolver on GNU/Linux


Florian Westphal

new buffer/IO API.


Florian Westphal

test for epoll and kqueue support


Florian Westphal

use new io event API.


Florian Westphal

use dynamically sized unzip/zip buffer


Florian Westphal

new io/buffer api.



Florian Westphal

use dynamic io buffers


Florian Westphal

use new buffer API


Florian Westphal

cleanup, use new io layer.


Florian Westphal

add new IO layer


Florian Westphal

add new buffer abstraction layer


Florian Westphal

removed Resolve_Init()



Alexander Barton

Updated documentation.




Alexander Barton

Prepare documentation for release 0.9.0 ...




Alexander Barton

Updated URLs.



Alexander Barton

Get rid of Log_SetDaemonized().


Florian Westphal

removed global variable NGIRCd_NoDaemon


Florian Westphal

put badchars back in





Florian Westphal

s/sprintf/snprintf


Florian Westphal

use strlcpy


Florian Westphal

remove unneeded strpy()


Florian Westphal

startup: fork only once, never run with uid 0





Florian Westphal

Make sure SimpleMessage() sends <= 512 chars






Alexander Barton

New function Client_StartTime().


Alexander Barton

Updated manual pages.


Florian Westphal

send RFC compliant netsplit messages.




Alexander Barton

Added some Doxygen documentation.




Florian Westphal

minor cleanup


Alexander Barton

Handle splint errors more gracefully.


Alexander Barton

Don't exit server if closing of a socket fails; instead ignore it and

pray that this will be "the right thing" ...


Alexander Barton

Added version information to summary text.


Alexander Barton

Reformatted and documented code of the first part of the IRC_NICK()

function; and register WHOWAS entries on nickname changes, too.


Alexander Barton

New function Client_RegisterWhowas().


Alexander Barton

Implemented IRC function "WHOWAS".




Alexander Barton

New defines MAX_WHOWAS and DEFAULT_WHOWAS.


Alexander Barton

Away status texts set due to "a"-Modes received from other servers have

been fixed: the status text of the server has been set instead of the away status text of the client (most probably introduced by patch 1.36).



Alexander Barton

Added #include of "defines.h", necessary due to removal of the #include of

"defines.h" in the client.h header file.


Alexander Barton

Reorder #includes, necessary due to removal of #include "defines.h" in

the client.h header file.


Alexander Barton

Removed "invalid" #include of "defines.h" (don't include further header

files from a header file!).


Alexander Barton

Added missing #include of "defines.h".


Florian Westphal

removed Conn_UnsetOption() function. It was not used anymore.

removed Conn_SetOption(). replaced its only call (in conn-zip.c) with Conn_OPTION_ADD() macro.


Florian Westphal

removed "my_connects" fd_set.


Florian Westphal

conn.h: option filed in CONNECTION struct is now UINT16.

conn-func.h: add accessor Macros Conn_OPTION_ADD( conn, CONN_OPTION ) Conn_OPTION_DEL( conn, CONN_OPTION ) Conn_OPTION_ISSET( conn, CONN_OPTION ) To add, remove or test for a certain option field attribute (e.g. CONN_ISCLOSING) These Macros should be used instead of accessing conn->options directly.



Florian Westphal

fix spelling



Florian Westphal

use strdup() to add oper hostname mask.



Florian Westphal

s/malloc(x*y)/calloc(x,y)/


Florian Westphal

check for strdup()


Alexander Barton

Used a spellchecker :-)


Alexander Barton

Fixed wrong location of "Doxyfile" ... argl.



Alexander Barton

Added "-unrecog" to splint command line.


Alexander Barton

Target "lint": check whether splint command is available and suppress

warnings related to the used command line in the output.


Alexander Barton

Two new targets: "srcdoc" to generate Doxygen source documentation, and

"xcode" to build ngIRCd using the Xcode command line tools on Mac OS X.




Alexander Barton

New build style "deployment", cleaned up options for build style

"development" (enabled "ZeroLink") and fixed path of "ngircd.spec".




Alexander Barton

When validationg the configuration file wait for a keypress only if both

stdin and(!) stdout are valid tty's.


Alexander Barton

Use tabulator, not 8 spaces ...



Alexander Barton

Enhanced configure script: now you can pass an (optional) search path

to all --with-XXX parameters, e. g. "--with-ident=/opt/ident".






Florian Westphal

Remove INT, LONG, BOOLEAN, STATIC, CONST, CHAR datatypes.

use stdbool.h / inttypes.h if available.



Florian Westphal

removed unneeded log.h include.




Alexander Barton

Fixed too long lines.


Alexander Barton

New configuration option "OperServerMode".




Alexander Barton

Added missing include of "match.h".





Alexander Barton

Updated to latest strl{cat|cpy} code of rsync:

- Make sure that strlcpy() returns the right value when the bufsize is 0. - Fixed a bug in strlcat() where it would not properly detect a no-change condition if called with an initial string longer than the specified size limit (due to an unsigned var's inability to go negative). Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.




Alexander Barton

Enable Pidfile /var/run/ircd/ngircd.pid



Alexander Barton

Whitespace fixes.




Alexander Barton

Write "error file" (/tmp/ngircd-XXX.err) only if compiled with debug

code ("--enable-debug") and running as daemon process.



Alexander Barton

Don't create version information string each time a client connects but

insetead on server startup. By Florian Westphal.


Alexander Barton

Added an empty /etc/ngircd/ngircd.motd to the packages. And ngircd.conf

becomes modified to enable the PID file (/var/run/ircd/ngircd.cond) and to change the user and group to "irc".





Alexander Barton

New configuration variable "PidFile", section "[Global]": if defined,

the server writes its process ID (PID) to this file. Default: off. Idea by Florian Westphal, <westphal@foo.fh-furtwangen.de>.


Alexander Barton

ngIRCd 0.8.3.




Alexander Barton

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)


Alexander Barton

Updated ChangeLog for 0.8.2.


Alexander Barton

Updated config.sub and config.guess


Alexander Barton

We are in the year 2005 now! :-)


Alexander Barton

Fixed a buffer overflow that could cause the daemon to crash. Bug found

by Florian Westphal, <westphal@foo.fh-furtwangen.de>.


Alexander Barton

Updated list of contributors.



Alexander Barton

Fixed a typo in variable name ...


Alexander Barton

Fixed a possible buffer underrun when reading the MOTD file. Thanks to

Florian Westphal, <westphal@foo.fh-furtwangen.de>.


Alexander Barton

Code cleanups from Florian Westphal, <westphal@foo.fh-furtwangen.de>:

wrote functions for common error messages.



Alexander Barton

Fixed detection of IRC lines which are too long to send. Detected by

Florian Westphal, <westphal@foo.fh-furtwangen.de>.


Alexander Barton

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 :-/


Alexander Barton

Translated source code comments.




Alexander Barton

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>.


Alexander Barton

Added URLs for stunnel.


Alexander Barton

Added documentation for SSL support.


Alexander Barton

Make more clear that there can be more than one [Operator], [Server] and

[Channel] section in the configuration file.


Alexander Barton

Fixed wrong port number in example.



Alexander Barton

Added support for the Howl (http://www.porchdogsoft.com/products/howl/)

Rendezvous API, in addition to the API of Apple (Mac OS X).


Alexander Barton

Updated documentation for release 0.8.1


Alexander Barton

Updated config.guess and config.sub


Alexander Barton

Updated documentation ...



Alexander Barton

Updated list of supported/tested platforms.


Alexander Barton

Fixed spelling mistake.


Alexander Barton

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.



Alexander Barton

Added some missing words: "address" :-)



Alexander Barton

Added functions.inc to EXTRA_DIST files.


Alexander Barton

Fixed echo without newline for systems not understanding "echo -n"; added

new file "functions.inc" for functions usable by all test scripts.



Alexander Barton

Fixed wrong exit code check of "kill -0".


Alexander Barton

Updated documentation.


Alexander Barton

Fxied name of "default file" for ngircd-full package. And do the test if

the binary is executable after reading this file.


Alexander Barton

If ServerUID is defined change the working directory to the home directory

of this user.


Alexander Barton

Updated documentation :-)


Alexander Barton

Enhanced messages and exit codes.


Alexander Barton

Added all test scripts to target "all".


Alexander Barton

Changed text "test scripts" to "processes": some versions of expect(1)

fork child processes ...



Alexander Barton

Added detection of flags for ps(1).






Alexander Barton

Set $srcdir if not already set by make.



Alexander Barton

Added preliminary README text.


Alexander Barton

Information about configuring ngIRCd.



Alexander Barton

Added missing commas to debian control file, fixes bug #56.

Thanks to Kevin Otte (nivex@nivex.net) for the patch.


Alexander Barton

Updated documentation: note ngIRCd 0.8.0 :-)


Alexander Barton

Added cast to integer for Solaris.


Alexander Barton

Updated documentation.



Alexander Barton

Added "hppa/unknown/openbsd3.5".


Alexander Barton

Updated documentation.