mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-12 16:23:57 +00:00
Add new defvoo nnimap-keepalive-intervals to Gnus nnimap servers
* lisp/gnus/nnimap.el (nnimap-keepalive-intervals): New per-server config for customizing when keepalive commands are sent. (nnimap-keepalive, nnimap-open-connection-1): Consult in these places. Additionally, use nnimap-streaming -> t when sending the keepalive NOOP, so we don't wait for the response. * doc/misc/gnus.texi (Customizing the IMAP Connection): Document.
This commit is contained in:
parent
3783e7fb4d
commit
aeada12ebb
@ -14515,6 +14515,17 @@ names. If your IMAP mailboxes are called something like @samp{INBOX}
|
||||
and @samp{INBOX.Lists.emacs}, but you'd like the nnimap group names to
|
||||
be @samp{INBOX} and @samp{Lists.emacs}, you should enable this option.
|
||||
|
||||
@item nnimap-keepalive-intervals
|
||||
By default, nnimap will send occasional @samp{NOOP} (keepalive)
|
||||
commands to the server, to keep the connection alive. This option
|
||||
governs how often that happens. It is a cons of two integers,
|
||||
representing seconds: first how often to run the keepalive check, and
|
||||
the second how many seconds of user inactivity are required to
|
||||
actually send the command. The default, @code{(900 . 300)}, means run
|
||||
the check every fifteen minutes and, if the user has been inactive for
|
||||
five minutes, send the keepalive command. Set to @code{nil} to
|
||||
disable keepalive commands altogether.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
|
@ -136,6 +136,16 @@ will fetch all parts that have types that match that string. A
|
||||
likely value would be \"text/\" to automatically fetch all
|
||||
textual parts.")
|
||||
|
||||
(defvoo nnimap-keepalive-intervals (cons (* 60 15)
|
||||
(* 60 5))
|
||||
"Configuration for the nnimap keepalive timer.
|
||||
The value is a cons of two integers (each representing a number
|
||||
of seconds): the first is how often to run the keepalive
|
||||
function, the second is the seconds of inactivity required to
|
||||
send the actual keepalive command.
|
||||
|
||||
Set to nil to disable keepalive commands altogether.")
|
||||
|
||||
(defgroup nnimap nil
|
||||
"IMAP for Gnus."
|
||||
:group 'gnus)
|
||||
@ -405,15 +415,16 @@ during splitting, which may be slow."
|
||||
nil)))
|
||||
|
||||
(defun nnimap-keepalive ()
|
||||
(let ((now (current-time)))
|
||||
(let ((now (current-time))
|
||||
;; Set this so we don't wait for a response.
|
||||
(nnimap-streaming t))
|
||||
(dolist (buffer nnimap-process-buffers)
|
||||
(when (buffer-live-p buffer)
|
||||
(with-current-buffer buffer
|
||||
(when (and nnimap-object
|
||||
(nnimap-last-command-time nnimap-object)
|
||||
(time-less-p
|
||||
;; More than five minutes since the last command.
|
||||
(* 5 60)
|
||||
(cdr nnimap-keepalive-intervals)
|
||||
(time-subtract
|
||||
now
|
||||
(nnimap-last-command-time nnimap-object))))
|
||||
@ -448,9 +459,12 @@ during splitting, which may be slow."
|
||||
port))
|
||||
|
||||
(defun nnimap-open-connection-1 (buffer)
|
||||
(unless nnimap-keepalive-timer
|
||||
(setq nnimap-keepalive-timer (run-at-time (* 60 15) (* 60 15)
|
||||
#'nnimap-keepalive)))
|
||||
(unless (or nnimap-keepalive-timer
|
||||
(null nnimap-keepalive-intervals))
|
||||
(setq nnimap-keepalive-timer (run-at-time
|
||||
(car nnimap-keepalive-intervals)
|
||||
(car nnimap-keepalive-intervals)
|
||||
#'nnimap-keepalive)))
|
||||
(with-current-buffer (nnimap-make-process-buffer buffer)
|
||||
(let* ((coding-system-for-read 'binary)
|
||||
(coding-system-for-write 'binary)
|
||||
|
Loading…
Reference in New Issue
Block a user