From 989c9fa531d83c9b1a302b222a4bcfeef767c2b6 Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Mon, 1 Aug 2011 23:30:55 +0200 Subject: [PATCH] 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 file changed, 10 insertions(+) diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 326c1046..3cceaeb8 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) {