diff options
author | peavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-03-02 21:39:39 +0000 |
---|---|---|
committer | peavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-03-02 21:39:39 +0000 |
commit | efdffbdc178336e027df594282ca60e109eb6166 (patch) | |
tree | a8e04f8aad2b1de8066352797501069ff2a0e701 /src | |
parent | 943b3bd703bc081e3fe37a126b59732a35293d99 (diff) |
Do not perform redirect on chained channel links, tell user channel is full and SNOTICE the offending channel(s).
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6616 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_redirect.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp index ae54ba137..18098d833 100644 --- a/src/modules/m_redirect.cpp +++ b/src/modules/m_redirect.cpp @@ -126,6 +126,16 @@ class ModuleRedirect : public Module if (chan->GetUserCounter() >= chan->limit) { std::string channel = chan->GetModeParameter('L'); + + /* sometimes broken ulines can make circular or chained +L, avoid this */ + chanrec* destchan = NULL; + destchan = ServerInstance->FindChan(channel); + if (destchan && destchan->IsModeSet('L')) + { + ServerInstance->WriteOpers("*** %s has circular or chained +L to %s", chan->name, channel.c_str()); + return 0; + } + user->WriteServ("470 %s :%s has become full, so you are automatically being transferred to the linked channel %s",user->nick,cname,channel.c_str()); chanrec::JoinUser(ServerInstance, user, channel.c_str(), false); return 1; |