[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Timeout problem



"Rupa Schomaker (list)" <rupa-list@rupa.com> writes:

> I often enter a nnimap group and do some activity and then walk away
> from my desk.  30min later, my IMAP server times out the connection
> and the socket is dropped.  If I then try to quit the group the
> connection is not re-established.  Eventually something times out
> locally and in the server list the imap server has (denied) next to
> it.  I then have to "close" the server than before I can use it
> again.  If I read an article in the nnimap group the connection is
> reopened and then I can quit the group gracefully.
> 
> Perhaps we need to add the "reopen the server" logic to when we quit a 
> group...

Yup, I've submitted a patch to Lars about it.

1999-03-18  Simon Josefsson  <jas@pdc.kth.se>

	* gnus-sum.el (gnus-update-marks):
	(gnus-update-read-articles): 
	(gnus-summary-expire-articles): Check server.

--- gnus-sum.el-	Thu Mar 18 01:55:04 1999
+++ gnus-sum.el	Thu Mar 18 01:53:35 1999
@@ -4305,9 +4305,11 @@
 			 (set symbol (sort list '<)) t)))
 		newmarked)))
 
-      (if delta-marks
-	  (gnus-request-set-mark gnus-newsgroup-name delta-marks))
-
+      (when delta-marks
+	(unless (gnus-check-group gnus-newsgroup-name)
+	  (error "Can't open server for %s" gnus-newsgroup-name))
+	(gnus-request-set-mark gnus-newsgroup-name delta-marks))
+	  
       ;; Enter these new marks into the info of the group.
       (if (nthcdr 3 info)
 	  (setcar (nthcdr 3 info) newmarked)
@@ -7423,6 +7425,8 @@
 	;; There are expirable articles in this group, so we run them
 	;; through the expiry process.
 	(gnus-message 6 "Expiring articles...")
+	(unless (gnus-check-group gnus-newsgroup-name)
+	  (error "Can't open server for %s" gnus-newsgroup-name))
 	;; The list of articles that weren't expired is returned.
 	(save-excursion
 	  (if expiry-wait
@@ -9132,6 +9136,8 @@
            (let ((del (gnus-remove-from-range (gnus-info-read info) read))
                  (add (gnus-remove-from-range read (gnus-info-read info))))
              (when (or add del)
+	       (unless (gnus-check-group group)
+		 (error "Can't open server for %s" group))
                (gnus-request-set-mark
                 group (delq nil (list (if add (list add 'add '(read)))
                                       (if del (list del 'del '(read)))))))))