]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/netburst.cpp
Support CAP LS
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / netburst.cpp
index 9e9d3a3b8102e25f5c0d7a9da5629d59ef731973..11e44ab86faba12d0b3ff833ddf78bb16d0c0855 100644 (file)
@@ -29,7 +29,7 @@
 void TreeSocket::DoBurst(TreeServer* s)
 {
        std::string name = s->GetName();
-       std::string burst = ":" + this->Instance->Config->GetSID() + " BURST " +ConvToStr(Instance->Time(true));
+       std::string burst = ":" + this->Instance->Config->GetSID() + " BURST " +ConvToStr(Instance->Time());
        std::string endburst = ":" + this->Instance->Config->GetSID() + " ENDBURST";
        this->Instance->SNO->WriteToSnoMask('l',"Bursting to \2%s\2 (Authentication: %s).", name.c_str(), this->GetTheirChallenge().empty() ? "plaintext password" : "SHA256-HMAC challenge-response");
        this->WriteLine(burst);
@@ -151,7 +151,6 @@ void TreeSocket::SendFJoins(TreeServer* Current, Channel* c)
 void TreeSocket::SendXLines(TreeServer* Current)
 {
        char data[MAXBUF];
-       std::string buffer;
        std::string n = this->Instance->Config->GetSID();
        const char* sn = n.c_str();
 
@@ -165,18 +164,21 @@ void TreeSocket::SendXLines(TreeServer* Current)
                {
                        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(),
+                               /* Is it burstable? this is better than an explicit check for type 'K'.
+                                * We break the loop as NONE of the items in this group are worth iterating.
+                                */
+                               if (!i->second->IsBurstable())
+                                       break;
+
+                               snprintf(data,MAXBUF,":%s ADDLINE %s %s %s %lu %lu :%s",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);
+                               this->WriteLine(data);
                        }
                }
        }
-
-       if (!buffer.empty())
-               this->WriteLine(buffer);
 }
 
 /** Send channel modes and topics */
@@ -186,7 +188,7 @@ void TreeSocket::SendChannelModes(TreeServer* Current)
        std::deque<std::string> list;
        std::string n = this->Instance->Config->GetSID();
        const char* sn = n.c_str();
-       Instance->Log(DEBUG,"Sending channels and modes, %d to send", this->Instance->chanlist->size());
+       Instance->Logs->Log("m_spanningtree",DEBUG,"Sending channels and modes, %d to send", this->Instance->chanlist->size());
        for (chan_hash::iterator c = this->Instance->chanlist->begin(); c != this->Instance->chanlist->end(); c++)
        {
                SendFJoins(Current, c->second);