aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree.cpp
diff options
context:
space:
mode:
authorGravatar brain2006-12-17 13:15:43 +0000
committerGravatar brain2006-12-17 13:15:43 +0000
commitdec9eaa58841dea08455c0e977fd7c059aa13599 (patch)
tree42f4bf64c22cb641c6ff559cd859296ed998d005 /src/modules/m_spanningtree.cpp
parentUse $^O rather than chomp(`uname`); - use perl's neat detection of the OS nam... (diff)
Dont use FJOIN to join users to channels outside the burst (revert to earlier betas behaviour) which should prevent some spurious deops during normal
operation git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6032 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree.cpp')
-rw-r--r--src/modules/m_spanningtree.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index f423f7617..f6bd0e736 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -4994,25 +4994,28 @@ class ModuleSpanningTree : public Module
// Only do this for local users
if (IS_LOCAL(user))
{
- std::deque<std::string> params;
- params.clear();
- params.push_back(channel->name);
- // set up their permissions and the channel TS with FJOIN.
- // All users are FJOINed now, because a module may specify
- // new joining permissions for the user.
- params.clear();
- params.push_back(channel->name);
- params.push_back(ConvToStr(channel->age));
- params.push_back(std::string(channel->GetAllPrefixChars(user))+","+std::string(user->nick));
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"FJOIN",params);
if (channel->GetUserCounter() == 1)
{
+ std::deque<std::string> params;
+ // set up their permissions and the channel TS with FJOIN.
+ // All users are FJOINed now, because a module may specify
+ // new joining permissions for the user.
+ params.push_back(channel->name);
+ params.push_back(ConvToStr(channel->age));
+ params.push_back(std::string(channel->GetAllPrefixChars(user))+","+std::string(user->nick));
+ Utils->DoOneToMany(ServerInstance->Config->ServerName,"FJOIN",params);
/* First user in, sync the modes for the channel */
params.pop_back();
/* This is safe, all inspircd servers default to +nt */
params.push_back("+nt");
Utils->DoOneToMany(ServerInstance->Config->ServerName,"FMODE",params);
}
+ else
+ {
+ std::deque<std::string> params;
+ params.push_back(channel->name);
+ Utils->DoOneToMany(ServerInstance->Config->ServerName,"JOIN",params);
+ }
}
}