On Mon, Feb 02 2009, Dave Goldberg wrote:
Unfortunately I cannot report the same success. I use XEmacs:
"XEmacs 21.4 (patch 21) \"Educational Television\" [Lucid]
(x86_64-unknown-linux, Mule) of Tue Jan 6 2009 on blackbird"
Does anyone have an idea what is different in XEmacs?
Here's the relevant code:
(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))))))
and if I don't set imap-enable-exchange-bug-workaround to t, I
get
this backtrace:
Debugger entered--Lisp error: (error "Internal error, tag 13 status BAD code nil
text The specified message set is invalid.")
signal(error ("Internal error, tag 13 status BAD code nil text The specified
message set is invalid."))
cerror("Internal error, tag %s status %s code %s text %s" 13 BAD nil
"The specified message set is invalid.")
apply(cerror "Internal error, tag %s status %s code %s text %s" (13 BAD nil
"The specified message set is invalid."))
error("Internal error, tag %s status %s code %s text %s" 13 BAD nil "The
specified message set is invalid.")
imap-parse-response()
imap-arrival-filter(#<process "imap<1>" pid 10620 state:run>
"ecified message set is invalid.
\n")
accept-process-output(#<process "imap<1>" pid 10620 state:run> 0
100)
imap-wait-for-tag(13 nil)
imap-send-command-wait("FETCH 1,* UID")
imap-fetch("1,*" "UID" nil nouidfetch nil)
byte-code("..." [nouidfetch receive props imap-enable-exchange-bug-workaround
debug-on-error uids t imap-fetch buffer] 6)
imap-fetch-safe(("1,*" . "1,*:*") "UID" nil nouidfetch)
nnimap-find-minmax-uid("INBOX" examine)
nnimap-retrieve-groups(("INBOX" "Calendar" "Sent Items"
"INBOX/Miscellaneous" "INBOX/MessageArchive" "Contacts")
"imc")
gnus-retrieve-groups(("INBOX" "Calendar" "Sent Items"
"INBOX/Miscellaneous" "INBOX/MessageArchive" "Contacts")
(nnimap "imc" (nnimap-address "imc.mitre.org") (nnimap-stream
starttls) (nnimap-server-port 143) (nnimap-need-unselect-to-notice-new-mail t)
(nnimap-nov-is-evil t)))
gnus-read-active-file-2(("INBOX" "Calendar" "Sent Items"
"INBOX/Miscellaneous" "INBOX/MessageArchive" "Contacts")
(nnimap "imc" (nnimap-address "imc.mitre.org") (nnimap-stream
starttls) (nnimap-server-port 143) (nnimap-need-unselect-to-notice-new-mail t)
(nnimap-nov-is-evil t)))
gnus-read-active-file-1((nnimap "imc" (nnimap-address
"imc.mitre.org") (nnimap-stream starttls) (nnimap-server-port 143)
(nnimap-need-unselect-to-notice-new-mail t) (nnimap-nov-is-evil t)) nil)
gnus-read-active-file(nil nil)
gnus-setup-news(nil nil nil)
byte-code("..." [gnus-slave gnus-current-startup-file gnus-startup-file
did-connect level dont-connect gnus-group-quit gnus-run-hooks gnus-startup-hook
gnus-make-newsrc-file gnus-dribble-read-file gnus-request-create-group "queue"
(nndraft "") "drafts" (nndraft "") gnus-setup-news nil
gnus-setup-news-hook gnus-start-draft-setup gnus-group-list-groups
gnus-group-first-unread-group gnus-configure-windows group gnus-group-set-mode-line
gnus-started-hook gnus-use-dribble-file gnus-agent] 4)
gnus-1(nil nil nil)
gnus(nil)
call-interactively(gnus)
command-execute(gnus t)
execute-extended-command(nil)
call-interactively(execute-extended-command)
Bye, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available |
http://rsteib.home.pages.de/
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta