Commit Briefs
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: Re-indent switch.
No functional changes were made.
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.
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.
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.
- fixed some parsing bugs.
- better logging.
- new file header format (in english);
- new file ident semantics.
- Bans/Invites: andere Server wurden nicht informiert.
- neue Funktion Send_ListChange().
- neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"):
ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.
- Bei einem JOIN in einen persistenten Channel werden nun evtl. zu setzende
User-Modes korrekt in den Channel gemeldet.
- Anpassungen an pre-ANSI-Compiler,
- Includes aufgeraumt: Header includieren keine anderen mehr.
- 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.