Escape the input, not the output
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Apr 2015 17:15:53 +0000 (19:15 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Apr 2015 17:15:53 +0000 (19:15 +0200)
src/main/java/net/pterodactylus/irc/DefaultConnection.java

index 194caf7..dd6955c 100644 (file)
@@ -316,7 +316,7 @@ public class DefaultConnection extends AbstractExecutionThreadService implements
                        while (connected) {
                                Reply reply = connectionHandler.readReply();
                                eventBus.post(new ReplyReceived(this, reply));
-                               logger.trace(String.format("<< %s", reply));
+                               logger.trace(String.format("<< %s", addEscapeCharacters(reply.toString())));
                                String command = reply.command();
                                List<String> parameters = reply.parameters();
 
@@ -378,6 +378,18 @@ public class DefaultConnection extends AbstractExecutionThreadService implements
        // PRIVATE METHODS
        //
 
+       private String addEscapeCharacters(String line) {
+               StringBuilder escaped = new StringBuilder();
+               for (char c : line.toCharArray()) {
+                       if (c < 32) {
+                               escaped.append("\\CTRL[").append((int) c).append("]");
+                       } else {
+                               escaped.append(c);
+                       }
+               }
+               return escaped.toString();
+       }
+
        /**
         * Returns an item from the list, or {@link Optional#empty()} if the list is
         * shorter than required for the given index.
@@ -500,23 +512,11 @@ public class DefaultConnection extends AbstractExecutionThreadService implements
                                commandBuilder.append(parameter);
                        }
 
-                       logger.trace(String.format(">> %s", addEscapeCharacters(commandBuilder)));
+                       logger.trace(String.format(">> %s", commandBuilder));
                        outputStream.write((commandBuilder.toString() + "\r\n").getBytes("UTF-8"));
                        outputStream.flush();
                }
 
-               private String addEscapeCharacters(StringBuilder commandBuilder) {
-                       StringBuilder escaped = new StringBuilder();
-                       for (char c : commandBuilder.toString().toCharArray()) {
-                               if (c < 32) {
-                                       escaped.append("\\CTRL[").append((int) c).append("]");
-                               } else {
-                                       escaped.append(c);
-                               }
-                       }
-                       return escaped.toString();
-               }
-
                /**
                 * Reads a line of reply from the connection.
                 *