Commit Briefs

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

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

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

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

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.




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


Alexander Barton

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

(cherry picked from commit b187fac244f4e14705f882ba7c43eef0238e2830)


Florian Westphal

Fix wrong strncpy usage if CVSDATE defined

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


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

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

Removed client status CLIENT_GOTPASSSERVER.


Alexander Barton

Enhanced ISUPPORT message (numeric 005).


Florian Westphal

-whitespace damage



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

send RFC compliant netsplit messages.


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

Use tabulator, not 8 spaces ...


Florian Westphal

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

use stdbool.h / inttypes.h if available.


Alexander Barton

Fixed some warnings of non-gcc-compilers (e. g. original Apple compiler on

A/UX): "warning: illegal pointer combination, op =".


Alexander Barton

The info text ("real name") of users is set to "-" if none has been

specified using the USER command (e. g. "USER user * * :"). Reason: the original ircd doesn't like empty ones and would KILL such users.




Alexander Barton

Extended version reporting of CVS builds.


Alexander Barton

Fixed and enhanced penalty handling; changed internal time resoluiton of

the server to one second. Code cleanup.








Alexander Barton

- new numeric on login: RPL_FEATURE


Alexander Barton

- new file header format (in english);

- new file ident semantics.


Alexander Barton

- Logging von doppelten ID's verbessert.



Alexander Barton

- Parser auf Befehlstabelle umgestellt.




Alexander Barton

- Server-Versionsausgabe ueberarbeitet.



Alexander Barton

- Anpassungen/Umstellung auf IRC+-Protokoll.





Alexander Barton

- Weitere Anpassungen an pre-ANSI-Compiler.


Alexander Barton

- Anpassungen an pre-ANSI-Compiler,

- Includes aufgeraumt: Header includieren keine anderen mehr.



Alexander Barton

- Format-String fuer Log-Meldung bei Nick-Aenderungen lokaler Clients

war corrupt, der Server stuerzte so in der Regel ab :-(


Alexander Barton

- Kommentar korrekt eingerueckt. Wow ;-)




Alexander Barton

- externe portab-Header werden nicht mehr benoetigt/benutzt, dadurch

einige Aenderungen an diversen Source-Dateien und Headern. - Dateien enthalten keine CVS-History mehr.





Alexander Barton

- IRC_PING() ist, wenn nicht im "strict RFC"-Mode, toleranter und akzptiert

beliebig viele Parameter: z.B. BitchX sendet soetwas.



Alexander Barton

- Bei der USER-Registrierung wird NICK nicht mehr sofort geforwarded,

sondern erst dann, wenn auch ein gueltiges USER empfangen wurde.


Alexander Barton

- Modul aus irc.c bzw. irc.h ausgegliedert.