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

Re: Timeout Problems



>>>>> "Simon" == Simon Josefsson <jas@pdc.kth.se> writes:

   Simon> Jake Colman <colman@ppllc.com> writes:

   >> What still bother me, however, is that nnimap takes a looong time to
   >> realize that the connection has even been timed out.  I have take to
   >> pressing C-g when I see it taking it too long, forcing a reconnect as
   >> soon as I type in the next command.

   Simon> I can't reproduce this (it reconnects immediately for me), is this
   Simon> a proper step-by-step procedure to trigger this?

   Simon> 1 start gnus
   Simon> 2 wait half an hour or whatever the timeout is
   Simon> 3 enter a nnimap group or pressing `g' or something
   Simon> <here it hangs a looong time before the connection is lost>

Yes.  These are exactly the steps I follow.

   Simon> Could you evaluate `(setq debug-on-quit t)' before #3 and send me
   Simon> the backtrace when you press C-g?


Here is the backtrace:

Signaling: (quit)
  accept-process-output(#<network connection "imap" (143 . "truman") state:exit>)
  (while (< imap-reached-tag tag) (accept-process-output imap-process))
)
  (save-current-buffer (set-buffer (or buffer ...)) (while (< imap-reached-tag tag) (accept-process-output imap-process)) (or (assq tag imap-failed-tags) (quote OK)))
)
  (with-current-buffer (or buffer (current-buffer)) (while (< imap-reached-tag tag) (accept-process-output imap-process)) (or (assq tag imap-failed-tags) (quote OK)))
)
  imap-wait-for-tag(1010 nil)
  imap-send-command-wait("SELECT INBOX")
  (imap-ok-p (imap-send-command-wait (concat ... " " mailbox)))
)
  (if (imap-ok-p (imap-send-command-wait ...)) (setq imap-message-data (make-vector imap-message-prime 0) imap-state (if examine ... ...)) (setq imap-current-mailbox nil imap-message-data nil imap-state (quote auth)))
)
  (if (and (string= mailbox imap-current-mailbox) (or ... ...)) nil (setq imap-current-mailbox mailbox) (if (imap-ok-p ...) (setq imap-message-data ... imap-state ...) (setq imap-current-mailbox nil imap-message-data nil imap-state ...)))
)
  (unless (and (string= mailbox imap-current-mailbox) (or ... ...)) (setq imap-current-mailbox mailbox) (if (imap-ok-p ...) (setq imap-message-data ... imap-state ...) (setq imap-current-mailbox nil imap-message-data nil imap-state ...)))
)
  (save-current-buffer (set-buffer (or buffer ...)) (unless (and ... ...) (setq imap-current-mailbox mailbox) (if ... ... ...)) imap-current-mailbox)
)
  (with-current-buffer (or buffer (current-buffer)) (unless (and ... ...) (setq imap-current-mailbox mailbox) (if ... ... ...)) imap-current-mailbox)
)
  imap-mailbox-select("INBOX" nil nil)
  (if (imap-mailbox-select group nil (gnus-ephemeral-group-p groupname)) (progn (let ... ...)))
)
  (when (imap-mailbox-select group nil (gnus-ephemeral-group-p groupname)) (let (... ... ...) (if ... ... ...)))
)
  (let ((groupname ...)) (if (and imap-current-mailbox ...) (nnimap-expunge-close-group)) (when (imap-mailbox-select group nil ...) (let ... ...)))
)
  (progn (let (...) (if ... ...) (when ... ...)))
)
  (if group (progn (let ... ... ...)))
)
  (when group (let (...) (if ... ...) (when ... ...)))
)
  (save-current-buffer (set-buffer nnimap-server-buffer) (when group (let ... ... ...)) imap-current-mailbox)
)
  (with-current-buffer nnimap-server-buffer (when group (let ... ... ...)) imap-current-mailbox)
)
  (progn (with-current-buffer nnimap-server-buffer (when group ...) imap-current-mailbox))
)
  (if (nnimap-possibly-change-server server) (progn (with-current-buffer nnimap-server-buffer ... imap-current-mailbox)))
)
  (when (nnimap-possibly-change-server server) (with-current-buffer nnimap-server-buffer (when group ...) imap-current-mailbox))
)
  ad-Orig-nnimap-possibly-change-group("INBOX" nil)
  nnimap-possibly-change-group("INBOX")
  (and (setq inbox (pop inboxes)) (nnimap-possibly-change-group inbox))
)
  (while (and (setq inbox ...) (nnimap-possibly-change-group inbox)) (when (setq rule ...) (let ... ...)) (when (imap-mailbox-select inbox) (nnimap-expunge-close-group)))
)
  (let (rule inbox (inboxes ...)) (while (and ... ...) (when ... ...) (when ... ...)) t)
)
  (save-current-buffer (set-buffer nnimap-server-buffer) (let (rule inbox ...) (while ... ... ...) t))
)
  (with-current-buffer nnimap-server-buffer (let (rule inbox ...) (while ... ... ...) t))
)
  (progn (with-current-buffer nnimap-server-buffer (let ... ... t)))
)
  (if (nnimap-possibly-change-server server) (progn (with-current-buffer nnimap-server-buffer ...)))
)
  (when (nnimap-possibly-change-server server) (with-current-buffer nnimap-server-buffer (let ... ... t)))
)
  ad-Orig-nnimap-split-articles("INBOX/Personal/Pegg" "truman")
  nnimap-split-articles("INBOX/Personal/Pegg" "truman")
  ad-Orig-nnimap-request-scan("INBOX/Personal/Pegg" "truman")
  nnimap-request-scan("INBOX/Personal/Pegg" "truman")
  gnus-request-scan("nnimap+truman:INBOX/Personal/Pegg" (nnimap "truman" (nnimap-list-pattern "*")))
  gnus-activate-group("nnimap+truman:INBOX/Personal/Pegg" scan)
  gnus-get-unread-articles(nil)
  gnus-group-get-new-news(nil)
  call-interactively(gnus-group-get-new-news)



   Simon> I've added some more checking on the function that waits for process
   Simon> output in 0.89, could you see if that solve the problem?


When is 0.89 expected?


-- 
Jake Colman                     

Principia Partners LLC                  Phone: (201) 946-0300
Harborside Financial Center               Fax: (201) 946-0320
902 Plaza II                           Beeper: (800) 505-2795
Jersey City, NJ 07311                  E-mail: colman@ppllc.com
                                       E-mail: jcolman@jnc.com
                                          web: http://www.ppllc.com