Commit Briefs


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.


Alexander Barton

Return 461 (syntax error) on "JOIN :" and "PART :"

Up to this patch ngIRCd did not return any result (GIT master) or a badly formated 403 (":irc.server 403 test :No such channel" [note the two spaces!], branch-0-12-x) on the above commands, this patch changes the behaviour to reflect ircd 2.11 which returns 461 in both cases.


Alexander Barton

Fix GCC warnings for possibly uninitialized variables in IRC_JOIN

This patch fixes the following two warnings of GCC 4.2.4: irc-channel.c: In function "IRC_JOIN": irc-channel.c:185: warning: "lastkey" may be used uninitialized in this function irc-channel.c:185: warning: "lastchan" may be used uninitialized in this function


Florian Westphal

Use strtok_r instead of strchr in IRC_JOIN.

This patch does significant cleanup on the join code by using strtok_r instead of mangling strchr to parse channel names and keys in parallel when a JOIN command contains a list of channels and keys. Also adds an strtok_r implementation to libportab.



Alexander Barton

Allow IRC ops to ignore channel limits when joining

Allow IRC ops to ignore any channel limit (bans, invite only etc.) when they want to join a channel.


Alexander Barton

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.


Alexander Barton

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 ]


Alexander Barton

IRC_PART(): code and comment cleanup.


Florian Westphal

Fix sending of JOINs between servers.

This does hit only operators that join a channel with at least 2 servers active in the net the server the oper connects to sends "channel^Go" to the other servers the other server first searches for the channel and then strips the modes from the channel name he has to do the other way round: first strip and then check the channel name.


Florian Westphal

IRC_JOIN cleanups.

- put sending of mode and forwarding of JOIN to other clients into seperate function. - put sending of topic/channel names into seperate function. - put access check into seperate function. - translate/remove remaining german comments. - stop if JOIN to a channel in a list (JOIN #a,#,b,#c...) fails (This doesn't change the behaviour: skip-to-next-channel-on-error did never work as intended)


Florian Westphal

Remove duplicate Channel_FirstChannelOf().

noticed there's a way to make the loop slightly more elegant. [fw@strlen.de: Extra () to silence gcc.]


Florian Westphal

Implement RFC 2812 handling of "0" argument to JOIN

The students in my software-engineering class are writing IRC clients in Java, and I'm running ngIRCd as a sandbox for them to play in. We noticed ngIRCd doesn't obey the "JOIN 0" command specified in RFC 2812: JOIN 0 ; Leave all currently joined channels. http://tools.ietf.org/html/rfc2812#section-3.2.1 I believe the following patch addresses this. Cheers! [fw@strlen.de: put it into a seperate function]


Florian Westphal

IRC_PART could reference invalid memory.


Alexander Barton

SECURITY: Fixed a severe bug in handling JOIN commands, which could

cause the server to crash. Thanks to Sebastian Vesper, <net@veoson.net>.


Florian Westphal

moved invite/ban lists to channel structure


Florian Westphal

New configuration option "PredefChannelsOnly": if set, make

all JOINs to-non existants channel return ERR_BANNEDFROMCHAN_MSG, restricting users to those channels defined in the config file.


Florian Westphal

channel maxusers now unsigned long


Florian Westphal

Channel_Join was severely broken.


Florian Westphal

corrected return value



Alexander Barton

Removed obsolete debug message.





Florian Westphal

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

use stdbool.h / inttypes.h if available.



Alexander Barton

Servers other than the destination server didn't clean up the invite

list of an "invite-only" channel properly when an INVITE'd user joined.


Alexander Barton

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

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







Alexander Barton

- fixed up Conf_MaxJoins test on JOIN.



Alexander Barton

- new file header format (in english);

- new file ident semantics.



Alexander Barton

- Parser auf Befehlstabelle umgestellt.





Alexander Barton

- an Clients wurden Modes mit fuehrendem ":" geliefert. Das ist zwar RFC-

konform (IMO), macht aber leider grosse(!!) Probleme :-/


Alexander Barton

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

User-Modes korrekt in den Channel gemeldet.






Alexander Barton

- Anpassungen an pre-ANSI-Compiler,

- Includes aufgeraumt: Header includieren keine anderen mehr.





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.