You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2020/12/05 02:58:36 UTC

[incubator-tuweni] branch master updated: Take care of TCP timeouts when connecting to server, upgrade dnsjava to latest

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

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/master by this push:
     new 49f81d5  Take care of TCP timeouts when connecting to server, upgrade dnsjava to latest
     new db38b1a  Merge pull request #181 from atoulme/dns_updates
49f81d5 is described below

commit 49f81d53b14679b3a659d8feee0fe9693ff02187
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Fri Dec 4 00:55:00 2020 -0800

    Take care of TCP timeouts when connecting to server, upgrade dnsjava to latest
---
 .idea/codeStyles/Project.xml                       |  7 ++++
 dependency-versions.gradle                         |  2 +-
 .../org/apache/tuweni/discovery/DNSResolver.kt     | 34 +++++++++++-------
 .../org/apache/tuweni/discovery/DNSResolverTest.kt | 41 ++++++++++++++++++++++
 4 files changed, 70 insertions(+), 14 deletions(-)

diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 8b54990..72ce704 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -5,6 +5,13 @@
       <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
     </JavaCodeStyleSettings>
     <JetCodeStyleSettings>
+      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
+        <value>
+          <package name="java.util" withSubpackages="false" static="false" />
+          <package name="kotlinx.android.synthetic" withSubpackages="true" static="false" />
+          <package name="io.ktor" withSubpackages="true" static="false" />
+        </value>
+      </option>
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
       <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
diff --git a/dependency-versions.gradle b/dependency-versions.gradle
index ae91af7..5e90627 100644
--- a/dependency-versions.gradle
+++ b/dependency-versions.gradle
@@ -26,7 +26,7 @@ dependencyManagement {
     dependency('com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0')
     dependency('com.squareup.okhttp3:okhttp:3.12.0')
     dependency('com.winterbe:expekt:0.5.0')
-    dependency('dnsjava:dnsjava:3.0.2')
+    dependency('dnsjava:dnsjava:3.3.1')
     dependency('info.picocli:picocli:4.0.0-alpha-2')
     dependency('io.lettuce:lettuce-core:5.1.3.RELEASE')
     dependency('io.vertx:vertx-core:3.6.2')
diff --git a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
index e8f2b00..b5c0aff 100644
--- a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
+++ b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
@@ -45,6 +45,7 @@ import org.xbill.DNS.Section
 import org.xbill.DNS.SimpleResolver
 import org.xbill.DNS.Type
 import org.xbill.DNS.WireParseException
+import java.io.IOException
 
 /**
  * Resolves a set of ENR nodes from a host name.
@@ -155,6 +156,13 @@ class DNSResolver @JvmOverloads constructor(
         logger.debug("No TXT record for $domainName")
         return null
       }
+    } catch (e: IOException) {
+      if (resolver is SimpleResolver) {
+        logger.warn("I/O exception contacting remote DNS server ${resolver.address}", e)
+      } else {
+        logger.warn("I/O exception contacting remote DNS server", e)
+      }
+      return null
     } catch (e: WireParseException) {
       logger.error("Error reading TXT record", e)
       return null
@@ -168,21 +176,21 @@ class DNSResolver @JvmOverloads constructor(
         return true
       }
 
-    if (entry is ENRNode) {
-      return visitor.visit(entry.nodeRecord)
-    } else if (entry is ENRTree) {
-      for (e in entry.entries) {
-        val keepGoing = internalVisit(e, domainName, visitor)
-        if (!keepGoing) {
-          return false
+      if (entry is ENRNode) {
+        return visitor.visit(entry.nodeRecord)
+      } else if (entry is ENRTree) {
+        for (e in entry.entries) {
+          val keepGoing = internalVisit(e, domainName, visitor)
+          if (!keepGoing) {
+            return false
+          }
         }
+      } else if (entry is ENRTreeLink) {
+        visitTree(entry, visitor)
+      } else {
+        logger.debug("Unsupported type of node $entry")
       }
-    } else if (entry is ENRTreeLink) {
-      visitTree(entry, visitor)
-    } else {
-      logger.debug("Unsupported type of node $entry")
-    }
-    return true
+      return true
     } catch (e: InvalidEntryException) {
       logger.warn(e.message, e)
       return true
diff --git a/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSResolverTest.kt b/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSResolverTest.kt
new file mode 100644
index 0000000..e2be7ab
--- /dev/null
+++ b/dns-discovery/src/test/kotlin/org/apache/tuweni/discovery/DNSResolverTest.kt
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuweni.discovery
+
+import org.junit.jupiter.api.Assertions.assertNull
+import org.junit.jupiter.api.Test
+import org.xbill.DNS.SimpleResolver
+import java.time.Duration
+
+class DNSResolverTest {
+
+  @Test
+  fun testBadHost() {
+    val dnsResolver = SimpleResolver("127.0.0.2")
+    dnsResolver.timeout = Duration.ofMillis(100)
+    val resolver = DNSResolver(resolver = dnsResolver)
+    val record = resolver.resolveRecordRaw("longstring.example.com")
+    assertNull(record)
+  }
+
+  @Test
+  fun testNoTXTEntry() {
+    val resolver = DNSResolver()
+    val record = resolver.resolveRecordRaw("foo.tuweni.apache.org")
+    assertNull(record)
+  }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org