# HG changeset patch # User shinysky<shinysky1986(AT)gmail.com> # Date 1280394323 -28800 # Node ID 7fe326037070a094775a069803817c761c73ba4d # Parent 95d4d53f09a103a9ff08f64dbeed80f5b70922ed mod_archive: exit for loop as soon as possible. diff -r 95d4d53f09a1 -r 7fe326037070 mod_archive/mod_archive.lua --- a/mod_archive/mod_archive.lua Thu Jul 29 14:36:41 2010 +0800 +++ b/mod_archive/mod_archive.lua Thu Jul 29 17:05:23 2010 +0800 @@ -106,11 +106,7 @@ -- TODO assuming the collection list are in REVERSE chronological order for k, v in ipairs(data) do local collection = st.deserialize(v); - if thread and collection.attr["thread"] == thread:get_text() - or - not thread - and collection.attr["with"] == with - and os.difftime(utc_secs, date_parse(collection.attr["start"])) < 14400 then + local do_save = function() local dt = 1; for i = #collection, 1, -1 do local s = collection[i].attr["utc_secs"]; @@ -125,7 +121,19 @@ collection.attr["access"] = utc_datetime; data[k] = collection; dm.list_store(node, host, ARCHIVE_DIR, st.preserialize(data)); - return; + end + if thread then + if collection.attr["thread"] == thread:get_text() then + do_save(); + return; + end + else + local dt = os.difftime(utc_secs, date_parse(collection.attr["start"])); + if dt >= 14400 then break end + if collection.attr["with"] == with then + do_save(); + return; + end end end end @@ -330,7 +338,7 @@ local elem = stanza.tags[1]; local node, host = origin.username, origin.host; local data = load_prefs(node, host); - if not data then + if not data then -- TODO create new pref? return false; end local setting = data:child_with_name(elem.name)