From 6c22e6bec5079974c615db5b49fd61c1a7c6d70e Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Wed, 18 Nov 2020 11:10:35 +0100 Subject: [PATCH] Fix bug where Consumer() would close on failed sendErrorMail() --- src/main/java/dslab/mailbox/DMAPConnection.java | 15 +++++++++++---- src/main/java/dslab/mailbox/DMTPConnection.java | 2 ++ src/main/java/dslab/transfer/TransferServer.java | 4 +--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/dslab/mailbox/DMAPConnection.java b/src/main/java/dslab/mailbox/DMAPConnection.java index 7730e5d..6e6fcbd 100644 --- a/src/main/java/dslab/mailbox/DMAPConnection.java +++ b/src/main/java/dslab/mailbox/DMAPConnection.java @@ -48,13 +48,21 @@ public class DMAPConnection implements Runnable { listMessages(); } else if ("delete".equals(userInput.split("\\s+")[0])) { if (userInput.split("\\s+").length == 2) { - deleteMessage(userInput.split("\\s+")[1]); + try { + deleteMessage(userInput.split("\\s+")[1]); + } catch (MessageNotFoundException e) { + out.println(e.getMessage()); + } } else { out.println("Please supply a message id to delete!"); } } else if ("show".equals(userInput.split("\\s+")[0])) { if (userInput.split("\\s+").length == 2) { - showMessage(userInput.split("\\s+")[1]); + try { + showMessage(userInput.split("\\s+")[1]); + } catch (MessageNotFoundException e) { + out.println(e.getMessage()); + } } else { out.println("Please supply a message id to show!"); } @@ -70,8 +78,6 @@ public class DMAPConnection implements Runnable { logger.severe("Failed to get IO-Stream"); e.printStackTrace(); shutdown(); - } catch (MessageNotFoundException e) { - out.println(e.getMessage()); } } @@ -164,6 +170,7 @@ public class DMAPConnection implements Runnable { for (Message m : storage.get(currentUser)) { if (m.getId() == i) { storage.get(currentUser).remove(m); + out.println("ok"); return; } } diff --git a/src/main/java/dslab/mailbox/DMTPConnection.java b/src/main/java/dslab/mailbox/DMTPConnection.java index 3a221d2..d99ff27 100644 --- a/src/main/java/dslab/mailbox/DMTPConnection.java +++ b/src/main/java/dslab/mailbox/DMTPConnection.java @@ -9,6 +9,7 @@ import java.io.*; import java.net.Socket; import java.net.SocketException; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @@ -64,6 +65,7 @@ public class DMTPConnection implements Runnable { } else if ("to".equals(userInput.split("\\s+")[0])) { msg.setTo(new ArrayList<>()); String[] emailAddresses = userInput.split("\\s+")[1].split(","); + logger.info("Split EMail addresses: " + Arrays.toString(emailAddresses)); int count = 0; try { for (String emailAddress : emailAddresses) { diff --git a/src/main/java/dslab/transfer/TransferServer.java b/src/main/java/dslab/transfer/TransferServer.java index b3de8e0..d32e81c 100644 --- a/src/main/java/dslab/transfer/TransferServer.java +++ b/src/main/java/dslab/transfer/TransferServer.java @@ -162,12 +162,10 @@ public class TransferServer implements ITransferServer, Runnable { try { port = domainLookup(recipient); logger.info("Domain lookup successful. Port is: " + port); + replayMessage(msg, port); } catch (UnknownDomain e) { sendErrorMail(msg, e.getMessage()); - shutdown(); - continue; } - replayMessage(msg, port); } lock.notify(); }