summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/nnimap.el8
2 files changed, 12 insertions, 0 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 12cbd30df68..3fb44bb5b10 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
+2011-11-03 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * nnimap.el (nnimap-open-connection-1): Use tcp-keealive if possible.
+
2011-11-02 Teodor Zlatanov <tzz@lifelogs.com>
* gnus-util.el (gnus-bound-and-true-p): Another comment to explain why
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 77372c246cb..cda17ba57c6 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -397,6 +397,14 @@ textual parts.")
(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)