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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
