Commits


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.


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.


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 ]


Channel_Mode: Remove duplicate code. Incidentially, this doesn't even change the generated code...


Channel_Mode: change order of if (set) and if (client) check.


Channel_Mode: Re-indent switch. No functional changes were made.


Channel_Mode: check return type of Invite/Ban Add/Del function


Channel_Mode: unify 'b' and 'I' switch/case handling.


Channel_Mode: Unify Del_Invite and Del_Ban handler


Channel_Mode: Unify Add_Invite and Add_Ban handler


Channel_Mode cleanups - better indentation - move answering request into seperate function.


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.


Fixed propagation of channel mode 'P' on server links.


implement /WALLOPS as described in RFC 2812, section 4.7.


moved invite/ban lists to channel structure


channel maxusers now unsigned long


-whitespace damage


Use some more specific data types (e. g. pid_t vs. int), make "SPLint" happy :-)


Removed unnecessary #define of "LOCAL", now use plain C "static" instead.


remove unneeded strpy()


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


Reorder #includes, necessary due to removal of #include "defines.h" in the client.h header file.


Remove INT, LONG, BOOLEAN, STATIC, CONST, CHAR datatypes. use stdbool.h / inttypes.h if available.


New configuration option "OperServerMode".


Reduce the number of calls of strlen(). Idea by Florin Westphal.


Implemented support for "secret channels" (channel mode "s").


Clean up the mode handling code: remove redundant parts ...


Don't send MODE changes when origin is a server and mask is already known.


Fixed handling of already existent entries in invite and ban lists: the attempt to add an already existent entry is no error, it must be propagated across servers (but not added to the list!).


Changed the reply of the MODE command to match the syntax of the original ircd exactly: the unnecessary but missing ":" before the last parameter has been added.


Fixed and enhanced penalty handling; changed internal time resoluiton of the server to one second. Code cleanup.


The server didn't validate wheather the "target" client of a channel user mode change is a valid channel member or not.


- Non-members of a channel could crash the server when trying to change its modes. Fixed.


- MODE returns the key and user limit for channel members correctly now.


- The server sets a correct away message now when receiving a "MODE +a".


- replaced some calls to sprintf() with snprintf() -- more secure :-)


- replaced a lot of strcpy() calls with strlcpy() which is more secure.


- replaced a lot of strcat() calls with strlcat() which is more secure.


- fixed user mode propagation over server-links (IRC operator, away, ...)


- Implemented channel modes k (key) and l (user limit).


- fixed broken handling of modes received from other servers.


- fixed some parsing bugs. - better logging.


- new (and much more flexible!) MODE parser


- removed Conf_MaxPChannels and reverted to old behavior.


- Conf_MaxPChannels is considered properly in channel mode changes now.


- new file header format (in english); - new file ident semantics.


- Parser auf Befehlstabelle umgestellt.


- Channel-Mode "P" ("persistent") kann nur noch von IRC-Ops gesetzt werden.


- Parameter von List_Add{Invited|Banned}() erweitert.


- auch Nicht-ChanOps konnten Ban- und Invite-Lists veraendern.


- Bans/Invites: andere Server wurden nicht informiert. - neue Funktion Send_ListChange().


- Invite- und Ban-Lists (MODE +I, MODE +b) implementiert.


- neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"): ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.


- Hmpf. "Verfruehtes" CVS-Update einiger Source-Files zurueckgenommen ...


- Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende User-Modes korrekt in den Channel gemeldet.


- nicht unterstuetzte Channel-Modes entfernt.


- Anpassungen an pre-ANSI-Compiler, - Includes aufgeraumt: Header includieren keine anderen mehr.


- persistente und vordefinierte Channels implementiert.


- alle Client_GetFromID() durch Client_Search() ersetzt. - neuer Mode "s": Server Messages.


- externe portab-Header werden nicht mehr benoetigt/benutzt, dadurch einige Aenderungen an diversen Source-Dateien und Headern. - Dateien enthalten keine CVS-History mehr.


- der AWAY-Mode wurde nicht ueber mehrere Server-Links weitergegeben.


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