From dfe1285d2ccff13c855e079c03768975715199f5 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sun, 5 Sep 2010 23:45:14 +0000 Subject: [PATCH] imap.el (imap-fetch-safe, imap-enable-exchange-bug-workaround): Removed. --- lisp/ChangeLog | 9 ++++++- lisp/gnus/nnimap.el | 2 +- lisp/net/imap.el | 59 ++------------------------------------------- 3 files changed, 11 insertions(+), 59 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 77413d3cacc..5f28f61e4a7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,9 +1,16 @@ +2010-09-05 Lars Magne Ingebrigtsen + + * imap.el (imap-fetch-safe): Removed function, and altered all callers + to use `imap-fetch' instead. According to the comments, this should be + safe, since all other IMAP clients use the 1:* syntax. + (imap-enable-exchange-bug-workaround): Removed. + 2010-09-05 Lars Magne Ingebrigtsen * net/imap.el (imap-log): New convenience function used throughout instead of repeating the same code all over the place. -2010-09-05 David De La Harpe Golden +2010-09-05 David De La Harpe Golden * mouse.el (mouse-save-then-kill): Save region to kill-ring when mouse-drag-copy-region is non-nil (Bug#6956). diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 3d415e71a2a..574eb85c238 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -588,7 +588,7 @@ If EXAMINE is non-nil the group is selected read-only." (imap-mailbox-select decoded-group examine)) (let (minuid maxuid) (when (> (imap-mailbox-get 'exists) 0) - (imap-fetch-safe '("1,*" . "1,*:*") "UID" nil 'nouidfetch) + (imap-fetch "1:*" "UID" nil 'nouidfetch) (imap-message-map (lambda (uid Uid) (setq minuid (if minuid (min minuid uid) uid) maxuid (if maxuid (max maxuid uid) uid))) diff --git a/lisp/net/imap.el b/lisp/net/imap.el index ed72d7b9ce0..88e8ee0222a 100644 --- a/lisp/net/imap.el +++ b/lisp/net/imap.el @@ -448,18 +448,6 @@ The actual value is really the text on the continuation line.") The function should take two arguments, the first the IMAP tag and the second the status (OK, NO, BAD etc) of the command.") -(defvar imap-enable-exchange-bug-workaround nil - "Send FETCH UID commands as *:* instead of *. - -When non-nil, use an alternative UIDS form. Enabling appears to -be required for some servers (e.g., Microsoft Exchange 2007) -which otherwise would trigger a response 'BAD The specified -message set is invalid.'. We don't unconditionally use this -form, since this is said to be significantly inefficient. - -This variable is set to t automatically per server if the -canonical form fails.") - ;; Utility functions: @@ -1780,48 +1768,6 @@ is non-nil return these properties." (format "String %s cannot be converted to a Lisp integer" number)) number))) -(defun imap-fetch-safe (uids props &optional receive nouidfetch buffer) - "Like `imap-fetch', but DTRT with Exchange 2007 bug. -However, UIDS here is a cons, where the car is the canonical form -of the UIDS specification, and the cdr is the one which works with -Exchange 2007 or, potentially, other buggy servers. -See `imap-enable-exchange-bug-workaround'." - ;; The first time we get here for a given, we'll try the canonical - ;; form. If we get the known error from the buggy server, set the - ;; flag buffer-locally (to account for connections to multiple - ;; servers), then re-try with the alternative UIDS spec. We don't - ;; unconditionally use the alternative form, since the - ;; currently-used alternatives are seriously inefficient with some - ;; servers (although they are valid). - ;; - ;; FIXME: Maybe it would be cleaner to have a flag to not signal - ;; the error (which otherwise gives a message), and test - ;; `imap-failed-tags'. Also, Other IMAP clients use other forms of - ;; request which work with Exchange, e.g. Claws does "UID FETCH 1:* - ;; (UID)" rather than "FETCH UID 1,*". Is there a good reason not - ;; to do the same? - (condition-case data - ;; Binding `debug-on-error' allows us to get the error from - ;; `imap-parse-response' -- it's normally caught by Emacs around - ;; execution of a process filter. - (let ((debug-on-error t)) - (imap-fetch (if imap-enable-exchange-bug-workaround - (cdr uids) - (car uids)) - props receive nouidfetch buffer)) - (error - (if (and (not imap-enable-exchange-bug-workaround) - ;; This is the Exchange 2007 response. It may be more - ;; robust just to check for a BAD response to the - ;; attempted fetch. - (string-match "The specified message set is invalid" - (cadr data))) - (with-current-buffer (or buffer (current-buffer)) - (set (make-local-variable 'imap-enable-exchange-bug-workaround) - t) - (imap-fetch (cdr uids) props receive nouidfetch)) - (signal (car data) (cdr data)))))) - (defun imap-message-copyuid-1 (mailbox) (if (imap-capability 'UIDPLUS) (list (nth 0 (imap-mailbox-get-1 'copyuid mailbox)) @@ -1831,7 +1777,7 @@ See `imap-enable-exchange-bug-workaround'." (imap-message-data (make-vector 2 0))) (when (imap-mailbox-examine-1 mailbox) (prog1 - (and (imap-fetch-safe '("*" . "*:*") "UID") + (and (imap-fetch "*:*" "UID") (list (imap-mailbox-get-1 'uidvalidity mailbox) (apply 'max (imap-message-map (lambda (uid prop) uid) 'UID)))) @@ -1877,7 +1823,7 @@ first element. The rest of list contains the saved articles' UIDs." (imap-message-data (make-vector 2 0))) (when (imap-mailbox-examine-1 mailbox) (prog1 - (and (imap-fetch-safe '("*" . "*:*") "UID") + (and (imap-fetch "*:*" "UID") (list (imap-mailbox-get-1 'uidvalidity mailbox) (apply 'max (imap-message-map (lambda (uid prop) uid) 'UID)))) @@ -3013,7 +2959,6 @@ Return nil if no complete line has arrived." imap-list-to-message-set imap-fetch-asynch imap-fetch - imap-fetch-safe imap-message-put imap-message-get imap-message-map -- 2.39.2