Comment 5 for bug 27682

Revision history for this message
Debian Bug Importer (debzilla) wrote :

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