diff --git a/app/src/main/java/com/hippo/ehviewer/Hosts.java b/app/src/main/java/com/hippo/ehviewer/Hosts.java index 5987ea583..b4108f2a1 100644 --- a/app/src/main/java/com/hippo/ehviewer/Hosts.java +++ b/app/src/main/java/com/hippo/ehviewer/Hosts.java @@ -291,7 +291,7 @@ public class Hosts { } } - private boolean contains(String host) { + public boolean contains(String host) { try (Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_HOSTS + " WHERE " + COLUMN_HOST + " = ?;", new String[]{host})) { return cursor.moveToNext(); } diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhDns.kt b/app/src/main/java/com/hippo/ehviewer/client/EhDns.kt index 7469a11c3..daf4dff7f 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhDns.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhDns.kt @@ -123,4 +123,8 @@ object EhDns : Dns { return hosts[hostname] ?: builtInHosts[hostname].takeIf { Settings.getBuiltInHosts() } ?: Dns.SYSTEM.lookup(hostname) } -} \ No newline at end of file + + fun isInHost(hostname: String): Boolean { + return hosts.contains(hostname) || (builtInHosts.contains(hostname) && Settings.getBuiltInHosts()) + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt index 735aac29c..78a20a55d 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhSSLSocketFactory.kt @@ -34,8 +34,8 @@ object EhSSLSocketFactory : SSLSocketFactory() { } override fun createSocket(s: Socket, host: String, port: Int, autoClose: Boolean): Socket { - val address = s.inetAddress.hostAddress - val socket = sslSocketFactory.createSocket(s, address, port, autoClose) as SSLSocket + val address = s.inetAddress.hostAddress.takeIf { EhDns.isInHost(host) } + val socket = sslSocketFactory.createSocket(s, address ?: host, port, autoClose) as SSLSocket val sslSession = socket.session Log.d( "EhSSLSocketFactory",