]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/userprocess.cpp
Removal of ancient TRUE/FALSE #defines (C-ish stuff)
[user/henk/code/inspircd.git] / src / userprocess.cpp
index 0c72a53b5e305b9a06d22f4e244c50bb67810398..00b08689389a697892bd30e9cf05e7e96c21356a 100644 (file)
@@ -70,6 +70,7 @@ extern std::vector<InspSocket*> module_sockets;
 extern time_t TIME;
 extern time_t OLDTIME;
 extern std::vector<userrec*> local_users;
+extern InspSocket* socket_ref[MAX_DESCRIPTORS];
 char LOG_FILE[MAXBUF];
 
 extern InspIRCd* ServerInstance;
@@ -316,12 +317,13 @@ void DoSocketTimeouts(time_t TIME)
        for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
        {
                InspSocket* s = (InspSocket*)*a;
-               if (s->Timeout(TIME))
+               if ((s) && (socket_ref[s->GetFd()] != NULL) && (s->Timeout(TIME)))
                {
-                       log(DEBUG,"Socket poll returned false, close and bail");
+                       log(DEBUG,"userprocess.cpp: Socket poll returned false, close and bail");
+                       socket_ref[s->GetFd()] = NULL;
                        SE->DelFd(s->GetFd());
-                       s->Close();
                        module_sockets.erase(a);
+                       s->Close();
                        delete s;
                        break;
                }
@@ -473,6 +475,7 @@ void CheckDie()
 void LoadAllModules(InspIRCd* ServerInstance)
 {
        char configToken[MAXBUF];
+       Config->module_names.clear();
 
        MODCOUNT = -1;