Commit d549e52b authored by Michael Olson's avatar Michael Olson
Browse files

Gnus: Fix edge cases with no data being returned and Courier eccentricity.

* lisp/gnus/nnimap.el (nnimap-retrieve-headers-progress): Handle edge
  case where `headers' is nil.  This can occur if the IMAP server does
  not have permissions to read messages from a folder, but can write new
  messages to the folder.
  (nnimap-request-article-part): Do not insert `data' if it is nil.

* lisp/net/imap.el (imap-parse-fetch): Courier can insert spurious blank
  characters which will confuse `read', so skip past them.
parent be3f421b
......@@ -620,7 +620,7 @@ If EXAMINE is non-nil the group is selected read-only."
;; to make it more clear.
(mm-with-unibyte-buffer
(buffer-disable-undo)
(insert headers)
(when headers (insert headers))
(let ((head (nnheader-parse-naked-head uid)))
(mail-header-set-number head uid)
(mail-header-set-chars head chars)
......@@ -950,9 +950,10 @@ function is generally only called when Gnus is shutting down."
(erase-buffer)
(let ((data (imap-fetch article part prop nil
nnimap-server-buffer)))
(insert (nnimap-demule (if detail
(nth 2 (car data))
data))))
(when data
(insert (nnimap-demule (if detail
(nth 2 (car data))
data)))))
(nnheader-ms-strip-cr)
(gnus-message
10 "nnimap: Fetching (part of) article %d from %s...done"
......
......@@ -2493,7 +2493,9 @@ Return nil if no complete line has arrived."
(when (eq (char-after) ?\()
(let (uid flags envelope internaldate rfc822 rfc822header rfc822text
rfc822size body bodydetail bodystructure flags-empty)
(while (not (eq (char-after) ?\)))
(while (let ((moved (skip-chars-forward " \t")))
(prog1 (not (eq (char-after) ?\)))
(unless (= moved 0) (backward-char))))
(imap-forward)
(let ((token (read (current-buffer))))
(imap-forward)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment