From: Alexander Barton Date: Wed, 18 Dec 2002 14:16:21 +0000 (+0000) Subject: - fixed user mode propagation over server-links (IRC operator, away, ...) X-Git-Tag: rel-0-6-0-pre1~3 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=commitdiff_plain;h=8841d87365ae75fdc5aea398554a6f08cbb2ce79 - fixed user mode propagation over server-links (IRC operator, away, ...) --- diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 148698ac..05664949 100644 --- a/src/ngircd/irc-mode.c +++ b/src/ngircd/irc-mode.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-mode.c,v 1.23 2002/12/16 23:06:46 alex Exp $"; +static char UNUSED id[] = "$Id: irc-mode.c,v 1.24 2002/12/18 14:16:21 alex Exp $"; #include "imp.h" #include @@ -154,13 +154,18 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ) x[0] = '\0'; switch( *mode_ptr ) { + case 'a': + /* Away */ + if( Client_Type( Client ) == CLIENT_SERVER ) x[0] = 'a'; + else ok = IRC_WriteStrClient( Origin, ERR_NOPRIVILEGES_MSG, Client_ID( Origin )); + break; case 'i': /* Invisible */ x[0] = 'i'; break; case 'o': /* IRC operator (only unsetable!) */ - if( ! set ) + if(( ! set ) || ( Client_Type( Client ) == CLIENT_SERVER )) { Client_SetOperByMe( Target, FALSE ); x[0] = 'o'; @@ -169,7 +174,7 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CLIENT *Target ) break; case 'r': /* Restricted (only setable) */ - if( set ) x[0] = 'r'; + if(( set ) || ( Client_Type( Client ) == CLIENT_SERVER )) x[0] = 'r'; else ok = IRC_WriteStrClient( Origin, ERR_RESTRICTED_MSG, Client_ID( Origin )); break; case 's':