about summary refs log tree commit diff
path: root/contrib/Anope/0008-ngircd-Allow-setting-modes-by-clients-on-burst.patch
blob: eb2c214d41aaccc8da27fc01782a8d96d5c1e7a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From d363ebd841ea7e1db3c62730023759d69520e0d8 Mon Sep 17 00:00:00 2001
From: Alexander Barton <alex@barton.de>
Date: Tue, 27 Sep 2011 15:08:09 +0200
Subject: [PATCH 08/16] ngircd: Allow setting modes by clients on burst

This change is required by commit 43201ead9575a for the ngIRCd protocol
module as well.
---
 modules/protocol/ngircd.cpp |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/modules/protocol/ngircd.cpp b/modules/protocol/ngircd.cpp
index 3024fdd..2774168 100644
--- a/modules/protocol/ngircd.cpp
+++ b/modules/protocol/ngircd.cpp
@@ -57,14 +57,17 @@ class ngIRCdProto : public IRCDProto
 		send_cmd(source ? source->nick : Config->ServerName, "WALLOPS :%s", buf.c_str());
 	}
 
-	void SendJoin(User *user, Channel *c, const ChannelStatus *status)
+	void SendJoin(User *user, Channel *c, ChannelStatus *status)
 	{
 		send_cmd(user->nick, "JOIN %s", c->name.c_str());
 		if (status)
 		{
+			ChannelStatus cs = *status;
+			status->ClearFlags();
+
 			BotInfo *setter = findbot(user->nick);
 			for (unsigned i = 0; i < ModeManager::ChannelModes.size(); ++i)
-				if (status->HasFlag(ModeManager::ChannelModes[i]->Name))
+				if (cs.HasFlag(ModeManager::ChannelModes[i]->Name))
 					c->SetMode(setter, ModeManager::ChannelModes[i], user->nick, false);
 		}
 	}
-- 
1.7.8.3