Fixed propagation of channel mode 'P' on server links.

This commit is contained in:
Alexander Barton 2007-10-14 12:08:57 +00:00
parent 089ca21b3d
commit 8f162f4e17
2 changed files with 18 additions and 12 deletions

View File

@ -12,6 +12,7 @@
ngIRCd HEAD ngIRCd HEAD
- Fixed propagation of channel mode 'P' on server links.
- Numeric 317: implemented "signon time" (displayed in WHOIS result). - Numeric 317: implemented "signon time" (displayed in WHOIS result).
- Fixed code that prevented GCC 2.95 to compile ngIRCd. - Fixed code that prevented GCC 2.95 to compile ngIRCd.
- Adjust path names in manual pages according to "./configure" settings. - Adjust path names in manual pages according to "./configure" settings.
@ -707,4 +708,4 @@ ngIRCd 0.0.1, 31.12.2001
-- --
$Id: ChangeLog,v 1.323 2007/10/04 15:03:55 alex Exp $ $Id: ChangeLog,v 1.324 2007/10/14 12:09:04 alex Exp $

View File

@ -14,7 +14,7 @@
#include "portab.h" #include "portab.h"
static char UNUSED id[] = "$Id: irc-mode.c,v 1.49 2007/08/02 10:14:26 fw Exp $"; static char UNUSED id[] = "$Id: irc-mode.c,v 1.50 2007/10/14 12:08:57 alex Exp $";
#include "imp.h" #include "imp.h"
#include <assert.h> #include <assert.h>
@ -432,16 +432,21 @@ Channel_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel )
break; break;
case 'P': /* Persistent channel */ case 'P': /* Persistent channel */
if( modeok ) if (modeok) {
{ /* Only IRC operators are allowed to
if( set && ( ! Client_OperByMe( Client ))) * set the 'P' channel mode! */
{ if (set && ! (Client_OperByMe(Client)
/* Only IRC operators are allowed to set P mode */ || Client_Type(Client) == CLIENT_SERVER)) {
ok = IRC_WriteStrClient( Origin, ERR_NOPRIVILEGES_MSG, Client_ID( Origin )); ok = IRC_WriteStrClient(Origin,
} ERR_NOPRIVILEGES_MSG,
else x[0] = 'P'; Client_ID(Origin));
} } else
else ok = IRC_WriteStrClient( Origin, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( Origin ), Channel_Name( Channel )); x[0] = 'P';
} else
ok = IRC_WriteStrClient(Origin,
ERR_CHANOPRIVSNEEDED_MSG,
Client_ID(Origin),
Channel_Name(Channel));
break; break;
/* --- Channel user modes --- */ /* --- Channel user modes --- */