commit c1faa7a09b6f58134f1acff18d19fa6c1041b793
parent d501297f7cc2776e086fa8c2ddb59567a55af570
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date: Sat, 8 Dec 2007 21:47:35 +0000
turn of imap sanity check that exchange fails
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@746 5c8cc53c-5e98-4d25-b20a-d8db53a31250
Diffstat:
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/lib/sup/imap.rb b/lib/sup/imap.rb
@@ -274,7 +274,21 @@ private
imap_id = @imap_state[id][:id]
result = fetch(imap_id, (fields + ['RFC822.SIZE', 'INTERNALDATE']).uniq).first
got_id = make_id result
- raise OutOfSyncSourceError, "IMAP message mismatch: requested #{id}, got #{got_id}." unless got_id == id
+
+ ## I've turned off the following sanity check because Microsoft Exchange fails it.
+ ## Exchange actually reports two different INTERNALDATEs for the exact same message
+ ## when queried at different points in time.
+ ##
+ ## I don't actually see the semantics of INTERNALDATE actually defined anywhere
+ ## in either RFC 3501 or RFC 2060, beyond "the internal date of the message"
+ ## (gee, thanks guys, great job on that committee), so it's probably perfectly
+ ## acceptable to return any date you'd like for any message.
+ ##
+ ## Of course no OTHER imap server I've encountered returns DIFFERENT values for
+ ## the SAME message. But it's Microsoft; what do you expect? If their programmers
+ ## were any good they'd be working at Google.
+
+ # raise OutOfSyncSourceError, "IMAP message mismatch: requested #{id}, got #{got_id}." unless got_id == id
fields.map { |f| result.attr[f] or raise FatalSourceError, "empty response from IMAP server: #{f}" }
end