From b16e16ac1bae4ac5494778b4b8a7009febb58137 Mon Sep 17 00:00:00 2001 From: danieldg Date: Fri, 23 Oct 2009 22:47:39 +0000 Subject: Make User::uuid and User::server const git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11962 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree/fmode.cpp | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) (limited to 'src/modules/m_spanningtree/fmode.cpp') diff --git a/src/modules/m_spanningtree/fmode.cpp b/src/modules/m_spanningtree/fmode.cpp index 3bca098d6..4dd05b101 100644 --- a/src/modules/m_spanningtree/fmode.cpp +++ b/src/modules/m_spanningtree/fmode.cpp @@ -22,30 +22,17 @@ /** FMODE command - server mode with timestamp checks */ -bool TreeSocket::ForceMode(const std::string &source, parameterlist ¶ms) +void TreeSocket::ForceMode(User* who, parameterlist ¶ms) { /* Chances are this is a 1.0 FMODE without TS */ if (params.size() < 3) { /* No modes were in the command, probably a channel with no modes set on it */ - return true; + return; } - std::string sourceserv; + std::string sourceserv = who->server; - /* Are we dealing with an FMODE from a user, or from a server? */ - User* who = ServerInstance->FindNick(source); - if (who) - { - /* FMODE from a user, set sourceserv to the users server name */ - sourceserv = who->server; - } - else - { - /* FMODE from a server, use a fake user to receive mode feedback */ - who = Utils->ServerUser; - sourceserv = source; /* Set sourceserv to the actual source string */ - } std::vector modelist; time_t TS = 0; for (unsigned int q = 0; (q < params.size()) && (q < 64); q++) @@ -83,28 +70,27 @@ bool TreeSocket::ForceMode(const std::string &source, parameterlist ¶ms) } else /* Oops, channel doesnt exist! */ - return true; + return; } if (!TS) { ServerInstance->Logs->Log("m_spanningtree",DEFAULT,"*** BUG? *** TS of 0 sent to FMODE. Are some services authors smoking craq, or is it 1970 again?. Dropped."); ServerInstance->SNO->WriteToSnoMask('d', "WARNING: The server %s is sending FMODE with a TS of zero. Total craq. Mode was dropped.", sourceserv.c_str()); - return true; + return; } /* TS is equal or less: Merge the mode changes into ours and pass on. */ if (TS <= ourTS) { - ServerInstance->Modes->Process(modelist, who, (who == Utils->ServerUser)); + ServerInstance->Modes->Process(modelist, who, IS_SERVER(who)); /* HOT POTATO! PASS IT ON! */ - Utils->DoOneToAllButSender(source,"FMODE",params,sourceserv); + Utils->DoOneToAllButSender(sourceserv,"FMODE",params,sourceserv); } /* If the TS is greater than ours, we drop the mode and dont pass it anywhere. */ - return true; } -- cgit v1.3.1-10-gc9f91