]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/protocolinterface.cpp
Remote user messaging fixes
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / protocolinterface.cpp
index 1e5ae7ade8e8536d4bf88eed729c495a325c4b14..2e3237efd89095662c8349e7930210fda4e893c8 100644 (file)
@@ -31,25 +31,19 @@ void SpanningTreeProtocolInterface::SendEncapsulatedData(parameterlist &encap)
        Utils->DoOneToMany(ServerInstance->Config->GetSID(), "ENCAP", encap);
 }
 
-void SpanningTreeProtocolInterface::SendMetaData(void* target, TargetTypeFlags type, const std::string &key, const std::string &data)
+void SpanningTreeProtocolInterface::SendMetaData(Extensible* target, const std::string &key, const std::string &data)
 {
        parameterlist params;
 
-       switch (type)
-       {
-               case TYPE_USER:
-                       params.push_back(((User*)target)->uuid);
-                       break;
-               case TYPE_CHANNEL:
-                       params.push_back(((Channel*)target)->name);
-                       break;
-               case TYPE_SERVER:
-                       params.push_back("*");
-                       break;
-               default:
-                       throw CoreException("I don't know how to handle TYPE_OTHER.");
-                       break;
-       }
+       User* u = dynamic_cast<User*>(target);
+       Channel* c = dynamic_cast<Channel*>(target);
+       if (u)
+               params.push_back(u->uuid);
+       else if (c)
+               params.push_back(c->name);
+       else
+               params.push_back("*");
+
        params.push_back(key);
        params.push_back(":" + data);
 
@@ -120,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);
 }
 
@@ -176,30 +170,3 @@ void SpanningTreeProtocolInterface::SendUserNotice(User* target, const std::stri
                }
        }
 }
-
-void SpanningTreeProtocolInterface::Introduce(User* user)
-{
-       if (user->quitting)
-               return;
-       if (IS_LOCAL(user))
-       {
-               parameterlist params;
-               params.push_back(user->uuid);
-               params.push_back(ConvToStr(user->age));
-               params.push_back(user->nick);
-               params.push_back(user->host);
-               params.push_back(user->dhost);
-               params.push_back(user->ident);
-               params.push_back(user->GetIPString());
-               params.push_back(ConvToStr(user->signon));
-               params.push_back("+"+std::string(user->FormatModes(true)));
-               params.push_back(":"+std::string(user->fullname));
-               Utils->DoOneToMany(ServerInstance->Config->GetSID(), "UID", params);
-       }
-
-       TreeServer* SourceServer = Utils->FindServer(user->server);
-       if (SourceServer)
-       {
-               SourceServer->SetUserCount(1); // increment by 1
-       }
-}