diff --git a/src/transport.cpp b/src/transport.cpp index 00b972d0cdecfa6bca70791afdf441fd80e36ef2..d0eb9cdc1c49e6fd8b6e35d969006b54a6b14801 100644 --- a/src/transport.cpp +++ b/src/transport.cpp @@ -34,13 +34,20 @@ namespace Transport { class MyUserRegistry : public Swift::UserRegistry { public: - MyUserRegistry() {} + MyUserRegistry(Component *c) {component = c;} ~MyUserRegistry() {} bool isValidUserPassword(const JID& user, const std::string& password) const { users[user.toBare().toString()] = password; + Swift::Presence::ref response = Swift::Presence::create(); + response->setTo(component->getJID()); + response->setFrom(user); + response->setType(Swift::Presence::Available); + component->onUserPresenceReceived(response); + std::cout << "CONNECTED LOGIN 1" << user.toString() << "\n"; return true; } mutable std::map users; + mutable Component *component; }; Component::Component(Swift::EventLoop *loop, Config *config, Factory *factory) { @@ -59,7 +66,7 @@ Component::Component(Swift::EventLoop *loop, Config *config, Factory *factory) { m_reconnectTimer->onTick.connect(bind(&Component::connect, this)); if (CONFIG_BOOL(m_config, "service.server_mode")) { - m_userRegistry = new MyUserRegistry(); + m_userRegistry = new MyUserRegistry(this); m_server = new Swift::Server(loop, m_factories, m_userRegistry, m_jid, CONFIG_INT(m_config, "service.port")); m_server->start(); m_stanzaChannel = m_server->getStanzaChannel(); @@ -174,14 +181,6 @@ void Component::handlePresence(Swift::Presence::ref presence) { // filter out bad presences if (!presence->getFrom().isValid()) { - Swift::Presence::ref response = Swift::Presence::create(); - response->setTo(presence->getFrom()); - response->setFrom(presence->getTo()); - response->setType(Swift::Presence::Error); - - response->addPayload(boost::shared_ptr(new ErrorPayload(ErrorPayload::JIDMalformed, ErrorPayload::Modify))); - - m_component->sendPresence(response); return; }