]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_spanningtree Return a bool from DoCollision()
authorAttila Molnar <attilamolnar@hush.com>
Sat, 26 Jul 2014 14:00:24 +0000 (16:00 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Sat, 26 Jul 2014 14:00:24 +0000 (16:00 +0200)
The return value is true if the remote user or both have to change, false if only we have to change

src/modules/m_spanningtree/nick.cpp
src/modules/m_spanningtree/nickcollide.cpp
src/modules/m_spanningtree/uid.cpp
src/modules/m_spanningtree/utils.h

index cdec280e1331af10255c61f405611149bbe17df5..9f0d78a6515348f0fee41144c220ce3b286265f3 100644 (file)
@@ -47,8 +47,8 @@ CmdResult CommandNick::HandleRemote(RemoteUser* user, std::vector<std::string>&
        {
                // 'x' is the already existing user using the same nick as params[0]
                // 'user' is the user trying to change nick to the in use nick
        {
                // 'x' is the already existing user using the same nick as params[0]
                // 'user' is the user trying to change nick to the in use nick
-               int collideret = Utils->DoCollision(x, TreeServer::Get(user), newts, user->ident, user->GetIPString(), user->uuid);
-               if (collideret != 1)
+               bool they_change = Utils->DoCollision(x, TreeServer::Get(user), newts, user->ident, user->GetIPString(), user->uuid);
+               if (they_change)
                {
                        // Remote client lost, or both lost, rewrite this nick change as a change to uuid before
                        // calling ChangeNick() and forwarding the message
                {
                        // Remote client lost, or both lost, rewrite this nick change as a change to uuid before
                        // calling ChangeNick() and forwarding the message
index 5a375ef68b694a78363c76635007e38fb0130d1e..a46e103e468ad4d9ce1b32d110907cf842570cac 100644 (file)
 /*
  * Yes, this function looks a little ugly.
  * However, in some circumstances we may not have a User, so we need to do things this way.
 /*
  * Yes, this function looks a little ugly.
  * However, in some circumstances we may not have a User, so we need to do things this way.
- * Returns 1 if colliding local client, 2 if colliding remote, 3 if colliding both.
+ * Returns true if remote or both lost, false otherwise.
  * Sends SAVEs as appropriate and forces nick change of the user 'u' if our side loses or if both lose.
  * Does not change the nick of the user that is trying to claim the nick of 'u', i.e. the "remote" user.
  */
  * Sends SAVEs as appropriate and forces nick change of the user 'u' if our side loses or if both lose.
  * Does not change the nick of the user that is trying to claim the nick of 'u', i.e. the "remote" user.
  */
-int SpanningTreeUtilities::DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid)
+bool SpanningTreeUtilities::DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid)
 {
        // At this point we're sure that a collision happened, increment the counter regardless of who wins
        ServerInstance->stats.Collisions++;
 {
        // At this point we're sure that a collision happened, increment the counter regardless of who wins
        ServerInstance->stats.Collisions++;
@@ -108,9 +108,6 @@ int SpanningTreeUtilities::DoCollision(User* u, TreeServer* server, time_t remot
                params.Broadcast();
 
                u->ChangeNick(u->uuid);
                params.Broadcast();
 
                u->ChangeNick(u->uuid);
-
-               if (!bChangeRemote)
-                       return 1;
        }
        if (bChangeRemote)
        {
        }
        if (bChangeRemote)
        {
@@ -119,10 +116,7 @@ int SpanningTreeUtilities::DoCollision(User* u, TreeServer* server, time_t remot
                 * send back a SAVE to the source.
                 */
                CmdBuilder("SAVE").push(remoteuid).push_int(remotets).Unicast(server->ServerUser);
                 * send back a SAVE to the source.
                 */
                CmdBuilder("SAVE").push(remoteuid).push_int(remotets).Unicast(server->ServerUser);
-
-               if (!bChangeLocal)
-                       return 2;
        }
 
        }
 
-       return 3;
+       return bChangeRemote;
 }
 }
index cafaee4c077d015799419d6a2f0e5f8e97257157..c7a98b2f46504dabe4c4e55cf921a6a9a040b030 100644 (file)
@@ -59,10 +59,10 @@ CmdResult CommandUID::HandleServer(TreeServer* remoteserver, std::vector<std::st
        else if (collideswith)
        {
                // The user on this side is registered, handle the collision
        else if (collideswith)
        {
                // The user on this side is registered, handle the collision
-               int collide = Utils->DoCollision(collideswith, remoteserver, age_t, params[5], params[6], params[0]);
-               ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "*** Collision on %s, collide=%d", params[2].c_str(), collide);
+               bool they_change = Utils->DoCollision(collideswith, remoteserver, age_t, params[5], params[6], params[0]);
+               ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Collision on %s %d", params[2].c_str(), they_change);
 
 
-               if (collide != 1)
+               if (they_change)
                {
                        // The client being introduced needs to change nick to uuid, change the nick in the message before
                        // processing/forwarding it.
                {
                        // The client being introduced needs to change nick to uuid, change the nick in the message before
                        // processing/forwarding it.
index bc2ea24a1a3d87b7b301472b8c407589ae93cd82..3a419e2a40b304b4a58ad5e6f79a21dd3064b62e 100644 (file)
@@ -137,7 +137,7 @@ class SpanningTreeUtilities : public classbase
 
        /** Handle nick collision
         */
 
        /** Handle nick collision
         */
-       int DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid);
+       bool DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid);
 
        /** Compile a list of servers which contain members of channel c
         */
 
        /** Compile a list of servers which contain members of channel c
         */