This is an automated email from the ASF dual-hosted git repository. Arsnael pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit c2700af5cdd3b86b323f456419acf0de08dd7e6d Author: Benoit TELLIER <[email protected]> AuthorDate: Thu Apr 23 15:57:14 2026 +0200 [FIX] Improve leak management when error occurs --- .../org/apache/james/server/core/MimeMessageWrapper.java | 15 ++++++++++----- .../org/apache/james/smtpserver/JamesDataCmdHandler.java | 9 +++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java index 2e6f2e64bc..8e1027eb24 100644 --- a/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java +++ b/server/container/core/src/main/java/org/apache/james/server/core/MimeMessageWrapper.java @@ -158,11 +158,16 @@ public class MimeMessageWrapper extends MimeMessage implements Disposable { saved = true; } else { MimeMessageInputStreamSource src = MimeMessageInputStreamSource.create("MailCopy-" + UUID.randomUUID().toString()); - OutputStream out = src.getWritableOutputStream(); - original.writeTo(out); - out.close(); - source = src; - saved = true; + try { + OutputStream out = src.getWritableOutputStream(); + original.writeTo(out); + out.close(); + source = src; + saved = true; + } catch (IOException ex) { + src.dispose(); + throw ex; + } } } catch (IOException ex) { diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java index 629ba7fad0..36ba100d12 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java @@ -52,8 +52,13 @@ public class JamesDataCmdHandler extends DataCmdHandler { protected SMTPResponse doDATA(SMTPSession session, String argument) { try { MimeMessageInputStreamSource mmiss = MimeMessageInputStreamSource.create(MailImpl.getId()); - ExtendedSMTPSession extendedSMTPSession = (ExtendedSMTPSession) session; - extendedSMTPSession.setMimeMessageInputStreamSource(mmiss); + try { + ExtendedSMTPSession extendedSMTPSession = (ExtendedSMTPSession) session; + extendedSMTPSession.setMimeMessageInputStreamSource(mmiss); + } catch (Exception e) { + mmiss.dispose(); + throw e; + } } catch (Exception e) { LOGGER.warn("Error creating mimemessagesource for incoming data", e); return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unexpected error preparing to receive DATA."); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
