comparison mod_smacks/mod_smacks.lua @ 2937:e672d1050529

mod_smacks: Ensure stanza count attributes are always strings (thanks Martin)
author Matthew Wild <mwild1@gmail.com>
date Sat, 17 Mar 2018 12:58:37 +0000
parents dbba101601b4
children 626d2c781c66
comparison
equal deleted inserted replaced
2936:4fed2379f5be 2937:e672d1050529
234 old_session_registry.set(session.username, session.resumption_token, nil); 234 old_session_registry.set(session.username, session.resumption_token, nil);
235 session.resumption_token = nil; 235 session.resumption_token = nil;
236 end 236 end
237 -- send out last ack as per revision 1.5.2 of XEP-0198 237 -- send out last ack as per revision 1.5.2 of XEP-0198
238 if session.smacks and session.conn then 238 if session.smacks and session.conn then
239 (session.sends2s or session.send)(st.stanza("a", { xmlns = session.smacks, h = tostring(session.handled_stanza_count) })); 239 (session.sends2s or session.send)(st.stanza("a", { xmlns = session.smacks, h = string.format("%d", session.handled_stanza_count) }));
240 end 240 end
241 return session_close(...); 241 return session_close(...);
242 end 242 end
243 return session; 243 return session;
244 end 244 end
320 module:log("debug", "Received ack request from non-smack-enabled session"); 320 module:log("debug", "Received ack request from non-smack-enabled session");
321 return; 321 return;
322 end 322 end
323 module:log("debug", "Received ack request, acking for %d", origin.handled_stanza_count); 323 module:log("debug", "Received ack request, acking for %d", origin.handled_stanza_count);
324 -- Reply with <a> 324 -- Reply with <a>
325 (origin.sends2s or origin.send)(st.stanza("a", { xmlns = xmlns_sm, h = tostring(origin.handled_stanza_count) })); 325 (origin.sends2s or origin.send)(st.stanza("a", { xmlns = xmlns_sm, h = string.format("%d", origin.handled_stanza_count) }));
326 return true; 326 return true;
327 end 327 end
328 module:hook_stanza(xmlns_sm2, "r", function (origin, stanza) return handle_r(origin, stanza, xmlns_sm2); end); 328 module:hook_stanza(xmlns_sm2, "r", function (origin, stanza) return handle_r(origin, stanza, xmlns_sm2); end);
329 module:hook_stanza(xmlns_sm3, "r", function (origin, stanza) return handle_r(origin, stanza, xmlns_sm3); end); 329 module:hook_stanza(xmlns_sm3, "r", function (origin, stanza) return handle_r(origin, stanza, xmlns_sm3); end);
330 330
468 session.log("debug", "Tried to resume non-existent session with id %s", id); 468 session.log("debug", "Tried to resume non-existent session with id %s", id);
469 local old_session = old_session_registry.get(session.username, id); 469 local old_session = old_session_registry.get(session.username, id);
470 if old_session and session.username == old_session.username 470 if old_session and session.username == old_session.username
471 and session.host == old_session.host 471 and session.host == old_session.host
472 and old_session.h then 472 and old_session.h then
473 session.send(st.stanza("failed", { xmlns = xmlns_sm, h = tostring(old_session.h) }) 473 session.send(st.stanza("failed", { xmlns = xmlns_sm, h = string.format("%d", old_session.h) })
474 :tag("item-not-found", { xmlns = xmlns_errors }) 474 :tag("item-not-found", { xmlns = xmlns_errors })
475 ); 475 );
476 else 476 else
477 session.send(st.stanza("failed", { xmlns = xmlns_sm }) 477 session.send(st.stanza("failed", { xmlns = xmlns_sm })
478 :tag("item-not-found", { xmlns = xmlns_errors }) 478 :tag("item-not-found", { xmlns = xmlns_errors })
503 original_session.stream:set_session(original_session); 503 original_session.stream:set_session(original_session);
504 -- Similar for connlisteners 504 -- Similar for connlisteners
505 c2s_sessions[session.conn] = original_session; 505 c2s_sessions[session.conn] = original_session;
506 506
507 original_session.send(st.stanza("resumed", { xmlns = xmlns_sm, 507 original_session.send(st.stanza("resumed", { xmlns = xmlns_sm,
508 h = original_session.handled_stanza_count, previd = id })); 508 h = string.format("%d", original_session.handled_stanza_count), previd = id }));
509 509
510 -- Fake an <a> with the h of the <resume/> from the client 510 -- Fake an <a> with the h of the <resume/> from the client
511 original_session:dispatch_stanza(st.stanza("a", { xmlns = xmlns_sm, 511 original_session:dispatch_stanza(st.stanza("a", { xmlns = xmlns_sm,
512 h = stanza.attr.h })); 512 h = stanza.attr.h }));
513 513