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 {