local origin, stanza = event.origin, event.stanza;
local pubsub = stanza.tags[1];
local action = pubsub.tags[1];
- if not action then return; end
+ if not action then
+ return origin.send(st.error_reply(stanza, "cancel", "bad-request"));
+ end
local handler = handlers[stanza.attr.type.."_"..action.name];
if handler then
handler(origin, stanza, action);
return origin.send(pubsub_error_reply(stanza, "nodeid-required"));
end
local item = publish:get_child("item");
- local id = (item and item.attr.id) or uuid_generate();
+ local id = (item and item.attr.id);
+ if not id then
+ id = uuid_generate();
+ if item then
+ item.attr.id = id;
+ end
+ end
local ok, ret = service:publish(node, stanza.attr.from, id, item);
local reply;
if ok then