]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Added proper administrativia notices to CONNECT and inbound connections
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 88b9e2042127af98768872a4f047ef1a3a101d8c..5cf67bfbdd8f4eab0eab9d5182b5a544d6e089c9 100644 (file)
@@ -140,7 +140,7 @@ userrec* fd_ref_table[65536];
 
 int statsAccept = 0, statsRefused = 0, statsUnknown = 0, statsCollisions = 0, statsDns = 0, statsDnsGood = 0, statsDnsBad = 0, statsConnects = 0, statsSent= 0, statsRecv = 0;
 
-serverrec* me[32];
+
 
 FILE *log_file;
 
@@ -160,7 +160,7 @@ struct linger linger = { 0 };
 char MyExecutable[1024];
 int boundPortCount = 0;
 int portCount = 0, SERVERportCount = 0, ports[MAXSOCKS];
-int defaultRoute = 0;
+
 char ModPath[MAXBUF];
 
 /* prototypes */
@@ -172,7 +172,6 @@ char* Passwd(userrec *user);
 bool IsDenied(userrec *user);
 void AddWhoWas(userrec* u);
 
-std::vector<long> auth_cookies;
 std::stringstream config_f(stringstream::in | stringstream::out);
 
 std::vector<userrec*> all_opers;
@@ -1556,61 +1555,7 @@ std::string GetVersionString()
 
 void handle_version(char **parameters, int pcnt, userrec *user)
 {
-       if (!pcnt)
-       {
-               WriteServ(user->fd,"351 %s :%s",user->nick,GetVersionString().c_str());
-       }
-       else
-       {
-               if (!strcmp(parameters[0],"*"))
-               {
-                       for (int j = 0; j < 32; j++)
-                       {
-                               if (me[j] != NULL)
-                               {
-                                       for (unsigned int x = 0; x < me[j]->connectors.size(); x++)
-                                       {
-                                               WriteServ(user->fd,"351 %s :Server %d:%d (%s): %s",user->nick,j,x,me[j]->connectors[x].GetServerName().c_str(),me[j]->connectors[x].GetVersionString().c_str());
-                                       }
-                               }
-                       }
-                       return;
-               }
-               if (match(ServerName,parameters[0]))
-               {
-                       WriteServ(user->fd,"351 %s :%s",user->nick,GetVersionString().c_str());
-                       return;
-               }
-               bool displayed = false, found = false;
-                for (int j = 0; j < 32; j++)
-                {
-                        if (me[j] != NULL)
-                        {
-                                for (unsigned int x = 0; x < me[j]->connectors.size(); x++)
-                                {
-                                        if (match(me[j]->connectors[x].GetServerName().c_str(),parameters[0]))
-                                        {
-                                               found = true;
-                                               if ((me[j]->connectors[x].GetVersionString() != "") && (!displayed))
-                                               {
-                                                       displayed = true;
-                                                       WriteServ(user->fd,"351 %s :%s",user->nick,me[j]->connectors[x].GetVersionString().c_str());
-                                               }
-                                       }
-                               }
-                       }
-               }
-               if ((!displayed) && (found))
-               {
-                       WriteServ(user->fd,"402 %s %s :Server %s has no version information",user->nick,parameters[0],parameters[0]);
-                       return;
-               }
-               if (!found)
-               {
-                       WriteServ(user->fd,"402 %s %s :No such server",user->nick,parameters[0]);
-               }
-       }
-       return;
+       WriteServ(user->fd,"351 %s :%s",user->nick,GetVersionString().c_str());
 }
 
 
@@ -2207,25 +2152,6 @@ bool LoadModule(const char* filename)
 }
 
 
-bool GotServer(std::string name)
-{
-        for (int j = 0; j < 32; j++)
-        {
-                if (me[j] != NULL)
-                {
-                        for (unsigned int k = 0; k < me[j]->connectors.size(); k++)
-                        {
-                               if (name == me[j]->connectors[k].GetServerName())
-                               {
-                                       return true;
-                               }
-                        }
-                }
-        }
-       return false;
-}
-
-
 int InspIRCd(char** argv, int argc)
 {
        struct sockaddr_in client,server;
@@ -2411,15 +2337,20 @@ int InspIRCd(char** argv, int argc)
 
                dns_poll();
 
+               unsigned int numsockets = module_sockets.size();
                for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
                {
                        InspSocket* s = (InspSocket*)*a;
-                       if (!s->Poll())
+                       if ((s) && (!s->Poll()))
                        {
-                               delete s;
+                               log(DEBUG,"Socket poll returned false, close and bail");
+                               s->Close();
                                module_sockets.erase(a);
+                               delete s;
                                break;
                        }
+                       // we gained a socket, sarper
+                       if (module_sockets.size() != numsockets) break;
                }
 
                // *FIX* Instead of closing sockets in kill_link when they receive the ERROR :blah line, we should queue