Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0-beta3
-
None
-
None
Description
When MimeMessageWrapper.writeTo(...) is called we call saveChanges() everytime even when the messagewas not modified at all. This is not neeed and also can throw exceptions on malformated messages.
See the related stacktrace:
org.apache.james.queue.api.MailQueue$MailQueueException: Unable to enqueue mail;
nested exception is:
javax.mail.internet.ParseException: Expected ';', got "windows-1250"
at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:193)
at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:230)
at org.apache.james.smtpserver.SendMailHandler.onMessage(SendMailHandler.java:64)
at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.processExtensions(DataLineJamesMessageHookHandler.java:178)
at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.onLine(DataLineJamesMessageHookHandler.java:96)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
at org.apache.james.protocols.smtp.core.ReceivedDataLineFilter.onLine(ReceivedDataLineFilter.java:54)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
at org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension.onLine(MailSizeEsmtpExtension.java:147)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
at org.apache.james.protocols.impl.LineHandlerUpstreamHandler.messageReceived(LineHandlerUpstreamHandler.java:57)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69)
at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
Caused by: javax.mail.internet.ParseException: Expected ';', got "windows-1250"
at javax.mail.internet.ParameterList.<init>(ParameterList.java:289)
at javax.mail.internet.ContentType.<init>(ContentType.java:114)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1322)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2106)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2074)
at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:295)
at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:290)
at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:286)
at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:271)
at org.apache.james.core.MimeMessageCopyOnWriteProxy.writeTo(MimeMessageCopyOnWriteProxy.java:184)
at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:161)