seedvault icon indicating copy to clipboard operation
seedvault copied to clipboard

HTTP 412 Precondition failed with surf.nl WebDAV server

Open grote opened this issue 10 months ago • 1 comments

02-05 09:04:25.802 16218 16251 E AppBackupWorker: java.io.IOException: Error listing https://surfdrive.surf.nl/files/remote.php/webdav/.SeedVaultAndroidBackup/foobar/
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at org.calyxos.seedvault.core.backends.webdav.WebDavBackend.list(WebDavBackend.kt:284)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at com.stevesoltys.seedvault.repo.AppBackupManager.beforeBackup(AppBackupManager.kt:64)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at com.stevesoltys.seedvault.worker.AppBackupWorker.doBackup(AppBackupWorker.kt:156)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at com.stevesoltys.seedvault.worker.AppBackupWorker.doWork(AppBackupWorker.kt:134)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at com.stevesoltys.seedvault.worker.AppBackupWorker$doWork$1.invokeSuspend(Unknown Source:14)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: Caused by: at.bitfire.dav4jvm.exception.PreconditionFailedException: HTTP 412 Precondition failed
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:646)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at at.bitfire.dav4jvm.DavResource.checkStatus(DavResource.kt:624)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at at.bitfire.dav4jvm.DavResource.processMultiStatus(DavResource.kt:741)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at at.bitfire.dav4jvm.DavResource.propfind(DavResource.kt:550)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at org.calyxos.seedvault.core.backends.webdav.WebDavHelperKt.propfindDepthInfinity(WebDavHelper.kt:36)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	at org.calyxos.seedvault.core.backends.webdav.WebDavBackend.list(WebDavBackend.kt:195)
02-05 09:04:25.802 16218 16251 E AppBackupWorker: 	... 10 more

grote avatar Feb 05 '25 12:02 grote

It could be that returning 412 is this server's strange way of telling us that it doesn't support the request header Depth: infinity.

If we had such a server to test, we could try adding 412 to:

https://github.com/seedvault-app/seedvault/blob/ea10f1b05afa0c543dd3054fb12f8c86c85a7fba/core/src/main/java/org/calyxos/seedvault/core/backends/webdav/WebDavHelper.kt#L105-L108

grote avatar Feb 05 '25 12:02 grote