From 4d4cc1db67333de6c69e99c2018e1225daff1017 Mon Sep 17 00:00:00 2001 From: nickhill Date: Thu, 1 Oct 2020 12:26:17 -0700 Subject: [PATCH 1/2] Fix for endpoint format string regression And additional unit test to catch it --- .../com/ibm/etcd/client/config/EtcdClusterConfig.java | 9 ++++----- src/test/java/com/ibm/etcd/client/JsonConfigTest.java | 6 ++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java b/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java index 587e652..0a99efb 100644 --- a/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java +++ b/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java @@ -103,11 +103,10 @@ private EtcdClient newClient() throws IOException, CertificateException { TlsMode ssl = tlsMode; if (ssl == TlsMode.AUTO || ssl == null) { String ep = endpointList.get(0); - if (ep.startsWith("http://")) ssl = TlsMode.PLAINTEXT; - else if (certificate != null || clientCertificate != null - || ep.startsWith("https://")) { - ssl = TlsMode.TLS; - } + ssl = ep.startsWith("https://") + || (!ep.startsWith("http://") + && (certificate != null && clientCertificate != null)) + ? TlsMode.TLS : TlsMode.PLAINTEXT; } if (ssl == TlsMode.PLAINTEXT) { builder.withPlainText(); diff --git a/src/test/java/com/ibm/etcd/client/JsonConfigTest.java b/src/test/java/com/ibm/etcd/client/JsonConfigTest.java index bbbd80a..4f061d8 100644 --- a/src/test/java/com/ibm/etcd/client/JsonConfigTest.java +++ b/src/test/java/com/ibm/etcd/client/JsonConfigTest.java @@ -54,6 +54,12 @@ public void testBasicConfig() throws Exception { runBasicTests(EtcdClusterConfig.fromJson(json)); } + @Test + public void testBasicConfigNoScheme() throws Exception { + ByteSource json = makeJson("localhost:2379", null, null, null); + runBasicTests(EtcdClusterConfig.fromJson(json)); + } + @Test public void testSslConfig() throws Exception { ByteSource json = makeJson("https://localhost:2360", EtcdTestSuite.serverCert, null, null); From 3f758d65114ca9d01068aa62ee000d4dbfba47ba Mon Sep 17 00:00:00 2001 From: nickhill Date: Thu, 1 Oct 2020 13:37:30 -0700 Subject: [PATCH 2/2] Fix && which should have been || .. thanks @alienzach! --- src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java b/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java index 0a99efb..a93bf70 100644 --- a/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java +++ b/src/main/java/com/ibm/etcd/client/config/EtcdClusterConfig.java @@ -105,7 +105,7 @@ private EtcdClient newClient() throws IOException, CertificateException { String ep = endpointList.get(0); ssl = ep.startsWith("https://") || (!ep.startsWith("http://") - && (certificate != null && clientCertificate != null)) + && (certificate != null || clientCertificate != null)) ? TlsMode.TLS : TlsMode.PLAINTEXT; } if (ssl == TlsMode.PLAINTEXT) {