comparison mod_roster_command/mod_roster_command.lua @ 1509:01e37ce7532e

mod_roster_command: Make sure hosts are only initialized once
author Kim Alvefur <zash@zash.se>
date Sat, 20 Sep 2014 11:33:49 +0200
parents f7cb287dd3c7
children f9cb09d451c7
comparison
equal deleted inserted replaced
1508:f7cb287dd3c7 1509:01e37ce7532e
31 local contact_username, contact_host = jid.split(contact_jid); 31 local contact_username, contact_host = jid.split(contact_jid);
32 if not hosts[user_host] then 32 if not hosts[user_host] then
33 warn("The host '%s' is not configured for this server.", user_host); 33 warn("The host '%s' is not configured for this server.", user_host);
34 return; 34 return;
35 end 35 end
36 storagemanager.initialize_host(user_host); 36 if hosts[user_host].users.name == "null" then
37 usermanager.initialize_host(user_host); 37 storagemanager.initialize_host(user_host);
38 usermanager.initialize_host(user_host);
39 end
38 -- Update user's roster to say subscription request is pending... 40 -- Update user's roster to say subscription request is pending...
39 rostermanager.set_contact_pending_out(user_username, user_host, contact_jid); 41 rostermanager.set_contact_pending_out(user_username, user_host, contact_jid);
40 if hosts[contact_host] then 42 if hosts[contact_host] then
41 if contact_host ~= user_host then 43 if contact_host ~= user_host and hosts[contact_host].users.name == "null" then
42 storagemanager.initialize_host(contact_host); 44 storagemanager.initialize_host(contact_host);
43 usermanager.initialize_host(contact_host); 45 usermanager.initialize_host(contact_host);
44 end 46 end
45 -- Update contact's roster to say subscription request is pending... 47 -- Update contact's roster to say subscription request is pending...
46 rostermanager.set_contact_pending_in(contact_username, contact_host, user_jid); 48 rostermanager.set_contact_pending_in(contact_username, contact_host, user_jid);
64 local contact_username, contact_host = jid.split(contact_jid); 66 local contact_username, contact_host = jid.split(contact_jid);
65 if not hosts[user_host] then 67 if not hosts[user_host] then
66 warn("The host '%s' is not configured for this server.", user_host); 68 warn("The host '%s' is not configured for this server.", user_host);
67 return; 69 return;
68 end 70 end
69 storagemanager.initialize_host(user_host); 71 if hosts[user_host].users.name == "null" then
70 usermanager.initialize_host(user_host); 72 storagemanager.initialize_host(user_host);
73 usermanager.initialize_host(user_host);
74 end
71 -- Update user's roster to say subscription is cancelled... 75 -- Update user's roster to say subscription is cancelled...
72 rostermanager.unsubscribe(user_username, user_host, contact_jid); 76 rostermanager.unsubscribe(user_username, user_host, contact_jid);
73 if hosts[contact_host] then 77 if hosts[contact_host] then
74 if contact_host ~= user_host then 78 if contact_host ~= user_host and hosts[contact_host].users.name == "null" then
75 storagemanager.initialize_host(contact_host); 79 storagemanager.initialize_host(contact_host);
76 usermanager.initialize_host(contact_host); 80 usermanager.initialize_host(contact_host);
77 end 81 end
78 -- Update contact's roster to say subscription is cancelled... 82 -- Update contact's roster to say subscription is cancelled...
79 rostermanager.unsubscribed(contact_username, contact_host, user_jid); 83 rostermanager.unsubscribed(contact_username, contact_host, user_jid);
91 local user_username, user_host = jid.split(user_jid); 95 local user_username, user_host = jid.split(user_jid);
92 if not hosts[user_host] then 96 if not hosts[user_host] then
93 warn("The host '%s' is not configured for this server.", user_host); 97 warn("The host '%s' is not configured for this server.", user_host);
94 return; 98 return;
95 end 99 end
96 storagemanager.initialize_host(user_host); 100 if hosts[user_host].users.name == "null" then
97 usermanager.initialize_host(user_host); 101 storagemanager.initialize_host(user_host);
102 usermanager.initialize_host(user_host);
103 end
98 104
99 -- Load user's roster and find the contact 105 -- Load user's roster and find the contact
100 local roster = rostermanager.load_roster(user_username, user_host); 106 local roster = rostermanager.load_roster(user_username, user_host);
101 local item = roster[contact_jid]; 107 local item = roster[contact_jid];
102 if item then 108 if item then