voodoodyne / subethasmtp

SubEtha SMTP is a Java library for receiving SMTP mail
Other
343 stars 138 forks source link

rejecting a recipient causes an IllegalStateException #56

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I have a handler that's set to reject any emails from a certain address, let's 
say it's "dan".

If I connect and send a "MAIL FROM: dan" I (correctly) get a "554 Transaction 
failed".

In subetha-3.1.6 if I sent another "MAIL FROM: bob" everything would work fine 
-- I could continue my mail transaction.

In subetha-3.1.7 if I send another "MAIL FROM: bob" I get "421 4.3.0 Mail 
system failure, closing transmission channel" and the connection is closed.

And in the server log I see this:

Exception in thread "pool-1-thread-1" java.lang.IllegalStateException: Mail 
transaction is already in progress
        at org.subethamail.smtp.server.Session.startMailTransaction(Session.java:500)
    at org.subethamail.smtp.command.MailCommand.execute(MailCommand.java:85)
    at org.subethamail.smtp.server.RequireTLSCommandWrapper.execute(RequireTLSCommandWrapper.java:30)
    at org.subethamail.smtp.server.CommandHandler.handleCommand(CommandHandler.java:99)
        at org.subethamail.smtp.server.Session.runCommandLoop(Session.java:244)
    at org.subethamail.smtp.server.Session.run(Session.java:145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

Original issue reported on code.google.com by danlarki...@gmail.com on 15 Jan 2013 at 6:16

GoogleCodeExporter commented 9 years ago
Fixed in revision 472 by rolling back the transaction start if the 
MessageHandler rejects the MAIL command.

Original comment by hontvari@flyordie.com on 12 May 2013 at 12:47