1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-06 14:02:07 -08:00

imap.el (imap-fetch-safe, imap-enable-exchange-bug-workaround): Removed.

This commit is contained in:
Lars Magne Ingebrigtsen 2010-09-05 23:45:14 +00:00 committed by Katsumi Yamaoka
parent 8695c9a712
commit dfe1285d2c
3 changed files with 11 additions and 59 deletions

View file

@ -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).

View file

@ -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)))

View file

@ -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