Commit Briefs
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"
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!
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.
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 ...
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.
[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.
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.
Remove INT, LONG, BOOLEAN, STATIC, CONST, CHAR datatypes.
use stdbool.h / inttypes.h if available.
- new file header format (in english);
- new file ident semantics.
- RELOAD in REHASH umbenannt.
- neue Funktion WHOWAS.
- Befehle sortiert,
- neuer Befehl RELOAD.
- Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende
User-Modes korrekt in den Channel gemeldet.
- Semantik der Validate_XXX()-Funktionen verbessert,
- Validate_Prefix() mit "Leben" erfuellt ;-)
- Anpassungen an pre-ANSI-Compiler,
- Includes aufgeraumt: Header includieren keine anderen mehr.
- externe portab-Header werden nicht mehr benoetigt/benutzt, dadurch
einige Aenderungen an diversen Source-Dateien und Headern. - Dateien enthalten keine CVS-History mehr.
- Sourcen auf weitere Module fuer IRC-Befehle aufgesplitted.
- IRC-Befehl WHO implementiert.
- Copyright-Texte aktualisiert.
- neuer Befehl ERROR.
- neuer Befehl NAMES, kleinere Bugfixes.
- Bug bei PING behoben: war zu restriktiv implementiert :-)
- viele neue Befehle (WHOIS, ISON, OPER, DIE, RESTART),
- neuen Header "defines.h" mit (fast) allen Konstanten. - Code Cleanups und viele "kleine" Aenderungen & Bugfixes.
- Fuehrende und folgende Leerzeichen etc. in Requests werden geloescht.
- Logmeldungen (mal wieder) ein wenig angepasst.
- neue Befehle NOTICE und PRIVMSG.
- Debug-Logging ein wenig reduziert.
- Gross- und Kleinschreibung der IRC-Befehle wird ignoriert.
- bessere Debug-Ausgaben.
- bessere Debug-Ausgaben,
- Bug im Parameter-Parser behoben (bei "langem" Parameter) - erste IRC-Befehle werden erkannt :-)