fun testConnection()

in core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt [82:107]


    fun testConnection() {
        cancelTest()
        status.value = Status.Testing
        val url = URL("https://cp.cloudflare.com")
        val conn = (if (DataStore.serviceMode != Key.modeVpn) {
            url.openConnection(Proxy(Proxy.Type.SOCKS, DataStore.proxyAddress))
        } else url.openConnection()) as HttpURLConnection
        conn.setRequestProperty("Connection", "close")
        conn.instanceFollowRedirects = false
        conn.useCaches = false
        running = GlobalScope.launch(Dispatchers.Main.immediate) {
            status.value = conn.useCancellable {
                try {
                    val start = SystemClock.elapsedRealtime()
                    val code = responseCode
                    val elapsed = SystemClock.elapsedRealtime() - start
                    if (code == 204 || code == 200 && responseLength == 0L) Status.Success(elapsed)
                    else Status.Error.UnexpectedResponseCode(code)
                } catch (e: IOException) {
                    Status.Error.IOFailure(e)
                } finally {
                    disconnect()
                }
            }
        }
    }