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