Mercurial > prosody-hg
comparison core/hostmanager.lua @ 4460:a813a130cede
hostmanager: Add send() method to hosts
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 16 Dec 2011 16:01:59 +0000 |
| parents | 6be419e2f509 |
| children | dd1eaecc11f9 |
comparison
equal
deleted
inserted
replaced
| 4459:2ccc386b9913 | 4460:a813a130cede |
|---|---|
| 51 hosts_loaded_once = true; | 51 hosts_loaded_once = true; |
| 52 end | 52 end |
| 53 | 53 |
| 54 prosody_events.add_handler("server-starting", load_enabled_hosts); | 54 prosody_events.add_handler("server-starting", load_enabled_hosts); |
| 55 | 55 |
| 56 local function host_send(stanza) | |
| 57 local name, type = stanza.name, stanza.attr.type; | |
| 58 if type == "error" or (name == "iq" and type == "result") then | |
| 59 local dest_host_name = select(2, jid_split(stanza.attr.to)); | |
| 60 local dest_host = hosts[dest_host_name] or { type = "unknown" }; | |
| 61 log("warn", "Unhandled response sent to %s host %s: %s", dest_host.type, dest_host_name, tostring(stanza)); | |
| 62 return; | |
| 63 end | |
| 64 core_route_stanza(nil, stanza); | |
| 65 end | |
| 66 | |
| 56 function activate(host, host_config) | 67 function activate(host, host_config) |
| 57 if hosts[host] then return nil, "The host "..host.." is already activated"; end | 68 if hosts[host] then return nil, "The host "..host.." is already activated"; end |
| 58 host_config = host_config or configmanager.getconfig()[host]; | 69 host_config = host_config or configmanager.getconfig()[host]; |
| 59 if not host_config then return nil, "Couldn't find the host "..tostring(host).." defined in the current config"; end | 70 if not host_config then return nil, "Couldn't find the host "..tostring(host).." defined in the current config"; end |
| 60 local host_session = { | 71 local host_session = { |
| 61 host = host; | 72 host = host; |
| 62 s2sout = {}; | 73 s2sout = {}; |
| 63 events = events_new(); | 74 events = events_new(); |
| 64 dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(); | 75 dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(); |
| 65 disallow_s2s = configmanager.get(host, "core", "disallow_s2s"); | 76 disallow_s2s = configmanager.get(host, "core", "disallow_s2s"); |
| 77 send = host_send; | |
| 66 }; | 78 }; |
| 67 if not host_config.core.component_module then -- host | 79 if not host_config.core.component_module then -- host |
| 68 host_session.type = "local"; | 80 host_session.type = "local"; |
| 69 host_session.sessions = {}; | 81 host_session.sessions = {}; |
| 70 else -- component | 82 else -- component |
