# HG changeset patch # User Kim Alvefur # Date 1479580694 -3600 # Node ID 18323c6aa1330c5384c6450d23df6b8376e2fe74 # Parent f159ad7ac18af20c0c7e13a625348b24bee4951b mod_pubsub_feeds: Halt feed parsing when we see a node we already know about diff -r f159ad7ac18a -r 18323c6aa133 mod_pubsub_feeds/mod_pubsub_feeds.lua --- a/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:37:21 2016 +0100 +++ b/mod_pubsub_feeds/mod_pubsub_feeds.lua Sat Nov 19 19:38:14 2016 +0100 @@ -83,13 +83,14 @@ for entry in feed:childtags("entry") do table.insert(entries, entry); end - local ok = pubsub.service:get_items(node, true); + local ok, items = pubsub.service:get_items(node, true); if not ok then local ok, err = pubsub.service:create(node, true); if not ok then module:log("error", "Could not create node %s: %s", node, err); return; end + items = {}; end for i = #entries, 1, -1 do -- Feeds are usually in reverse order local entry = entries[i]; @@ -112,6 +113,10 @@ -- Sigh, no link? id = feed.url .. "#" .. hmac_sha1(feed.url, tostring(entry), true) .. "@" .. dt_datetime(timestamp); end + if items[id] then + -- Assume that this existing means we've added all new items + break; + end local xitem = st.stanza("item", { id = id }):add_child(entry); -- TODO Put data from /feed into item/source