summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r--src/modules/m_spanningtree/override_map.cpp38
-rw-r--r--src/modules/m_spanningtree/postcommand.cpp9
-rw-r--r--src/modules/m_spanningtree/protocolinterface.cpp2
3 files changed, 20 insertions, 29 deletions
diff --git a/src/modules/m_spanningtree/override_map.cpp b/src/modules/m_spanningtree/override_map.cpp
index e3f103cc8..9a7f007e3 100644
--- a/src/modules/m_spanningtree/override_map.cpp
+++ b/src/modules/m_spanningtree/override_map.cpp
@@ -156,36 +156,20 @@ bool ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, U
float avg_users = totusers * 1.0 / totservers;
- // dump the whole lot to the user.
- if (IS_LOCAL(user))
+ ServerInstance->Logs->Log("map",DEBUG,"local");
+ for (int t = 0; t < line; t++)
{
- ServerInstance->Logs->Log("map",DEBUG,"local");
- for (int t = 0; t < line; t++)
- {
- // terminate the string at maxnamew characters
- names[100 * t + maxnamew] = '\0';
- user->WriteNumeric(RPL_MAP, "%s :%s %s",user->nick.c_str(),names + 100 * t, stats + 50 * t);
- }
- user->WriteNumeric(RPL_MAPUSERS, "%s :%d server%s and %d user%s, average %.2f users per server",user->nick.c_str(),totservers,(totservers > 1 ? "s" : ""),totusers,(totusers > 1 ? "s" : ""),avg_users);
- user->WriteNumeric(RPL_ENDMAP, "%s :End of /MAP",user->nick.c_str());
+ // terminate the string at maxnamew characters
+ names[100 * t + maxnamew] = '\0';
+ ServerInstance->DumpText(user, ":%s %d %s :%s %s", ServerInstance->Config->ServerName,
+ RPL_MAP, user->nick.c_str(), names + 100 * t, stats + 50 * t);
}
- else
- {
- ServerInstance->Logs->Log("map", DEBUG, "remote dump lines=%d", line);
+ ServerInstance->DumpText(user, ":%s %d %s :%d server%s and %d user%s, average %.2f users per server",
+ ServerInstance->Config->ServerName, RPL_MAPUSERS, user->nick.c_str(),
+ totservers, (totservers > 1 ? "s" : ""), totusers, (totusers > 1 ? "s" : ""), avg_users);
+ ServerInstance->DumpText(user, ":%s %d %s :End of /MAP", ServerInstance->Config->ServerName,
+ RPL_ENDMAP, user->nick.c_str());
- // XXX: annoying that we have to use hardcoded numerics here..
- for (int t = 0; t < line; t++)
- {
- // terminate the string at maxnamew characters
- char* name = names + 100 * t;
- char* stat = stats + 50 * t;
- name[maxnamew] = '\0';
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 006 " + user->nick + " :" + name + " " + stat);
- }
-
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 270 " + user->nick + " :" + ConvToStr(totservers) + " server"+(totservers > 1 ? "s" : "") + " and " + ConvToStr(totusers) + " user"+(totusers > 1 ? "s" : "") + ", average " + ConvToStr(avg_users) + " users per server");
- ServerInstance->PI->PushToClient(user, std::string("::") + ServerInstance->Config->ServerName + " 007 " + user->nick + " :End of /MAP");
- }
delete[] names;
delete[] stats;
diff --git a/src/modules/m_spanningtree/postcommand.cpp b/src/modules/m_spanningtree/postcommand.cpp
index 0988fe099..d2cea154a 100644
--- a/src/modules/m_spanningtree/postcommand.cpp
+++ b/src/modules/m_spanningtree/postcommand.cpp
@@ -54,7 +54,14 @@ void ModuleSpanningTree::OnPostCommand(const std::string &command, const std::ve
}
else if (routing.type == ROUTE_TYPE_OPT_UCAST)
{
- params.push_back(routing.serverdest);
+ TreeServer* sdest = Utils->FindServer(routing.serverdest);
+ if (!sdest)
+ {
+ ServerInstance->Logs->Log("m_spanningtree",ERROR,"Trying to route ENCAP to nonexistant server %s",
+ routing.serverdest.c_str());
+ return;
+ }
+ params.push_back(sdest->GetID());
params.push_back(command);
sent_cmd = "ENCAP";
}
diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp
index 804a451ca..2e3237efd 100644
--- a/src/modules/m_spanningtree/protocolinterface.cpp
+++ b/src/modules/m_spanningtree/protocolinterface.cpp
@@ -114,7 +114,7 @@ void SpanningTreeProtocolInterface::PushToClient(User* target, const std::string
{
parameterlist p;
p.push_back(target->uuid);
- p.push_back(rawline);
+ p.push_back(":" + rawline);
Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", p, target->server);
}