Merge 0.10->trunk
authorKim Alvefur <zash@zash.se>
Mon, 21 Sep 2015 23:31:52 +0000 (01:31 +0200)
committerKim Alvefur <zash@zash.se>
Mon, 21 Sep 2015 23:31:52 +0000 (01:31 +0200)
1  2 
plugins/mod_private.lua

index 05f05708f4945bd85733be3812dd0e33b139b68d,c01053d509b8effaed36d55572d44ffa2e96be43..9375cf80d9bd4d759c859cb8b222a0fc8ec04eec
@@@ -21,25 -22,33 +22,28 @@@ module:hook("iq/self/jabber:iq:private:
        end
        local tag = query.tags[1];
        local key = tag.name..":"..tag.attr.xmlns;
 -      local data, err = private_storage:get(origin.username);
 -      if err then
 -              origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
 -              return true;
 -      end
        if stanza.attr.type == "get" then
 -              if data and data[key] then
 -                      origin.send(st.reply(stanza):query("jabber:iq:private"):add_child(st.deserialize(data[key])));
 -                      return true;
 +              local data, err = private_storage:get(origin.username, key);
 +              if data then
-                       return origin.send(st.reply(stanza):query("jabber:iq:private"):add_child(st.deserialize(data)));
++                      origin.send(st.reply(stanza):query("jabber:iq:private"):add_child(st.deserialize(data)));
 +              elseif err then
-                       return origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
++                      origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
                else
-                       return origin.send(st.reply(stanza):add_child(query));
+                       origin.send(st.reply(stanza):add_child(query));
 -                      return true;
                end
++              return true;
        else -- type == set
 -              if not data then data = {}; end;
 -              if #tag == 0 then
 -                      data[key] = nil;
 -              else
 -                      data[key] = st.preserialize(tag);
 +              local data;
 +              if #tag ~= 0 then
 +                      data = st.preserialize(tag);
                end
                -- TODO delete datastore if empty
 -              local ok, err = private_storage:set(origin.username, data);
 +              local ok, err = private_storage:set(origin.username, key, data);
                if not ok then
-                       return origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
+                       origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
+                       return true;
                end
-               return origin.send(st.reply(stanza));
+               origin.send(st.reply(stanza));
+               return true;
        end
  end);