From 78f15860e06c8d94c7a5daa076e8d364404fc784 Mon Sep 17 00:00:00 2001 From: Lokesh Gidra Date: Mon, 13 Nov 2023 17:13:20 +0800 Subject: [PATCH] Check sadpanda in cronet path --- .../kotlin/com/hippo/ehviewer/client/EhEngine.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt index 6b92e4162..8f5a78e79 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt @@ -120,13 +120,23 @@ private fun rethrowExactly(code: Int, body: String, e: Throwable): Nothing { val httpContentPool = DirectByteBufferPool(8, 0x80000) -suspend inline fun fetchCompat( +suspend fun fetchCompat( url: String, referer: String? = null, origin: String? = null, reqBody: RequestBody? = null, - crossinline parser: suspend (ByteBuffer) -> T, + parser: suspend (ByteBuffer) -> T, ): T { + fun commonChecks(body: ByteBuffer) { + // Check sad panda(without panda) + if (!body.hasRemaining()) { + if (EhUtils.isExHentai) { + throw EhException("Sad Panda\n(without panda)") + } else { + throw EhException("IP banned") + } + } + } return if (isCronetSupported) { cronetRequest(url, referer, origin) { reqBody?.let { withRequestBody(it) } @@ -134,6 +144,7 @@ suspend inline fun fetchCompat( httpContentPool.useInstance { buffer -> awaitBodyFully(buffer) buffer.flip() + commonChecks(buffer) parser(buffer) } } @@ -146,6 +157,7 @@ suspend inline fun fetchCompat( if (body.source().read(buffer) == -1) break } buffer.flip() + commonChecks(buffer) parser(buffer) } }