Module: ngircd.git Branch: master Commit: 989c9fa531d83c9b1a302b222a4bcfeef767c2b6 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=989c9...
Author: Alexander Barton alex@barton.de Date: Mon Aug 1 23:30:55 2011 +0200
Handle channel user modes 'a', 'h', and 'q' from remote servers
These channel user modes aren't used for anything at the moment, but ngIRCd knows that these three modes are "channel user modes" and not "channel modes", that is that these modes take an "nick name" argument.
Like unknown user and channel modes, these modes are saved and forwarded, but ignored otherwise.
---
src/ngircd/irc-mode.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 326c104..3cceaeb 100644 --- a/src/ngircd/irc-mode.c +++ b/src/ngircd/irc-mode.c @@ -594,6 +594,16 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel) Channel_Name(Channel)); break; /* --- Channel user modes --- */ + case 'a': + case 'h': + case 'q': + if (Client_Type(Client) != CLIENT_SERVER) { + connected = IRC_WriteStrClient(Origin, + ERR_CHANOPRIVSNEEDED_MSG, + Client_ID(Origin), + Channel_Name(Channel)); + goto chan_exit; + } case 'o': /* Channel operator */ case 'v': /* Voice */ if (arg_arg > mode_arg) {