mirror of
https://github.com/osmarks/ngircd.git
synced 2025-10-16 07:07:38 +00:00
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.
This commit is contained in:

committed by
Florian Westphal

parent
e710e8ae37
commit
44cdf1b1ca
@@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
ngIRCd HEAD
|
ngIRCd HEAD
|
||||||
|
|
||||||
|
- Fix sending of JOINs between servers when remote server appended mode
|
||||||
|
flags. (Rolf Eike Beer)
|
||||||
- Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
|
- Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
|
||||||
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
|
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
|
||||||
enhanced test suite to check these commands. (Dana Dahlstrom)
|
enhanced test suite to check these commands. (Dana Dahlstrom)
|
||||||
@@ -752,4 +754,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: ChangeLog,v 1.341 2008/02/17 15:31:14 alex Exp $
|
$Id: ChangeLog,v 1.342 2008/02/24 18:57:38 fw Exp $
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-channel.c,v 1.44 2008/02/16 11:21:33 fw Exp $";
|
static char UNUSED id[] = "$Id: irc-channel.c,v 1.45 2008/02/24 18:57:38 fw Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -217,13 +217,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
|
|||||||
while (channame) {
|
while (channame) {
|
||||||
flags = NULL;
|
flags = NULL;
|
||||||
|
|
||||||
chan = Channel_Search(channame);
|
|
||||||
if (!chan && Conf_PredefChannelsOnly) {
|
|
||||||
/* channel must be created, but server does not allow this */
|
|
||||||
IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Did the server include channel-user-modes? */
|
/* Did the server include channel-user-modes? */
|
||||||
if (Client_Type(Client) == CLIENT_SERVER) {
|
if (Client_Type(Client) == CLIENT_SERVER) {
|
||||||
flags = strchr(channame, 0x7);
|
flags = strchr(channame, 0x7);
|
||||||
@@ -233,6 +226,13 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chan = Channel_Search(channame);
|
||||||
|
if (!chan && Conf_PredefChannelsOnly) {
|
||||||
|
/* channel must be created, but server does not allow this */
|
||||||
|
IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Local client? */
|
/* Local client? */
|
||||||
if (Client_Type(Client) == CLIENT_USER) {
|
if (Client_Type(Client) == CLIENT_USER) {
|
||||||
/* Test if the user has reached his maximum channel count */
|
/* Test if the user has reached his maximum channel count */
|
||||||
|
Reference in New Issue
Block a user