summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_spanningtree.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index 22c9e9246..14680efd6 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -2697,14 +2697,14 @@ bool DoOneToAllButSenderRaw(std::string data, std::string omit, std::string pref
TreeServer* omitroute = BestRouteTo(omit);
if ((command == "NOTICE") || (command == "PRIVMSG"))
{
- if ((params.size() >= 2) && (*(params[0].c_str()) != '$'))
+ if (params.size() >= 2)
{
/* Prefixes */
if ((*(params[0].c_str()) == '@') || (*(params[0].c_str()) == '%') || (*(params[0].c_str()) == '+'))
{
params[0] = params[0].substr(1, params[0].length()-1);
}
- if (*(params[0].c_str()) != '#')
+ if ((*(params[0].c_str()) != '#') && (*(params[0].c_str()) != '$'))
{
// special routing for private messages/notices
userrec* d = Srv->FindNick(params[0]);
@@ -2717,6 +2717,14 @@ bool DoOneToAllButSenderRaw(std::string data, std::string omit, std::string pref
return true;
}
}
+ else if (*(params[0].c_str()) == '$')
+ {
+ std::deque<std::string> par;
+ par.push_back(params[0]);
+ par.push_back(":"+params[1]);
+ DoOneToAllButSender(prefix,command.c_str(),par,omitroute->GetName());
+ return true;
+ }
else
{
log(DEBUG,"Channel privmsg going to chan %s",params[0].c_str());