]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_whois.cpp
Refactor port binding, warning not yet tested fully
[user/henk/code/inspircd.git] / src / cmd_whois.cpp
index d21c86202c366a54b525968bad9b0199d7a4552d..7fab009053291cd5979ea56e468572b32ca5ec2b 100644 (file)
@@ -102,34 +102,34 @@ CmdResult cmd_whois::Handle (const char** parameters, int pcnt, userrec *user)
        if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0))
                return CMD_SUCCESS;
 
-       dest = ServerInstance->FindNick(parameters[0]);
+
+       /*
+        * If 2 paramters are specified (/whois nick nick), ignore the first one like spanningtree
+        * does, and use the second one, otherwise, use the only paramter. -- djGrrr
+        */
+       if (pcnt > 1)
+       {
+               dest = ServerInstance->FindNick(parameters[1]);
+       }
+       else
+       {
+               dest = ServerInstance->FindNick(parameters[0]);
+       }
 
        if (dest)
        {
                /*
-                * Determine whether to show idletime. We show it if:
-                * If user is local and hidewhois is turned off, or
-                * param[0] == param[1].
-                *
-                * The assumption here (not a huge one) is that cmd_whois is only ever invoked
-                * remotely! Keep that in mind! -- w00t
+                * Okay. Umpteenth attempt at doing this, so let's re-comment...
+                * For local users (/w localuser), we show idletime if hidewhois is disabled
+                * For local users (/w localuser localuser), we always show idletime, hence pcnt > 1 check.
+                * For remote users (/w remoteuser), we do NOT show idletime
+                * For remote users (/w remoteuser remoteuser), spanningtree will handle calling do_whois, so we can ignore this case.
+                * Thanks to djGrrr for not being impatient while I have a crap day coding. :p -- w00t
                 */
-               if ((IS_LOCAL(dest) && !*ServerInstance->Config->HideWhoisServer) || pcnt > 1)
+               if (IS_LOCAL(dest) && (!*ServerInstance->Config->HideWhoisServer || pcnt > 1))
                {
-                       if (pcnt > 1)
-                       {
-                               /*
-                                * if it looks like a remote whois, make sure it is one.
-                                * this stops things like /whois foo bar to get foo's
-                                * idletime without a proper remote request. -- w00t
-                                */
-                               if (!strcmp(parameters[0], parameters[1]))
-                               {
-                                       /* this really is safe, we're only called for local users .. */
-                                       idle = abs((dest->idle_lastmsg)-ServerInstance->Time());
-                                       signon = dest->signon;
-                               }
-                       }
+                       idle = abs((dest->idle_lastmsg)-ServerInstance->Time());
+                       signon = dest->signon;
                }
 
                do_whois(this->ServerInstance, user,dest,signon,idle,parameters[0]);