aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/treesocket1.cpp
diff options
context:
space:
mode:
authorGravatar brain2007-11-02 14:01:55 +0000
committerGravatar brain2007-11-02 14:01:55 +0000
commit17a80c5a8ef43675bf0d6937f35c950d7348f9ee (patch)
tree0bf58bddba4d476814e03ceed924434eca78515d /src/modules/m_spanningtree/treesocket1.cpp
parentMove lookup_lines to private, theres no need for it to be public any more (diff)
Hopefully fix the bursting of xlines to work again (even with unknown types) and also add facility to enumerate them
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8461 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/treesocket1.cpp')
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp38
1 files changed, 17 insertions, 21 deletions
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index 84964833f..18ae9b6cd 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -1217,31 +1217,27 @@ void TreeSocket::SendXLines(TreeServer* Current)
std::string buffer;
std::string n = this->Instance->Config->GetSID();
const char* sn = n.c_str();
- /* Yes, these arent too nice looking, but they get the job done */
- /* FIXME: FOR THE LOVE OF ZOMBIE JESUS, FIX ME */
+ std::vector<std::string> types = Instance->XLines->GetAllTypes();
-/* for (std::vector<ZLine*>::iterator i = Instance->XLines->zlines.begin(); i != Instance->XLines->zlines.end(); i++)
+ for (std::vector<std::string>::iterator it = types.begin(); it != types.end(); ++it)
{
- snprintf(data,MAXBUF,":%s ADDLINE Z %s %s %lu %lu :%s\r\n",sn,(*i)->ipaddr,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
- buffer.append(data);
- }
- for (std::vector<QLine*>::iterator i = Instance->XLines->qlines.begin(); i != Instance->XLines->qlines.end(); i++)
- {
- snprintf(data,MAXBUF,":%s ADDLINE Q %s %s %lu %lu :%s\r\n",sn,(*i)->nick,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
- buffer.append(data);
- }
- for (std::vector<GLine*>::iterator i = Instance->XLines->glines.begin(); i != Instance->XLines->glines.end(); i++)
- {
- snprintf(data,MAXBUF,":%s ADDLINE G %s@%s %s %lu %lu :%s\r\n",sn,(*i)->identmask,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
- buffer.append(data);
- }
- for (std::vector<ELine*>::iterator i = Instance->XLines->elines.begin(); i != Instance->XLines->elines.end(); i++)
- {
- snprintf(data,MAXBUF,":%s ADDLINE E %s@%s %s %lu %lu :%s\r\n",sn,(*i)->identmask,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
- buffer.append(data);
+ XLineLookup* lookup = Instance->XLines->GetAll(*it);
+
+ if (lookup)
+ {
+ for (LookupIter i = lookup->begin(); i != lookup->end(); ++i)
+ {
+ snprintf(data,MAXBUF,":%s ADDLINE %s %s %s %lu %lu :%s\r\n",sn, it->c_str(), i->second->Displayable(),
+ i->second->source,
+ (unsigned long)i->second->set_time,
+ (unsigned long)i->second->duration,
+ i->second->reason);
+ buffer.append(data);
+ }
+ }
}
-*/
+
if (!buffer.empty())
this->WriteLine(buffer);
}