From acfc81056b61819a50ae2d7484b70bf54110113c Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Wed, 18 Mar 2026 01:00:47 +0800 Subject: [PATCH] Fix error handling when getting original image URL --- app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt | 7 ++++++- .../main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) 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 62ee1ecaf..72be43ba8 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt @@ -194,7 +194,12 @@ private suspend inline fun HttpStatement.fetchUsingAsByteBuffer(crossinline object EhEngine { suspend fun getOriginalImageUrl(url: String, referer: String?) = noRedirectEhRequest(url, referer).executeSafely { response -> - response.headers["Location"]?.takeUnless { Url(it).isLogin } ?: throw InsufficientGpException() + val location = response.headers["Location"] ?: run { + val body = response.bodyAsUtf8Text() + rethrowExactly(response, body.left(), InsufficientGpException()) + } + if (Url(location).isLogin) throw InsufficientGpException() + location } suspend fun getPTokenListFromMpv(gid: Long, token: String) = ehRequest(EhUrl.getGalleryMultiPageViewerUrl(gid, token), EhUrl.referer) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt index 0859401d3..2fed1b026 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt @@ -594,6 +594,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS previousPToken, ) }.getOrElse { + if (it is FatalException) throw it forceHtml = true return@repeat }.let {