Commit Briefs


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


258143897c 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.


258e39e89f 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


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


956bbe2c28 Alexander Barton

Reset client idle time on NICK, JOIN, and PART


83bfdddf99 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.


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


530112b114 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 ]


25f48a2a34 Alexander Barton

IRC_PART(): code and comment cleanup.


44cdf1b1ca 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.


634ef8c131 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)


c634303765 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.]


6bd35bf090 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]


463c5cb7c5 Florian Westphal

IRC_PART could reference invalid memory.


69081851ac 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>.


fa7bb2790a Florian Westphal

moved invite/ban lists to channel structure


058d3085a9 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.


6e105bf87e Florian Westphal

channel maxusers now unsigned long


4108e16be6 Florian Westphal

Channel_Join was severely broken.


4000e01b28 Florian Westphal

corrected return value


68d3d36dd6 Florian Westphal

removed silly if (foo) { if (foo){ }} statement


ab3ac4e466 Alexander Barton

Removed obsolete debug message.


e708790566 Alexander Barton

JOIN now supports more than one channel key at a time.




8adff59223 Florian Westphal

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

use stdbool.h / inttypes.h if available.


4ef172d603 Alexander Barton

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


233210b906 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.


cb76d96efb Alexander Barton

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

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




ae6a7e7c0b Alexander Barton

- Fixed up command forwarding: only to servers!



69ad0e386e Alexander Barton

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


00e75ccd7d Alexander Barton

- fixed up Conf_MaxJoins test on JOIN.


5b8b3b8384 Alexander Barton

- maximum channels per user limit implemented.


490f28ffd1 Alexander Barton

- new file header format (in english);

- new file ident semantics.


0c471b84f7 Alexander Barton

- neues Source-Modul "irc-info"; neuer Befehl STATS.


1e59617d2c Alexander Barton

- Parser auf Befehlstabelle umgestellt.


005391ca5b Alexander Barton

- LIST kann nun auch an andere Server geforwarded werden.



1f9ba7b326 Alexander Barton

- neuen Befehl CHANINFO implementiert: IRC_CHANINFO().


f673fb960a Alexander Barton

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

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


d645ce86e9 Alexander Barton

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

User-Modes korrekt in den Channel gemeldet.



e876e210da Alexander Barton

- Code-Stelle in IRC_JOIN "klarer" gemacht :-)


f7567db01f Alexander Barton

- JOIN: Invite- und Ban-Lists werden nun beachtet.


a2119a660a Alexander Barton

- fehlerhaften Fehlercode in IRC_TOPIC() gefixed.


c2f60abe55 Alexander Barton

- Anpassungen an pre-ANSI-Compiler,

- Includes aufgeraumt: Header includieren keine anderen mehr.


040f5422f2 Alexander Barton

- persistente und vordefinierte Channels implementiert.


3c0c3c3c5f Alexander Barton

- Neue Funktion IRC_LIST() begonnen zu implementieren.


bc4ed22635 Alexander Barton

- alle Client_GetFromID() durch Client_Search() ersetzt.


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


2ee05c9a68 Alexander Barton

- Source in weitere Module fuer IRC-Befehle aufgesplitted.