]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/nickcollide.cpp
First phase of conversion to dynamic limits on all the lengths, configured via the...
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / nickcollide.cpp
index 5dcfcd61595f31310820e2dbe29e53461f90b8b4..a33b77da412f8e0b8e6d4851692dc89b9a6604ab 100644 (file)
@@ -27,7 +27,7 @@
  * Returns 1 if colliding local client, 2 if colliding remote, 3 if colliding both.
  * Sends SVSNICKs as appropriate and forces nickchanges too.
  */
-int TreeSocket::DoCollision(User *u, time_t remotets, const char *remoteident, const char *remoteip, const char *remoteuid)
+int TreeSocket::DoCollision(User *u, time_t remotets, const std::string &remoteident, const std::string &remoteip, const std::string &remoteuid)
 {
        /*
         *  Under old protocol rules, we would have had to kill both clients.
@@ -49,10 +49,10 @@ int TreeSocket::DoCollision(User *u, time_t remotets, const char *remoteident, c
        bool bChangeLocal = true;
        bool bChangeRemote = true;
 
-       /* for brevity, don't use the User */
-       time_t localts = u->age;
-       const char *localident = u->ident;
-       const char *localip = u->GetIPString();
+       /* for brevity, don't use the User - use defines to avoid any copy */
+       #define localts u->age
+       #define localident u->ident
+       #define localip u->GetIPString()
 
        /* mmk. let's do this again. */
        if (remotets == localts)
@@ -64,8 +64,8 @@ int TreeSocket::DoCollision(User *u, time_t remotets, const char *remoteident, c
                /* fuck. now it gets complex. */
 
                /* first, let's see if ident@host matches. */
-               bool SamePerson = !strcmp(localident, remoteident)
-                               && !strcmp(localip, remoteip);
+               bool SamePerson = (localident == remoteident)
+                               && (localip == remoteip);
 
                /*
                 * if ident@ip is equal, and theirs is newer, or
@@ -87,7 +87,7 @@ int TreeSocket::DoCollision(User *u, time_t remotets, const char *remoteident, c
 
        if (bChangeLocal)
        {
-               u->ForceNickChange(u->uuid);
+               u->ForceNickChange(u->uuid.c_str());
 
                if (!bChangeRemote)
                        return 1;
@@ -110,7 +110,7 @@ int TreeSocket::DoCollision(User *u, time_t remotets, const char *remoteident, c
                if (remote)
                {
                        /* buh.. nick change collide. force change their nick. */
-                       remote->ForceNickChange(remote->uuid);
+                       remote->ForceNickChange(remote->uuid.c_str());
                }
                else
                {