Skip to content

Commit

Permalink
reduce imap traffic in filter synchronize
Browse files Browse the repository at this point in the history
Only call synchronize on the parent folder if the message numbers have
changed.
  • Loading branch information
egh committed Oct 31, 2014
1 parent 1017136 commit 478ab60
Showing 1 changed file with 25 additions and 14 deletions.
39 changes: 25 additions & 14 deletions elmo/elmo-filter.el
Expand Up @@ -490,20 +490,31 @@
no-check
mask)))
(setq numbers (elmo-folder-list-messages folder (not disable-killed)))
(when (and numbers
(not (elmo-filter-folder-require-msgdb-internal folder)))
(elmo-folder-synchronize (elmo-filter-folder-target-internal folder)
'disable-killed
ignore-msgdb
no-check
(if mask
(elmo-list-filter mask numbers)
numbers)))
(when (and disable-killed ignore-msgdb)
(elmo-folder-set-killed-list-internal folder nil))
(elmo-filter-folder-set-number-list-internal folder numbers)
(elmo-filter-folder-set-flag-count-internal folder nil)
0))
;; check to make sure this is not the same numbers as
;; we already have
(when (not (equal numbers
(elmo-filter-folder-number-list-internal folder)))
(when (and numbers
(not (elmo-filter-folder-require-msgdb-internal folder))
;; check to see if there are new messages that are not in
;; the the parent folders msgdb
(elmo-list-difference
(elmo-folder-list-messages
(elmo-filter-folder-target-internal folder) nil 'in-msgdb)
numbers))
(elmo-folder-synchronize (elmo-filter-folder-target-internal folder)
'disable-killed
ignore-msgdb
no-check
(if mask
(elmo-list-filter mask numbers)
numbers)
(not (null numbers))))
(when (and disable-killed ignore-msgdb)
(elmo-folder-set-killed-list-internal folder nil))
(elmo-filter-folder-set-number-list-internal folder numbers)
(elmo-filter-folder-set-flag-count-internal folder nil)))
0)

(luna-define-method elmo-folder-detach-messages ((folder elmo-filter-folder)
numbers)
Expand Down

0 comments on commit 478ab60

Please sign in to comment.