Commit Briefs

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

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

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

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

[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

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

Set one second penalty on unknown commands.





Alexander Barton

Added some Doxygen documentation.


Florian Westphal

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

use stdbool.h / inttypes.h if available.



Alexander Barton

- Added "HELP" command.


Alexander Barton

- Added support for "TRACE" command.



Alexander Barton

- New command DISCONNECT.





Alexander Barton

- new function Parse_GetCommandStruct().


Alexander Barton

- new file header format (in english);

- new file ident semantics.


Alexander Barton

- IRC Operators can KILL users now.



Alexander Barton

- Parser auf Befehlstabelle umgestellt.


Alexander Barton

- Logging bei Prefix-Fehlern verbessert.


Alexander Barton

- neuer IRC-Befehl "TIME".


Alexander Barton

- RELOAD in REHASH umbenannt.

- neue Funktion WHOWAS.


Alexander Barton

- Befehle sortiert,

- neuer Befehl RELOAD.


Alexander Barton

- Fehler-Ausgaben verbessert (Prefix-Fehler).



Alexander Barton

- neuer Befehl: ADMIN


Alexander Barton

- den BAN-Befehl gibt es gar nicht ;-)


Alexander Barton

- IRC+-Protokoll ist nun abschaltbar.


Alexander Barton

- neue Befehle CHANINFO und CONNECT.



Alexander Barton

- Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende

User-Modes korrekt in den Channel gemeldet.



Alexander Barton

- Semantik der Validate_XXX()-Funktionen verbessert,

- Validate_Prefix() mit "Leben" erfuellt ;-)


Alexander Barton

- Anpassungen an pre-ANSI-Compiler,

- Includes aufgeraumt: Header includieren keine anderen mehr.


Alexander Barton

- Neue IRC-Funktion LIST implementiert.



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

- Sourcen auf weitere Module fuer IRC-Befehle aufgesplitted.

- IRC-Befehl WHO implementiert.



Alexander Barton

- Channel-Topics implementiert.


Alexander Barton

- IRC-Befehl "AWAY" implementert.





Alexander Barton

- neue Befehle JOIN und PART.



Alexander Barton

- LINKS implementiert, LUSERS begonnen.







Alexander Barton

- neuer Befehl SQUIT.



Alexander Barton

- neue Befehle NJOIN und SERVER begonnen.


Alexander Barton

- Copyright-Texte aktualisiert.

- neuer Befehl ERROR.


Alexander Barton

- neuer Befehl NAMES, kleinere Bugfixes.

- Bug bei PING behoben: war zu restriktiv implementiert :-)


Alexander Barton

- viele neue Befehle (WHOIS, ISON, OPER, DIE, RESTART),

- neuen Header "defines.h" mit (fast) allen Konstanten. - Code Cleanups und viele "kleine" Aenderungen & Bugfixes.


Alexander Barton

- Fuehrende und folgende Leerzeichen etc. in Requests werden geloescht.

- Logmeldungen (mal wieder) ein wenig angepasst.


Alexander Barton

- neue Befehle NOTICE und PRIVMSG.

- Debug-Logging ein wenig reduziert.


Alexander Barton

- "Code Cleanups".


Alexander Barton

- PING/PONG-Befehle implementiert.



Alexander Barton

- Gross- und Kleinschreibung der IRC-Befehle wird ignoriert.

- bessere Debug-Ausgaben.


Alexander Barton

- bessere Debug-Ausgaben,

- Bug im Parameter-Parser behoben (bei "langem" Parameter) - erste IRC-Befehle werden erkannt :-)