🐛 Mark image as failed when it was rejected
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 18 Oct 2026 07:35:57 +0000 (09:35 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 18 Oct 2026 07:35:57 +0000 (09:35 +0200)
src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt
src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt

index 12d24e4..a8f1bea 100644 (file)
@@ -97,6 +97,9 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke
                        failureCache.getIfPresent(normalizedLink)?.run {
                                return LinkedElement(link, failed = true)
                        }
+                       rejectedElements[normalizedLink]?.run {
+                               return LinkedElement(link, failed = true)
+                       }
                        if (loadingLinks.getIfPresent(normalizedLink) == null) {
                                loadingLinks.put(normalizedLink, true)
                                freenetInterface.startFetch(FreenetURI(link), callback)
index 61b2560..4e9a28d 100644 (file)
@@ -204,6 +204,14 @@ class DefaultElementLoaderTest {
        }
 
        @Test
+       fun `element will not be loaded again if it was rejected`() {
+               runWithCallback(IMAGE_ID) { elementLoader, _, callback, _ ->
+                       callback.shouldCancel(freenetURI, "image/test", Long.MAX_VALUE)
+                       assertThat(elementLoader.loadElement(IMAGE_ID).failed, equalTo(true))
+               }
+       }
+
+       @Test
        fun `image is marked as failed when failed-method in callback was called`() {
                runWithCallback(IMAGE_ID) { elementLoader, _, callback, _ ->
                        callback.failed(freenetURI)