diff options
| author | 2008-04-01 19:38:11 +0000 | |
|---|---|---|
| committer | 2008-04-01 19:38:11 +0000 | |
| commit | fda193662c8bad2d8641ad1952bf41ad93bdad4f (patch) | |
| tree | bdd05c3bf6b376f0433f1e7e7a9b42b5862d6771 /src/modules/m_spanningtree/treesocket1.cpp | |
| parent | Patch by brain; fix crash when no parameters are given when introducing a rem... (diff) | |
Backport r9247: server buffering improvements (don't constantly flush write buffer) QA: this needs testing of server linking and SSL, and SSL server linking
git-svn-id: http://svn.inspircd.org/repository/branches/1_1_stable@9248 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/treesocket1.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/treesocket1.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp index 3d0db2bee..f53aa556a 100644 --- a/src/modules/m_spanningtree/treesocket1.cpp +++ b/src/modules/m_spanningtree/treesocket1.cpp @@ -1032,7 +1032,6 @@ bool TreeSocket::IntroduceClient(const std::string &source, std::deque<std::stri */ void TreeSocket::SendFJoins(TreeServer* Current, chanrec* c) { - std::string buffer; char list[MAXBUF]; std::string individual_halfops = std::string(":")+this->Instance->Config->ServerName+" FMODE "+c->name+" "+ConvToStr(c->age); @@ -1057,7 +1056,7 @@ void TreeSocket::SendFJoins(TreeServer* Current, chanrec* c) if (curlen > (480-NICKMAX)) { - buffer.append(list).append("\r\n"); + this->WriteLine(list); dlen = curlen = snprintf(list,MAXBUF,":%s FJOIN %s %lu",this->Instance->Config->ServerName,c->name,(unsigned long)c->age); ptr = list + dlen; ptrlen = 0; @@ -1066,9 +1065,10 @@ void TreeSocket::SendFJoins(TreeServer* Current, chanrec* c) } if (numusers) - buffer.append(list).append("\r\n"); + this->WriteLine(list); - buffer.append(":").append(this->Instance->Config->ServerName).append(" FMODE ").append(c->name).append(" ").append(ConvToStr(c->age)).append(" +").append(c->ChanModes(true)).append("\r\n"); + snprintf(list, MAXBUF, ":%s FMODE %s %lu +%s", this->Instance->Config->ServerName, c->name, (unsigned long)c->age, c->ChanModes(true)); + this->WriteLine(list); int linesize = 1; for (BanList::iterator b = c->bans.begin(); b != c->bans.end(); b++) @@ -1084,7 +1084,8 @@ void TreeSocket::SendFJoins(TreeServer* Current, chanrec* c) if ((params.length() >= MAXMODES) || (currsize > 350)) { /* Wrap at MAXMODES */ - buffer.append(":").append(this->Instance->Config->ServerName).append(" FMODE ").append(c->name).append(" ").append(ConvToStr(c->age)).append(" +").append(modes).append(params).append("\r\n"); + snprintf(list, MAXBUF, ":%s FMODE %s %lu +%s%s", this->Instance->Config->ServerName, c->name, (unsigned long)c->age, modes.c_str(), params.c_str()); + this->WriteLine(list); modes.clear(); params.clear(); linesize = 1; @@ -1093,9 +1094,11 @@ void TreeSocket::SendFJoins(TreeServer* Current, chanrec* c) /* Only send these if there are any */ if (!modes.empty()) - buffer.append(":").append(this->Instance->Config->ServerName).append(" FMODE ").append(c->name).append(" ").append(ConvToStr(c->age)).append(" +").append(modes).append(params); + { + snprintf(list, MAXBUF, ":%s FMODE %s %lu +%s%s", this->Instance->Config->ServerName, c->name, (unsigned long)c->age, modes.c_str(), params.c_str()); + this->WriteLine(list); - this->WriteLine(buffer); + } } /** Send G, Q, Z and E lines */ |
