GNU logs - #76783, boring messages


Message sent to larsi@HIDDEN, bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#76783: [PATCH] Keep IMAP connection opened with nnml
Resent-From: Manuel Giraud <manuel@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: larsi@HIDDEN, bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 06 Mar 2025 16:13:02 +0000
Resent-Message-ID: <handler.76783.B.174127753013320 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 76783
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 76783 <at> debbugs.gnu.org
Cc: Lars Magne Ingebrigtsen <larsi@HIDDEN>
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
X-Debbugs-Original-Xcc: Lars Magne Ingebrigtsen <larsi@HIDDEN>
Received: via spool by submit <at> debbugs.gnu.org id=B.174127753013320
          (code B ref -1); Thu, 06 Mar 2025 16:13:02 +0000
Received: (at submit) by debbugs.gnu.org; 6 Mar 2025 16:12:10 +0000
Received: from localhost ([127.0.0.1]:44903 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tqDpS-0003Sm-1p
	for submit <at> debbugs.gnu.org; Thu, 06 Mar 2025 11:12:10 -0500
Received: from lists.gnu.org ([2001:470:142::17]:38980)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <manuel@HIDDEN>)
 id 1tqDpO-0003Qf-JH
 for submit <at> debbugs.gnu.org; Thu, 06 Mar 2025 11:12:07 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <manuel@HIDDEN>)
 id 1tqDp5-00071u-Jb
 for bug-gnu-emacs@HIDDEN; Thu, 06 Mar 2025 11:11:47 -0500
Received: from ledu-giraud.fr ([51.159.28.247])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <manuel@HIDDEN>)
 id 1tqDp3-00018S-BS
 for bug-gnu-emacs@HIDDEN; Thu, 06 Mar 2025 11:11:47 -0500
DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=f8/BDhTI
 2SQpem0TNR5VVVaxpZF8FonyAwtaxNLSJ98=; h=date:subject:to:from; 
 d=ledu-giraud.fr;
 b=WeNESyWAC7dK9lAXpH/CowbZV/EQVJ2VefWj0Qxu4SdoNSD+H0
 zASm+r2AVAVAYvYnJ6/aQhWRW/Y+HIBYkiDw==
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=f8/BDhTI2SQpem0T
 NR5VVVaxpZF8FonyAwtaxNLSJ98=; h=date:subject:to:from;
 d=ledu-giraud.fr; b=fxZtZMFTV9RM0p9fc/L52wX4Bd4Ix1KLQpmj7q8cBNZ4O3QKzK
 9jaHjqAZ/j/D6jAlAPXSzwEAGzwSiWgYpKlaGBGhEM6M/jsDhJlkTuSxKdZB+cZiopijlY
 BHY7zwHF9+R5Y34UQoE9lag4+Sq2dXNtDx3ECyveAYBEupvKGphKPksOt8gH18ursExfsP
 GrULM06nKJXn9eNrT/gV1R32iqWn/r/H+2YTDAl1V8VD1+96XRwDPjgqlCJYXydH6PVNL6
 WKzZ4yfXXfyScTcCo4ubGm0GPCUu2SbtFCyhz/aWFhlNllXs5o+L0+5IXjkEVAnjDrb06J
 Oz8iYsI4lNIw==
Received: from computer (<unknown> [10.1.1.1])
 by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id d4e51acc
 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for <bug-gnu-emacs@HIDDEN>;
 Thu, 6 Mar 2025 17:11:42 +0100 (CET)
From: Manuel Giraud <manuel@HIDDEN>
Date: Thu, 06 Mar 2025 17:11:41 +0100
Message-ID: <87a59y3zr6.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Received-SPF: pass client-ip=51.159.28.247; envelope-from=manuel@HIDDEN;
 helo=ledu-giraud.fr
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.1 (/)

--=-=-=
Content-Type: text/plain

Tags: patch

Hi,

Here is a patch that permits a Gnus/nnml user to define the name of the
buffer for IMAP communication.  Like this, for instance:

(setq mail-sources '((imap :server "example.com"
                           :stream tls
			   :buffer " *imap example.com*")))
                           
Doing so, said buffer will be kept connected for the entire Gnus
session.  FWIW, I'm using it right now and it seems like a quite
effective way to speed up mail retrieving (even better with multiple
IMAP servers).

I have no use for this myself but I guess that this feature could also
be extended to POP servers.

In GNU Emacs 31.0.50 (build 22, x86_64-unknown-openbsd7.6, X toolkit) of
 2025-03-06 built on computer
Repository revision: fe7a8c92be6269f8fc7933eb6c190178839d0f8a
Repository branch: mgi/mail-source-keep-connect
Windowing system distributor 'The X.Org Foundation', version 11.0.12101015
System Description: OpenBSD computer 7.6 GENERIC.MP#567 amd64

Configured using:
 'configure CC=egcc CPPFLAGS=-I/usr/local/include
 LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs
 --bindir=/home/manuel/bin --with-x-toolkit=lucid
 --with-toolkit-scroll-bars=no --without-cairo
 --without-compress-install'


--=-=-=
Content-Type: text/patch
Content-Disposition: attachment;
 filename=0001-Keep-IMAP-connection-opened-with-nnml.patch

From 75f85630179d09ccc058c6771415c6bff59f618c Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@HIDDEN>
Date: Thu, 6 Mar 2025 15:40:48 +0100
Subject: [PATCH] Keep IMAP connection opened with nnml

* lisp/gnus/mail-source.el (mail-source-fetch-imap): Keep
connection opened when user provide a buffer name.
* lisp/gnus/nnml.el (nnml-connected-buffer-list): New variable
of connected buffers.
(nnml-request-close): New function that closes connected buffers
when quitting Gnus.
* doc/misc/gnus.texi (Mail Source Specifiers): Document the
feature.
---
 doc/misc/gnus.texi       |  8 ++++++++
 lisp/gnus/mail-source.el | 28 ++++++++++++++++++++--------
 lisp/gnus/nnml.el        | 12 ++++++++++++
 3 files changed, 40 insertions(+), 8 deletions(-)

diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a239a8a628b..9a003d0c3a6 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -15408,6 +15408,14 @@ Mail Source Specifiers
 If non-@code{nil}, don't remove all articles marked as deleted in the
 mailbox after finishing the fetch.
 
+@item :buffer
+The name of the buffer used to communicate with the @acronym{IMAP}
+server.  By default, Gnus creates such a buffer on the fly and kills it
+after having retrieved some mails.  By setting this option, the
+connection with the server is kept open for the entire Gnus session.
+Preferably, you would use a buffer name starting with the space
+character to avoid it being list in @code{list-buffers} for instance.
+
 @end table
 
 An example @acronym{IMAP} mail source:
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 954dce92e84..f4685af0f72 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -349,6 +349,7 @@ mail-source-new-mail-available
        (:mailbox "INBOX")
        (:predicate "UNSEEN UNDELETED")
        (:fetchflag "\\Deleted")
+       (:buffer)
        (:prescript)
        (:prescript-delay)
        (:postscript)
@@ -1034,6 +1035,7 @@ mail-source-fetch-maildir
       found)))
 
 (autoload 'imap-open "imap")
+(autoload 'imap-opened "imap")
 (autoload 'imap-authenticate "imap")
 (autoload 'imap-mailbox-select "imap")
 (autoload 'imap-mailbox-unselect "imap")
@@ -1046,6 +1048,7 @@ mail-source-fetch-maildir
 (autoload 'imap-list-to-message-set "imap")
 (autoload 'imap-range-to-message-set "imap")
 (autoload 'nnheader-ms-strip-cr "nnheader")
+(autoload 'nnml-connected-buffer-list "nnml")
 
 (defvar mail-source-imap-file-coding-system 'binary
   "Coding system for the crashbox made by `mail-source-fetch-imap'.")
@@ -1063,14 +1066,21 @@ mail-source-fetch-imap
      prescript-delay)
     (let ((from (format "%s:%s:%s" server user port))
 	  (found 0)
-	  (buf (generate-new-buffer " *imap source*"))
+	  (buf (if buffer
+                   (get-buffer-create buffer)
+                 (generate-new-buffer " *imap source*")))
 	  (imap-shell-program (or (list program) imap-shell-program)))
-      (if (and (imap-open server port stream authentication buf)
-	       (imap-authenticate
-		user (or (cdr (assoc from mail-source-password-cache))
-                         password)
-                buf))
+      (if (or (and buffer (imap-opened buf))
+              (and (imap-open server port stream authentication buf)
+	           (imap-authenticate
+		    user (or (cdr (assoc from mail-source-password-cache))
+                             password)
+                    buf)))
           (let ((mailbox-list (if (listp mailbox) mailbox (list mailbox))))
+            ;; Remember communication buffer if needed.
+            (when (and buffer
+                       (not (member buf nnml-connected-buffer-list)))
+              (push buf nnml-connected-buffer-list))
             (dolist (mailbox mailbox-list)
               (when (imap-mailbox-select mailbox nil buf)
 	        (let ((coding-system-for-write
@@ -1114,7 +1124,9 @@ mail-source-fetch-imap
 	    (if dontexpunge
 		(imap-mailbox-unselect buf)
               (imap-mailbox-close nil buf)))))
-            (imap-close buf))
+            ;; If the user has provided a buffer name keep the
+            ;; connection opened.
+            (unless buffer (imap-close buf)))
 	(imap-close buf)
 	;; We nix out the password in case the error
 	;; was because of a wrong password being given.
@@ -1122,7 +1134,7 @@ mail-source-fetch-imap
 	      (delq (assoc from mail-source-password-cache)
 		    mail-source-password-cache))
 	(error "IMAP error: %s" (imap-error-text buf)))
-      (kill-buffer buf)
+      (unless buffer (kill-buffer buf))
       (mail-source-run-script
        postscript
        `((?p . ,password) (?t . ,mail-source-crash-box)
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 4366391a66d..0e4546cd7bb 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -541,6 +541,18 @@ nnml-set-status
 	(nnmail-replace-status name value))
       t))))
 
+;;;###autoload
+(defvar nnml-connected-buffer-list nil)
+
+(deffoo nnml-request-close ()
+  (let (buf)
+    (while (setq buf (pop nnml-connected-buffer-list))
+      (when (buffer-live-p buf)
+        (with-current-buffer buf
+	  (when (imap-opened)
+	    (imap-close)))
+        (kill-buffer buf)))))
+
 
 ;;; Internal functions.
 
-- 
2.48.1


--=-=-=
Content-Type: text/plain


-- 
Manuel Giraud

--=-=-=--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Manuel Giraud <manuel@HIDDEN>
Subject: bug#76783: Acknowledgement ([PATCH] Keep IMAP connection opened
 with nnml)
Message-ID: <handler.76783.B.174127753013320.ack <at> debbugs.gnu.org>
References: <87a59y3zr6.fsf@HIDDEN>
X-Gnu-PR-Message: ack 76783
X-Gnu-PR-Package: emacs
X-Gnu-PR-Keywords: patch
Reply-To: 76783 <at> debbugs.gnu.org
Date: Thu, 06 Mar 2025 16:13:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

As you requested using X-Debbugs-CC, your message was also forwarded to
  Lars Magne Ingebrigtsen <larsi@HIDDEN>
(after having been given a bug report number, if it did not have one).

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 76783 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
76783: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D76783
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#76783: [PATCH] Keep IMAP connection opened with nnml
Resent-From: Manuel Giraud <manuel@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 07 Mar 2025 09:45:02 +0000
Resent-Message-ID: <handler.76783.B76783.174134066910040 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 76783
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 76783 <at> debbugs.gnu.org
Cc: Lars Magne Ingebrigtsen <larsi@HIDDEN>
Received: via spool by 76783-submit <at> debbugs.gnu.org id=B76783.174134066910040
          (code B ref 76783); Fri, 07 Mar 2025 09:45:02 +0000
Received: (at 76783) by debbugs.gnu.org; 7 Mar 2025 09:44:29 +0000
Received: from localhost ([127.0.0.1]:47037 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tqUFp-0002bs-1o
	for submit <at> debbugs.gnu.org; Fri, 07 Mar 2025 04:44:29 -0500
Received: from ledu-giraud.fr ([51.159.28.247]:2660)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <manuel@HIDDEN>)
 id 1tqUFm-0002bi-CY
 for 76783 <at> debbugs.gnu.org; Fri, 07 Mar 2025 04:44:27 -0500
DKIM-Signature: v=1; a=ed25519-sha256; c=simple/simple; s=ed25519; bh=WA/7YTxL
 Zfpw1FirEB9Y9oKva45z5LqjyoTJ3YWjMf4=;
 h=date:references:in-reply-to:
 subject:cc:to:from; d=ledu-giraud.fr; b=qnZxxNz4yFyup71Tnya2tq2yQHpJ9b
 WxfUa/RYeTCBUlt1q18+wTFCr+6WifTIR+L5x+VgxtONPslLfSN6ZMDQ==
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=rsa; bh=WA/7YTxLZfpw1Fir
 EB9Y9oKva45z5LqjyoTJ3YWjMf4=;
 h=date:references:in-reply-to:subject:
 cc:to:from; d=ledu-giraud.fr; b=C2zsPlQLyL+w6rNj0XnB8wi9SCZH/iAvoAQexF
 kLxWPk0oFgDNLtNAEd/jYFSgKmIUPlbDLB8hRHUDEuFk4nUHhmmKKBaWqdGftX8A5kqi1s
 Unntt+gQi8xq4muV3ApiU6JJ8MCSdr2yFmEJhKOH+MwMsJxaIk5FuNmfp3tTQCCfLvUH5M
 GEFsmJxKx5eb+GEiOgJmFMQLMaBmY4JOt89IqHuVTgR1Mf6f+p6gFqqqejFgdHq4tr9stP
 WFkrTFKoQlgB+6M9V9UgULprl/POBB2gjb/c1j9zgC0lxBkZtemouM5TaKJppIURcuTuCp
 rpun9ZVrB+I/Vm403HqShn0Q==
Received: from computer (2630.fr [82.65.148.221])
 by ledu-giraud.fr (OpenSMTPD) with ESMTPSA id b466fd96
 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); 
 Fri, 7 Mar 2025 10:44:19 +0100 (CET)
From: Manuel Giraud <manuel@HIDDEN>
In-Reply-To: <87a59y3zr6.fsf@HIDDEN>
References: <87a59y3zr6.fsf@HIDDEN>
Date: Fri, 07 Mar 2025 10:44:17 +0100
Message-ID: <87plitmaz2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Hi,

Please consider this new version instead in which I simplified
`nnml-request-close' a bit.

--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-Keep-IMAP-connection-opened-with-nnml.patch

From 426b31e1fc6b5a098445779084424c07bbc8282d Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@HIDDEN>
Date: Thu, 6 Mar 2025 15:40:48 +0100
Subject: [PATCH] Keep IMAP connection opened with nnml

* lisp/gnus/mail-source.el (mail-source-fetch-imap): Keep
connection opened when user provide a buffer name.
* lisp/gnus/nnml.el (nnml-connected-buffer-list): New variable
of connected buffers.
(nnml-request-close): New function that closes connected buffers
when quitting Gnus.
* doc/misc/gnus.texi (Mail Source Specifiers): Document the
feature.
---
 doc/misc/gnus.texi       |  8 ++++++++
 lisp/gnus/mail-source.el | 28 ++++++++++++++++++++--------
 lisp/gnus/nnml.el        | 14 ++++++++++++++
 3 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a239a8a628b..9a003d0c3a6 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -15408,6 +15408,14 @@ Mail Source Specifiers
 If non-@code{nil}, don't remove all articles marked as deleted in the
 mailbox after finishing the fetch.
 
+@item :buffer
+The name of the buffer used to communicate with the @acronym{IMAP}
+server.  By default, Gnus creates such a buffer on the fly and kills it
+after having retrieved some mails.  By setting this option, the
+connection with the server is kept open for the entire Gnus session.
+Preferably, you would use a buffer name starting with the space
+character to avoid it being list in @code{list-buffers} for instance.
+
 @end table
 
 An example @acronym{IMAP} mail source:
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 954dce92e84..f4685af0f72 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -349,6 +349,7 @@ mail-source-new-mail-available
        (:mailbox "INBOX")
        (:predicate "UNSEEN UNDELETED")
        (:fetchflag "\\Deleted")
+       (:buffer)
        (:prescript)
        (:prescript-delay)
        (:postscript)
@@ -1034,6 +1035,7 @@ mail-source-fetch-maildir
       found)))
 
 (autoload 'imap-open "imap")
+(autoload 'imap-opened "imap")
 (autoload 'imap-authenticate "imap")
 (autoload 'imap-mailbox-select "imap")
 (autoload 'imap-mailbox-unselect "imap")
@@ -1046,6 +1048,7 @@ mail-source-fetch-maildir
 (autoload 'imap-list-to-message-set "imap")
 (autoload 'imap-range-to-message-set "imap")
 (autoload 'nnheader-ms-strip-cr "nnheader")
+(autoload 'nnml-connected-buffer-list "nnml")
 
 (defvar mail-source-imap-file-coding-system 'binary
   "Coding system for the crashbox made by `mail-source-fetch-imap'.")
@@ -1063,14 +1066,21 @@ mail-source-fetch-imap
      prescript-delay)
     (let ((from (format "%s:%s:%s" server user port))
 	  (found 0)
-	  (buf (generate-new-buffer " *imap source*"))
+	  (buf (if buffer
+                   (get-buffer-create buffer)
+                 (generate-new-buffer " *imap source*")))
 	  (imap-shell-program (or (list program) imap-shell-program)))
-      (if (and (imap-open server port stream authentication buf)
-	       (imap-authenticate
-		user (or (cdr (assoc from mail-source-password-cache))
-                         password)
-                buf))
+      (if (or (and buffer (imap-opened buf))
+              (and (imap-open server port stream authentication buf)
+	           (imap-authenticate
+		    user (or (cdr (assoc from mail-source-password-cache))
+                             password)
+                    buf)))
           (let ((mailbox-list (if (listp mailbox) mailbox (list mailbox))))
+            ;; Remember communication buffer if needed.
+            (when (and buffer
+                       (not (member buf nnml-connected-buffer-list)))
+              (push buf nnml-connected-buffer-list))
             (dolist (mailbox mailbox-list)
               (when (imap-mailbox-select mailbox nil buf)
 	        (let ((coding-system-for-write
@@ -1114,7 +1124,9 @@ mail-source-fetch-imap
 	    (if dontexpunge
 		(imap-mailbox-unselect buf)
               (imap-mailbox-close nil buf)))))
-            (imap-close buf))
+            ;; If the user has provided a buffer name keep the
+            ;; connection opened.
+            (unless buffer (imap-close buf)))
 	(imap-close buf)
 	;; We nix out the password in case the error
 	;; was because of a wrong password being given.
@@ -1122,7 +1134,7 @@ mail-source-fetch-imap
 	      (delq (assoc from mail-source-password-cache)
 		    mail-source-password-cache))
 	(error "IMAP error: %s" (imap-error-text buf)))
-      (kill-buffer buf)
+      (unless buffer (kill-buffer buf))
       (mail-source-run-script
        postscript
        `((?p . ,password) (?t . ,mail-source-crash-box)
diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el
index 4366391a66d..6db5031d181 100644
--- a/lisp/gnus/nnml.el
+++ b/lisp/gnus/nnml.el
@@ -541,6 +541,20 @@ nnml-set-status
 	(nnmail-replace-status name value))
       t))))
 
+;;;###autoload
+(defvar nnml-connected-buffer-list nil)
+
+(deffoo nnml-request-close ()
+  (let (buf)
+    (while (setq buf (pop nnml-connected-buffer-list))
+      (when (buffer-live-p buf)
+        (imap-close buf)
+        ;; On the safe side: kill any leftover process.
+        (let ((proc (get-buffer-process buf)))
+          (when proc
+            (delete-process proc)))
+        (kill-buffer buf)))))
+
 
 ;;; Internal functions.
 
-- 
2.48.1


--=-=-=
Content-Type: text/plain

-- 
Manuel Giraud

--=-=-=--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#76783: [PATCH] Keep IMAP connection opened with nnml
Resent-From: Stefan Kangas <stefankangas@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 07 Mar 2025 16:41:02 +0000
Resent-Message-ID: <handler.76783.B76783.174136560224442 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 76783
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Manuel Giraud <manuel@HIDDEN>, 76783 <at> debbugs.gnu.org
Cc: Andrew Cohen <acohen@HIDDEN>, Eric Abrahamsen <eric@HIDDEN>, Lars Magne Ingebrigtsen <larsi@HIDDEN>
Received: via spool by 76783-submit <at> debbugs.gnu.org id=B76783.174136560224442
          (code B ref 76783); Fri, 07 Mar 2025 16:41:02 +0000
Received: (at 76783) by debbugs.gnu.org; 7 Mar 2025 16:40:02 +0000
Received: from localhost ([127.0.0.1]:49761 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tqajx-0006Lw-9B
	for submit <at> debbugs.gnu.org; Fri, 07 Mar 2025 11:40:01 -0500
Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]:52309)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>)
 id 1tqajv-0006Lj-CY
 for 76783 <at> debbugs.gnu.org; Fri, 07 Mar 2025 11:39:59 -0500
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-abfe7b5fbe8so274844466b.0
 for <76783 <at> debbugs.gnu.org>; Fri, 07 Mar 2025 08:39:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1741365593; x=1741970393; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=zMFEc55ZhZAz1uMqawtLKqmsmi5/GMiQ5BVJPue6XOM=;
 b=YUnIylo9s7woBh6fzvqrGcL05ho3o9LIF4CYM2nthDpqqgJZlT2NFNF2T09b3vYK1q
 i1SRlQmBH/HhdHZ7ieSe0bcR443z0mevscOOqj8dyeGc0R11asnAsHIA57E11mulWC03
 06XYkf17p7T3hPYD0ESHnXTVOqM+uIVdwJ7kat1XmtPhJa/WRRaOZHQ5Pg/eTU6oMU75
 O60U9rOrfrOLnGjkE69MnNgm16R7oWnUdme0Oo2M3ZLgnbPBd4NIUAhKKpNQAPs2tnak
 4z5OWzFGLApzMOmdU/4jBvFxlSb6ye1AN+FGIwvAi69gdSY6QfSgF/TVt8p0zIsi3gYQ
 SXZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1741365593; x=1741970393;
 h=cc:to:subject:message-id:date:mime-version:references:in-reply-to
 :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=zMFEc55ZhZAz1uMqawtLKqmsmi5/GMiQ5BVJPue6XOM=;
 b=ESlYKkfxnzzCp/O8Fl9/518XL0kjOAeH1AuY3mCx1rBbh4AhtjdAvxMYJ63FQ48gb8
 ADCZ+whQ8Bq/ZFJsYmG+Yn5YJ5eCPaL+uLLUNk1T6eJ9RU74z1uL8NL16j4UBW050MTp
 Ybcn8CIGZIjgavzQ2Yh7HMjqRhibVl6wmxwn3b1EfoiGVfhgwK8DCXQPHjYInV1Y1s+x
 5jytK2HERhJtV7npZdyuIE2g12FPD3spv3JhYyoD1Oyx2Ym+HvWX65eZf7UcqpB6d0nY
 BG8Tca9ySU8pGoa0N8zap9P9KqqaowbTIHWBtEnFith0Cvw8XjN7NNVWnen2UVa8CtP4
 FIwA==
X-Forwarded-Encrypted: i=1;
 AJvYcCW0jPeLA5+ft87fFSclncZCn72FRMIgxKveC7JhqHW+mVtKC+9hIgrAlBTrSjex1qtWpuO8wg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx7jU6NxGx+FIRF2ikHmwLwH5pdOZ+B/qwNIjSYvFHed+sVpuk7
 /hEX47UsGwOOmUzMLL4tdtposzSqBb7DHz+kj/7iE9YMWECMtVx5UR8WbSJA53vgN4kyyY23TUO
 2MBIbZ4uyLRADo/cx8IPOGxcKFgs=
X-Gm-Gg: ASbGnct4HJxmnM6pLjBq+HxXN1/pcEbhXjdTLMCvCVeRwbNWErB1ZdGW3R0bv4Lefe4
 JJGnAiYPLYGkJHpJYrKbIaMx5nxcEbQWK2KM8z4ze8SLtcf5CZmOgGcPCyoSTgWNt8hg3i7q6o1
 MtIwcZFDxixnXEB0ujamFrV7jIlw==
X-Google-Smtp-Source: AGHT+IFdRASL5jaPbav7U7D2AKZw6t9kq7O/AMVGBdoTD6K3DMkQmu9sIF98C6bhBaGp20Py/MIbyRiJuqSIBdSHB6E=
X-Received: by 2002:a05:6402:2353:b0:5e5:c0e7:f428 with SMTP id
 4fb4d7f45d1cf-5e5e210296emr10163802a12.0.1741365592961; Fri, 07 Mar 2025
 08:39:52 -0800 (PST)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Fri, 7 Mar 2025 16:39:51 +0000
From: Stefan Kangas <stefankangas@HIDDEN>
In-Reply-To: <87plitmaz2.fsf@HIDDEN>
References: <87a59y3zr6.fsf@HIDDEN> <87plitmaz2.fsf@HIDDEN>
MIME-Version: 1.0
Date: Fri, 7 Mar 2025 16:39:51 +0000
X-Gm-Features: AQ5f1JoUl7EIrMYJBPSJpQR-fL6lAWY7LZKGk16zBUNEGbxGRCRDpF_3326WvP8
Message-ID: <CADwFkm=KQ=+oniOErb0RcTBYAqEpsv=DRwAAZoYon0dkdC201g@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Manuel Giraud <manuel@HIDDEN> writes:

> From 426b31e1fc6b5a098445779084424c07bbc8282d Mon Sep 17 00:00:00 2001
> From: Manuel Giraud <manuel@HIDDEN>
> Date: Thu, 6 Mar 2025 15:40:48 +0100
> Subject: [PATCH] Keep IMAP connection opened with nnml
>
> * lisp/gnus/mail-source.el (mail-source-fetch-imap): Keep
> connection opened when user provide a buffer name.
> * lisp/gnus/nnml.el (nnml-connected-buffer-list): New variable
> of connected buffers.
> (nnml-request-close): New function that closes connected buffers
> when quitting Gnus.
> * doc/misc/gnus.texi (Mail Source Specifiers): Document the
> feature.

Andrew, Eric, could you please take a look at this patch?




Message received at control <at> debbugs.gnu.org:


Received: (at control) by debbugs.gnu.org; 10 Mar 2025 21:07:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 10 17:07:59 2025
Received: from localhost ([127.0.0.1]:40121 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1trkLv-0003rr-Cm
	for submit <at> debbugs.gnu.org; Mon, 10 Mar 2025 17:07:59 -0400
Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]:51263)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <stefankangas@HIDDEN>)
 id 1trkLs-0003rS-Ch
 for control <at> debbugs.gnu.org; Mon, 10 Mar 2025 17:07:56 -0400
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5e61da95244so4097123a12.2
 for <control <at> debbugs.gnu.org>; Mon, 10 Mar 2025 14:07:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1741640870; x=1742245670; darn=debbugs.gnu.org;
 h=to:subject:message-id:date:mime-version:from:from:to:cc:subject
 :date:message-id:reply-to;
 bh=sF1SpkObbCDFcUL5KrVeSesJU+2YrvMtNf5chRkODcY=;
 b=FRd6xfO//8lqfoz7qbNEfRdGSOz+izSEdeJOAq1h92GkrqBcVUye3h1M0pJXfeenN/
 MiPur9lbIAQKgjR7vIL4zYxXaIVeFw3wFJMSGIzdF0y9OoUvvL4so6P3ectfAVhwp+ad
 h8L6YMGODKGkkfFqhFKTvIJRsCwz5SLRs8ynDvovLQa1r2qpEzvpdVVL3wyBhILcQT0a
 tt/6fZffpbY0iH9hQNii9SQPhgOSMgrfmIkX8lroPbE0/iqtr73aKFACl31OZ70feePL
 r+IIIstHnrEV8rcUKoAjBYaI3qmhhFrL2C6tq2rFHm2Q5cIZpb8mhFFWNzijadrxT6BX
 UmCw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1741640870; x=1742245670;
 h=to:subject:message-id:date:mime-version:from:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=sF1SpkObbCDFcUL5KrVeSesJU+2YrvMtNf5chRkODcY=;
 b=KBcgYgHjDzVXMqDH4RJbQnls3g1A9KhlWrBjNeXvS4YIOtjabUIfblJfWS7g6lYUhk
 YiThVQeqHYie1kVOOSwHgWh1pAv7S62vvaCwBXcimsmtlHPzrBpfIX5RNoK97ORUNsFk
 RM5hMM3PbK3BhzciXdPxErYwQMtCwcybDRUpLxwbZoUtyMyh9qWp8G3yWglEzXB/ZLB8
 SEvWgUp4fCu23YFdnb4UcCQzlhYyT2CQtqAgw7fvTmZM7QMaHMgE4+KSmK2bVjXif0Fw
 IDAQtQ+mgpO0+OeQ6g2RN2k3R9pk3OTDfFkjw0QchQEW1qFSkMsgZprXg53UbA9sVjYF
 AzIQ==
X-Gm-Message-State: AOJu0YwOlGb7YdeMqXqMqGrm/stZkw5nx7t+Kqc+A5waEpqKX4ZtX1dw
 8J87siR4Hr/S1PcNIQjX6iL8DoM/rqakw1U2Og+AZ8RI02jPbEbkHuVyJhz2ZLmZzSjJ6GsYnFm
 sex3b1pKFAn9qII154Eq8tLjN/ufaKKR9
X-Gm-Gg: ASbGnctZK6D0dHy/GkjIQmEVGBVjNXQ5zJyidoAEmKu4HGanFSrfcW2u2VHIMTa78oS
 ZuCqpU+81c2C1W8jdKta11HUxCWyX66pLH2aO4IvnHMaewojjaV2KpJY4fjSJol3U00VRhw8O86
 +rTWH1iqUq+KcCTcW7TRy5IGqMMN4=
X-Google-Smtp-Source: AGHT+IEyjqB5WS5dvAjCuhN1qY23u62AfZ9Pu/fmwfNV+35h+5MBYw1+bs3mCZxn8rjaCY6Y3bAiUFfsSo/9gXE5RfM=
X-Received: by 2002:a05:6402:1d54:b0:5de:aa54:dc30 with SMTP id
 4fb4d7f45d1cf-5e5e22989dcmr17726133a12.5.1741640870259; Mon, 10 Mar 2025
 14:07:50 -0700 (PDT)
Received: from 753933720722 named unknown by gmailapi.google.com with
 HTTPREST; Mon, 10 Mar 2025 17:07:50 -0400
From: Stefan Kangas <stefankangas@HIDDEN>
MIME-Version: 1.0
Date: Mon, 10 Mar 2025 17:07:50 -0400
X-Gm-Features: AQ5f1JqXVjsd-dAaFKLwBOJ8ExNNND7haiYsCS_TeCGltDkeJVTVWksTdgbk888
Message-ID: <CADwFkm=oNpoRBpCaTJ_EmeD6ub2pLCy14_aOO+syCfioTqnt=g@HIDDEN>
Subject: control message for bug #76783
To: control <at> debbugs.gnu.org
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: control
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

severity 76783 wishlist
quit





Last modified: Mon, 10 Mar 2025 21:15:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.