You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/06/25 08:03:22 UTC

[logging-log4j2] branch release-2.x updated: LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new fb747ab  LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)
fb747ab is described below

commit fb747abea62509294dc2060536f1f1b50318f3b4
Author: Markus Spann <ma...@hotmail.com>
AuthorDate: Fri Jun 25 10:03:13 2021 +0200

    LOG4J2-3107 SmtpManager.createManagerName() ignores port (#528)
---
 .../apache/logging/log4j/core/net/SmtpManager.java | 23 +++++++++++-----------
 .../logging/log4j/core/net/SmtpManagerTest.java    | 19 ++++++++++++++++++
 src/changes/changes.xml                            |  3 +++
 3 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index 323c5a8..a8ccb7e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -49,7 +49,6 @@ import org.apache.logging.log4j.core.layout.AbstractStringLayout.Serializer;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.core.util.CyclicBuffer;
-import org.apache.logging.log4j.core.util.NameUtil;
 import org.apache.logging.log4j.core.util.NetUtils;
 import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.util.PropertiesUtil;
@@ -107,7 +106,7 @@ public class SmtpManager extends AbstractManager {
             protocol = "smtp";
         }
 
-        final String name = createManagerName(to, cc, bcc, from, replyTo, subject, protocol, host, username, password, isDebug, filterName);
+        final String name = createManagerName(to, cc, bcc, from, replyTo, subject, protocol, host, port, username, isDebug, filterName);
         final Serializer subjectSerializer = PatternLayout.newSerializerBuilder().setConfiguration(config).setPattern(subject).build();
 
         return getManager(name, FACTORY, new FactoryData(to, cc, bcc, from, replyTo, subjectSerializer,
@@ -115,7 +114,13 @@ public class SmtpManager extends AbstractManager {
 
     }
 
-    private static String createManagerName(
+    /**
+     * Creates a unique-per-configuration name for an smtp manager using the specified the parameters.<br>
+     * Using such a name allows us to maintain singletons per unique configurations.
+     *
+     * @return smtp manager name
+     */
+    static String createManagerName(
             final String to,
             final String cc,
             final String bcc,
@@ -124,8 +129,8 @@ public class SmtpManager extends AbstractManager {
             final String subject,
             final String protocol,
             final String host,
+            final int port,
             final String username,
-            final String password,
             final boolean isDebug,
             final String filterName) {
 
@@ -155,20 +160,14 @@ public class SmtpManager extends AbstractManager {
             sb.append(subject);
         }
         sb.append(':');
-        sb.append(protocol).append(':').append(host).append(':').append("port").append(':');
+        sb.append(protocol).append(':').append(host).append(':').append(port).append(':');
         if (username != null) {
             sb.append(username);
         }
-        sb.append(':');
-        if (password != null) {
-            sb.append(password);
-        }
         sb.append(isDebug ? ":debug:" : "::");
         sb.append(filterName);
 
-        final String hash = NameUtil.md5(sb.toString());
-        return "SMTP:" + hash;
-
+        return "SMTP:" + sb.toString();
     }
 
     /**
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java
new file mode 100644
index 0000000..e19e76f
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SmtpManagerTest.java
@@ -0,0 +1,19 @@
+package org.apache.logging.log4j.core.net;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Unit tests for {@link SmtpManager}.
+ */
+class SmtpManagerTest {
+
+    @Test
+    void testCreateManagerName() {
+        String managerName = SmtpManager.createManagerName("to", "cc", null, "from", null, "LOG4J2-3107",
+                "proto", "smtp.log4j.com", 4711, "username", false, "filter");
+        assertEquals("SMTP:to:cc::from::LOG4J2-3107:proto:smtp.log4j.com:4711:username::filter", managerName);
+    }
+
+}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3a78751..6b35a21 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -69,6 +69,9 @@
         Allow a PatternSelector to be specified on GelfLayout.
       </action>
       <!-- FIXES -->
+      <action issue="LOG4J2-3107" dev="vy" type="fix" due-to="Markus Spann">
+        SmtpManager.createManagerName ignores port.
+      </action>
       <action issue="LOG4J2-3080" dev="vy" type="fix">
         Use SimpleMessage in Log4j 1 Category whenever possible.
       </action>