]> git.cworth.org Git - sup/blobdiff - lib/sup/poll.rb
bugfixes for imap polling
[sup] / lib / sup / poll.rb
index 6a17409470abdff035b1be6cfcb124c004dda76a..8914d1d56b150cc01d5c747a52011e996353f688 100644 (file)
@@ -92,24 +92,28 @@ class PollManager
       
         labels.each { |l| LabelManager << l }
 
-        m = Message.new :source => source, :source_info => offset, :labels => labels
-        if m.source_marked_read?
-          m.remove_label :unread
-          labels.delete :unread
-        end
+        begin
+          m = Message.new :source => source, :source_info => offset, :labels => labels
+          if m.source_marked_read?
+            m.remove_label :unread
+            labels.delete :unread
+          end
 
-        docid, entry = Index.load_entry_for_id m.id
-        m = yield m, offset, entry
-        next unless m
-        if entry
-          Index.update_message m, docid, entry
-        else
-          Index.add_message m
-          UpdateManager.relay self, :add, m
+          docid, entry = Index.load_entry_for_id m.id
+          m = yield m, offset, entry
+          next unless m
+          if entry
+            Index.update_message m, docid, entry
+          else
+            Index.add_message m
+            UpdateManager.relay self, :add, m
+          end
+        rescue MessageFormatError, SourceError => e
+          Redwood::log "ignoring erroneous message at #{source}##{offset}: #{e.message}"
         end
       end
-    rescue MessageFormatError, SourceError => e
-      Redwood::log "found problem with #{source}: #{e.message}"
+    rescue SourceError => e
+      Redwood::log "problem getting messages from #{source}: #{e.message}"
     end
   end
 end