Message-ID: <email address hidden>
Date: Tue, 27 Dec 2005 16:23:51 -0600
From: Manoj Srivastava <email address hidden>
To: Ivan Raikov <email address hidden>
Cc: <email address hidden>, <email address hidden>
Subject: Re: Bug#344946: gnus: Incoming mail does not get saved to file specified in
mail-crash-crash-box
tags 344946 unreproducible
severity 344946 important
thanks
Hi,
Well, I am not sure what happened here: I am attaching the
mail function that is used to get mail from imap folders.
Note: The removing of stuff asked in mail-source-delete-incoming
happens in `mail-source-callback' -- after the mail has been saved in
a file named after the server, i.e. no old incoming files will be
deleted, unless you receive new mail.
Once the mail has bee4n saved, Incoming files are deleted, and
then the crash box is deleted.
The code looks fine to me. I am reducing the severity since
when the OOM reaps, all kinds of strange things happen.
It would help if you called gnus-bug to report this upstream
as well, and CC <email address hidden>.
thanks,
manoj
,----
| (defun mail-source-fetch-imap (source callback)
| "Fetcher for imap sources."
| (mail-source-bind (imap source)
| (mail-source-run-script
| prescript (format-spec-make ?p password ?t mail-source-crash-box
| ?s server ?P port ?u user)
| prescript-delay)
| (let ((from (format "%s:%s:%s" server user port))
| (found 0)
| (buf (generate-new-buffer " *imap source*"))
| (mail-source-string (format "imap:%s:%s" server mailbox))
| (imap-shell-program (or (list program) imap-shell-program))
| remove)
| (if (and (imap-open server port stream authentication buf)
| (imap-authenticate
| user (or (cdr (assoc from mail-source-password-cache))
| password) buf)
| (imap-mailbox-select mailbox nil buf))
| (let ((coding-system-for-write mail-source-imap-file-coding-system)
| str)
| (with-temp-file mail-source-crash-box
| ;; Avoid converting 8-bit chars from inserted strings to
| ;; multibyte.
| (mm-disable-multibyte)
| ;; remember password
| (with-current-buffer buf
| (when (and imap-password
| (not (assoc from mail-source-password-cache)))
| (push (cons from imap-password) mail-source-password-cache)))
| ;; if predicate is nil, use all uids
| (dolist (uid (imap-search (or predicate "1:*") buf))
| (when (setq str
| (if (imap-capability 'IMAP4rev1 buf)
| (caddar (imap-fetch uid "BODY.PEEK[]"
| 'BODYDETAIL nil buf))
| (imap-fetch uid "RFC822.PEEK" 'RFC822 nil buf)))
| (push uid remove)
| (insert "From imap " (current-time-string) "\n")
| (save-excursion
| (insert str "\n\n"))
| (while (let ((case-fold-search nil))
| (re-search-forward "^From " nil t))
| (replace-match ">From "))
| (goto-char (point-max))))
| (nnheader-ms-strip-cr))
| (incf found (mail-source-callback callback server))
| (mail-source-delete-crash-box)
| (when (and remove fetchflag)
| (setq remove (nreverse remove))
| (imap-message-flags-add
| (imap-range-to-message-set (gnus-compress-sequence remove))
| fetchflag nil buf))
| (if dontexpunge
| (imap-mailbox-unselect buf)
| (imap-mailbox-close nil buf))
| (imap-close buf))
| (imap-close buf)
| ;; We nix out the password in case the error
| ;; was because of a wrong password being given.
| (setq mail-source-password-cache
| (delq (assoc from mail-source-password-cache)
| mail-source-password-cache))
| (error "IMAP error: %s" (imap-error-text buf)))
| (kill-buffer buf)
| (mail-source-run-script
| postscript
| (format-spec-make ?p password ?t mail-source-crash-box
| ?s server ?P port ?u user))
| found)))
`----
--
Eating chocolate is like being in love without the aggravation.
Manoj Srivastava <email address hidden> <http://www.debian.org/%7Esrivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
Message-ID: <email address hidden> crash-box
Date: Tue, 27 Dec 2005 16:23:51 -0600
From: Manoj Srivastava <email address hidden>
To: Ivan Raikov <email address hidden>
Cc: <email address hidden>, <email address hidden>
Subject: Re: Bug#344946: gnus: Incoming mail does not get saved to file specified in
mail-crash-
tags 344946 unreproducible
severity 344946 important
thanks
Hi,
Well, I am not sure what happened here: I am attaching the
mail function that is used to get mail from imap folders.
Note: The removing of stuff asked in mail-source- delete- incoming callback' -- after the mail has been saved in
happens in `mail-source-
a file named after the server, i.e. no old incoming files will be
deleted, unless you receive new mail.
Once the mail has bee4n saved, Incoming files are deleted, and
then the crash box is deleted.
The code looks fine to me. I am reducing the severity since
when the OOM reaps, all kinds of strange things happen.
It would help if you called gnus-bug to report this upstream
as well, and CC <email address hidden>.
thanks,
manoj
,---- fetch-imap (source callback) run-script crash-box new-buffer " *imap source*")) program) ) password- cache)) select mailbox nil buf)) system- for-write mail-source- imap-file- coding- system) crash-box multibyte) buffer buf password- cache)) ) password- cache)) ) time-string) "\n") ms-strip- cr)) callback callback server)) delete- crash-box) flags-add to-message- set (gnus-compress- sequence remove)) unselect buf) password- cache password- cache) password- cache)) run-script crash-box
| (defun mail-source-
| "Fetcher for imap sources."
| (mail-source-bind (imap source)
| (mail-source-
| prescript (format-spec-make ?p password ?t mail-source-
| ?s server ?P port ?u user)
| prescript-delay)
| (let ((from (format "%s:%s:%s" server user port))
| (found 0)
| (buf (generate-
| (mail-source-string (format "imap:%s:%s" server mailbox))
| (imap-shell-program (or (list program) imap-shell-
| remove)
| (if (and (imap-open server port stream authentication buf)
| (imap-authenticate
| user (or (cdr (assoc from mail-source-
| password) buf)
| (imap-mailbox-
| (let ((coding-
| str)
| (with-temp-file mail-source-
| ;; Avoid converting 8-bit chars from inserted strings to
| ;; multibyte.
| (mm-disable-
| ;; remember password
| (with-current-
| (when (and imap-password
| (not (assoc from mail-source-
| (push (cons from imap-password) mail-source-
| ;; if predicate is nil, use all uids
| (dolist (uid (imap-search (or predicate "1:*") buf))
| (when (setq str
| (if (imap-capability 'IMAP4rev1 buf)
| (caddar (imap-fetch uid "BODY.PEEK[]"
| 'BODYDETAIL nil buf))
| (imap-fetch uid "RFC822.PEEK" 'RFC822 nil buf)))
| (push uid remove)
| (insert "From imap " (current-
| (save-excursion
| (insert str "\n\n"))
| (while (let ((case-fold-search nil))
| (re-search-forward "^From " nil t))
| (replace-match ">From "))
| (goto-char (point-max))))
| (nnheader-
| (incf found (mail-source-
| (mail-source-
| (when (and remove fetchflag)
| (setq remove (nreverse remove))
| (imap-message-
| (imap-range-
| fetchflag nil buf))
| (if dontexpunge
| (imap-mailbox-
| (imap-mailbox-close nil buf))
| (imap-close buf))
| (imap-close buf)
| ;; We nix out the password in case the error
| ;; was because of a wrong password being given.
| (setq mail-source-
| (delq (assoc from mail-source-
| mail-source-
| (error "IMAP error: %s" (imap-error-text buf)))
| (kill-buffer buf)
| (mail-source-
| postscript
| (format-spec-make ?p password ?t mail-source-
| ?s server ?P port ?u user))
| found)))
`----
-- www.debian. org/%7Esrivasta />
Eating chocolate is like being in love without the aggravation.
Manoj Srivastava <email address hidden> <http://
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C