Instance->Logs->Log("m_spanningtree",DEBUG, "S[%d] I %s", this->GetFd(), line.c_str());
this->Split(line.c_str(),params);
-
+
if (params.empty())
return true;
-
+
if ((params[0][0] == ':') && (params.size() > 1))
{
prefix = params[0].substr(1);
params.pop_front();
-
+
if (prefix.empty())
{
this->SendError("BUG (?) Empty prefix recieved.");
return false;
}
}
-
+
command = params[0].c_str();
params.pop_front();
/*
* Now, check for (and parse) commands as appropriate. -- w
- */
-
+ */
+
/* Find the server that this command originated from, used in the handlers below */
TreeServer *ServerSource = Utils->FindServer(prefix);
User* user = Instance->FindNick(prefix);
if (user)
{
- const char* ptrs[127];
- for (size_t n = 0; (n < params.size()) && (n < 127); ++n)
- ptrs[n] = params[n].c_str();
- return Utils->Creator->HandleMap(ptrs, params.size(), user);
+ std::vector<std::string> p(params.begin(), params.end());
+ return Utils->Creator->HandleMap(p, user);
}
}
else if (command == "SERVER")
if (params.size() >= 2)
{
Instance->SNO->WriteToSnoMask(*(params[0].c_str()), "From " + (ServerSource ? ServerSource->GetName().c_str() : prefix) + ": "+ params[1]);
+ return Utils->DoOneToAllButSenderRaw(line, sourceserv, prefix, command, params);
}
- return Utils->DoOneToAllButSenderRaw(line, sourceserv, prefix, command, params);
+
}
else if (command == "BURST")
{
this->Instance->SNO->WriteToSnoMask('l', "WTF: Got BURST from a nonexistant server(?): %s", (ServerSource ? ServerSource->GetName().c_str() : prefix.c_str()));
return false;
}
-
+
ServerSource->bursting = true;
return Utils->DoOneToAllButSenderRaw(line, sourceserv, prefix, command, params);
}
this->Instance->SNO->WriteToSnoMask('l', "WTF: Got ENDBURST from a nonexistant server(?): %s", (ServerSource ? ServerSource->GetName().c_str() : prefix.c_str()));
return false;
}
-
+
ServerSource->FinishBurst();
return Utils->DoOneToAllButSenderRaw(line, sourceserv, prefix, command, params);
}
else if (command == "MODE")
{
// Server-prefix MODE.
- const char* modelist[MAXPARAMETERS];
- for (size_t i = 0; i < params.size(); i++)
- modelist[i] = params[i].c_str();
+ std::vector<std::string> modelist(params.begin(), params.end());
/* We don't support this for channel mode changes any more! */
if (params.size() >= 1)
return false;
}
}
-
+
// Insert into the parser
- this->Instance->SendMode(modelist, params.size(), this->Instance->FakeClient);
-
+ this->Instance->SendMode(modelist, this->Instance->FakeClient);
+
// Pass out to the network
return Utils->DoOneToAllButSenderRaw(line,sourceserv,prefix,command,params);
}
}
}
}
-
+
// its a user
- const char* strparams[127];
- for (unsigned int q = 0; q < params.size(); q++)
- {
- strparams[q] = params[q].c_str();
- }
+ std::vector<std::string> strparams(params.begin(), params.end());
- switch (this->Instance->CallCommandHandler(command.c_str(), strparams, params.size(), who))
+ switch (this->Instance->CallCommandHandler(command.c_str(), strparams, who))
{
case CMD_INVALID:
/*
if (!quitserver.empty())
{
Utils->Creator->RemoteMessage(NULL,"Connection to '\2%s\2' failed.",quitserver.c_str());
- time_t server_uptime = Instance->Time() - this->age;
+ time_t server_uptime = Instance->Time() - this->age;
if (server_uptime)
Utils->Creator->RemoteMessage(NULL,"Connection to '\2%s\2' was established for %s", quitserver.c_str(), Utils->Creator->TimeToStr(server_uptime).c_str());
}
{
for (std::vector<std::string>::iterator i = Utils->ValidIPs.begin(); i != Utils->ValidIPs.end(); i++)
{
- if ((*i) == "*" || irc::sockets::MatchCIDR(ip, (*i).c_str()))
+ if (*i == "*" || irc::sockets::MatchCIDR(ip, *i))
{
found = true;
break;