- local stanza = parse_xml(row.xml);
- local last_child = stanza.tags[#stanza.tags];
- if not last_child or last_child ~= stanza[#stanza] then error("Last child of offline message is not a tag"); end
- if last_child.name ~= "x" and last_child.attr.xmlns ~= "jabber:x:delay" then error("Last child of offline message is not a timestamp"); end
- stanza[#stanza], stanza.tags[#stanza.tags] = nil, nil;
- local t = date_parse(last_child.attr.stamp);
- offline_msg(row.username, host, t, stanza);
+ local stanza, err = parse_xml(row.xml);
+ if stanza then
+ local last_child = stanza.tags[#stanza.tags];
+ if not last_child or last_child ~= stanza[#stanza] then error("Last child of offline message is not a tag"); end
+ if last_child.name ~= "x" and last_child.attr.xmlns ~= "jabber:x:delay" then error("Last child of offline message is not a timestamp"); end
+ stanza[#stanza], stanza.tags[#stanza.tags] = nil, nil;
+ local t = date_parse(last_child.attr.stamp);
+ offline_msg(row.username, host, t, stanza);
+ else
+ print("[error] Offline message XML parsing failed: "..row.username.."@"..host);
+ end