Function: nnimap-retrieve-headers

nnimap-retrieve-headers is a byte-compiled function defined in nnimap.el.gz.

Signature

(nnimap-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnimap.el.gz
(deffoo nnimap-retrieve-headers (articles &optional group server _fetch-old)
  (with-current-buffer nntp-server-buffer
    (erase-buffer)
    (when (nnimap-change-group group server)
      (with-current-buffer (nnimap-buffer)
	(erase-buffer)
        ;; If we have a lot of ranges, split them up to avoid
        ;; generating too-long lines.  (The limit is 8192 octets,
        ;; and this should guarantee that it's (much) shorter than
        ;; that.)  We don't stream the requests, since the server
        ;; may respond to the requests out-of-order:
        ;; https://datatracker.ietf.org/doc/html/rfc3501#section-5.5
        (dolist (ranges (seq-split (gnus-compress-sequence articles t)
                                   nnimap--max-retrieve-headers))
          (nnimap-wait-for-response
	   (nnimap-send-command
	    "UID FETCH %s %s"
	    (nnimap-article-ranges ranges)
	    (nnimap-header-parameters))
           t))
	(unless (process-live-p (get-buffer-process (current-buffer)))
	  (error "IMAP server %S closed connection" nnimap-address))
	(nnimap-transform-headers)
	(nnheader-remove-cr-followed-by-lf))
      (insert-buffer-substring
       (nnimap-find-process-buffer (current-buffer))))
    'headers))