# HG changeset patch # User Matthew Wild # Date 1328138945 0 # Node ID 40b707d7a809a34a0119de004a2e36551172a570 # Parent 57ac609444c48c408dbfc48ff38561ee312492f8 mod_smacks: Handle a client trying to twice, or trying to before resource binding (thanks Thijs Alkemade) diff -r 57ac609444c4 -r 40b707d7a809 mod_smacks/mod_smacks.lua --- a/mod_smacks/mod_smacks.lua Wed Feb 01 23:27:23 2012 +0000 +++ b/mod_smacks/mod_smacks.lua Wed Feb 01 23:29:05 2012 +0000 @@ -89,6 +89,18 @@ end module:hook_stanza(xmlns_sm, "enable", function (session, stanza) + local err, err_text; + if session.smacks then + err, err_text = "unexpected-request", "Stream management already enabled for this stream"; + elseif not session.resource then + err, err_text = "unexpected-request", "Attempted to enable stream management before resource binding"; + end + if err then + session.log("warn", "Failed to enable smacks: %s", err_text); -- TODO: XEP doesn't say we can send error text, should it? + session.send(st.stanza("failed", { xmlns = xmlns_sm }):tag(err, { xmlns = xmlns_errors})); + return true; + end + module:log("debug", "Enabling stream management"); session.smacks = true;