]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/main.cpp
* include/caller.h will now compile correctly on Windows platforms.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.cpp
index 019ae9364bb7156d33807231b7ec9a3abe6c6ba8..3d472bf7ab8ed5ec9eccc46a24ab63f35266668d 100644 (file)
@@ -137,13 +137,20 @@ void ModuleSpanningTree::HandleLusers(const char** parameters, int pcnt, userrec
                        }
                }
        }
-       user->WriteServ("251 %s :There are %d users and %d invisible on %d servers",user->nick,n_users-ServerInstance->InvisibleUserCount(),ServerInstance->InvisibleUserCount(),ulined_count ? this->CountServs() - ulined_count : this->CountServs());
+       user->WriteServ("251 %s :There are %d users and %d invisible on %d servers",user->nick,
+                       n_users-ServerInstance->InvisibleUserCount(),
+                       ServerInstance->InvisibleUserCount(),
+                       ulined_count ? this->CountServs() - ulined_count : this->CountServs());
+
        if (ServerInstance->OperCount())
                user->WriteServ("252 %s %d :operator(s) online",user->nick,ServerInstance->OperCount());
+
        if (ServerInstance->UnregisteredUserCount())
                user->WriteServ("253 %s %d :unknown connections",user->nick,ServerInstance->UnregisteredUserCount());
+       
        if (ServerInstance->ChannelCount())
                user->WriteServ("254 %s %d :channels formed",user->nick,ServerInstance->ChannelCount());
+       
        user->WriteServ("255 %s :I have %d clients and %d servers",user->nick,ServerInstance->LocalUserCount(),ulined_local_count ? this->CountLocalServs() - ulined_local_count : this->CountLocalServs());
        user->WriteServ("265 %s :Current Local Users: %d  Max: %d",user->nick,ServerInstance->LocalUserCount(),max_local);
        user->WriteServ("266 %s :Current Global Users: %d  Max: %d",user->nick,n_users,max_global);
@@ -167,7 +174,7 @@ std::string ModuleSpanningTree::TimeToStr(time_t secs)
 const std::string ModuleSpanningTree::MapOperInfo(TreeServer* Current)
 {
        time_t secs_up = ServerInstance->Time() - Current->age;
-       return (" [Up: " + TimeToStr(secs_up) + " Lag: "+ConvToStr(Current->rtt)+"s]");
+       return (" [Up: " + TimeToStr(secs_up) + " Lag: "+ConvToStr(Current->rtt)+"ms]");
 }
 
 // WARNING: NOT THREAD SAFE - DONT GET ANY SMART IDEAS.
@@ -405,23 +412,11 @@ int ModuleSpanningTree::HandleSquit(const char** parameters, int pcnt, userrec*
                        sock->Squit(s,std::string("Server quit by ") + user->GetFullRealHost());
                        ServerInstance->SE->DelFd(sock);
                        sock->Close();
-                       delete sock;
                }
                else
                {
-                       /* to be removed after 1.1.9 */
-                       if (IS_LOCAL(user))
-                               user->WriteServ("NOTICE %s :*** WARNING: Using SQUIT to split remote servers is deprecated and will be removed in a future version. Please use RSQUIT instead.",user->nick);
-                       std::deque<std::string> params;
-                       params.push_back(parameters[0]);
-                       Utils->DoOneToOne(user->nick, "RSQUIT", params, s->GetName());
-                       /* end to be removed after 1.1.9 */
-                       /* to be INSERTED after 1.1.9 */
-                       /*
                        if (IS_LOCAL(user))
                                user->WriteServ("NOTICE %s :*** WARNING: Using SQUIT to split remote servers is deprecated. Please use RSQUIT instead.",user->nick);
-                       */
-                       /* end to be INSERTED after 1.1.9 */
                }
        }
        else
@@ -490,8 +485,12 @@ void ModuleSpanningTree::DoPingChecks(time_t curtime)
                                if (serv->AnsweredLastPing())
                                {
                                        sock->WriteLine(std::string(":")+ServerInstance->Config->ServerName+" PING "+serv->GetName());
-                                       serv->SetNextPingTime(curtime + 60);
+                                       serv->SetNextPingTime(curtime + Utils->PingFreq);
                                        serv->LastPing = curtime;
+                                       timeval t;
+                                       gettimeofday(&t, NULL);
+                                       long ts = (t.tv_sec * 1000) + (t.tv_usec / 1000);
+                                       serv->LastPingMsec = ts;
                                        serv->Warned = false;
                                }
                                else
@@ -501,11 +500,10 @@ void ModuleSpanningTree::DoPingChecks(time_t curtime)
                                        sock->Squit(serv,"Ping timeout");
                                        ServerInstance->SE->DelFd(sock);
                                        sock->Close();
-                                       delete sock;
                                        return;
                                }
                        }
-                       else if ((Utils->PingWarnTime) && (!serv->Warned) && (curtime >= serv->NextPingTime() - (60 - Utils->PingWarnTime)) && (!serv->AnsweredLastPing()))
+                       else if ((Utils->PingWarnTime) && (!serv->Warned) && (curtime >= serv->NextPingTime() - (Utils->PingFreq - Utils->PingWarnTime)) && (!serv->AnsweredLastPing()))
                        {
                                /* The server hasnt responded, send a warning to opers */
                                ServerInstance->SNO->WriteToSnoMask('l',"Server \002%s\002 has not responded to PING for %d seconds, high latency.", serv->GetName().c_str(), Utils->PingWarnTime);
@@ -1069,11 +1067,15 @@ void ModuleSpanningTree::OnUserKick(userrec* source, userrec* user, chanrec* cha
        }
 }
 
-void ModuleSpanningTree::OnRemoteKill(userrec* source, userrec* dest, const std::string &reason)
+void ModuleSpanningTree::OnRemoteKill(userrec* source, userrec* dest, const std::string &reason, const std::string &operreason)
 {
        std::deque<std::string> params;
+       params.push_back(":"+reason);
+       Utils->DoOneToMany(dest->nick,"OPERQUIT",params);
+       params.clear();
        params.push_back(dest->nick);
        params.push_back(":"+reason);
+       dest->SetOperQuit(operreason);
        Utils->DoOneToMany(source->nick,"KILL",params);
 }
 
@@ -1398,26 +1400,5 @@ Priority ModuleSpanningTree::Prioritize()
        return PRIORITY_LAST;
 }
 
-class ModuleSpanningTreeFactory : public ModuleFactory
-{
- public:
-       ModuleSpanningTreeFactory()
-       {
-       }
-       
-       ~ModuleSpanningTreeFactory()
-       {
-       }
-       
-       virtual Module * CreateModule(InspIRCd* Me)
-       {
-               return new ModuleSpanningTree(Me);
-       }
-       
-};
-
+MODULE_INIT(ModuleSpanningTree)
 
-extern "C" DllExport void * init_module( void )
-{
-       return new ModuleSpanningTreeFactory;
-}