diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-02-09 18:13:13 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-02-09 18:13:13 +0000 |
commit | 6b37d1f7e9bd8d451ab920ab09aa2d2e24877d62 (patch) | |
tree | c1578c0774071abc610ed6dbd680a00ca941732f /src/modules | |
parent | 4b7165c5f9323c18925f5d9518e6f134ffc8eee2 (diff) |
Add and properly test the ability for an InspTimer to DelTimer itself from within its own Tick method.
This wasnt supported before and would corrupt the iterator in the TickTimers() method of TimerManager.
Non the less, peaveys new (perfectly sensible) fix broke it because i didnt document the caveat about DelTimer() :p
This FIXES m_ident and possibly some other stuff.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6553 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_ident.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp index a2574a19f..525a2dc97 100644 --- a/src/modules/m_ident.cpp +++ b/src/modules/m_ident.cpp @@ -52,6 +52,7 @@ class RFC1413 : public InspSocket strcpy(newident,"~"); strlcat(newident,u->ident,IDENTMAX); strlcpy(u->ident,newident,IDENTMAX); + Instance->next_call = Instance->Time(); } } @@ -121,6 +122,7 @@ class RFC1413 : public InspSocket // Fixes issue reported by webs, 7 Jun 2006 if (u && (Instance->SE->GetRef(ufd) == u)) { + Instance->next_call = Instance->Time(); u->Shrink("ident_data"); } } @@ -129,6 +131,7 @@ class RFC1413 : public InspSocket { if (u && (Instance->SE->GetRef(ufd) == u)) { + Instance->next_call = Instance->Time(); u->Shrink("ident_data"); } } @@ -176,6 +179,7 @@ class RFC1413 : public InspSocket } else { + Instance->next_call = Instance->Time(); return true; } } @@ -236,7 +240,7 @@ class ModuleIdent : public Module strcpy(newident,"~"); strlcat(newident,user->ident,IDENTMAX); strlcpy(user->ident,newident,IDENTMAX); - //delete ident; + ServerInstance->next_call = ServerInstance->Time(); } return 0; } @@ -286,12 +290,12 @@ class ModuleIdent : public Module { ident->u = NULL; ServerInstance->SE->DelFd(ident); - //delete ident; } } virtual ~ModuleIdent() { + ServerInstance->next_call = ServerInstance->Time(); } virtual Version GetVersion() |