changeset 110212:e9bead2d481f

imap.el (imap-fetch-safe, imap-enable-exchange-bug-workaround): Removed.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sun, 05 Sep 2010 23:45:14 +0000
parents 6cdcc53703e4
children bf2aa62d9d6c
files lisp/ChangeLog lisp/gnus/nnimap.el lisp/net/imap.el
diffstat 3 files changed, 11 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Sep 05 23:38:33 2010 +0000
+++ b/lisp/ChangeLog	Sun Sep 05 23:45:14 2010 +0000
@@ -1,9 +1,16 @@
+2010-09-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+	* 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  <larsi@gnus.org>
 
 	* 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 <david@harpegolden.net>
+2010-09-05  David De La Harpe Golden  <david@harpegolden.net>
 
 	* mouse.el (mouse-save-then-kill): Save region to kill-ring
 	when mouse-drag-copy-region is non-nil (Bug#6956).
--- a/lisp/gnus/nnimap.el	Sun Sep 05 23:38:33 2010 +0000
+++ b/lisp/gnus/nnimap.el	Sun Sep 05 23:45:14 2010 +0000
@@ -588,7 +588,7 @@
 		(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)))
--- a/lisp/net/imap.el	Sun Sep 05 23:38:33 2010 +0000
+++ b/lisp/net/imap.el	Sun Sep 05 23:45:14 2010 +0000
@@ -448,18 +448,6 @@
 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 @@
 	 (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 @@
 	  (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 @@
 	  (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 @@
 	  imap-list-to-message-set
 	  imap-fetch-asynch
 	  imap-fetch
-	  imap-fetch-safe
 	  imap-message-put
 	  imap-message-get
 	  imap-message-map