Skip to content

Commit 582c5bb

Browse files
authored
Merge pull request #7393 from thunderbird/fix_mx_lookup_crash
Avoid crash when MX lookup returns invalid hostname
2 parents 0fcc98f + b4f255c commit 582c5bb

File tree

2 files changed

+11
-2
lines changed
  • core/common/src/main/kotlin/app/k9mail/core/common/net
  • feature/autodiscovery/autoconfig/src/main/kotlin/app/k9mail/autodiscovery/autoconfig

2 files changed

+11
-2
lines changed

core/common/src/main/kotlin/app/k9mail/core/common/net/Domain.kt

+9
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,12 @@ value class Domain(val value: String) {
88
}
99

1010
fun String.toDomain() = Domain(this)
11+
12+
@Suppress("SwallowedException")
13+
fun String.toDomainOrNull(): Domain? {
14+
return try {
15+
toDomain()
16+
} catch (e: IllegalArgumentException) {
17+
null
18+
}
19+
}

feature/autodiscovery/autoconfig/src/main/kotlin/app/k9mail/autodiscovery/autoconfig/MiniDnsMxResolver.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package app.k9mail.autodiscovery.autoconfig
22

33
import app.k9mail.core.common.net.Domain
4-
import app.k9mail.core.common.net.toDomain
4+
import app.k9mail.core.common.net.toDomainOrNull
55
import org.minidns.hla.ResolverApi
66
import org.minidns.record.MX
77

@@ -11,7 +11,7 @@ internal class MiniDnsMxResolver : MxResolver {
1111

1212
val mxNames = result.answersOrEmptySet
1313
.sortedBy { it.priority }
14-
.map { it.target.toString().toDomain() }
14+
.mapNotNull { it.target.toString().toDomainOrNull() }
1515

1616
return MxLookupResult(
1717
mxNames = mxNames,

0 commit comments

Comments
 (0)