You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/03/15 02:00:20 UTC

[james-project] 02/10: JAMES-3720 Fix temporary file leak in email mailrepository reading

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch 3.7.x
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit be9af002b5ee0ffe6ce6ac979d2b80dd22943524
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Mar 4 17:14:40 2022 +0700

    JAMES-3720 Fix temporary file leak in email mailrepository reading
    
    (cherry picked from commit 6b30828505d26dfd85157a64df680978afeca791)
---
 .../webadmin/service/MailRepositoryStoreService.java    | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
index 50fa761..fec065e 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java
@@ -29,6 +29,7 @@ import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
@@ -86,13 +87,21 @@ public class MailRepositoryStoreService {
     }
 
     public Optional<MailDto> retrieveMail(MailRepositoryPath path, MailKey mailKey, Set<AdditionalField> additionalAttributes) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException, InaccessibleFieldException {
-        return fecthMail(path, mailKey)
-            .map(Throwing.function((Mail mail) -> MailDto.fromMail(mail, additionalAttributes)).sneakyThrow());
+        Optional<Mail> mail = fecthMail(path, mailKey);
+        try {
+            return mail.map(Throwing.function((Mail aMail) -> MailDto.fromMail(aMail, additionalAttributes)).sneakyThrow());
+        } finally {
+            LifecycleUtil.dispose(mail);
+        }
     }
 
     public Optional<MimeMessage> retrieveMessage(MailRepositoryPath path, MailKey mailKey) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
-        return fecthMail(path, mailKey)
-            .map(Throwing.function(Mail::getMessage).sneakyThrow());
+        Optional<Mail> mail = fecthMail(path, mailKey);
+        try {
+            return mail.map(Throwing.function(Mail::getMessage).sneakyThrow());
+        } finally {
+            LifecycleUtil.dispose(mail);
+        }
     }
 
     public void deleteMail(MailRepositoryPath path, MailKey mailKey) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org