]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/xline.cpp
Fix expired xlines being treated as live ones in XLineManager::AddLine()
[user/henk/code/inspircd.git] / src / xline.cpp
index 6501a7f6d921c239e5950298186205d6e431dac4..66d24f439a6b12b600033a17bf40ef3b72ba6efd 100644 (file)
@@ -262,7 +262,12 @@ bool XLineManager::AddLine(XLine* line, User* user)
                LookupIter i = x->second.find(line->Displayable());
                if (i != x->second.end())
                {
-                       return false;
+                       // XLine propagation bug was here, if the line to be added already exists and
+                       // it's expired then expire it and add the new one instead of returning false
+                       if ((!i->second->duration) || (ServerInstance->Time() < i->second->expiry))
+                               return false;
+
+                       ExpireLine(x, i);
                }
        }