Comparison

core/rostermanager.lua @ 9671:e50559a42dfe

rostermanager, mod_presence: Store stanza for incoming subscription requests (fixes #689) (thanks Zash, Ge0rG)
author Matthew Wild <mwild1@gmail.com>
date Sat, 01 Dec 2018 22:13:24 +0000
parent 9303:72f0862978ef
child 9705:42a3e3a28248
comparison
equal deleted inserted replaced
9670:73e1bdc001ce 9671:e50559a42dfe
261 return item and (item.subscription == "to" or item.subscription == "both"), err; 261 return item and (item.subscription == "to" or item.subscription == "both"), err;
262 end 262 end
263 263
264 function is_contact_pending_in(username, host, jid) 264 function is_contact_pending_in(username, host, jid)
265 local roster = load_roster(username, host); 265 local roster = load_roster(username, host);
266 return roster[false].pending[jid]; 266 return roster[false].pending[jid] ~= nil;
267 end 267 end
268 local function set_contact_pending_in(username, host, jid) 268 local function set_contact_pending_in(username, host, jid, stanza)
269 local roster = load_roster(username, host); 269 local roster = load_roster(username, host);
270 local item = roster[jid]; 270 local item = roster[jid];
271 if item and (item.subscription == "from" or item.subscription == "both") then 271 if item and (item.subscription == "from" or item.subscription == "both") then
272 return; -- false 272 return; -- false
273 end 273 end
274 roster[false].pending[jid] = true; 274 roster[false].pending[jid] = st.is_stanza(stanza) and st.preserialize(stanza) or true;
275 return save_roster(username, host, roster, jid); 275 return save_roster(username, host, roster, jid);
276 end 276 end
277 function is_contact_pending_out(username, host, jid) 277 function is_contact_pending_out(username, host, jid)
278 local roster = load_roster(username, host); 278 local roster = load_roster(username, host);
279 local item = roster[jid]; 279 local item = roster[jid];