[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