(when (nnimap-change-group group server)
(with-current-buffer (nnimap-buffer)
(erase-buffer)
- (nnimap-wait-for-response
- (nnimap-send-command
- "UID FETCH %s %s"
- (nnimap-article-ranges (gnus-compress-sequence articles))
- (nnimap-header-parameters))
- t)
+ (let ((ranges (gnus-compress-sequence articles))
+ sequence)
+ ;; If we have a lot of ranges, split them up to avoid
+ ;; generating too-long lines. (The limit is 8192 octects,
+ ;; and this should guarantee that it's (much) shorter than
+ ;; that.)
+ (while ranges
+ (setq sequence
+ (nnimap-send-command
+ "UID FETCH %s %s"
+ (nnimap-article-ranges (seq-take ranges 200))
+ (nnimap-header-parameters)))
+ (setq ranges (nthcdr 200 ranges)))
+ ;; Wait for the final one.
+ (nnimap-wait-for-response sequence t))
(unless (process-live-p (get-buffer-process (current-buffer)))
(error "IMAP server %S closed connection" nnimap-address))
(nnimap-transform-headers)