(stream-type (plist-get props :type)))
(when (and stream (not (memq (process-status stream) '(open run))))
(setq stream nil))
+
+ (when (and (fboundp 'set-network-process-option) ;; Not in XEmacs.
+ (fboundp 'process-type) ;; Emacs 22 doesn't provide it.
+ (eq (process-type stream) 'network))
+ ;; Use TCP-keepalive so that connections that pass through a NAT
+ ;; router don't hang when left idle.
+ (set-network-process-option stream :keepalive t))
+
(setf (nnimap-process nnimap-object) stream)
(setf (nnimap-stream-type nnimap-object) stream-type)
(if (not stream)
(if (consp (caar structure))
(nnimap-insert-partial-structure (pop structure) parts t)
(let ((bit (pop structure)))
- (insert (format "Content-type: %s/%s"
- (downcase (nth 0 bit))
- (downcase (nth 1 bit))))
- (if (member "CHARSET" (nth 2 bit))
+ (insert (format "Content-type: %s/%s"
+ (downcase (nth 0 bit))
+ (downcase (nth 1 bit))))
+ (if (member-ignore-case "CHARSET" (nth 2 bit))
(insert (format
- "; charset=%S\n" (cadr (member "CHARSET" (nth 2 bit)))))
+ "; charset=%S\n"
+ (cadr (member-ignore-case "CHARSET" (nth 2 bit)))))
(insert "\n"))
(insert (format "Content-transfer-encoding: %s\n"
(nth 5 bit)))
((eq action 'set) ""))
(mapconcat #'identity flags " ")))))))
;; Wait for the last command to complete to avoid later
- ;; syncronisation problems with the stream.
+ ;; synchronization problems with the stream.
(when sequence
(nnimap-wait-for-response sequence))))))
(goto-char start)
(setq vanished
(and (eq flag-sequence 'qresync)
- (re-search-forward "^\\* VANISHED .* \\([0-9:,]+\\)"
+ (re-search-forward "^\\* VANISHED .*? \\([0-9:,]+\\)"
(or end (point-min)) t)
(match-string 1)))
(goto-char start)
(looking-at "\\*"))))
(not (looking-at (format "%d .*\n" sequence)))))
(when messagep
- (nnheader-message 7 "nnimap read %dk" (/ (buffer-size) 1000)))
+ (nnheader-message-maybe
+ 7 "nnimap read %dk" (/ (buffer-size) 1000)))
(nnheader-accept-process-output process)
(goto-char (point-max)))
openp)