summaryrefslogtreecommitdiff
path: root/src/xline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xline.cpp')
-rw-r--r--src/xline.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/xline.cpp b/src/xline.cpp
index 6501a7f6d..66d24f439 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -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);
}
}