]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ident.cpp
Dont echo the JOIN to the user whos speaking
[user/henk/code/inspircd.git] / src / modules / m_ident.cpp
index fd76e87be803cb425c126fafac7044140b4902ef..473de3417e98cc7568c8772facc8775780a1ddfd 100644 (file)
@@ -148,6 +148,7 @@ class IdentRequestSocket : public EventHandler
                {
                        this->Close();
                        delete[] s;
+                       delete[] addr;
                        throw ModuleException("failed to bind()");
                }
 
@@ -269,8 +270,6 @@ class IdentRequestSocket : public EventHandler
 
        void ReadResponse()
        {
-               ServerInstance->Log(DEBUG,"ReadResponse()");
-
                /* We don't really need to buffer for incomplete replies here, since IDENT replies are
                 * extremely short - there is *no* sane reason it'd be in more than one packet
                 */
@@ -282,10 +281,13 @@ class IdentRequestSocket : public EventHandler
                 */
                if (recvresult < 3)
                {
+                       Close();
                        done = true;
                        return;
                }
 
+               ServerInstance->Log(DEBUG,"ReadResponse()");
+
                irc::sepstream sep(ibuf, ':');
                std::string token;
                for (int i = 0; sep.GetToken(token); i++)
@@ -319,7 +321,6 @@ class IdentRequestSocket : public EventHandler
                        if (*ident && ServerInstance->IsIdent(ident))
                        {
                                result = ident;
-                               ServerInstance->next_call = ServerInstance->Time();
                        }
 
                        break;
@@ -429,8 +430,11 @@ class ModuleIdent : public Module
 
                ServerInstance->Log(DEBUG, "Has ident_socket");
 
+               time_t compare = isock->age;
+               compare += RequestTimeout;
+
                /* Check for timeout of the socket */
-               if (isock->age + RequestTimeout > ServerInstance->Time() && !isock->HasResult())
+               if (ServerInstance->Time() >= compare)
                {
                        /* Ident timeout */
                        user->WriteServ("NOTICE Auth :*** Ident request timed out.");
@@ -486,5 +490,5 @@ class ModuleIdent : public Module
        }
 };
 
-MODULE_INIT(ModuleIdent);
+MODULE_INIT(ModuleIdent)