diff --git a/src/main/java/edu/unl/cse/csce361/socket_chat/Chat.java b/src/main/java/edu/unl/cse/csce361/socket_chat/Chat.java index 880ca66365fffdf0daf1f25bd13004fcdd32cb2f..79d87d71a31e3d99b28ba82eb370fbac8b37b943 100644 --- a/src/main/java/edu/unl/cse/csce361/socket_chat/Chat.java +++ b/src/main/java/edu/unl/cse/csce361/socket_chat/Chat.java @@ -220,7 +220,7 @@ public class Chat { PrintStream remoteOutput) { // "Connection established. Host goes first." System.out.println(bundle.getString("connection.info.ready")); - String message; + String message = ""; boolean keepTalking = true; boolean myTurnToTalk = isHost; try { @@ -229,13 +229,11 @@ public class Chat { if (myTurnToTalk) { message = localInput.readLine(); remoteOutput.println(encipher(message)); - keepTalking = !keywords.contains(message) || handleKeyword(message, localInput, localOutput); } else { String encipheredMessage = remoteInput.readLine(); if (encipheredMessage != null) { message = decipher(encipheredMessage); localOutput.println(message); - keepTalking = !keywords.contains(message) || handleKeyword(message, localInput, localOutput); } else { // "Received null message: lost connection to remote chatter. Terminating." localOutput.println(bundle.getString("communicate.error.nullMessageFromRemote")); @@ -247,6 +245,9 @@ public class Chat { localOutput.println(bundle.getString("communicate.error.cannotSendMessage")); keepTalking = false; } + if (keepTalking && keywords.contains(message)) { + keepTalking = handleKeyword(message, myTurnToTalk, localInput, localOutput); + } myTurnToTalk = !myTurnToTalk; } } catch (IOException ioException) { @@ -255,12 +256,12 @@ public class Chat { } } - private boolean handleKeyword(String keyword, BufferedReader input, PrintStream output) { + private boolean handleKeyword(String keyword, boolean fromRemote, BufferedReader input, PrintStream output) { if (keyword.equals(bundle.getString("communicate.keyword.exit"))) { return false; /* } else if (keyword.equals(bundle.getString("communicate.keyword.setLocale"))) { - if (isHost) { + if (fromRemote) { Prompt user using output.println() (be sure to use i18n properties) and get response using input.readLine(). Get the appropriate Locale and call setLocale( ... );