Commit Briefs

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



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


4e125fb67c Alexander Barton

Allow IRC services to change their nick names.


02d7623074 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 ;-)


c5342fb467 Alexander Barton

Centralize logging functions in Introduce_Client().


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


92603f7c80 Alexander Barton

Introduce_Client(): send MODES in RFC 1459 mode, too.


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


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



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


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


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


e56bd8ff89 Alexander Barton

Whitespace fixes: remove trailing tabulator characters.


956bbe2c28 Alexander Barton

Reset client idle time on NICK, JOIN, and PART


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


33b1204349 Alexander Barton

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

(cherry picked from commit b187fac244f4e14705f882ba7c43eef0238e2830)


42db159d26 Florian Westphal

Fix wrong strncpy usage if CVSDATE defined

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


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



27d947fb7d Alexander Barton

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

Removed client status CLIENT_GOTPASSSERVER.


bed98979dc Alexander Barton

Enhanced ISUPPORT message (numeric 005).


0eccdbc137 Florian Westphal

-whitespace damage



4074fd9149 Alexander Barton

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

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





cac9f279fa Florian Westphal

send RFC compliant netsplit messages.


95f8b963a6 Alexander Barton

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

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


f56a1bdf20 Alexander Barton

Use tabulator, not 8 spaces ...


8adff59223 Florian Westphal

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

use stdbool.h / inttypes.h if available.


cb76d96efb Alexander Barton

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

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


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


57c7e23622 Alexander Barton

Added #include for strings.h to fix compiler warnings.



05e2c0f048 Alexander Barton

Extended version reporting of CVS builds.


7b6e26628a Alexander Barton

Fixed and enhanced penalty handling; changed internal time resoluiton of

the server to one second. Code cleanup.



ff98833136 Alexander Barton

- Kill_Nick() uses an "faked internal KILL" now.


c428ac7563 Alexander Barton

- Renamed RPL_FEATURE_MSG to RPL_ISUPPORT_MSG.


ae6a7e7c0b Alexander Barton

- Fixed up command forwarding: only to servers!


b8d7dcec77 Alexander Barton

- Adjusted includes for new "conn-func.h" header.


a2544e496c Alexander Barton

- Cleaned up handling of server configuration structures.


a3f59f1a5b Alexander Barton

- new numeric on login: RPL_FEATURE


490f28ffd1 Alexander Barton

- new file header format (in english);

- new file ident semantics.


9f122037ae Alexander Barton

- Logging von doppelten ID's verbessert.


0c471b84f7 Alexander Barton

- neues Source-Modul "irc-info"; neuer Befehl STATS.


1e59617d2c Alexander Barton

- Parser auf Befehlstabelle umgestellt.




51dabeafaa Alexander Barton

- Server-Versionsausgabe ueberarbeitet.


55ee4c9553 Alexander Barton

- Das IRC+-Protokoll wird nun richtig erkannt ...


ad1cbe34b4 Alexander Barton

- Anpassungen/Umstellung auf IRC+-Protokoll.


5aa9c8f44c Alexander Barton

- Flags von connecteten Servern werden nun gespeichert.




f7327524fc Alexander Barton

- Weitere Anpassungen an pre-ANSI-Compiler.


c2f60abe55 Alexander Barton

- Anpassungen an pre-ANSI-Compiler,

- Includes aufgeraumt: Header includieren keine anderen mehr.



5b4e9152ad Alexander Barton

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

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


bcc5138518 Alexander Barton

- Kommentar korrekt eingerueckt. Wow ;-)


bc4ed22635 Alexander Barton

- alle Client_GetFromID() durch Client_Search() ersetzt.



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





5fa05dcea8 Alexander Barton

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

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


2ee05c9a68 Alexander Barton

- Source in weitere Module fuer IRC-Befehle aufgesplitted.


0370c4843f Alexander Barton

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

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


c23199d971 Alexander Barton

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