summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree.cpp')
-rw-r--r--src/modules/m_spanningtree.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index 160632bef..caaaa775a 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -1245,6 +1245,7 @@ class TreeSocket : public InspSocket
/* Send everything else (channel modes, xlines etc) */
this->SendChannelModes(s);
this->SendXLines(s);
+ FOREACH_MOD(I_OnSyncOtherMetaData,OnSyncOtherMetaData((Module*)TreeProtocolModule,(void*)this,list[j]));
this->WriteLine("ENDBURST");
Srv->SendOpers("*** Finished bursting to \2"+s->GetName()+"\2.");
}
@@ -1473,7 +1474,11 @@ class TreeSocket : public InspSocket
TreeServer* ServerSource = FindServer(prefix);
if (ServerSource)
{
- if (*(params[0].c_str()) == '#')
+ if (params[0] == "*")
+ {
+ FOREACH_MOD(I_OnDecodeMetaData,OnDecodeMetaData(TYPE_OTHER,NULL,params[1],params[2]));
+ }
+ else if (*(params[0].c_str()) == '#')
{
chanrec* c = Srv->FindChannel(params[0]);
if (c)
@@ -1481,7 +1486,7 @@ class TreeSocket : public InspSocket
FOREACH_MOD(I_OnDecodeMetaData,OnDecodeMetaData(TYPE_CHANNEL,c,params[1],params[2]));
}
}
- else
+ else if (*(params[0].c_str()) != '#')
{
userrec* u = Srv->FindNick(params[0]);
if (u)
@@ -3234,7 +3239,11 @@ class ModuleSpanningTree : public Module
userrec* u = (userrec*)target;
s->WriteLine(":"+Srv->GetServerName()+" METADATA "+u->nick+" "+extname+" :"+extdata);
}
- else
+ else if (target_type == TYPE_OTHER)
+ {
+ s->WriteLine(":"+Srv->GetServerName()+" METADATA * "+extname+" :"+extdata);
+ }
+ else if (target_type == TYPE_CHANNEL)
{
chanrec* c = (chanrec*)target;
s->WriteLine(":"+Srv->GetServerName()+" METADATA "+c->name+" "+extname+" :"+extdata);